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
$ 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
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.
| Field | Type | What it holds |
|---|---|---|
rank | integer | 1-based delivery order. |
video_id | string | TikTok video id. |
url | string | Video URL. |
description | string · nullable | Caption. |
created_at | string · nullable | Publish time (ISO 8601). |
author | string · nullable | Author handle. |
author_name | string · nullable | Author display name. |
author_id | string · nullable | Author id. |
author_verified | boolean | Author verified badge. |
author_followers | integer · nullable | Author follower count. |
views | integer · nullable | Play count. |
likes | integer · nullable | Like count. |
comments | integer · nullable | Comment count. |
shares | integer · nullable | Share count. |
saves | integer · nullable | Save/collect count. |
duration_seconds | integer · nullable | Duration in seconds. |
music | string · nullable | Music title. |
music_author | string · nullable | Music author. |
hashtags | string[] | Hashtags in the caption. |
cover | string · nullable | Cover image URL. |
Inputs
The whole request. Anything you leave out falls back to the default shown in the catalog.
| Input | Type | Required | What it does |
|---|---|---|---|
videos | array | yes | Video URLs (https://www.tiktok.com/@user/video/123…) or numeric ids. |
country | string | no | ISO 3166-1 alpha-2 code — proxy exit geo and Google locale (gl). Omit for the default pool. |
max_results | integer | no | How 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.
Pay as you go
- $2 free credit / month
- 60 requests / min
- List unit prices
Starter
- $15 free credit / month
- 300 requests / min
- 10% off unit prices
Growth
- $50 free credit / month
- 600 requests / min
- 20% off unit prices
Scale
- $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/.
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 scraper | This collector | |
|---|---|---|
| Removed videos | HTTP 200, parsed as empty, billed | Status read, reported under failed, not billed |
| Engagement rate | Two separate calls | Author 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.
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.