# TikTok Comments Scraper & Analyzer: Questions, Complaints (`zaiq/tiktok-comments-scraper`) Actor

Every comment under any TikTok video, without login: text, likes, replies, date, author, language and whether the creator liked it. Optional AI insights per video: sentiment, themes, top questions, complaints, requests, praise and buying signals, counted from every comment.

- **URL**: https://apify.com/zaiq/tiktok-comments-scraper.md
- **Developed by:** [Zaiq](https://apify.com/zaiq) (community)
- **Categories:** Social media, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.48 / 1,000 comments

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## TikTok Comments Scraper & Analyzer: every comment, and what they add up to (no login)

Get **every comment under any TikTok video**, without an account: the **text, likes, replies, date, author, language** and whether the **creator liked it**. Paste video links, set how many comments, and download them as a table.

Turn on the **insights report** and each video also gets **what its comments add up to**: the **sentiment split**, the **themes** people talk about, their **top questions**, **complaints**, **requests**, **praise** and **buying signals**, each with real example comments. The counts come from **labelling every comment**, not from a guess. Built for **brands, creators, agencies, product teams and social listening**.

### What you get

| Field | What it holds |
|---|---|
| Comment rows | `text`, `likes`, `replies`, `createdAt`, `author`, `authorName`, `language`, `likedByCreator`, `id`, with `videoUrl`, `videoId`, `videoAuthor`, `videoCaption` |
| Video row | the video's `caption`, `plays`, `likes`, `comments`, `shares`, `saves`, `createdAt`, `author`, `music`, `commentsRead` |
| Insights row (optional) | `summary`, `sentiment` (positive, neutral, negative %), `kinds` (questions, complaints, requests, praise, buying signals: counted), `themes` (with counts and shares), `topTopics`, `questions`, `complaints`, `requests`, `praise`, `purchaseIntent`, each point with example comments |
| SUMMARY | what each link returned, notes, comments and reports charged |

### What people use it for

- **Audience research:** what viewers ask and want under your videos or a competitor's
- **Product feedback:** complaints and requests under product and review videos
- **Campaign monitoring:** sentiment under a launch or an influencer post
- **Content ideas:** the questions people ask: your next videos
- **Buying signals:** comments asking where to buy, the price or a link
- **AI agents:** TikTok comments and their meaning inside any workflow

### How to use it

1. Paste **TikTok video links** (or vm.tiktok.com short links), one per line.
2. Set **Comments per video** and keep **Insights report** on for the analysis.
3. Click **Start**, then open the **Comments** or **Insights** table, or download it (JSON, CSV, Excel).

### Input

| Field | Example | Notes |
|---|---|---|
| Video links | `https://www.tiktok.com/@user/video/...` | One per line; short links work |
| Comments per video | `100` | Up to 2,000 |
| Insights report | on | One report per video |
| Write the report in | English | Or 17 other languages; comments stay as written |

### Output

Each result is one row in the run's dataset (download it as JSON, CSV, Excel, XML or HTML, or read it through the API). An example row (values shortened):

```json
{
  "kind": "comment",
  "videoUrl": "https://www.tiktok.com/@example.creator/video/6718335390845095173",
  "text": "ok ;)\nodoreta\nhave fun~\n(it's a Serbian name)",
  "likes": 166,
  "replies": 49,
  "createdAt": "2019-07-27T13:34:35Z",
  "author": "example.viewer",
  "language": "un"
}
```

With insights on, each video also gets one `insights` row. From a run on 17 October 2026 (60 comments of a 10-second pet video, names removed): sentiment 25% positive, 75% neutral, 0% negative; themes "Name scramble game" 55 comments (91.7%), "Video content and aesthetics" 3, "Audio" 2; top question "Viewers want to know the background song" (example: "Omg what is this songgg"). A record named `SUMMARY` in the run's key-value store says what each link returned and what was charged.

### Pricing

- **$0.0006 per comment** ($0.60 per 1,000)
- **$0.03 per insights report** (one per video, only when asked for; failed reports are free)
- Videos that are removed or private cost nothing
- The AI model that writes the report (Google's Gemini Flash) is billed by Apify at its exact cost: about $0.01 a report on 60 to 150 comments (measured 17 October 2026), more for more comments; Apify charges free-plan accounts 10 times that

What typical jobs cost at the list price:

| Job | Cost |
|---|---|
| 100 comments of one video | $0.06 |
| 100 comments with the insights report | $0.09 |
| 10 videos, 200 comments each, with reports | $1.50 |
| 1,000 comments | $0.60 |

On Apify's Scale and Business plans the per-event prices are lower (Store discounts). Set **Maximum cost per run** and the Actor stops cleanly when it is reached: you never pay more than that.

### Tips

- Run it on your competitors' best videos: their comments are free product research.
- Count `purchaseIntent` across a campaign's videos to see which ones made people want to buy.
- Schedule it on new videos to track sentiment week by week.

### Use it through the API

**Python**

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("zaiq/tiktok-comments-scraper").call(run_input={"videoUrls": ["https://www.tiktok.com/@example/video/1234567890123456789"], "maxComments": 200})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row)
```

**JavaScript**

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('zaiq/tiktok-comments-scraper').call({"videoUrls": ["https://www.tiktok.com/@example/video/1234567890123456789"], "maxComments": 200});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

**HTTP (one call, results back)**

```bash
curl -X POST 'https://api.apify.com/v2/acts/zaiq~tiktok-comments-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{"videoUrls": ["https://www.tiktok.com/@example/video/1234567890123456789"], "maxComments": 200}'
```

### Integrations and schedules

- **Schedules:** run it every hour, day or week from the Apify Console (Schedules) and keep a history of results.
- **Make, Zapier, n8n, Google Sheets, Slack, Airtable:** connect it through Apify's integrations, or send each finished run to a **webhook**.
- **Datasets:** results stay in the run's dataset; export them or read them by API whenever you need them.

### Use it with AI agents (MCP)

Add Apify's MCP server (`https://mcp.apify.com`) to Claude, ChatGPT, Cursor, VS Code or any MCP client. The agent can find this Actor and run it for you: ask it for "get the comments of these 5 TikTok videos and tell me what people complain about". AI agents can also pay for runs directly through Apify's agentic payments.

### Limits

- Public videos only, signed out; TikTok shows a signed-out visitor most comments of a video, but not always all of them (the run says so).
- Replies under comments are counted (`replies`) but not read one by one.
- The report's counts come from the AI's label for each comment: close, not perfect, on slang and sarcasm.
- Public data only: you are responsible for how you use it under TikTok's terms and the privacy laws that apply to you.

### FAQ

**Do I need a TikTok account?**

No. Everything comes from what TikTok shows a signed-out visitor.

**How are the insights counted?**

Every comment is labelled (sentiment, kind, topic), and the counts are added up from those labels. The AI then names the themes and picks example comments.

**Which languages?**

Any. Comments stay as written; the report is in English or the language you pick.

**Can I skip the report?**

Yes: turn Insights report off and pay only per comment.

### Related Actors from Zaiq

- [tiktok-transcript-scraper](https://apify.com/zaiq/tiktok-transcript-scraper): what is said in TikTok videos
- [youtube-comments-scraper](https://apify.com/zaiq/youtube-comments-scraper): YouTube comments with the same insights
- [instagram-reel-script-analyzer](https://apify.com/zaiq/instagram-reel-script-analyzer): any reel as its script
- [tiktok-shop-scraper](https://apify.com/zaiq/tiktok-shop-scraper): what sells on TikTok Shop

### Support

Questions, a site that changed, or a field you need? Open an issue on this Actor's **Issues** tab: we answer there, usually within a day.

***

Also found as: tiktok comments scraper, tiktok comment scraper, tiktok comments export, tiktok comment analysis, tiktok sentiment analysis, tiktok audience research, tiktok comments api, social listening tiktok.

# Actor input Schema

## `videoUrls` (type: `array`):

TikTok video links (or vm.tiktok.com short links), one per line.

## `maxComments` (type: `integer`):

How many comments of each video, most relevant first ($0.0006 each).

## `insights` (type: `boolean`):

Add one report per video: sentiment, themes, top questions, complaints, requests, praise and buying signals, counted from every comment ($0.03 a video; the AI model's own cost is billed by Apify, a fraction of a cent).

## `analysisLanguage` (type: `string`):

The comments are always kept as written.

## Actor input object example

```json
{
  "videoUrls": [
    "https://www.tiktok.com/@scout2015/video/6718335390845095173"
  ],
  "maxComments": 100,
  "insights": true,
  "analysisLanguage": "English"
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset: the results.

## `summary` (type: `string`):

What each input returned, and notes.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "videoUrls": [
        "https://www.tiktok.com/@scout2015/video/6718335390845095173"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zaiq/tiktok-comments-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "videoUrls": ["https://www.tiktok.com/@scout2015/video/6718335390845095173"] }

# Run the Actor and wait for it to finish
run = client.actor("zaiq/tiktok-comments-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "videoUrls": [
    "https://www.tiktok.com/@scout2015/video/6718335390845095173"
  ]
}' |
apify call zaiq/tiktok-comments-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zaiq/tiktok-comments-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/WvskJHSbhMNsbMAEZ/builds/CSJHmofLzZ2aVpPP1/openapi.json
