Listings API now ships an MCP server for AI agents Read the docs

Product

Local Citation Submission Reviews Publishing Analytics MCP server

Network

Network overview Google Business Profile Facebook

Company

Compare How it works Pricing Docs ↗

Account

Sign in Get API key
Network overview See every directory, map, and answer engine in the network, grouped by plan, so you know which citations each tier covers. One write reaches all of them, and fetchPremiumListings reports the live status for each.
Social publishing

Publish to five social networks from one call

Create a brand, let its owner connect Facebook, Instagram, X, LinkedIn, and Pinterest through a hosted link, then publish, schedule, or bulk post and read the result per channel.

200 OK
Request
curl -H "Authorization: API $LISTINGSAPI_KEY" \
  "https://listingsapi.com/api/v4/social/posts/9f2c41ab-7d05-4e63-9a18-5c77e0b41d2e"
Response
{
  "data": {
    "getSocialMediaPost": {
      "name": "Autumn hours",
      "status": "PUBLISHED",
      "connectedChannels": [
        {
          "platform": "FACEBOOK",
          "displayName": "Acme Dental",
          "status": "SUCCESS",
          "liveLink": "https://www.facebook.com/100200300400500_600700800900100",
          "error": null
        }
      ]
    }
  }
}

What you can build

Social scheduling in your product

Give your users a compose box and a calendar that write to one endpoint. Set action to DRAFT, SCHEDULE, or PUBLISH, and pass either an ISO timestamp in scheduledAt or a date and time in the brand's own time zone.

Agency publishing for many clients

Each client is a brand, and brands are unmetered, so you can create one per client without watching a count. Connections are pooled across the account, so you decide which clients get the capacity you have bought.

Bulk campaigns across brands

Send up to 500 rows to bulk-posts. The whole batch is validated before anything is queued, so a bad row is reported against its index instead of half a campaign going out.

POST /api/v4/social/posts

One brand, five networks, status per channel

actionPUBLISH
Autumn hours start Monday. We are open until 9pm on weekdays.
platformsFACEBOOKINSTAGRAMLINKEDIN
mediaUrls1 image
FacebookSUCCESSliveLink ↗
InstagramSUCCESSliveLink ↗
LinkedInERRORconnectedChannels[].error

From API key to published in four steps

1

Create a brand

A brand is the identity you publish as. It needs a profileName and a timezone, which is what scheduleDate and scheduleTime are interpreted in.

POST /api/v4/social/brands
2

Send the owner a connect link

Ask for a link per platform and redirect the account owner to it. They authorize on the network and land back on your redirectUrl. Links expire after 15 minutes.

POST /api/v4/social/brands/{brandId}/connections/link
3

Publish, schedule, or draft

One call takes the brand, the platforms, the content, and the action. Publishing is asynchronous, so the response gives you a socialPostId to follow.

POST /api/v4/social/posts
4

Read per-channel status

Poll the post to see each channel resolve. A channel that published carries status SUCCESS and a liveLink; one that failed carries the reason instead.

GET /api/v4/social/posts/{postId}

FAQs

Which networks can I publish to?

Facebook, Instagram, X, LinkedIn, and Pinterest. Pass them in platforms as FACEBOOK, INSTAGRAM, TWITTER, LINKEDIN, and PINTEREST. The enum is uppercase, and a lowercase value is rejected.

What is the difference between a brand and a connection?

A brand is the identity you publish as, such as one client or one region. A connection is one authorized account attached to that brand. Brands are unlimited on every tier; connections are what a Social plan is priced on. Because there are five networks, a brand connected everywhere uses five connections.

How does the connect flow work?

You call the connect link endpoint with a channel, a redirectUrl, and an optional errorUrl and state. It returns a url that expires in 15 minutes. Send the account owner there, they authorize on the network and pick the page or account, and they come back to your redirectUrl with the brand, the platform, your state, and the id of the connection that was made.

Requirement for connecting Instagram?

Meta's requirement: only a Business or Creator account linked to a Facebook Page can be connected. A personal Instagram account cannot. Tell the account owner before you send them the link, because the account has to be converted to an Instagram professional account first.

How do I schedule a post?

Set action to SCHEDULE and give the time in one of two ways: scheduledAt as an ISO timestamp with an offset, or scheduleDate and scheduleTime, which are read in the brand's time zone. Supplying both is rejected. A scheduled post can be cancelled with the cancel endpoint up until it runs.

How do I know a post actually went out?

Publishing is asynchronous. The create call returns a socialPostId straight away, then GET /api/v4/social/posts/{postId} shows each channel separately under connectedChannels. A channel that published has status SUCCESS and a liveLink to the post on the network. One post can succeed on one network and fail on another, so read them per channel rather than trusting the top-level status alone.

What happens when I run out of connections?

GET /api/v4/social/limits returns your cap in maxConnections and what you are using in usage. Connection packs add five at a time and stack. A slot is held by the pairing of one account with one brand until the end of the billing cycle, so disconnecting does not return capacity before renewal, and buying a pack is the way to add capacity mid-cycle.

Ship social publishing

Create a brand, send its owner a connect link, and publish to five networks from a single request.