Social data API
Real-time public data from TikTok, Instagram, YouTube, X, Reddit, LinkedIn, Facebook and 20+ more platforms. 179 REST endpoints behind one API key, returned as clean JSON and billed per request from a balance of prepaid requests. Failed calls cost nothing.
Quickstart
- Create a key in API keys with the Social data API scope.
- Buy a request pack in Credits.
- Call any endpoint with the key.
curl "https://api.pandorlabs.com/v1/tiktok/profile?handle=tiktok" \ -H "Authorization: Bearer $PANDORLABS_KEY"{ "success": true, "user": { "uniqueId": "tiktok", "verified": true }, "requests_charged": 1, "requests_remaining": 24999}Authentication
Send the key as Authorization: Bearer <key> or in the x-api-key header. It needs the Social data API scope. Paths start at https://api.pandorlabs.com and keep their own version prefix, such as /v1/tiktok/profile or /v3/tiktok/profile/videos. Each key has its own per-minute rate limit, reported in x-ratelimit-limit and x-ratelimit-remaining.
Pricing
The social data API draws on its own balance of prepaid requests, separate from the credits used for datasets and runs. Almost every call costs one request. A request is held when the call starts and given back in full if it fails. Requests never expire.
25,000requests
$56.4
$2.26 per 1,000 requests
500,000requests
$596.4
$1.19 per 1,000 requests
Endpoints that cost more than one request
| /v1/tiktok/user/audience | 26 requests |
| /v1/tiktok/video/transcript | 1 request11 requests when the AI fallback transcribes the video |
| /v2/instagram/post/comments | 1 request15 requests with include_replies, charged even when no replies come back |
| /v1/google/company/ads | 1 request25 requests with get_ad_details |
| /v1/find-social-profiles | 10 requests |
Responses
Responses are structured JSON, documented with an example for every endpoint. Every successful response adds two fields, repeated as headers.
requests_charged, headerx-requests-charged: what this call cost.requests_remaining, headerx-requests-remaining: your balance afterwards.GET /v1/requestsreturns it too, with usage per platform.
Errors
Errors return JSON with statusCode and a readable message. No error is ever charged.
| 400 | A parameter is missing, unknown or invalid. The message names it. |
| 401 | The API key is missing, invalid, revoked or expired. |
| 402 | Your request balance cannot cover the call. The body carries required and balance. |
| 403 | The key lacks the Social data API scope, or the content is not public. |
| 404 | The profile, post or page does not exist or returned nothing. |
| 429 | The per-key rate limit was hit. Wait retryAfterSeconds and retry. |
| 502 | A temporary error. Safe to retry. |
| 503 | The API is briefly unavailable. Safe to retry shortly. |
| 504 | The request took too long. Safe to retry. |
Caching
35 endpoints accept cache_max_age set to 1d, 3d, 7d, 14d or 30d. If a stored answer that recent exists, it comes back at once, free, with cached: true and a cached_at time. Otherwise the call runs live at its normal price.
Pagination
List endpoints return one page per call, along with the token for the next one, named per endpoint: cursor, max_cursor, continuationToken, next_max_id, after, page. Send it back unchanged in the parameter of the same name. Each page is a separate call.