One URL in. Clean JSON out.
Give /v1/tiktok/comments a TikTok video URL and it returns the public comments on that video as a JSON array — text, who wrote it, like count, reply count, timestamp. Billing is per comment returned, 2 credits each, so a 20-comment call costs 40 credits. Nothing is charged for a call that returns nothing.
This fixed it for me, thank you
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": [{"id": "c_9021","text": "This fixed it for me, thank you","author": {"handle": "dev.casey"},"likes": 412,"posted_at": "2026-07-01T09:12:00Z"}],"meta": {"count": 2,"limit": 50},"request_id": "req_01JZX4M8Q2TE9W"}
The payload
An array of comment objects. Each one is a single top-level comment: the body text, the commenter's handle, how many likes the comment collected, how many replies hang off it, and when it was posted. The array is ordered the way TikTok surfaces comments on the video page, which means popular comments tend to appear first rather than the newest ones.
Comments with no text are dropped before the response is built. TikTok lets people post sticker-only and emoji-image comments, and those carry no usable body, so they never reach you and never cost you credits. That is why a call with limit=50 can come back with 46 items. Bill counts follow the array length, not the limit you asked for.
Reply threads are not expanded. The `replies` number tells you how many responses sit under a comment; the responses themselves are not in the payload. Treat this endpoint as the top layer of the conversation.
ISO 8601 UTC timestamp of when the comment was posted. Null on items where TikTok returns no creation time.
Pricing
Billing is per comment returned: 2 credits each, about 1¢ on the monthly plan. A default 20-comment call is 40 credits (~20¢), and an empty result still costs 1 credit.
Estimate only, on a full-year basis. 2 credits per returned comment. 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.
2 credits per comment returned. `limit` defaults to 20 if you leave it out, which is 40 credits a call. Ask for 200 comments and you have spent 400 credits on one video. Set `limit` deliberately on every call — this is the single easiest way to blow through a balance on this API.
You are charged for what comes back, not what you asked for. If a video has 12 comments and you request 100, you pay for 12. If a video's comment section is disabled, you get an empty array and pay the one-credit floor that applies to every successful call — not zero.
TikTok ranks comments by its own engagement signal before showing them. A limit of 50 therefore gives you the 50 comments TikTok considers most prominent, not the 50 most recent. Sort by `posted_at` client-side if you need a timeline, and accept that recent low-engagement comments may simply not be in the window you paid for.
That ranking also shifts. Poll the same video twice a week apart with the same limit and the overlap will be high but not total. Dedupe on `id` when you accumulate.
`author` is a bare handle string, not an object — there is no display name, avatar or follower count on a comment item. If you need creator detail, resolve the handle against the TikTok Channel Stats API separately.
Comment text and handles are user-generated content about identifiable people. If you store them, that is a processing decision with GDPR and CCPA consequences. Common practice is to hash or drop `author` when the analysis is aggregate, and to keep a deletion path. We return public data; what you retain is on you.
Comments come through as posted: emoji, zero-width characters, mixed scripts, @mentions, line breaks, and the occasional string of spam links. Nothing is stripped or normalised. Store the raw text and clean it in your own pipeline, so you can change your cleaning rules later without re-paying for the data.
Expect non-English. A video with global reach will return comments in a dozen languages, and there is no language field on the item. Run detection yourself if it matters.
Responses sit in the fast cache class, so an identical URL and limit inside the window returns in milliseconds with x-cache: hit. A hit costs the same credits as a fresh pull. Pass fresh=true when you are monitoring a live video and need the current state of the comment section.
Questions
Call /v1/tiktok/comments with the video URL and your API key instead of running your own scraper. We handle the fetching, the retries and the parsing; you get JSON. There is no session to keep alive on your side and no browser to babysit. We read the same public comment section anyone can open logged out — we do not defeat rate limits or reach private accounts.
2 credits per comment returned. At $0.005 a credit on the monthly plan that is one cent per comment, so a 20-comment default call is 40 credits — $0.20. Annual credits are $0.0045 each, which puts the same call at $0.18. You pay for the comments actually returned, so a video with fewer comments than your limit costs less, and an empty comment section costs nothing.
As many as you set `limit` to, subject to what the video actually has. The default is 20 and 50 is the most you get back in a synchronous response; ask for more and the request is submitted as an async job, so you receive a job handle and collect the comments when it completes. Either way it is one batch — there is no cursor, no page token and no way to resume a partial pull. Large limits cost proportionally more, and very popular videos have deep comment sections where the marginal comment is low-engagement noise. Most sentiment work is well served by the top 50.
No. You get top-level comments plus a `replies` count telling you how many responses sit under each one. The reply text is not in the payload and there is no separate endpoint for it. If threaded conversation is central to your analysis, this endpoint will underserve you and it is better to know that before you buy credits.
No. They arrive in TikTok's own display order, which weights engagement, so the most-liked comments generally lead. Sort on `posted_at` yourself if you need chronology. Be aware that sorting a ranked window does not give you a complete recent set — you are ordering the comments TikTok chose to surface, not all of them.
No. Only publicly visible videos are reachable, and only their public comments. Private, deleted and region-blocked videos return an error, and errors are not charged. Videos with comments turned off return an empty array. Nothing here reads a logged-in view, DMs, or anything a signed-out visitor could not see.
Reading public web content is generally permitted, but comments are personal data about identifiable users, and storing them puts you in scope for GDPR, CCPA and similar regimes. Have a lawful basis, keep only what you need, and be able to delete on request. If you are publishing quotes, that is a separate consideration again. Talk to your own counsel — this is not legal advice.
Next
100 trial credits on signup — no card, key on screen immediately.