Skip to main content
POST
Batch public post statistics
Pass 1–100 post links in urls. Rows retain the original URL and input order. Supported platforms are YouTube, Bluesky, Instagram, TikTok and LinkedIn. Other hosts return an unbilled unsupported row. A recognized platform with an invalid post path returns an unbilled error. The serialized array must fit 16,000 characters. Each successful row contains engagement with nullable views, likes, comments, shares, saves and reposts, plus a server fetched_at timestamp. Missing metrics remain null. Bluesky reposts are not relabeled as shares. Instagram save/repost counts appear only if the source returns them; include=saves is not implemented. Counts are public provider observations, not complete private analytics. LinkedIn accepts canonical /posts/...-activity-... links; feed URNs and shortened redirects are not supported. Instagram accepts both /p/code/ and /<handle>/p/code/ permalinks, as well as reels. The hold is one credit per URL, two for Instagram and five for LinkedIn. Every successful row costs that tier; not_found, error, unsupported and deferred rows cost zero. No result is charged unless the source identity matches and at least one valid engagement count is available. Only a definitive empty YouTube or Bluesky post result becomes not_found; other source failures stay error. Four workers run at most twelve seconds per source lookup, with no new work started after twenty-eight seconds. Unstarted rows are deferred and refunded. A provider quota/authentication failure stops new requests to that provider. There is no SocialQuery response caching. Source freshness is provider-dependent. Use an Idempotency-Key for free replay; retry failed/deferred rows with a new key. SSE and include options return 422 before spending. Sources: YouTube Data API, Bluesky, ScrapeCreators, and ScrapeBadger. Their available allowance determines live availability. MCP execute_endpoint and the Python skill calculate the full URL-based hold before calling; the Python skill also requires --allow-mutation and an idempotency key.

Authorizations

x-api-key
string
header
required

Headers

Cache-Control
string
Idempotency-Key
string
X-Max-Credits
integer

Optional nonnegative integer cap on the maximum request hold. A live request whose hold exceeds this cap returns 422 CREDIT_BUDGET_EXCEEDED before spending. Metered holds use the requested limit; cache hits and successful idempotent replays cost zero.

Required range: x >= 0

Body

application/json
urls
string[]
required
Required array length: 1 - 100 elements
Required string length: 1 - 2048
Example:
include
string

Not implemented; returns 422 before spending.

Response

Refresh public engagement counts for 1–100 post URLs, in input order. Supported platforms: YouTube, Bluesky, Instagram, TikTok and LinkedIn. Reserve one credit per URL, two for Instagram or five for LinkedIn; charge only successful rows and refund all not_found, error, unsupported and deferred rows. Unknown counts remain null. Reads current provider responses with no SocialQuery response cache. JSON only; include and SSE are unavailable. Four source workers, twelve-second source deadlines, and no new work after twenty-eight seconds. The serialized urls array must fit the 16,000-character parameter limit.

success
boolean
required
platform
string
required
endpoint
string
required
credits_used
integer
required
Required range: x >= 0
credits_remaining
integer | null
required
request_id
string
required
cached
boolean
required
data
object
required

The selected operation determines the resource fields in this object. Source data can omit a metric or report it as null.