Install
openclaw skills install @apidojo-io/extracting-tiktok-comments-for-researchExtracts and analyzes TikTok comments from any video or creator using apidojo's TikTok Comments scraper on Apify. Triggers when the user asks to: scrape TikTok comments from a video, analyze what viewers say about a TikTok post, extract comment data for sentiment analysis, find top comments on a viral TikTok video, collect TikTok user feedback from comments, build a dataset of TikTok community reactions, study audience sentiment on TikTok content, or research what a target audience cares about from TikTok comments. Returns commenter username, comment text, likes on comment, reply count, and timestamp. Ideal for market researchers, brand managers, content creators, and academic researchers.
openclaw skills install @apidojo-io/extracting-tiktok-comments-for-researchPulls 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.
APIFY_TOKEN environment variable set| 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 |
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 output
Ask the user for:
https://www.tiktok.com/@creator/video/[ID])
ORTip for best research: Use 3-5 videos from the same creator or about the same topic for a reliable dataset.
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 json
APIFY_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.
From raw dataset, extract per comment:
text — the comment textauthor.uniqueId — commenter usernamediggCount — likes on the commentreplyCommentTotal — how many replies this comment receivedcreateTime — timestampClean:
author.uniqueId)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:
Goal: Audience profiling From commenter bios (if available) and comment language:
Goal: Top comments
Simply sort by diggCount descending. Top-liked comments represent the community's most agreed-upon reactions.
# 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]
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.