One URL in. Clean JSON out.
Pass a TikTok video URL, get back its view, like, comment, share and save counts as JSON. No login, no TikTok developer account, no scraping code to maintain. One GET request, 3 credits, and the numbers arrive in a couple of seconds.
The difference
On the left, what a headless browser hands you. On the right, what the endpoint hands you.
<div class="css-1qb2n7d-DivItemContainer e148ts220" data-e2e="recommend-list-item"><div class="css-x6y88p-DivContainer"><a class="css-1g95xhm-AVideoContainer" href="/@tiktok/video/7231338487075638570"><video src="blob:https://www.tiktok.com/8f3a..."></video></a></div><div class="css-1f5bbrz-DivCardFooter"><strong data-e2e="video-views" class="css-ws4x78">1.2M</strong><strong data-e2e="like-count">88.4K</strong><strong data-e2e="comment-count">2,314</strong></div><h3 class="css-1yy6f0h">Behind the scenes of our new feature</h3><script id="__UNIVERSAL_DATA_FOR_REHYDRATION__" type="application/json">{"__DEFAULT_SCOPE__":{"webapp.video-detail"... {"data": {"platform": "tiktok","entity_id": "7231338487075638570","url": "https://www.tiktok.com/@tiktok/video/7231338487075638570","author": {"handle": "tiktok","name": "Example Creator"},"posted_at": "2026-06-30T14:05:00Z","metrics": {"views": 1204593,"likes": 88410,"comments": 2314,"shares": 10092}},"request_id": "req_01JZX4M8Q2TE9W"}
The payload
A single object describing one video: the engagement counters, the caption and hashtags, how long the video runs, when it was posted, and who posted it. This is the raw material for a performance dashboard or a competitor tracker — everything you would read off the video page yourself, in a shape you can put straight into a database.
Counters are whatever TikTok is showing publicly at the moment of the call. They move constantly on fresh videos, which is why this endpoint is cached for minutes rather than hours: sample a video that went up an hour ago twice and you should expect two different numbers.
Public like (heart) count.
Pricing
One video is 3 credits — about 1.5¢ on the monthly plan. $5 covers roughly 333 videos, a cached repeat costs the same as a fresh call, and failed calls are never charged.
Estimate only, on a full-year basis. 3 credits per returned video. Monthly: $5 per 1,000 credits with $4/1,000 top-ups. Annual: $54 per 12,000 credits with $3/1,000 top-ups. We show whichever plan is cheaper for your annual volume, divided by 12. Failed calls are never charged; cache hits cost the same as fresh calls.
Entry price, side by side
Credits are not equivalent units across vendors — each meters differently. Price your own workload on both before deciding on entry price alone. At high volume, several of these are cheaper per credit than we are.
Engineering notes
We document exactly how every endpoint behaves — nulls, caching, billing — so what you ship on day one is still running in month six. No surprises, no support tickets.
TikTok publishes these numbers on a delay and rounds aggressively at scale. Treat them as the platform's public figure at call time rather than an audited count, and never diff two numbers taken seconds apart and call the delta real growth.
For anything trend-shaped, sample on a fixed cadence — hourly or daily at the same minute — so your intervals are even. Uneven sampling is the most common reason a velocity chart looks wrong.
Private, deleted and region-blocked videos return an error rather than a partial object, but a live video can still omit individual fields: no caption, no attached sound, no hashtags. Code defensively — null is a normal response, not a failure.
Responses are cached in the fast class, so repeated calls for the same video inside the window return instantly and set x-cache: hit. A cache hit costs the same 3 credits. Add fresh=true when you genuinely need to bypass it — for example on the first poll of a monitoring run.
vm.tiktok.com and vt.tiktok.com share links are accepted and resolved upstream, so you can pass URLs copied straight out of the TikTok app without unrolling them first.
Questions
Send a GET request to /v1/tiktok/stats with the video URL and your API key. You do not need a TikTok developer account, an app review, or OAuth — the endpoint reads public data and returns JSON. TikTok's own Display API requires an approved app and only reaches content the authenticating user owns, which is why most performance-tracking projects cannot use it.
3 credits per video. Credits are $0.005 each on the monthly plan and $0.0045 on annual, so a call is roughly 1.5 cents, and $5 covers about 333 videos. Cached responses cost the same as fresh ones. Failed calls are never charged.
Close, but not exact. TikTok updates public counters on its own delay and rounds large numbers, so a call reflects what the platform is showing at that moment. For a video posted minutes ago the figure can move noticeably between calls. Sample on a fixed schedule if you are measuring growth rather than reading a single number.
This endpoint takes one URL per call. Run the calls concurrently — each is independent and the API is built for parallel traffic. If you are starting from a creator rather than a list of URLs, the TikTok Channel Videos API returns a batch of their recent videos in a single call, and you can pass those URLs through here.
No. Only public content is reachable. A private, deleted or region-restricted video returns an error rather than a partial object, and the call is not charged. This is a deliberate limit — we read the same public pages you can open in a browser, with no logged-in session.
Stats returns the numbers — views, likes, comments, shares, saves — plus caption and author. Transcript returns the spoken words as text — on TikTok the `segments` field comes back null, so do not plan on timings. They are separate calls with separate prices because most projects need one or the other, not both.
Next
100 trial credits on signup — no card, key on screen immediately.