Skip to content
truescrape

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

GET /v1/youtube/video200 · 1 credit
{ "platform": "youtube",
  "viewCount": 1204551 }
Browse endpoints

2 · Watch

A webhook when a number moves

POST /hookssubscription.changed
{ "handle": "mkbhd",
  "followerCount": 19800000 }
How watches work

3 · Mentions

Who's talking about your brand?

acme2 new
  • RedditHas anyone tried Acme for this?
  • HNShow HN: we rebuilt our pipeline on Acme
Check your brand free

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

Commerce, search and property

What is verified

For 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 credits
    • walmart_search
      3 credits
    • reddit_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 create
    • check_monitor
      the feed's normal price per check, stated in the response
    • get_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
terminal
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 user
Load 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.

Get a free key

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.

RefPromiseWhat that means in practice
P1You 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.
P2You 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.
P3Cache 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.
P4An 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.
P5Every 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.
P6A 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.
P7Per-tenant cache isolation is standard.Not an enterprise upsell. Turn it on and your team reads and writes only its own scope, permanently.
P8Hard 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.

and the failed calls cost you nothing

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

Post
{
  "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

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.

Read the full schema reference

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.

POST/v1/subscriptions
watch a channel
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.

POST/v1/jobs/batch1 credit
500 targets, one call
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 webhook

Failed and empty targets are refunded automatically as the batch runs, so a job that half-fails bills for exactly the half that worked.

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