원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.
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.

