Many platforms in. One line of light.
Call an extractor for TikTok, Instagram, YouTube, X and other online platforms. You get a run id straight away, then the results as JSON at your webhook, signed. Or poll for them.
POST /api/v1/runs/{extractor}202 queuedwebhook · HMAC-SHA256
- TikTok
- YouTube
- X
- Patreon
- Twitch
- Kick
- Web / SEO
Fire a request. Catch the signal.
Every run is asynchronous. You get a run id back at once and the results arrive when the extractor finishes, signed so you know they came from us.
- 01
Call an extractor
POST /api/v1/runs/{extractor}with a JSONinput. The response is202with the run id, statusqueued. - 02
The run executes
It reads the public data and returns it in that extractor's fixed result shape.
- 03
Webhook, or poll
A signed POST to your
webhook_url. OrGET /api/v1/runs/{id}/resultsfor JSONL.
curl -X POST https://threadline.network/api/v1/runs/tiktok-profile \
-H "Authorization: Bearer $THREADLINE_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"input": { "usernames": ["tiktok"] },
"webhook_url": "https://your-app.example/hooks/threadline",
"max_results": 1
}'
# 202 Accepted
{ "data": { "id": "01k7f3x9q2m4c8v6n5t1r0w2ab", "extractor": "tiktok-profile", "status": "queued" } }
# POST https://your-app.example/hooks/threadline
# X-Threadline-Signature: t=1760435520,v1=4be0…19d2
{
"event": "run.succeeded",
"run": {
"id": "01k7f3x9q2m4c8v6n5t1r0w2ab",
"extractor": "tiktok-profile",
"status": "succeeded",
"results_count": 1
},
"results": [
{ "username": "tiktok", "follower_count": 1250000, "is_verified": true }
],
"results_url": null
}
# No webhook? Check the run, then fetch its results as JSONL
curl https://threadline.network/api/v1/runs/01k7f3x9q2m4c8v6n5t1r0w2ab/results \
-H "Authorization: Bearer $THREADLINE_KEY"
{"username":"tiktok","follower_count":1250000,"is_verified":true}
Check the signature against your webhook secret, then trust the payload. If your endpoint is down we retry with backoff and email you if it never answers.
- Auth
- Bearer API key
- Signed
- HMAC-SHA256 of
t.body - Retries
- Up to 6 attempts over about 2.5 hours
- Body
- Results inline up to 1 MB, a signed
results_urlabove that - Size
max_resultsup to 10,000 per run
Each strand has its price.
Credits per result, fixed per extractor. A run that finds nothing costs nothing.
-
TikTok
tiktok-profile
Bio, follower, like and video counts, verified and live flags.
1credit / result -
Instagram
instagram-media
A profile plus its recent posts as media items with thumbnails.
2credits / result -
YouTube
youtube-media
A channel plus its newest uploads, with the largest thumbnail of each.
3credits / result -
X
x-profile
Profile fields, follower, following and post counts, verification.
1credit / result -
Facebook
facebook-page
A Page's category, follower and like counts, links and imagery.
1credit / result -
LinkedIn
linkedin-company
Company page: industry, size, headquarters, followers, specialties.
1credit / result -
Patreon
patreon-creator
Creator page: patron count, public tiers, post count, social links.
1credit / result -
Twitch
twitch-channel
Channel details and whether it is live, with viewers and stream title.
1credit / result -
Web
web-seo
Any public URL: status, redirects, metadata, structured data and links.
1credit / result
More extractors, including enriched variants, are listed in the dashboard after signup.
A flat fee, an allowance, then metered.
500 free credits every rolling month once you add a card. Adding the card is a check, not a charge, and the free credits stack on any paid plan.
Free
Card check, no charge
- 500 credits each rolling month
- Stacks on any paid plan
- Runs stop at the limit
Starter
Billed monthly
- 20,000 credits included
- £1.90 per 1,000 extra
- Overage off, capped or unlimited
Pro
Billed monthly
- 75,000 credits included
- £1.40 per 1,000 extra
- Overage off, capped or unlimited
Scale
Billed monthly
- 300,000 credits included
- £1.00 per 1,000 extra
- Overage off, capped or unlimited
Measure the beam.
Credits are results times the extractor's price. This picks the cheapest option for that volume, counting overage.
What developers ask first.
What do the free credits cover?
How are credits counted?
What happens when I run out?
Where does the data come from?
How long are results kept?
GET /api/v1/runs/{id}/results with your key. A results_url in a webhook is signed and expires 7 days after the run finishes.How do I verify a webhook?
X-Threadline-Signature: t=…,v1=… header. Compute HMAC-SHA256 of t.body with your webhook secret and compare it to v1. Failed deliveries are retried up to 6 times over about 2.5 hours, then we email you.