Failed requests are free
Scrape All Social MediaWith One API.
Scrape profiles, posts, comments, transcripts and ads from TikTok, Instagram, YouTube, Reddit and more, in one schema. Get a webhook when a number changes and an alert when someone mentions your brand.
1,000 credits, once · no card · failures, empty results and cache hits cost 0
Using an agent? Give it live context on competitors, mentions and markets
1 · Scrape
Any public profile, post or ad
{ "platform": "youtube",
"viewCount": 1204551 }2 · Watch
A webhook when a number moves
{ "handle": "mkbhd",
"followerCount": 19800000 }3 · Mentions
Who's talking about your brand?
- RedditHas anyone tried Acme for this?
- HNShow HN: we rebuilt our pipeline on Acme
Every platform
Which platforms does TrueScrape cover? 259 endpoints, 7 record types.
Ordered by what is answering right now, not by catalogue size. Each tile links to that platform's endpoints in the API reference.
Social
- Facebook22ad · post · event
- TikTok28live · song · video
- YouTube17video · search · channel
- Deezer11album · track · artist
- GitHub10user · activity · followers
- Instagram19post · search · profile
- Mixcloud8tag · search · upload
- LinkedIn8ad · post · company
- Reddit9post · user · search
- Spotify7album · track · artist
- X / Twitter6tweet · profile · community
- PeerTube7video · search · channel
- Dailymotion5video · search · channel
- Odysee5video · search · channel
- Substack5post · posts · profile
- Threads5post · search · profile
- Apple Music4album · track · artist
- BitChute4video · search · channel
- Bluesky4post · search · profile
- Mastodon4post · profile · userPosts
- Pinterest4pin · board · search
- Twitch4clip · profile · userVideos
- Rumble5video · search · comments
- SoundCloud3track · artist · artistTracks
- Telegram3post · channel · channelPosts
- Kwai3post · profile · userPosts
- Snapchat3profile · spotlight · spotlightComments
- Truth Social3post · profile · userPosts
- Bilibili1video
- Flickr1post
- Hackernews1search
- Kick1clip
- Mashable1video
- Okru1video
- Streamable1video
- Vimeo1video
Commerce, search and property
What is verifiedFor agents
Live context for your agent: competitors, mentions and markets
Three jobs an agent cannot do from your files alone. Add the MCP server and each tool shows its credit cost before the agent calls it. People without an agent get the same monitors and API.
Research
“Compare what Amazon and Walmart list for standing desks under $300, then check what Reddit says about the top three”
amazon_search
3 creditswalmart_search
3 creditsreddit_search
1 credit per product
Watch
“Watch Acme's YouTube channel and tell me what's new each time I ask”
create_monitor
free to createcheck_monitor
the feed's normal price per check, stated in the responseget_monitor_mentions
free to read
Mentions
“Who is talking about Acme right now? Group it by source and flag what needs a reply”
find_mentions
up to 10 credits, 1 per source that answers; failed or empty sources are free
claude mcp add --transport http truescrape https://api.truescrape.com/mcp?platforms=youtube,tiktok,instagram,reddit,threads,bluesky,hackernews,amazon,walmart \
--header "x-api-key: YOUR_API_KEY" --scope userLoad only some platforms (9)
This config starts on a smaller set, which keeps your agent’s context lean. Clear every chip to load every platform.
1,000 credits, once, no card. Paste it where the config says YOUR_API_KEY. Once you have a key, Agent integrations can fill it in for you.
Building your own agent? Every operation and its price is at /openapi.json and /llms.txt. The CLI and the agent skill are in the setup reference.
The billing contract
8 promises, each with a test that fails if we break it
These are not positioning lines. They are numbered clauses in the specification, and the execution pipeline enforces them in a fixed order: validate, preflight, cache, charge, run, settle.
| Ref | Promise | What that means in practice |
|---|---|---|
| P1 | You are never charged for a failed request. | Platform failures, timeouts, not-founds, schema drift, and our own internal errors all refund in full before the error reaches you. |
| P2 | You are never charged for an empty result. | A profile with no posts, a video with no captions, a search with no hits: you still get a 200, and creditsCharged reads 0. |
| P3 | Cache hits cost 0 credits. | Pass cache_max_age=7d to say how stale you will tolerate. A hit never invokes a scraper and never bills. |
| P4 | An invalid API key is an auth error, not a billing error. | A wrong key returns 401. A 402 always means the key is valid and the balance is not. The two are never confused. |
| P5 | Every endpoint's price is machine-readable. | x-credit-cost sits on every operation in openapi.json, so an agent can compute spend from the spec alone. |
| P6 | A balance can never go negative. | Charges are a conditional database update. Run a thousand concurrent requests against a balance of one and exactly one succeeds. |
| P7 | Per-tenant cache isolation is standard. | Not an enterprise upsell. Turn it on and your team reads and writes only its own scope, permanently. |
| P8 | Hard daily spend caps. | Set a ceiling in credits per UTC day. Requests past it fail with 429 before any charge is taken, not after. |
How we run it
Who notices when a platform breaks?
We do, usually before you do. And when something looks wrong, you can email the people who build it.
01 · Monitored
Watched around the clock
Health checks on the API and the job worker run day and night, and every endpoint's status is public.
02 · Caught and fixed
Caught early, fixed fast
Every response is checked for a platform quietly changing its data, so we usually see a break before you do. Fixes ship the moment they pass tests: no release cycle, no waiting for next month.
03 · Support
Email the people who build it
Questions go to the people who build the API, not a ticket queue or a bot. Send the request and what came back, and we will look at it.
04 · Credits
Credits never expire
Buy a pack when you need it and use it whenever. Pay as you go, with nothing to cancel.
One schema
7 objects. Every platform.
Everyone else in this category returns whatever shape the platform happened to give them, so every customer writes an adapter per platform. There are 7 record types here (Creator, Post, Transcript, Comment, Ad, Product, PropertyListing), and a platform maps onto one of them or it does not ship. Read the two payloads below: different platforms, identical field names, identical types. The untouched upstream response is always available under raw.
GET /v1/tiktok/video
{
"platform": "tiktok",
"id": "7318842019283746306",
"type": "video",
"authorHandle": "zachking",
"viewCount": 12480221,
"likeCount": 1842003,
"commentCount": 9241,
"shareCount": 44018,
"publishedAt": "2026-08-14T09:12:44.000Z"
}GET /v1/instagram/post
{
"platform": "instagram",
"id": "3421234567890123456",
"type": "reel",
"authorHandle": "natgeo",
"viewCount": 3906114,
"likeCount": 287540,
"commentCount": 1873,
"shareCount": null,
"publishedAt": "2026-09-02T16:40:07.000Z"
}Null is not zero. A platform that does not expose share counts returns null. A post with no shares returns 0. Conflating those two silently corrupts every average built on top of them.
Nothing is lost. Pass include_raw=true and the original payload comes back beside the normalised one, byte for byte.
Write the integration once. Adding a platform to your product stops being an adapter and starts being a string in a query parameter.
Async
No thirty-second ceiling to design around
A sync request suits a fast lookup. Anything long goes in as a job instead: no request-timeout ceiling, up to 500 targets a batch, and the result comes back by poll or webhook.
curl -X POST ${API}/v1/subscriptions \
-H "x-api-key: ${KEY}" \
-H "content-type: application/json" \
-d '{
"endpoint": "youtube.channelVideos",
"params": { "handle": "@mrbeast" },
"webhook_url": "https://you.example/hooks/social"
}'We check on your behalf and call your webhook when the data actually moves. Watch the endpoint whose result changes for the thing you care about: a video list changes when they upload, a profile changes when they rename. Signed deliveries and retries. A delivery that exhausts its retries is logged, not queued for later, so treat your endpoint being up as part of the contract.
curl -X POST ${API}/v1/jobs/batch \
-H "x-api-key: ${KEY}" \
-H "content-type: application/json" \
-d '{
"endpoint": "youtube.transcript",
"targets": ["8XkPqR2nLvE", "dQw4w9WgXcQ", "... up to 500"]
}'
# 202 Accepted, no 30-second ceiling. Poll or take the webhookFailed and empty targets are refunded automatically as the batch runs, so a job that half-fails bills for exactly the half that worked.
Free tools
Use the API without signing up for anything
Every tool below runs against the same endpoints you would call in production, with the same schema. No account, no email, no watermark on the output.
Who’s talking about your brand?
Recent mentions of a brand, product or domain across seven sites, in one list.
runs on 7 endpoints
YouTube transcript extractor
Paste a video URL, get plain text, timestamped text, or an SRT file.
runs on /v1/youtube/transcript
YouTube channel viewer
Look up subscribers, total views, links, and recent uploads for any channel.
runs on /v1/youtube/channel
YouTube video analyzer
Views, likes, engagement rate, hashtags, and metadata for any video or Short.
runs on /v1/youtube/video
YouTube comment analyzer
Read a video’s first comments: most liked, most replied-to, questions, common words.
runs on /v1/youtube/video/comments
Bulk YouTube transcript extractor
Paste a channel or a list of URLs and download every transcript at once.
runs on /v1/youtube/transcript
Questions
What people ask first
- Do you charge for failed requests?
- No. A failed request costs nothing, whatever the cause: an upstream block, a timeout, a rate limit, a not-found, or a bug on our side. An empty result costs nothing either, because the target genuinely having no data is an answer. Cache hits are free.
- Is there a subscription?
- No. Credits are bought once and never expire, and the free grant is a one-time 1,000 credits with no card required. Every endpoint is available on every plan, including the free one — there is no feature gating by tier.
- Do you scrape private or logged-in data?
- No. TrueScrape reads public, logged-out data only. No authenticated scraping, no cookies, no logged-in sessions, and public Pages rather than personal profiles. If a request would require signing in, we do not serve it.
- How do I find out when a creator posts?
- Create a watch on a target and point a webhook at your endpoint. TrueScrape checks it on your schedule, compares the content rather than the raw payload, and calls your webhook only when something actually changed. Each check is billed like a normal request, so a failed or empty check is refunded.
- Can TrueScrape monitor brand mentions?
- Yes. A monitor checks Reddit, Hacker News, Bluesky, YouTube, Threads, Instagram, TikTok, Dailymotion, PeerTube and Odysee on a schedule and shows only new mentions, in the dashboard or by webhook. It costs 1 credit per platform per check, nothing per mention, and there is no plan to buy.
- What happens if a job takes longer than a request timeout?
- Submit it as an async job instead. Jobs have no timeout ceiling, batches take up to 500 targets in one call, and you collect the result by poll or webhook when it is ready. Nothing needs to complete inside a single HTTP request.
- What does the data look like across different platforms?
- One schema. A creator, a post, a comment and a transcript have the same shape whether they came from YouTube, TikTok, Instagram or anywhere else, and the untouched upstream payload is still there in the raw field if you need it.
Start with a free tool, keep the key.
See the data in one of 38 free tools, then take a key: 1,000 credits, once, no card, nothing to cancel, nothing expires.
Brand mention monitoringCompare brand monitoring toolsAll comparisons