TikTok comment scrapers, and what to do with the comments
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
| Field | Use |
|---|---|
| text | The content you classify. |
| likes | How many people agree. Weight by this. |
| replies | Where the conversation is. Pull replies for the top threads. |
| created_at | Early comments versus late ones often differ. |
| author.handle | Spot 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.
- Question: "where is this from", "does it work on", "how much". These are content ideas and FAQ entries.
- Objection: "too expensive", "broke me out", "doesn't ship to". These are product and messaging fixes.
- Purchase intent: "need this", "just ordered", "link?". Count these per video to compare creators.
- Praise: social proof you can quote, with permission.
- 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.
- https://developers.tiktok.com/products/research-api/
- https://developers.tiktok.com/doc/research-api-specs-query-video-comments
- https://github.com/davidteather/TikTok-Api
- https://brightdata.com/products/web-scraper/tiktok
- https://ensembledata.com/tiktok-api
100 free credits, no card. Credits never expire.
Get API key