# Tiktok Comments Scraper (`solid-scraper/tiktok-comments-scraper`) Actor

📢 Tiktok Comments Scraper extracts public TikTok comment data fast for smarter audience research and engagement insights. 🎯 Analyze trends, find leads, and boost campaigns—no manual scraping needed. ⚡ Perfect for marketers, creators & agencies!

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

## Pricing

from $1.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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 Comments Scraper 🔍

**TikTok Comments Scraper** extracts comments from TikTok videos and saves the results directly into your Apify dataset—so you can analyze engagement at scale without manual copy-pasting. Whether you're a marketer, social media analyst, researcher, or data enthusiast, this TikTok comments scraper tool helps you scrape TikTok comments and build structured datasets for reporting and insights, saving you hours of manual work.

***

### Why choose TikTok Comments Scraper?

| Feature | Benefit |
| --- | --- |
| ✅ **All-in-one comments collection** | Extracts TikTok user comments (text, IDs, timestamps, likes, and more) for multiple video URLs in one run |
| ✅ **Built-in reliability logic** | Includes retries and fallback behavior to handle transient failures during extraction |
| ✅ **Configurable limits per video** | Controls how many comments and replies you collect to match your budget and analysis needs |
| ✅ **Structured output for analysis** | Outputs consistent JSON records with fields like `createTimeISO`, `diggCount`, `uniqueId`, and `cid` |
| ✅ **Live data appending to Apify datasets** | Saves results as they’re scraped, reducing the risk of losing data mid-run |
| ✅ **Built-in proxy support** | Supports Apify proxy configuration for more reliable scraping runs |

***

### Key features

- 🎯 **Purpose-built for TikTok video comments**: Collects comment text and key engagement signals from each provided video URL
- 🧾 **Structured comment records**: Produces clean fields like `videoWebUrl`, `text`, `createTimeISO`, and `diggCount` for easy downstream use
- 🛡️ **Resilience with error handling**: Handles timeouts and transient failures with retries and controlled stopping conditions
- 🔄 **Reply-aware data collection**: Includes settings to cap replies per comment (`maxRepliesPerComment`)
- 💾 **Real-time dataset saving**: Pushes each scraped comment directly to the Apify output dataset during execution
- 🌐 **Supports multiple input URL formats**: Accepts video URLs you provide in `postURLs` (including direct and shortened links)
- 📊 **Engagement & identity fields included**: Captures `replyCommentTotal`, `uniqueId`, `uid`, and `avatarThumbnail` for richer analytics

***

### Input

Provide input via an `input.json` file. Example structure:

```json
{
  "postURLs": [
    "https://www.tiktok.com/@voicer_nayem_69/video/7576465859598634258"
  ],
  "commentsPerPost": 100,
  "topLevelCommentsPerPost": 5,
  "maxRepliesPerComment": 0
}
```

#### Input Fields

| Field | Required | Description |
| --- | --- | --- |
| `postURLs` | Yes | List of TikTok video URLs to scrape. Use single video URLs or user's video URLs. |
| `commentsPerPost` | No | Maximum number of comments to scrape per video. Default is `100` and minimum is `1`. |
| `topLevelCommentsPerPost` | No | Maximum number of top-level comments to scrape per video. Default is `5` and minimum is `0`. |
| `maxRepliesPerComment` | No | Maximum number of replies to scrape per comment. Default is `0` and minimum is `0`. |

***

### Output

The actor pushes extracted comments to the default Apify dataset **“Extracted Comments”** as individual JSON records.

#### Example output record

```json
{
  "videoWebUrl": "https://www.tiktok.com/@x/video/VIDEO_ID",
  "submittedVideoUrl": "https://www.tiktok.com/@x/video/VIDEO_ID",
  "input": "https://www.tiktok.com/@x/video/VIDEO_ID",
  "cid": "COMMENT_ID",
  "createTime": 1712345678,
  "createTimeISO": "2025-06-01T04:28:40.000Z",
  "text": "This is a comment text",
  "diggCount": 123,
  "likedByAuthor": false,
  "pinnedByAuthor": false,
  "repliesToId": "REPLY_TO_COMMENT_ID",
  "replyCommentTotal": 2,
  "uid": "USER_ID",
  "uniqueId": "username",
  "avatarThumbnail": "https://example.com/avatar.jpg",
  "mentions": ["@someone"],
  "detailedMentions": [
    {
      "userId": "USER_ID",
      "secUid": "SEC_UID",
      "uniqueId": "someone",
      "start": 0,
      "end": 8
    }
  ]
}
```

#### Output Fields

| Field | Type | Description |
| --- | --- | --- |
| `videoWebUrl` | string | Canonical TikTok video URL associated with the comment |
| `text` | string | The comment text |
| `createTimeISO` | string | Comment creation time in ISO format (UTC) |
| `diggCount` | number | Number of likes for the comment |
| `replyCommentTotal` | number | Total number of replies for the comment |
| `uniqueId` | string | Username of the commenter |
| `uid` | string | User ID of the commenter |
| `cid` | string | Comment ID |
| `avatarThumbnail` | string | URL to the commenter’s avatar thumbnail |
| `submittedVideoUrl` | string | The video URL value you submitted in `postURLs` (as received by the actor) |
| `input` | string | Echoes the input video URL |
| `createTime` | number | Comment creation time as a Unix timestamp |
| `likedByAuthor` | boolean | Whether the comment is liked by the video author (`is_author_digged`) |
| `pinnedByAuthor` | boolean | Whether the comment is pinned by the video author (`author_pin`) |
| `repliesToId` | string | null | If the comment is a reply, this contains the `reply_id` (otherwise `null`) |
| `mentions` | array | Extracted mention strings found in the comment text |
| `detailedMentions` | array | Structured mention objects with offsets and user identifiers |

> Note: The actor also uses additional internal fields not shown in the dataset table transformation, but the dataset will reflect the fields listed in the “Extracted Comments” transformation: `videoWebUrl`, `text`, `createTimeISO`, `diggCount`, `replyCommentTotal`, `uniqueId`, `uid`, `cid`, `avatarThumbnail`.

You can export your Apify dataset to JSON or CSV from the Apify UI after the run completes.

***

### How to use TikTok Comments Scraper (via Apify Console)

1. **Open Apify Console**\
   Log in at https://console.apify.com and go to the **Actors** tab.

2. **Find the actor card**\
   Search for **TikTok Comments Scraper** and open the actor details page.

3. **Paste your input**\
   In the **INPUT** section, provide `postURLs` (a list of TikTok video URLs). Optionally set `commentsPerPost`, `topLevelCommentsPerPost`, and `maxRepliesPerComment`.

4. **(Optional) Configure proxy support**\
   If you see proxy configuration options, use them to help with reliable extraction—especially for bulk runs. The actor supports proxy usage via Apify proxy configuration.

5. **Start the run**\
   Click **Run**. Watch the logs for progress messages while comments are being scraped and appended to the dataset.

6. **Monitor for resilience signals**\
   If requests time out or return non-200 responses, the actor uses error handling and controlled retries/fallbacks. The run stops when it reaches your limits or when no more comments are returned.

7. **Open your dataset output**\
   After completion, go to the **OUTPUT** tab and open the dataset **“TikTok Comments”** → **“Extracted Comments”**.

8. **Export results**\
   Export to JSON or CSV from the dataset view for analysis, reporting, or pipeline ingestion.

No coding required—get TikTok comments extracted and structured in minutes with this TikTok comments collector.

***

### Advanced features & SEO optimization

- 🧠 **Engineered for “TikTok comments scraper” workflows**: Tuned for use cases like TikTok comment analytics scraper projects and hashtag- or campaign-level aggregation
- 🔄 **Controlled collection limits**: Use `commentsPerPost`, `topLevelCommentsPerPost`, and `maxRepliesPerComment` to match what you need (and avoid unnecessary volume)
- 🕒 **Resilience-oriented execution**: Includes retries and pacing to handle intermittent issues during large scraping sessions
- 🌐 **URL resolution support**: Handles short-link style inputs by resolving to a canonical video URL before extracting comments
- 📊 **Rich comment context**: The output includes engagement signals (`diggCount`, `replyCommentTotal`) and identity fields (`uniqueId`, `uid`, `avatarThumbnail`) useful for deeper analytics

***

### Best use cases

- 📈 **Marketing teams building engagement reports**: Collect TikTok video comments to quantify sentiment themes and interaction patterns across multiple posts
- 🔎 **Social media researchers**: Scrape TikTok user comments into a structured dataset to support analysis and documentation
- 🎯 **Influencer and brand outreach**: Use extracted comment mentions and user identifiers to map community activity around specific creators
- 🧾 **Content performance analysts**: Track comment volume and engagement signals (`diggCount`, `replyCommentTotal`) to compare posts over time
- 🏗️ **Data analysts creating TikTok comments API-like pipelines**: Ingest dataset outputs into your BI tools for dashboards and recurring reporting
- 🧪 **Product and community insights**: Gather comment text and mention data to spot recurring requests, topics, and questions
- 💼 **Lead generation ops (ethics-first)**: Use TikTok comments extraction software outputs as signals for segmentation and research workflows

***

### Technical specifications

- **Supported Input Formats**
  - ✅ `postURLs`: array of TikTok video URLs (direct or short-link style URLs supported)
  - ✅ Limits available via `commentsPerPost`, `topLevelCommentsPerPost`, `maxRepliesPerComment`

- **Proxy Support**
  - ✅ Uses proxy configuration from actor input (built-in proxy support for more reliable scraping runs)

- **Retry Mechanism**
  - ✅ Includes retries and stops after consecutive failures exceed a threshold while continuing until collection limits are reached

- **Dataset Structure**
  - ✅ Default dataset: **“TikTok Comments”**
  - ✅ Dataset view: **“Extracted Comments”** with table fields:
    `videoWebUrl`, `text`, `createTimeISO`, `diggCount`, `replyCommentTotal`, `uniqueId`, `uid`, `cid`, `avatarThumbnail`

- **Rate Limits & Performance**
  - ⚠️ Performance depends on video size and responsiveness; the actor includes delays between requests to reduce blocking risk.

- **Limitations**
  - ❌ Output depends on what is publicly available for the provided videos
  - ❌ Extremely large extraction runs can take longer and may require careful limit tuning

***

### FAQ

#### What does TikTok Comments Scraper output?

✅ It outputs one JSON record per scraped comment into the Apify dataset, including fields like `videoWebUrl`, `text`, `createTimeISO`, `diggCount`, `replyCommentTotal`, `uniqueId`, `uid`, `cid`, and `avatarThumbnail`.

#### Can I scrape comments from multiple TikTok videos in one run?

✅ Yes. Provide multiple URLs in `postURLs`, and the actor will process each one and append results to the dataset during execution.

#### How do I limit how many comments the actor collects?

✅ Use `commentsPerPost` for the maximum comments per video. You can also set `topLevelCommentsPerPost` and `maxRepliesPerComment` to cap top-level comments and replies.

#### Does it support proxy configuration for more reliable scraping?

✅ Yes. The actor is designed with built-in proxy support for reliable scraping runs using proxy configuration from the input.

#### Where can I export TikTok comments after the run?

✅ After execution, open the dataset in the Apify **OUTPUT** tab and export the records (JSON or CSV) from the dataset view.

#### Do I need to write any code to use this TikTok comments scraper?

✅ No. You can run it directly in Apify Console by providing `postURLs` and optional limit settings in the INPUT section.

#### Is this tool collecting data from private or authenticated pages?

❌ No. It is intended for scraping data from publicly available sources only.

#### Is there a minimum required input?

✅ Yes. `postURLs` is the only required input field.

***

### Support & feature requests

Want to improve TikTok Comments Scraper or report an issue? 💬 Share feedback with us at any time.

- 💡 **Feature Requests**: For example, enhancements like additional export options (CSV/JSON variations), more dataset fields, or deeper controls for how comment content is structured.
- 📧 **Contact**: Send a message to <dataforleads@gmail.com>.

Your feedback directly shapes the roadmap for this TikTok comments download and analytics-focused workflow.

***

### Closing CTA / Final thoughts

*Get the most comprehensive TikTok Comments Scraper experience for extracting TikTok comments into a ready-to-analyze dataset—built for speed, structure, and scale.* If you’re looking for a TikTok comment scraper tool that makes bulk extraction practical, this is your next run.

***

### Disclaimer

**This tool only accesses publicly accessible sources.** It does not access private profiles, password-protected content, or authenticated data. It’s your responsibility to comply with applicable laws (including GDPR/CCPA where relevant), spam regulations, and platform terms of service.

For data removal requests, contact <dataforleads@gmail.com>. Please use this tool responsibly, ethically, and for legitimate purposes only.

# Actor input Schema

## `postURLs` (type: `array`):

List of TikTok video URLs. Use single video URLs or user's video URLs.

## `commentsPerPost` (type: `integer`):

Maximum number of comments to scrape per video.

## `topLevelCommentsPerPost` (type: `integer`):

Maximum number of top-level comments to scrape per video.

## `maxRepliesPerComment` (type: `integer`):

Maximum number of replies to scrape per comment.

## Actor input object example

```json
{
  "postURLs": [
    {
      "url": "https://www.tiktok.com/@voicer_nayem_69/video/7576465859598634258"
    }
  ],
  "commentsPerPost": 100,
  "topLevelCommentsPerPost": 5,
  "maxRepliesPerComment": 0
}
```

# 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 = {
    "postURLs": [
        {
            "url": "https://www.tiktok.com/@voicer_nayem_69/video/7576465859598634258"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("solid-scraper/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 = { "postURLs": [{ "url": "https://www.tiktok.com/@voicer_nayem_69/video/7576465859598634258" }] }

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

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

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

```

## CLI example

```bash
echo '{
  "postURLs": [
    {
      "url": "https://www.tiktok.com/@voicer_nayem_69/video/7576465859598634258"
    }
  ]
}' |
apify call solid-scraper/tiktok-comments-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solid-scraper/tiktok-comments-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/xqMPurLJoczfG64zl/builds/15YzgMmB56kr0WFgH/openapi.json
