# Extracting Tiktok Comments For Research

> Extracts 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.

- Skill: `apidojo-io/extracting-tiktok-comments-for-research` (Agent Skill)
- Install (CLI): `npx skillmds@latest add apidojo-io/extracting-tiktok-comments-for-research`
- Raw SKILL.md: https://api.skillmd.com/api/skills/apidojo-io/extracting-tiktok-comments-for-research/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- License: Apache-2.0
- Author: apidojo-io (https://skillmd.com/u/apidojo-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/apidojo-io/extracting-tiktok-comments-for-research

---


# 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_TOKEN` environment 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 output
```

### Step 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):**
```bash
# 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_TOKEN` must be set in environment or `.env` file.

**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:**
```bash
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 text
- `author.uniqueId` — commenter username
- `diggCount` — likes on the comment
- `replyCommentTotal` — how many replies this comment received
- `createTime` — 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.


