# TikTok Comment Scraper (`scraptivo/tiktok-comment-scraper`) Actor

Collects comments from TikTok video URLs. Returns author profile, comment text, likes, reply count, and date.

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

## Pricing

from $1.00 / 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.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

**TikTok Comment Scraper** collects comments from TikTok videos and turns them into structured data for sentiment analysis, influencer research, and brand monitoring. Provide one or more TikTok video URLs, run the Actor, and export author username, display name, comment text, likes, reply count, and date to JSON, CSV, Excel, or your preferred integration. Use it to measure audience reaction, compare videos, and automate recurring comment collection. Pricing is **$1.00 per 1,000 comments**, plus a small Actor-start fee.

### What can you automate with TikTok Comment Scraper?

- **Collect audience feedback** — Export comments from any public TikTok video URL you provide.
- **Compare engagement quality** — Rank comments by likes and reply count to see which reactions travel.
- **Monitor brand mentions** — Re-run the same video URLs on a schedule and keep a history of new comments.
- **Vet influencer audiences** — Review comment volume and reply depth across an influencer's videos.
- **Feed analytics tools** — Send structured comment rows into Sheets, Slack, or an NLP pipeline.

### Who is this scraper for?

| Team | Workflow |
|---|---|
| Social and community managers | Reading comment volume and tone on campaign videos. |
| Influencer marketers | Checking audience quality before a sponsorship. |
| Market researchers | Studying product and brand reactions in comment text. |
| Agencies | Exporting comment datasets for client reporting. |

### What data can you collect from TikTok?

| Data group | Example fields | How it helps |
|---|---|---|
| Author | `username`, `name`, profile `image` | Identify who commented. |
| Comment | `text`, `date_of_comment` | Analyze message content and timing. |
| Engagement | `likes`, `reply_count` | Find high-signal comments. |
| Source | `video_url` | Tie each comment back to the TikTok video. |

The Actor returns top-level comments with those fields. Reply-thread text is not a separate record type; `reply_count` tells you how many replies a comment has.

### How to use TikTok Comment Scraper

1. Open the [TikTok Comment Scraper](https://apify.com/scraptivo/tiktok-comment-scraper) on Apify.
2. Paste one or more TikTok video URLs into `video_urls`.
3. Optionally set `max_comments` to cap the run, or leave `0` for no cap.
4. Run the Actor and wait for comment records to appear in the dataset.
5. Export JSON, CSV, or Excel, or connect the dataset to your workflow.

```json
{
    "video_urls": [
        "https://www.tiktok.com/@freizeit_freaks/video/7537396732502478102"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "DE"
    },
    "max_comments": 0
}
```

### Example workflow

#### Track comments on a campaign video for one week

1. Schedule a daily run with the campaign video URL in `video_urls`.
2. Keep `max_comments` at `0` if you want the full thread, or set a cap for a cheaper sample.
3. Send new rows to Google Sheets or Slack through a webhook.
4. Deduplicate user-side using `video_url` + `username` + `text` + `date_of_comment`.

### Automate and integrate your results

- **Schedules** — Comments arrive throughout the day. Run **daily** for campaign monitoring or **hourly** only on a single high-priority video.
- **Webhooks** — Push completed comment datasets into Sheets, Slack, or an analytics tool.
- **Exports and API** — Download from the Apify Console or start a run from the API:

```shell
curl "https://api.apify.com/v2/acts/scraptivo~tiktok-comment-scraper/runs?token=YOUR-APIFY-TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "video_urls": [
      "https://www.tiktok.com/@freizeit_freaks/video/7537396732502478102"
    ],
    "max_comments": 100,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "DE"
    }
  }'
```

- **Deduplication** — The Actor appends results on every run and does not deduplicate across runs. Combine `video_url`, `username`, `text`, and `date_of_comment` when merging datasets.

### Input reference

| Field | Type | Required | Default | What it controls |
|---|---|---:|---|---|
| `video_urls` | Array of strings | Yes | — | TikTok video URLs to collect comments from. |
| `max_comments` | Integer | No | `0` | Stop after this many comments across all videos (`0` = unlimited). |
| `proxyConfiguration` | Proxy object | No | Apify proxy, RESIDENTIAL, country `DE` | Residential proxies are required. Datacenter IPs are blocked by TikTok. |

#### Can I scrape comments from several videos in one run?

Yes. Add every video URL to `video_urls`. `max_comments` applies across the whole run, not per video.

### Output example

Each dataset item is one comment:

```json
{
    "image": "https://example.com/avatar.jpg",
    "username": "zena181085",
    "name": "Anja",
    "video_url": "https://www.tiktok.com/@freizeit_freaks/video/7537396732502478102",
    "text": "Er freut sich, das er diese Fahrt jetzt doch überlebt",
    "likes": 6710,
    "reply_count": 2,
    "date_of_comment": "2025-08-12"
}
```

### How much does it cost to scrape TikTok comments?

The Actor uses pay-per-event pricing:

- **$1.00 / 1,000 comments** — one event for every comment pushed to the default dataset.
- **$0.00005 Actor start** — charged when the run starts (scaled by memory).

A 100-comment run costs about **$0.10** in event charges; 1,000 comments cost **$1.00**. Compute units consumed are deducted from your Apify plan. When your event spending limit is reached, the run stops.

### Reliability and responsible use

- **Proxy requirement** — Residential proxies are required. The default input uses the Apify RESIDENTIAL group with country `DE`. Datacenter IPs are typically blocked by TikTok.
- **Conditional fields** — Some authors hide a display name or avatar; those fields can be empty even when the comment text is present.
- **Public comments** — The Actor collects publicly visible comments from the video URLs you provide.
- **Responsible use** — Only use the data in ways that comply with TikTok's terms and applicable law.

### Frequently asked questions

#### Can I scrape comments from a TikTok video URL?

Yes. `video_urls` is required. Paste full TikTok video links such as `https://www.tiktok.com/@username/video/123`.

#### Can I schedule TikTok Comment Scraper to run automatically?

Yes. Use the **Scheduler** tab in Apify Console. Daily collection works for most campaign and influencer videos.

#### What counts as one result?

Each comment row in the default dataset counts as one result at **$1.00 per 1,000**. The Actor-start event is charged once per run.

#### Why are some comments missing replies?

The Actor stores `reply_count` on each comment. It does not return each nested reply as its own record.

#### How do I avoid duplicate records?

The Actor does not deduplicate across runs. When merging, treat `video_url` + `username` + `text` + `date_of_comment` as the practical key. Use `max_comments` to cap a run.

#### Do I need a proxy?

Yes. TikTok blocks datacenter IPs. Keep the default residential proxy configuration.

### Related Scraptivo automations

- [TikTok Profile Scraper](https://apify.com/scraptivo/tiktok-profile-scraper) — profile and video metadata from TikTok accounts.
- [YouTube Comment Scraper](https://apify.com/scraptivo/youtube-comment-scraper) — comments from YouTube videos.
- [Instagram Comment Scraper](https://apify.com/scraptivo/instagram-comment-scraper) — comments from Instagram posts.
- [Reddit Scraper](https://apify.com/scraptivo/reddit-scraper) — posts and community discussion from Reddit.

### Support and custom workflows

Need a different field, source, or delivery workflow? Contact Scraptivo at scraptivo@gmail.com. Include the Actor name, sample URL, required fields, and expected volume so we can assess the request.

# Actor input Schema

## `video_urls` (type: `array`):

List of TikTok Video URLs to scrape comments from

## `proxyConfiguration` (type: `object`):

Residential proxy required. Datacenter IPs are blocked by TikTok.

## `max_comments` (type: `integer`):

Stop after this many comments across all videos. 0 = unlimited.

## Actor input object example

```json
{
  "video_urls": [
    "https://www.tiktok.com/@freizeit_freaks/video/7537396732502478102"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  },
  "max_comments": 0
}
```

# Actor output Schema

## `dataset` (type: `string`):

JSON array of scraped comments at {{links.apiDefaultDatasetUrl}}/items

## `runStats` (type: `string`):

Aggregate run statistics including total comments scraped

## `run` (type: `string`):

Apify Console link to inspect this run

# 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 = {
    "video_urls": [
        "https://www.tiktok.com/@freizeit_freaks/video/7537396732502478102"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraptivo/tiktok-comment-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 = { "video_urls": ["https://www.tiktok.com/@freizeit_freaks/video/7537396732502478102"] }

# Run the Actor and wait for it to finish
run = client.actor("scraptivo/tiktok-comment-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 '{
  "video_urls": [
    "https://www.tiktok.com/@freizeit_freaks/video/7537396732502478102"
  ]
}' |
apify call scraptivo/tiktok-comment-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scraptivo/tiktok-comment-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/ziPrlCa0LCx0cMCF8/builds/qlabtrdi59uKyrcDP/openapi.json
