Renderizado do repositório de origem, preservando títulos, exemplos, código, tabelas, links e imagens.
Extracting TikTok Comments for Research
Pulls all public comments from TikTok videos for audience sentiment analysis, product research, or competitive intelligence. Comments are the rawest form of consumer voice — unfiltered reactions at scale.
Prerequisites
APIFY_TOKENenvironment variable set- Optional: Apify MCP server installed
Inputs
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
startUrls | array | ✅ | [] | TikTok video URLs to scrape comments from |
includeReplies | boolean | Optional | false | Include reply comments (nested) |
maxItems | number | Optional | Unlimited | Maximum comments to return |
customMapFunction | string | Optional | — | JavaScript function to transform each output object |
Workflow
Progress:
- [ ] Step 1: Identify target video(s) and research goal
- [ ] Step 2: Run tiktok-comments-scraper
- [ ] Step 3: Fetch and clean comment dataset
- [ ] Step 4: Analyze themes, sentiment, and top comments
- [ ] Step 5: Deliver research outputStep 1: Clarify Parameters
Ask the user for:
- TikTok video URL(s) — direct links to specific videos (e.g.,
https://www.tiktok.com/@creator/video/[ID])
OR
- Creator handle — pull comments from their most recent/viral videos
- Max comments per video (default: 500; max: ~3,000)
- Research goal — sentiment analysis, product feedback, audience profiling, or competitive intel
- Date filter (optional — focus on recent comments only)
Tip for best research: Use 3-5 videos from the same creator or about the same topic for a reliable dataset.
Step 2: Run the Actor
Recommended — run_actor.js (handles waiting, output, and file saving automatically):
# Quick answer (prints table to chat)
node scripts/run_actor.js \
--actor "apidojo~tiktok-comments-scraper" \
--input '{"param": "value"}'
# Save as CSV
node scripts/run_actor.js \
--actor "apidojo~tiktok-comments-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.csv --format csv
# Save as JSON
node scripts/run_actor.js \
--actor "apidojo~tiktok-comments-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.json --format jsonAPIFY_TOKENmust be set in environment or.envfile.
If Apify MCP is available:
Tool: apify:run-actor
Actor: "apidojo~tiktok-comments-scraper"
Input:
{
"postURLs": [
"https://www.tiktok.com/@[handle]/video/[VIDEO_ID_1]",
"https://www.tiktok.com/@[handle]/video/[VIDEO_ID_2]"
],
"maxCommentsPerPost": 500,
"includeReplies": false
}REST API fallback:
curl -X POST \
"https://api.apify.com/v2/acts/apidojo~tiktok-comments-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"postURLs": [
"https://www.tiktok.com/@[handle]/video/[VIDEO_ID]"
],
"maxCommentsPerPost": 500,
"includeReplies": false
}'Wait for SUCCEEDED. Fetch dataset.
Step 3: Clean Comment Dataset
From raw dataset, extract per comment:
text— the comment textauthor.uniqueId— commenter usernamediggCount— likes on the commentreplyCommentTotal— how many replies this comment receivedcreateTime— timestamp
Clean:
- Remove empty or emoji-only comments (if doing text analysis)
- Remove spam patterns (repeated text, links, self-promotions)
- Remove the creator's own replies (identified by matching
author.uniqueId)
Step 4: Analyze by Goal
Goal: Sentiment analysis Classify each comment as Positive / Negative / Neutral (use the same lexical method as the Twitter sentiment skill). Weight by diggCount — a liked comment reflects community agreement.
Goal: Product feedback Look for:
- Feature requests: "I wish", "you should", "would be better if", "needs"
- Pain points: "why doesn't it", "can't believe", "problem with", "doesn't work"
- Specific product mentions: nouns that repeat across multiple comments
Goal: Audience profiling From commenter bios (if available) and comment language:
- Identify audience demographics signals (age signals, geographic signals, interest signals)
- Find what questions the audience asks most
Goal: Top comments Simply sort by diggCount descending. Top-liked comments represent the community's most agreed-upon reactions.
Step 5: Format Output
Output Format
# TikTok Comment Analysis
Video(s): [N] | Total comments analyzed: [N] | Date: [DATE]
## Source Videos
| Video | Creator | Views | Comments Extracted |
|-------|---------|-------|-------------------|
| [url] | @[handle] | [N] | [N] |
## Sentiment Distribution (if goal = sentiment)
Positive: [X%] ([N] comments) | Negative: [X%] | Neutral: [X%]
Weighted by likes — Positive: [X%] | Negative: [X%]
## Top 10 Most-Liked Comments
| # | Comment | Likes | Replies |
|---|---------|-------|---------|
| 1 | "[comment text]" | [N] | [N] |
## Key Themes in Comments
| Theme | Frequency | Avg Likes per Comment |
|-------|-----------|----------------------|
| [Theme 1] | [N] | [N] |
| [Theme 2] | [N] | [N] |
## Most Asked Questions
1. "[question text]" — asked by [N] commenters
2. "[question text]" — [N] commenters
## Common Complaints / Pain Points
1. "[pain point]" — [N] comments, [N] total likes
## Audience Signals
- Age/demographic indicators: [summary]
- Geographic signals: [summary]
- Interest signals: [summary]Troubleshooting
Few comments returned: Video may have comments disabled or be relatively new. Try a different video. All comments in non-English: Add a language filter post-processing, or adjust the search to English-language TikTok creators. Spam dominates results: Apply a filter: remove comments shorter than 5 words AND with 0 likes, which tend to be bots.

