Documentation Blog Free tools [email protected]Log in

TikTok video scraper API

A TikTok video scraper API that returns per-video metrics for a list of URLs or ids: views, likes, comments, shares and saves, plus caption, publish time, author and author follower count, duration, music and hashtags.

$0.004 per delivered video · $2 free every month · Failed runs never billed

POST /v1/scraper/collectors/tiktok_video/run
$ curl $QD/tiktok_video/run \
    -H "Authorization: Bearer $QD_API_KEY" \
    -d '{"videos": ["https: //www.tiktok.com/@nasa/video/7668779420412284191"], "max_results": 5}'
{ "status": "done", "count": 5,
  "results": [
    {
      "video_id": "…",
      "url": "…",
      "description": "…",
      "created_at": "…" } ],
  "cost": 0.02 }
# 5 videos × $0.004 · nothing delivered, nothing charged
$0.004 / video500 videos on the free $2 every month
Semantic inputvideos, country, max_results — no URL lists
Up to 50videos per run, pagination handled for you
No browserread over HTTP/TLS — cheaper and faster than rendering

What a TikTok video scraper API does

Campaign reporting lives at the video level. This collector takes the URLs you already have — from a brief, a creator report or a hashtag list — and returns the five engagement counts TikTok publishes, exact, with the author's follower count on the same row so engagement rate is one division away.

Worth knowing how failure looks here: TikTok answers a removed, private or region-locked video with HTTP 200 and an error code buried in the page data. The collector reads that status, so those ids land under failed with TikTok's own reason instead of being billed as delivered rows.

What one video looks like

Every delivered video carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.

FieldTypeWhat it holds
rankinteger1-based delivery order.
video_idstringTikTok video id.
urlstringVideo URL.
descriptionstring · nullableCaption.
created_atstring · nullablePublish time (ISO 8601).
authorstring · nullableAuthor handle.
author_namestring · nullableAuthor display name.
author_idstring · nullableAuthor id.
author_verifiedbooleanAuthor verified badge.
author_followersinteger · nullableAuthor follower count.
viewsinteger · nullablePlay count.
likesinteger · nullableLike count.
commentsinteger · nullableComment count.
sharesinteger · nullableShare count.
savesinteger · nullableSave/collect count.
duration_secondsinteger · nullableDuration in seconds.
musicstring · nullableMusic title.
music_authorstring · nullableMusic author.
hashtagsstring[]Hashtags in the caption.
coverstring · nullableCover image URL.

Inputs

The whole request. Anything you leave out falls back to the default shown in the catalog.

InputTypeRequiredWhat it does
videosarrayyesVideo URLs (https://www.tiktok.com/@user/video/123…) or numeric ids.
countrystringnoISO 3166-1 alpha-2 code — proxy exit geo and Google locale (gl). Omit for the default pool.
max_resultsintegernoHow many videos to deliver at most (1–50). You pay only for delivered videos.

Pricing

TikTok video scraper API pricing

$0.004 per delivered video. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 500 videos before you spend anything.

$0.004per delivered video$4 per 1,000 delivered videos
500 videoson the free allowance$2 every month, no card
Zero rowszero chargeblocks, captchas and retries are on us
−30%on volume tiersthe catalog returns your key's price

Pay as you go

$0/mo
  • $2 free credit / month
  • 60 requests / min
  • List unit prices

Starter

$19/mo
  • $15 free credit / month
  • 300 requests / min
  • 10% off unit prices

Scale

$299/mo
  • $250 free credit / month
  • 1,200 requests / min
  • 30% off unit prices

Same wallet, same key and same $2 monthly allowance as every other Data API. Prices are launch pricing read live from the billing config — GET /v1/scraper/collectors returns the price your key actually pays.

Integration

One POST, typed rows

Base URL https://api.quanticdata.io/v1, Bearer auth, the same key as every other Data API. Endpoint: POST /v1/scraper/collectors/tiktok_video/run.

curl -X POST https://api.quanticdata.io/v1/scraper/collectors/tiktok_video/run \
  -H "Authorization: Bearer $QD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"videos":["https://www.tiktok.com/@nasa/video/7668779420412284191"],"max_results":5}'

What people build with the TikTok video scraper API

Three shapes of work this endpoint was designed around.

Campaign reporting

Measure delivered views and engagement per posted video, with author reach attached.

Creative benchmarking

Compare hooks, duration and music against engagement across a set of videos.

Contract verification

Check that the videos an influencer invoiced for exist and performed as claimed.

TikTok video scraper API versus rolling your own

The differences that actually cost time when you build this in-house.

DIY scraperThis collector
Removed videosHTTP 200, parsed as empty, billedStatus read, reported under failed, not billed
Engagement rateTwo separate callsAuthor followers on the same row

Metrics for videos nobody authorised you to read

The Display API covers videos belonging to users who connected their account to your app — the right tool for a creator dashboard, useless for analysing a category. The Research API covers public video data properly and is limited to approved academic institutions. Between those sits every marketing team that needs engagement metrics on competitors' content and on creators they are considering paying.

For a dataset the decisive property is exactness. TikTok's interface abbreviates to 1.2M and 45.3K; the payload carries integers, and this delivers those. Engagement rate, share-to-view ratio and week-over-week deltas are all arithmetic on numbers that rounding would destroy.

Limits, failures and the legal bit

Up to 50 videos per run, public videos only. Private, removed and region-locked videos return under failed with TikTok's own reason and are never billed — a monitoring pipeline needs to tell "this was taken down" from "our fetch broke", because they mean different things. Throughput is your plan's rate limit rather than anything about the collector: 60 requests/minute on pay-as-you-go, up to 1,200 on the top tier.

Collecting publicly visible data is generally lawful in most jurisdictions, and courts have repeatedly declined to treat reading a public page as unauthorised access. Author fields identify people, which brings data-protection law into scope, and TikTok's terms restrict automated collection. Metadata only: no media is downloaded. None of this is legal advice — get some for your actual use case.

FAQ

Questions we get about the TikTok video scraper API.

Something else? Ask us →

What input does it take?

Full video URLs or bare numeric ids — up to 50 per run, fetched three at a time.

Why did a video come back as failed?

Because TikTok reported it as unavailable: removed, private or blocked in the exit country. The reason is TikTok's own message, passed through verbatim, and the row is not charged.

Is there a free TikTok video scraper API?

Every account gets $2 of credit every month with no card, which is about 500 delivered videos on this endpoint at $0.004 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.

How much does one run cost?

Multiply the rows you actually receive by $0.004. A run capped at 50 videos — the maximum for this collector — costs $0.2 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and GET /v1/scraper/collectors returns the price your key actually pays.

What is the saves field good for?

It is TikTok's bookmark count, and it is the strongest intent signal on the platform — a save means someone means to come back. Ranking a content set by saves surfaces genuinely different videos than ranking by likes.

How do removed videos appear?

Under failed, with the platform's own reason attached, and unbilled. Keeping them separate from delivered rows is what lets a scheduled job distinguish a takedown from a transient error.

Run the TikTok video scraper API now

$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.

Get my free API key
Get my free API key