Thousands of posts. One call. Pay for what lands.
Batch endpoints replace thousands of one-by-one requests: up to 100 mixed post URLs, 1,000 YouTube videos, or an entire Instagram feed per call. You are metered per item that actually returned, and dead links are refunded.
How do you pull social data in bulk without a thousand calls?
You send one request with a list, not a loop of single lookups. SocialCrawl runs the fan-out, isolates failures so one dead link never sinks the batch, refunds what didn't return, and hands every item back in the same unified schema. Here are the batch endpoints and exactly what each one costs.
One call, many items
Up to 100 URLs, 1,000 videos, or a full feed per request.
Pay for what lands
Metered per successful item; misses are refunded.
One schema, mixed platforms
post-stats takes mixed-platform URLs and returns one shape.
Fewer calls, priced per item
Every figure is the live registry cost, not a projection. Batch endpoints trade a loop of single requests for one fan-out, and meter you on the items that actually returned.
prism/post-stats is metered 1 credit per successful URL; youtube/videos bills ceil(ids / 50) chunks at the 5-credit advanced tier; the Instagram /full composites are 5 credits per page. All verified against the live endpoint registry.
Three ways to go wide in one request
The exact surfaces that closed real bulk workloads.
prism/post-statsUp to 100 URLs1cr per landed URLPOST a list of mixed-platform post links and get current views, likes, comments, shares, and saves per URL in input order, each with a fetched_at timestamp. Per-URL isolation means one dead link never fails the batch, and every dead, errored, or unsupported URL is refunded. Never cached, so every call reads the live count.
youtube/videosUp to 1,000 videos0.1cr per videoPOST an array of video ids and get the full unified video object for each, identical to the single endpoint. Billed per 50-id chunk at the advanced tier, so a 50-video batch is 5 credits. A youtube/channels sibling batches channel details the same way.
instagram/profile/{reels,posts}/fullA full feed, paginated5cr per pageGet a creator's recent reels or posts with views, likes, comments, and the per-item Instagram share count merged in, in one call. Share coverage is best-effort; if the share leg fails outright the items still return and 4 of the 5 credits are refunded. Paginate with next_cursor.
You pay for the data that came back
Bulk should not mean paying for misses. Two rules keep batch spend predictable.
Misses refunded
prism/post-stats holds an upfront charge for the whole list, then refunds every URL that returns not_found, error, or unsupported. You pay exactly for the counts you got.
Partial-leg refunds
On the Instagram /full composites the share leg is best-effort. If it fails outright the items still return with shares null and 4 of the 5 credits are refunded, dropping you to the standard 1-credit list price.
One fan-out beats a thousand loops
What a hand-rolled batch loop makes you build, and we already did.
One request, not N
Send a list; we run the concurrency, retries, and cursor bookkeeping. Your job is one call.
Per-item isolation
A single dead link, private account, or removed video is marked and refunded, never a failed batch.
One schema out
Mixed-platform URLs come back in the same unified engagement shape, so there is no per-platform parsing.
Predictable spend
Per-item metering with automatic refunds means the bill matches the data, not the attempts.
“Send a list, get the data that exists, pay for exactly that.”
Frequently asked questions
Can't find what you're looking for? Talk to our team or ask the AI agent below
Pull the whole list in one call
POST up to 100 post URLs and get current engagement per link, the dead ones refunded.
curl -X POST https://www.socialcrawl.dev/v1/prism/post-stats \
-H "x-api-key: $SC_KEY" \
-H "content-type: application/json" \
-d '{"urls":["https://www.youtube.com/watch?v=A9TikdsD5eg"]}'