TikTok Comment Scraper

Pull comments and threaded replies on any public TikTok video as structured JSON, with cursor pagination, like counts and reply counts.

Scrape TikTok comments without touching the app

Comments are the densest signal layer on TikTok. They carry sentiment, purchase intent, complaints, language and region hints, and the social proof - likes and reply counts - that decides which opinions surface. For social listening platforms, CX teams, brand-safety tooling and academic research, the comment thread is frequently worth more than the video attached to it.

TikLiveAPI exposes two endpoints for this. /post-comments/ returns top-level comments on a public video, and /post-comment-replies/ expands the thread under any one of them. Both are plain HTTPS GET calls authenticated with an X-Api-Key header, both page with a cursor, and both return JSON directly - there is no job to submit and no dataset to fetch afterwards.

What a scraped comment contains

Each entry in the comments array carries the comment itself plus a nested user object identifying whoever wrote it:

Comment fields

id, video_id, text, images (an empty array on text-only comments), create_time as a Unix timestamp, digg_count for likes, reply_total, and status.

Author fields

A nested user object with the commenter's numeric id, unique_id, nickname, sec_uid, region, language, avatar and verified flag. It is an identity record, not a full profile: follower_count, aweme_count and create_time come back as 0 in comment payloads.

Paging fields

Alongside the array you get total, cursor and hasMore, so a collection loop is a while loop over hasMore rather than guesswork.

Threaded replies

Any comment with a non-zero reply_total can be expanded by passing its id as comment_id to the replies endpoint, together with the video_id.

A complete comment scrape

The comments endpoint keys off the public video URL, so you can go straight from a link someone pasted to a dataset:

curl "https://api.tikliveapi.com/post-comments/?url=https%3A%2F%2Fwww.tiktok.com%2F%40tiktok%2Fvideo%2F7460937381265411370" \
  -H "X-Api-Key: YOUR_API_KEY"

A trimmed response:

{
  "comments": [
    {
      "id": "7460951322251920150",
      "video_id": "7460937381265411370",
      "text": "please Mr. TikTok, don't sell it to Elon or Zucky 😭",
      "create_time": 1737138145,
      "digg_count": 878058,
      "reply_total": 93,
      "user": {
        "unique_id": "millennial.dominique",
        "nickname": "Dominique (Taylor's Version)",
        "region": "DE",
        "verified": false,
        "follower_count": 0
      }
    }
  ],
  "total": 353627,
  "cursor": 20,
  "hasMore": true
}

To walk the whole thread, keep calling with the returned cursor until hasMore is false. Add count to size each page: both endpoints accept up to 50 per request, and a page can come back with fewer. Then expand the comments with the highest reply_total:

curl "https://api.tikliveapi.com/post-comment-replies/?video_id=7460937381265411370&comment_id=7460951322251920150&count=50" \
  -H "X-Api-Key: YOUR_API_KEY"

Replies come back with the same fields as top-level comments except reply_total. The full pagination loop, including de-duplicating comments that repeat across adjacent pages, is worked through in fetching TikTok comments at scale with pagination.

What teams build with it

Sentiment pipelines

Feed text into a classifier and weight each score by digg_count so a comment with 800,000 likes does not count the same as one with two. A worked example lives in the sentiment pipeline guide.

Complaint triage

Match comments against a keyword or embedding list and route hits into a support queue, using reply_total to spot the threads that are turning into arguments.

Campaign measurement

Scrape comments across every video carrying a branded hashtag and track how the language shifts over the life of a campaign.

Spam and bot detection

The nested user object gives each commenter's region, language and stable IDs, so the same text posted from many accounts is easy to catch. Comment payloads carry no account age or follower counts, so for account-level checks pass user.id to /userinfo-by-id/, which returns createTime and the full stats block.

Scope and limits

Only comments on public videos are readable, exactly as a logged-out visitor would see them; comments on private accounts are not accessible. TikLiveAPI stores none of it: each request fetches the public comments from TikTok and forwards the response to you in real time. What arrives is the comment record described above plus the commenter's public identity - handle, nickname, avatar, region, language, bio (signature) and the linked-account fields TikTok includes (ins_id, twitter_id, twitter_name, youtube_channel_id, youtube_channel_title). A bio can hold whatever contact details its author chose to publish. Privacy duties attach to the copy you keep. If you store comment text and handles about identifiable people in the EU or UK, you need a lawful basis under GDPR Article 6, the CCPA can apply to data about California residents, and retention limits apply like any other personal data. Related reading: the comments API power-user guide and the broader TikTok scraper overview. Comments are one part of the posts category; the video API reference covers the rest, from single-video detail to feeds and search.

Frequently Asked Questions

How do I scrape comments from a TikTok video?

Send a GET request to /post-comments/ with the public video URL in the url parameter and your key in the X-Api-Key header. The response is a JSON object with a comments array plus total, cursor and hasMore. Pass the returned cursor back on the next call and repeat while hasMore is true to collect the full thread.

How many comments can I fetch per request?

Up to 50. The count parameter accepts a maximum of 50 on both /post-comments/ and /post-comment-replies/, and a page can come back with fewer. Larger threads are collected by passing the cursor from each response back on the next call until hasMore is false.

Can I get replies to a specific comment?

Yes. Any comment with a reply_total above zero can be expanded by calling /post-comment-replies/ with that comment's id as comment_id together with the video_id. Replies page with a cursor exactly like top-level comments do, and each reply carries the same fields as a top-level comment except reply_total.

What fields does each scraped comment include?

Each comment carries id, video_id, text, images (empty on text-only comments), create_time as a Unix timestamp, digg_count for likes, reply_total and status. A nested user object identifies the commenter with id, unique_id, nickname, sec_uid, region, language, avatar URL and verified flag. Its follower_count, aweme_count and create_time fields come back as 0, so fetch account stats and age with /userinfo-by-id/ when you need them.

Can I scrape comments on private TikTok accounts?

No. The API reads only what a logged-out visitor can see, so comments on private or restricted accounts are not accessible. TikLiveAPI also keeps no copy of what it reads: each request is fetched from TikTok and forwarded to you in real time, with the comment text, timestamps and counts plus the commenter's public profile fields - handle, nickname, avatar, region, language, bio and linked Instagram, X and YouTube fields.

Do I need a TikTok developer account to scrape comments?

No. You authenticate against TikLiveAPI with your own API key, not against TikTok. There is no TikTok developer application to file and no OAuth flow. Register, verify your email, and you get 100 free credits to test the comment endpoints.

Start building with real-time TikTok data today.

Credit packages from $9.90 for 100,000 requests. Start with 100 free credits.