~ / endpoints / Video API

TikTok Video Scraper API

Our TikTok video scraper turns any video permalink into structured JSON: the caption, play, like, comment, save, and share counts, the author block, the music track, cover images, and hashtags in one request.

Get a free API keyBrowse the endpoints
1,000
free requests / mo
2.6s
median response
play & like
counts per video
JSON
structured output
the wall

Why TikTok Video data fights back

A single TikTok video page keeps its engagement counts in an embedded state blob that datacenter IPs frequently get stripped or verify-walled, so a plain fetch returns a shell with no numbers. Selectors written against the hydrated grid break on the next layout change.

quickstart

Fire your first TikTok Video Scraper API call

cURL
curl "https://api.tiktokscraperapi.com/api/v1/tiktok/video?url=https://www.tiktok.com/@scout2015/video/6718335390845095173&api_key=$API_KEY"
Python
import requests

BASE = "https://api.tiktokscraperapi.com/api/v1"
API_KEY = "YOUR_API_KEY"

# Pass the full video permalink as url (or an id plus author).
data = requests.get(
    f"{BASE}/tiktok/video",
    params={
        "url": "https://www.tiktok.com/@scout2015/video/6718335390845095173",
        "api_key": API_KEY,
    },
    timeout=30,
).json()

print(data["author"]["uniqueId"], "-", data["title"])
s = data["stats"]
print(s["plays"], "plays,", s["likes"], "likes,", s["comments"], "comments")
print("hashtags:", ", ".join(data["hashtags"]))
inputs

Parameters

ParameterRequiredDefaultNotes
urloptional-The full TikTok video permalink, e.g. https://www.tiktok.com/@scout2015/video/6718335390845095173. Required unless you pass id (ideally with author).
idoptional-The bare numeric video id. Pair it with author to build a clean canonical URL.
authoroptional-The creator @handle (no leading @), used with id to construct the permalink.
countryoptionalusTwo-letter country code for the exit region the request is routed through. Defaults to US, where TikTok serves the populated page.
api_keyrequired-Your API key, passed as a query parameter. Get one free at signup.
the payload

What the TikTok Video Scraper API hands back

200 OK
{
  "id": "6718335390845095173",
  "url": "https://www.tiktok.com/@scout2015/video/6718335390845095173",
  "socialPlatform": "tiktok",
  "title": "Scramble up ur name & I'll try to guess it 🐶❤️ #foryoupage #petsoftiktok #aesthetic",
  "description": "Scramble up ur name & I'll try to guess it 🐶❤️ #foryoupage #petsoftiktok #aesthetic",
  "caption": "Scramble up ur name & I'll try to guess it 🐶❤️ #foryoupage #petsoftiktok #aesthetic",
  "create_time": 1564234358,
  "created_at": "2019-07-27T13:32:38.000Z",
  "author": {
    "id": "53279706535428096",
    "uniqueId": "scout2015",
    "nickname": "Scout, Suki & Stella",
    "verified": true,
    "signature": "Click follow to join the PAWsitive Pack",
    "avatar": "https://p19-common-sign.tiktokcdn-us.com/tos-useast8-avt-0068-tx2/4cbe05e194623e3f19aef975d9fdf26c~tplv-tiktokx-cropcenter:1080:1080.jpeg?x-expires=1783051200&x-signature=...",
    "secUid": "MS4wLjABAAAAPZWNdkF_cmVSPCvV0Y6MCsH29mlAOlMOX3ikzGvlfMm3K6OMZv-JrRImpEHxdIMI",
    "url": "https://www.tiktok.com/@scout2015"
  },
  "stats": {
    "plays": 158400,
    "likes": 35100,
    "comments": 5756,
    "shares": 1443,
    "saves": 641
  },
  "statsV2": null,
  "images": [
    "https://p16-common-sign.tiktokcdn-us.com/tos-maliva-p-0068/2367c7d45cf54a1397abd0e72bf22eac~tplv-tiktokx-origin.image?x-expires=1783051200&x-signature=..."
  ],
  "thumbnail": "https://p16-common-sign.tiktokcdn-us.com/tos-maliva-p-0068/2367c7d45cf54a1397abd0e72bf22eac~tplv-tiktokx-origin.image?x-expires=1783051200&x-signature=...",
  "video": {
    "duration": 10,
    "width": 576,
    "height": 1024,
    "cover": "https://p16-common-sign.tiktokcdn-us.com/...",
    "dynamic_cover": "https://p16-common-sign.tiktokcdn-us.com/...",
    "play_addr": "https://v16-webapp-prime.us.tiktok.com/video/tos/useast5/...",
    "download_addr": null
  },
  "music": {
    "id": "6689804660171082501",
    "title": "original sound",
    "authorName": "tiff",
    "duration": 10,
    "cover": "https://p16-common-sign.tiktokcdn-us.com/...",
    "play_url": "https://v16m.tiktokcdn-us.com/..."
  },
  "hashtags": [
    "foryoupage",
    "PetsOfTikTok",
    "aesthetic",
    "bonevoyage"
  ],
  "price": null,
  "currency": "USD",
  "rating": null,
  "reviews_count": null,
  "_source": "rehydration"
}
FieldTypeDescription
idstringThe numeric video id.
urlstringThe canonical video permalink.
titlestringThe caption text (also returned as description and caption).
create_timeintegerPublish time as a Unix timestamp; created_at is the ISO 8601 form.
authorobjectThe creator: id, uniqueId, nickname, verified, signature, avatar, secUid, and url.
statsobjectNumeric engagement: plays, likes, comments, shares, and saves.
statsV2objectThe exact string counts when TikTok ships them; null on the logged-out reflow page.
imagesarrayCover and poster image URLs for the video.
thumbnailstringThe primary cover image URL.
videoobjectMedia detail: duration, width, height, cover, dynamic_cover, play_addr, download_addr.
musicobjectThe sound: id, title, authorName, duration, cover, and play_url.
hashtagsarrayHashtags parsed from the caption and the structured challenge list.
put it to work

Where teams put TikTok Video data to work

>

Engagement tracking

Pull a video on a schedule and record plays, likes, comments, shares, and saves to chart how a post performs over time.
>

Campaign reporting

Resolve a list of sponsored video URLs into clean engagement rows for a client dashboard without opening the app.
>

Creator analysis

Read the author block and per-video stats together to see which formats and sounds drive a creator's reach.
>

Sound and trend research

Extract the music id and title from top videos to find which sounds are fuelling a trend.
>

Content archiving

Capture caption, cover images, and metadata for videos you need to keep a durable record of.
>

Hashtag performance

Collect the hashtags array across many videos to see which tags correlate with higher play counts.
why us

Why build on our TikTok Video Scraper API

Pass a permalink and we return the full item: caption, the five engagement counts, the author, the sound, cover images, and hashtags as flat JSON. Requests route through US residential proxies with anti-bot handling and retries at a 2.6s median, and when a stats-stripped shell comes back we fall back to the page's share metadata so you still get the numbers.

*

URL or id input

Pass the full permalink, or an id with the author handle, and we build the canonical URL server side.
*

Full engagement block

Plays, likes, comments, shares, and saves come back as numbers, with the exact string counts when TikTok ships them.
*

Share-meta fallback

When a datacenter capture strips the stats blob, we parse the like and comment figures out of the page share text so the call still returns counts.
*

Residential anti-bot

US residential routing clears the verify wall that blocks the per-video page from cloud IPs.
*

Media and audio

Cover frames, dimensions, duration, and the music track are all returned, so you can rebuild the post context.
*

Pay for success

Failed fetches retry across residential and datacenter pools and are never billed.
side by side

TikTok Video Scraper API vs rolling your own

Our APIDIY (requests / headless)TikTok official API
Input by video URLYes, url or id + authorManual page fetch and parseoEmbed only, no counts
Play and like countsNumeric, with share-meta fallbackBlob often stripped from serversNot exposed publicly
SetupAPI key onlyProxies, headless browser, parserResearch API application
Anti-bot and proxiesBuilt in, US residentialYou build and maintain itNot applicable
Music and hashtagsReturned in one callExtra parsing per fieldLimited
OutputFlat JSON, stable schemaRaw state blob you parseRestricted JSON
pricing

Start free, then pay per call

PlanPriceBest for
Free1,000 requestsTesting and small jobs
Pro$0.60 / 1kProduction workloads
Pay-as-you-go$0.90 / 1kSpiky or one-off volume

Median response 2.6s. You only pay for successful requests.

FAQ

What is a TikTok video scraper?

A TikTok video scraper is a tool that reads a single public video's data and returns it in a structured format. Our TikTok video scraper API takes a video permalink and returns the caption, play, like, comment, share and save counts, the author block, the music track, cover images, and hashtags as JSON from one request.

How do I get the view and like counts for a TikTok video?

Send a GET request to our tiktok/video endpoint with the video url and your API key. The stats object returns plays, likes, comments, shares, and saves as numbers. If a capture comes back with the engagement blob stripped, we parse the like and comment figures out of the page's share metadata so you still get counts back.

Can I pass just the video id instead of the URL?

Yes. You can pass the full permalink as url, or the bare numeric id together with the author handle so we can build the canonical URL. Passing url is the simplest route and is what the examples use.

Why do some TikTok videos return null for statsV2?

statsV2 holds the exact counts as strings and TikTok only ships it on some layouts. The logged-out reflow page that our residential requests usually land on drops statsV2, so it comes back null there while the numeric stats block is still populated. Use stats for the guaranteed numbers and statsV2 when it is present.

Does the API return the video download URL?

The video object includes play_addr and, when present, download_addr, along with the cover and dynamic_cover image URLs. These are the URLs TikTok exposes on the page; they are time-signed by TikTok and expire, so fetch them promptly if you need the media itself.

How fast is the TikTok video scraper API?

Median end-to-end response is about 2.6 seconds, including residential proxy routing, anti-bot handling, retries, and parsing. One call returns the full video item, so there is no need to chain requests to assemble the stats and metadata.

Pull video api data as clean JSON
1,000 requests free to start. No card needed.
Get a free API key Browse the endpoints