100 free credits on signup · no card required

TikTok Comments API

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.

Credits 2 / comment
Input ?url=
Cache 15m–7d
Paging limit
GET · BEARER
Request composing…
D @dev.casey

This fixed it for me, thank you

♥ 0
Fresh when it matters
age-aware cache
Works with your stack
cURL Python Node.js Zapier n8n Make MCP
One key · one credit balance · plain REST

The difference

Stop parsing markup. Start reading fields.

On the left, what a headless browser hands you. On the right, what the endpoint hands you.

Scraping it yourself raw HTML · every call
<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"...
×Class names rotate; your selectors break weekly ×Headless browsers, proxies, blocks to babysit ×Counts arrive as strings, not numbers
One GET request 6 typed fields
{
"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"
}
Stable field names, documented nulls No proxies, no browser, no login session Counters are integers you can sort on

The payload

What comes back

{ data, meta?, request_id }
01 One object per comment

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.

02 Text-less comments are dropped

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.

03 Replies counted, not returned

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.

Field explorer Pick a key to see its type and the caveats.
string|null Nullable Use for windowing
posted_at

ISO 8601 UTC timestamp of when the comment was posted. Null on items where TikTok returns no creation time.

{
"id": "c_9021",
"text": "This fixed it for me, thank you",
"author": { … },
"likes": 412,
"posted_at": "2026-07-01T09:12:00Z",
"replies": 0
}
Good fit

Reach for this when

  • Reading what an audience actually says about a product, an ad or a competitor's video, at a volume you cannot get through by hand.
  • Feeding a sentiment or topic-classification model. Comment text plus like count gives you a usable weighting: a complaint with 4,000 likes matters more than one with none.
  • Finding the questions people keep asking under a creator's videos, which is cheap raw material for FAQ and content planning.
  • Spotting brand mentions and unprompted product names in a niche, by pulling comments across a set of videos in the same category.
  • Moderation and brand-safety sweeps on videos you sponsored, where you need a periodic snapshot of the top of the comment section.
Different job?

There's an endpoint for that

  • You only need the number of comments, not the text. The TikTok Video Stats API already returns a `comments` counter for 3 credits flat, which is far cheaper than pulling the comments themselves.
  • You want the spoken content of the video. That is the TikTok Transcript API.
  • You want everything a creator has posted so you can pick videos to analyse. Start at the TikTok Channel Videos API and pass the URLs it returns into this endpoint.
  • You need the full reply tree under each comment. This endpoint returns top-level comments and a reply count, and there is no separate replies endpoint.

Pricing

Start free, pay for what comes back

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 your bill
$7/ month
30 comments/day × 2 credits × 365 days = 21,900 credits/yr, or $84/yr on the annual plan plus 10 top-up blocks Whichever plan is cheaper for that volume, divided by 12.
30
102,000
Credits / yr 21,900
Plan Annual $54/yr
Per comment

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.

Free trial
100 credits

On signup, no card. Your key is on screen immediately.

Get your free API key
Monthly $5/mo 1,000 credits. Top-ups $4 per extra 1,000.
Annual $54/yr 12,000 credits. Top-ups $3 per extra 1,000.

Entry price, side by side

Cheapest way to start

Verified July 2026 from each vendor's live pricing page
ScraperSocial
$5 / mo 1,000 credits · 100 free credits, no card
Supadata
$5 / mo 300 credits, annual commitment · 100 free/mo
SocialKit
$29 / mo 12,000 credits · 20 free credits
Dumpling AI
$40 / mo Billed annually · free tier size unpublished
ScrapeCreators
$47 pack 25,000 credits, no subscription · 100 free once

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

Docs you can build on

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.

Failed calls are never charged Public data only, no login session Built for parallel traffic

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

Frequently asked

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

Pairs well with

Full TikTok API reference →
/v1/tiktok/stats
TikTok Stats API Views, likes, comments and shares for a single TikTok video. 3 cr / video
/v1/tiktok/channel-videos
TikTok Channel Videos API Latest videos from a TikTok account with per-video metrics. 3 cr / video
/v1/instagram/comments
Instagram Comments API Paginated comments on an Instagram post; charged per comment returned. 3 cr / comment
/v1/facebook/comments
Facebook Comments API Paginated comments on a Facebook post; charged per comment returned. 3 cr / comment

More TikTok endpoints

/v1/tiktok/transcript Full transcript of a TikTok video with timestamped segments. 8 credits / video /v1/tiktok/summary Short AI summary of a TikTok video, built on its transcript. 10 credits / video /v1/tiktok/stats Views, likes, comments and shares for a single TikTok video. 3 credits / video /v1/tiktok/channel-stats Follower counts and profile metadata for a TikTok account. 3 credits / profile /v1/tiktok/channel-videos Latest videos from a TikTok account with per-video metrics. 3 credits / video /v1/tiktok/search Keyword search over TikTok videos. 4 credits / result /v1/tiktok/hashtag-search Videos posted under a TikTok hashtag. 3 credits / result /v1/tiktok/download Resolves a downloadable media URL for a TikTok video (URL expires within 1h). 7 credits / video

Try the TikTok Comments endpoint free

100 trial credits on signup — no card, key on screen immediately.

1 Sign up free no card · 30 seconds
2 Copy your key sk_live_...
3 GET the endpoint /v1/tiktok/comments
Get your free API key