All posts

TikTok comment scrapers, and what to do with the comments

November 8, 2026

Comments are the most honest data on TikTok. Plays tell you a video was seen. Comments tell you what people thought, what they asked and what stopped them from buying. This post covers how to collect them and, more usefully, what to do once you have them.

Ways to collect TikTok comments

TikTok Research API

Its comment endpoint returns id, text, like count, reply count, parent comment id and create time, up to 100 per call. Pass a video id for top-level comments or a comment id for replies. TikTok redacts personal details such as phone numbers and emails in the text source. Access is for eligible researchers only source.

Open source

The TikTok-Api Python library reads public web data through a browser session. It is free, but the README warns that TikTok may block it as a bot source. Fine for a one-off study of a few videos.

Paid tools

Bright Data has a TikTok comments scraper at $1.50 per 1,000 records pay as you go source. EnsembleData lists post comments among its TikTok endpoints, on plans from $100 a month source. ScrapeIO has tiktok comments API and tiktok comment replies API at 1 credit per page.

What a useful comment record looks like

FieldUse
textThe content you classify.
likesHow many people agree. Weight by this.
repliesWhere the conversation is. Pull replies for the top threads.
created_atEarly comments versus late ones often differ.
author.handleSpot repeat commenters and the creator's own replies.

A method: five buckets

Sort each comment into one of five buckets. You can do this with keyword rules for a first pass and a language model for the rest.

  1. Question: "where is this from", "does it work on", "how much". These are content ideas and FAQ entries.
  2. Objection: "too expensive", "broke me out", "doesn't ship to". These are product and messaging fixes.
  3. Purchase intent: "need this", "just ordered", "link?". Count these per video to compare creators.
  4. Praise: social proof you can quote, with permission.
  5. Noise: emojis, tags of friends, spam.
import re, requests
KEY = "YOUR_KEY"
RULES = {
    "question": r"\?|where (is|did|can)|how (much|do|does)|what (is|brand)",
    "objection": r"too (expensive|much)|broke me out|doesn.?t (work|ship)|scam|returned",
    "intent": r"need (this|it)|just (ordered|bought)|link|add(ed)? to cart|buying",
}

def bucket(text):
    t = (text or "").lower()
    for name, pat in RULES.items():
        if re.search(pat, t):
            return name
    return "other"

def comments(url, pages=5):
    cursor = None
    for _ in range(pages):
        params = {"url": url}
        if cursor:
            params["cursor"] = cursor
        r = requests.get("https://scrapeio.com/v1/tiktok/video/comments",
                         params=params, headers={"x-api-key": KEY}, timeout=30).json()
        yield from r["data"]["items"]
        if not r["data"]["has_more"]:
            break
        cursor = r["data"]["cursor"]

counts = {}
for c in comments("https://www.tiktok.com/@user/video/7351234567890123456"):
    b = bucket(c["text"])
    counts[b] = counts.get(b, 0) + (c["likes"] or 0) + 1
print(counts)

Weighting by likes plus one means a question with 2,000 likes counts far more than a question nobody else cared about.

Three numbers worth tracking

  • Comment rate = comments / plays. It flags videos that started a conversation, not only ones that were watched.
  • Intent share = intent comments / all classified comments. Compare it across creators in a campaign.
  • Creator reply rate = comments the creator answered / top 50 comments. Creators who reply tend to build stronger audiences.

Be careful with personal data

Comments are public, but they are written by people. Analyse them in aggregate, do not build profiles of individual commenters, and quote someone only with permission. Check TikTok's terms and the privacy law that applies to you. This is not legal advice.

How many comments you need

You rarely need every comment. Comments usually come most-liked first, so the first few pages hold the ones that most viewers saw and agreed with. For a single video, the top 100 to 200 comments plus the replies to the top 10 threads is usually enough to see the main themes. For a creator or campaign, sample the same number from each of their last 10 to 20 videos, so one viral video does not drown out the rest. Keep the video id with each comment so you can compare videos later.

How to do it with ScrapeIO

Use tiktok comments API with the video URL, follow data.cursor while data.has_more is true, and call tiktok comment replies API for threads with many replies. Each page is 1 credit. For an agent workflow, the comment-insights skill in our agent skills does the bucketing for you.

Sources

Checked on 8 November 2026 from each vendor's own pages. Prices and limits change; follow the links before you decide.

100 free credits, no card. Credits never expire.

Get API key