Base URL
Every endpoint is served over HTTPS from one base URL:
https://socialtap.devAuthentication
Send your API key in the x-api-key header with every request. Authentication
x-api-key: <your key>Endpoints
Data endpoints are GET requests with query parameters. Each returns {data, meta}, or {data, page, meta} for lists, where data follows one of 27 schemas, the same on every platform: ads, albums, comments, communities, downloads, effects, embeds, engagement stats, events, hashtags, livestreams, offers, places, playlists, podcasts, posts, products, profiles, reviews, sounds, suggestions, topics, transcripts, trends, usernames, web pages, web results.
Amazon
- GETAmazon Deals API
/v1/amazon/deal_products - GETAmazon Offers API
/v1/amazon/offers - GETAmazon Product API
/v1/amazon/product - GETAmazon Reviews API
/v1/amazon/reviews - GETAmazon Product Search API
/v1/amazon/search_products - GETAmazon Seller API
/v1/amazon/seller - GETAmazon Shop API
/v1/amazon/shop - GETAmazon Shop Lists API
/v1/amazon/shop_lists - GETAmazon Shop Posts API
/v1/amazon/shop_posts - GETAmazon Best Sellers API
/v1/amazon/top_products
Apple Music
- GETApple Music Album API
/v1/applemusic/album - GETApple Music Artist API
/v1/applemusic/artist - GETApple Music Album Search API
/v1/applemusic/search_albums - GETApple Music Artist Search API
/v1/applemusic/search_artists - GETApple Music Playlist Search API
/v1/applemusic/search_playlists - GETApple Music Track Search API
/v1/applemusic/search_tracks - GETApple Music Top Albums API
/v1/applemusic/top_albums - GETApple Music Top Playlists API
/v1/applemusic/top_playlists - GETApple Music Top Tracks API
/v1/applemusic/top_tracks - GETApple Music Track API
/v1/applemusic/track
Bluesky
- GETFacebook Comments API
/v1/facebook/comments - GETFacebook Engagement API
/v1/facebook/engagement - GETFacebook Group API
/v1/facebook/group - GETFacebook Group Posts API
/v1/facebook/group_posts - GETFacebook Profile Photos API
/v1/facebook/photos - GETFacebook Post API
/v1/facebook/post - GETFacebook Profile Posts API
/v1/facebook/posts - GETFacebook Profile API
/v1/facebook/profile - GETFacebook Reels API
/v1/facebook/reels - GETFacebook Comment Replies API
/v1/facebook/replies - GETFacebook Group Search API
/v1/facebook/search_groups - GETFacebook Post Search API
/v1/facebook/search_posts - GETFacebook Page and People Search API
/v1/facebook/search_profiles - GETFacebook Video Transcript API
/v1/facebook/transcript
Facebook Ad Library
Facebook Marketplace
Facebook Events
Google Ads Transparency Center
- GETGoogle Ads Transparency Center Ad API
/v1/google/ad - GETGoogle Ads Transparency Center Advertiser Ads API
/v1/google/ads - GETGoogle Ads Transparency Center Advertiser API
/v1/google/advertiser - GETGoogle Ads Transparency Center Ads by Website API
/v1/google/search_ads - GETGoogle Ads Transparency Center Advertiser Search API
/v1/google/search_advertisers - GETGoogle Ads Transparency Center Search Suggestions API
/v1/google/search_suggestions
- GETInstagram Comment API
/v1/instagram/comment - GETInstagram Comments API
/v1/instagram/comments - GETInstagram Embed API
/v1/instagram/embed - GETInstagram Engagement API
/v1/instagram/engagement - GETInstagram Hashtag API
/v1/instagram/hashtag - GETInstagram Hashtag Posts API
/v1/instagram/hashtag_posts - GETInstagram Highlights API
/v1/instagram/highlights - GETInstagram Location API
/v1/instagram/place - GETInstagram Location Posts API
/v1/instagram/place_posts - GETInstagram Highlight Stories API
/v1/instagram/playlist_stories - GETInstagram Post API
/v1/instagram/post - GETInstagram Posts API
/v1/instagram/posts - GETInstagram Profile API
/v1/instagram/profile - GETInstagram Reels API
/v1/instagram/reels - GETInstagram Location Search API
/v1/instagram/search_places - GETInstagram Search API
/v1/instagram/search_posts - GETInstagram User Search API
/v1/instagram/search_profiles - GETInstagram Audio Search API
/v1/instagram/search_sounds - GETInstagram Search Suggestions API
/v1/instagram/search_suggestions - GETInstagram Similar Accounts API
/v1/instagram/similar_profiles - GETInstagram Audio API
/v1/instagram/sound - GETInstagram Audio Reels API
/v1/instagram/sound_posts - GETInstagram Story API
/v1/instagram/story - GETInstagram Topic API
/v1/instagram/topic - GETInstagram Reels Transcript API
/v1/instagram/transcript - GETInstagram Trending Reels API
/v1/instagram/trending_posts - GETInstagram Username Availability API
/v1/instagram/username
Kwai
LinkedIn Ad Library
- GETPinterest Board API
/v1/pinterest/board - GETPinterest Board Pins API
/v1/pinterest/board_pins - GETPinterest Boards API
/v1/pinterest/boards - GETPinterest Pin API
/v1/pinterest/pin - GETPinterest Profile Pins API
/v1/pinterest/pins - GETPinterest Profile API
/v1/pinterest/profile - GETPinterest Search API
/v1/pinterest/search_pins - GETPinterest Trends API
/v1/pinterest/top_trends - GETPinterest Topic API
/v1/pinterest/topic - GETPinterest URL Save Count API
/v1/pinterest/web_page
- GETReddit Comments API
/v1/reddit/comments - GETReddit Engagement API
/v1/reddit/engagement - GETReddit Post API
/v1/reddit/post - GETReddit User Posts API
/v1/reddit/posts - GETReddit Profile API
/v1/reddit/profile - GETReddit User Comments API
/v1/reddit/profile_comments - GETReddit Comment Search API
/v1/reddit/search_comments - GETReddit Search API
/v1/reddit/search_posts - GETReddit User Search API
/v1/reddit/search_profiles - GETReddit Subreddit Search API
/v1/reddit/search_subreddits - GETReddit Subreddit API
/v1/reddit/subreddit - GETReddit Subreddit Posts API
/v1/reddit/subreddit_posts - GETReddit Video Transcript API
/v1/reddit/transcript
Rumble
Snapchat
SoundCloud
Spotify
- GETSpotify Album API
/v1/spotify/album - GETSpotify Artist API
/v1/spotify/artist - GETSpotify Playlist API
/v1/spotify/playlist - GETSpotify Playlist Tracks API
/v1/spotify/playlist_tracks - GETSpotify Podcast API
/v1/spotify/podcast - GETSpotify Podcast Episodes API
/v1/spotify/podcast_episodes - GETSpotify Album Search API
/v1/spotify/search_albums - GETSpotify Artist Search API
/v1/spotify/search_artists - GETSpotify Playlist Search API
/v1/spotify/search_playlists - GETSpotify Podcast Search API
/v1/spotify/search_podcasts - GETSpotify Track Search API
/v1/spotify/search_tracks - GETSpotify Track API
/v1/spotify/track
Telegram
Threads
TikTok
- GETTikTok Comment API
/v1/tiktok/comment - GETTikTok Comments API
/v1/tiktok/comments - GETTikTok Download API
/v1/tiktok/download - GETTikTok Effect API
/v1/tiktok/effect - GETTikTok Effect Posts API
/v1/tiktok/effect_posts - GETTikTok Engagement API
/v1/tiktok/engagement - GETTikTok Followers API
/v1/tiktok/followers - GETTikTok Following API
/v1/tiktok/following - GETTikTok Hashtag API
/v1/tiktok/hashtag - GETTikTok Hashtag Posts API
/v1/tiktok/hashtag_posts - GETTikTok Liked Posts API
/v1/tiktok/liked_posts - GETTikTok Live API
/v1/tiktok/live - GETTikTok Place Posts API
/v1/tiktok/place_posts - GETTikTok Playlist Posts API
/v1/tiktok/playlist_posts - GETTikTok Playlists API
/v1/tiktok/playlists - GETTikTok Post API
/v1/tiktok/post - GETTikTok Posts API
/v1/tiktok/posts - GETTikTok Profile API
/v1/tiktok/profile - GETTikTok Comment Replies API
/v1/tiktok/replies - GETTikTok Search API
/v1/tiktok/search_posts - GETTikTok User Search API
/v1/tiktok/search_profiles - GETTikTok Sound Search API
/v1/tiktok/search_sounds - GETTikTok Search Suggestions API
/v1/tiktok/search_suggestions - GETTikTok Top Search API
/v1/tiktok/search_top - GETTikTok Sound API
/v1/tiktok/sound - GETTikTok Sound Posts API
/v1/tiktok/sound_posts - GETTikTok Top Videos API
/v1/tiktok/top_posts - GETTikTok Transcript API
/v1/tiktok/transcript - GETTikTok Trending Videos API
/v1/tiktok/trending_posts
TikTok Ad Library
TikTok Shop
Truth Social
Twitch
X
Conventions
data follows the resource's shared schema; null means unknown, never 0 or "". Errors are non-2xx responses with this body: branch on error.code, never on the message (error codes).
{
"error": {
"code": "<code>",
"message": "…",
"request_id": "…",
"status": "…",
"retryable": "…",
"param": "…",
"remediation": "…",
"doc_url": "…",
"details": "…",
"charged": "…"
}
}The meta object
request_idstringUnique request ID; include it when contacting support.
platformstringPlatform ID of the endpoint (youtube, tiktok, …).
sourcestringWhich upstream strategy produced the data.
is_cachedbooleanTrue when served from the cache (free); see max_age.
credits_chargedintegerCredits charged for this request (0 for errors and cache hits).
latency_msintegerTime SocialTap spent on the request, in milliseconds.
fetched_atstring date-timeWhen the data was fetched from the platform, RFC 3339 UTC (older than the request for cache hits).
inputobjectnullableWhat the request's url or handle resolved to: kind, platform ID and canonical URL, so you can confirm what was fetched; null for searches.
ShowHide 3 child fields
kindstringWhat the input points to (profile, video, post, …). New values may be added; treat unknown values as other.
idstringnullablePlatform-native ID of the item; null when it is only known after the fetch and the request failed.
urlstringnullableCanonical URL of the item; null when unknown.
credits_remainingintegernullableAccount balance after this request (the x-credits-remaining header); for a busy account an estimate that may not yet subtract concurrent requests (about a second of usage), never below the real balance; null when SocialTap could not read it.
client_request_idstringnullableYour x-client-request-id, echoed; null when you sent none.
warningsobject[]Things to act on that did not fail the request: a deprecated endpoint, partial data, items a list's walk leaves out. [] when none.
ShowHide 4 child fields
codestringMachine-readable warning code (see the warnings list). New codes may be added.
messagestringWhat to do about it.
doc_urlstringWhere to read more (the changelog entry, the endpoint's docs).
fieldsstring[]partial_data: the output fields (catalog paths such as metrics.view_count) that are null or [] because part of the data could not be fetched; absent for other codes.
List endpoints
Repeat the same request with cursor set to page.next_cursor while page.has_more is true (pagination guide).
Items per page, 1 to the endpoint's page size (its default and maximum; larger values are reduced to it). Omit it: every page costs the same, so a smaller limit means more pages to pay for.
cursorstringpage.next_cursor from the previous response. Send the same other parameters; omit to start from the first page.
has_morebooleanTrue when another page exists; then next_cursor is set. An empty page with has_more true is not the end.
next_cursorstringnullablePass as cursor, with the same other parameters, to get the next page; null at the end.
next_cursor_expires_atstring date-timenullableWhen next_cursor stops working, RFC 3339 UTC; null at the end. Don't store cursors.
end_reasonstringnullableWhy there are no more pages; null while has_more is true. end: the list ended, or reached since/until. platform_limit: the platform stops serving further pages although the list goes on. max_pages: SocialTap's cap on pages in one walk. New values may be added. A short or empty page is not the end: only has_more false is.
One ofendplatform_limitmax_pages
Parameters every endpoint accepts
Accept a cached response up to this many seconds old. Cache hits cost 0 credits. Omit to always fetch fresh. The Cache-Control: max-age=N request header is equivalent; max_age wins when both are sent.
fieldsstringReturn only these fields of each item: comma-separated paths in the schema's notation (id,text,metrics.view_count,segments[].text; a parent path keeps the whole object). Unknown paths are rejected. Applied after the cache, so it changes neither the price nor cache hits; page and meta are always returned whole.
Request headers
| Header | Type | Description |
|---|---|---|
x-api-key | string | Your API key. |
authorization | string | Bearer <your API key>: the same key as x-api-key, in the form most HTTP and MCP clients send (x-api-key wins when both are sent). |
x-account-id | string | Dashboard session only: the account (acct_…) to act on, one of Session.accounts (default: the person's own); one they aren't on is refused (forbidden, reason not_a_member). API keys ignore it. |
x-client-request-id | string | Your own ID for the request (1–128 printable ASCII characters): echoed back and logged with ours, so support can find a request whose response never reached you. |
traceparent | string | W3C Trace Context of your trace: recorded with the request (its trace ID) so a trace can be matched to ours; SocialTap starts its own trace. |
idempotency-key | string | On any POST: your unique key for the request (1–255 printable ASCII characters; a UUID is ideal), kept 24 hours. Retrying with the same key and body never repeats the work: the answer is the first request's result, in its current state. |
prefer | string | RFC 7240. respond-async on any endpoint request runs it as a one-request job: the answer is 202 with the job (Location: its URL) instead of the result. |
cache-control | string | max-age=N accepts a cached response up to N seconds old, like the max_age parameter (max_age wins when both are sent). Other directives are ignored. |
Response headers
| Header | Type | Description |
|---|---|---|
x-request-id | string | Unique request ID; include it when contacting support. |
x-credits-charged | int | Credits charged for this request (0 for errors and cache hits). |
x-credits-remaining | int | Account balance after this request; for a busy account an estimate that may not yet subtract concurrent requests (about a second of usage), never below the real balance. |
retry-after | int | Seconds to wait before retrying; sent only with the codes whose retry_after is set in the error codes list (never on credit errors). |
allow | string | Methods the endpoint accepts (method_not_allowed only). |
age | int | Seconds since the data was fetched (cache hits only). |
x-client-request-id | string | Your x-client-request-id, echoed (also meta.client_request_id). |
ratelimit-policy | string | The account's runaway-protection ceiling as an IETF RateLimit-Policy field, as enforced: a token bucket of q requests (twice the ceiling in requests per second, at least 10) that refills in w seconds: "account";q=<requests>;w=<seconds>. Not a plan limit. |
ratelimit | string | What is left of the ceiling (IETF RateLimit field): "account";r=<requests that may be sent at once now>;t=<seconds until the bucket is full again>. |
deprecation | string | RFC 9745: the endpoint is deprecated, as of this date (@<unix seconds>; may be in the future). Also in meta.warnings. |
sunset | string | RFC 8594: when a deprecated endpoint stops answering (HTTP-date); from then on it answers endpoint_retired. |
link | string | RFC 8288 links: rel="next" is the next page of a list (while page.has_more), the same request with cursor set; rel="deprecation" is a deprecated endpoint's notice. |
location | string | On 202 answers: the job's URL (GET it, free, for its status). |
preference-applied | string | RFC 7240: respond-async when Prefer: respond-async turned the request into a job (202). |
idempotent-replayed | bool | true when the answer replays an earlier request with the same Idempotency-Key (it shows the resource's current state). |
Account, billing, jobs and webhooks
The operations SocialTap serves itself. Their JSON answers are {data, meta} (plus page on cursor-paged lists); every one is free unless it says otherwise.
Account
- DELETEDelete the account (after a grace period)
/v1/account - GETGet the account, balance and calling key
/v1/account - PATCHUpdate account settings
/v1/account - GETList credit transactions (the ledger)
/v1/credit_transactions - GETUsage report: requests and credits over time
/v1/usage - GETRequest rate against the runaway-protection ceiling
/v1/usage/rate
Team
- POSTLeave the account
/v1/account/leave - POSTHand the account to another member
/v1/account/transfer - GETList invitations waiting to be accepted
/v1/invitations - POSTInvite someone by email
/v1/invitations - POSTAccept an invitation
/v1/invitations/accept - DELETERevoke an invitation
/v1/invitations/{id} - GETList the account's people
/v1/members - DELETERemove someone from the account
/v1/members/{user_id} - PATCHChange someone's role
/v1/members/{user_id}
Signup
- POSTApprove an agent's request for a key
/v1/agent_claims/approve - POSTRefuse an agent's request for a key
/v1/agent_claims/deny - POSTSee an agent's request for a key
/v1/agent_claims/lookup - POSTSign up as an agent: a key that works on confirm
/v1/agent_signup - GETList sign-in and security events
/v1/security_events - DELETESign out
/v1/session - GETGet the dashboard session
/v1/session - POSTStart the dashboard: set up the account
/v1/session
API keys
Billing
- GETGet auto top-up
/v1/billing/auto_topup - PATCHTurn auto top-up on or off, or change it
/v1/billing/auto_topup - POSTBuy a credit pack (Stripe Checkout)
/v1/billing/checkout - GETGet a credit pack purchase
/v1/billing/checkout/{id} - POSTOpen the payment settings (Stripe)
/v1/billing/portal - POSTRedeem a promo code
/v1/billing/promo_codes/redeem - GETList purchases
/v1/billing/purchases - GETGet a purchase's receipt
/v1/billing/purchases/{id}/receipt - GETGet the monthly plan
/v1/billing/subscription - PATCHChange the monthly plan
/v1/billing/subscription - POSTCancel the monthly plan, or undo it
/v1/billing/subscription/cancel - POSTStart a monthly plan (Stripe Checkout)
/v1/billing/subscription/checkout
Events
Jobs
- GETList jobs, newest first
/v1/jobs - POSTRun many requests (or one long one) as a job
/v1/jobs - GETGet a job (free to poll)
/v1/jobs/{id} - POSTCancel a job
/v1/jobs/{id}/cancel - GETList a job's results as they complete
/v1/jobs/{id}/results - GETDownload every result of a job (JSON Lines)
/v1/jobs/{id}/results.jsonl
Notifications
Requests
Webhooks
- GETList webhook endpoints
/v1/webhook_endpoints - POSTRegister a webhook endpoint
/v1/webhook_endpoints - DELETEDelete a webhook endpoint
/v1/webhook_endpoints/{id} - GETGet a webhook endpoint
/v1/webhook_endpoints/{id} - PATCHUpdate a webhook endpoint
/v1/webhook_endpoints/{id} - GETList an endpoint's delivery attempts
/v1/webhook_endpoints/{id}/deliveries - POSTRotate a webhook endpoint's signing secret
/v1/webhook_endpoints/{id}/rotate_secret - POSTSend a webhook.test event to an endpoint
/v1/webhook_endpoints/{id}/test
Their meta
metaShowHide 5 child fields
client_request_idstringnullableYour x-client-request-id, echoed; null when you sent none.
credits_chargedintegerAlways 0: the gateway's own routes are free (a job's items are charged as they end, at their endpoints' prices).
credits_remainingintegernullableAccount balance; null without an account (signup) or when SocialTap could not read it.
request_idstringUnique request ID; include it when contacting support.
warningsobject[]Things to act on that did not fail the request. [] when none.
ShowHide 4 child fields
codestringMachine-readable warning code (see the warnings list). New codes may be added.
doc_urlstringWhere to read more (the changelog entry, the endpoint's docs).
fields?string[]partial_data: the output fields (catalog paths such as metrics.view_count) that are null or [] because part of the data could not be fetched; absent for other codes.
messagestringWhat to do about it.