# Douyin 抖音 Scraper - Videos, Profiles & Comments (`vulnv/douyin-scraper`) Actor

Scrape Douyin (抖音, Chinese TikTok): full video details, video comments, creator profiles, a creator's posted videos, and creator search by keyword. Export likes, comments, shares, saves, music, hashtags and creator data to JSON/CSV/Excel. No login, cookies or proxy needed.

- **URL**: https://apify.com/vulnv/douyin-scraper.md
- **Developed by:** [VulnV](https://apify.com/vulnv) (community)
- **Categories:** Social media, Videos
- **Stats:** 3 total users, 2 monthly users, 96.4% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 videos

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?

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

## Douyin 抖音 Scraper - Videos, Profiles & Comments

**Scrape Douyin (抖音, the Chinese version of TikTok) and export videos, creator profiles and comments to JSON, CSV or Excel.** Pull a video's full details, collect a video's comments, get a creator's profile, list every video a creator has posted, or find creators by keyword - all from one Actor. Each result is one clean, flat row with captions, hashtags, likes, comments, shares, saves, music, video links and creator data.

No login, no cookies, no proxies and no China IP to configure - data is fetched through a fast, managed pipeline. Just pick an operation, add your input and press **Start**.

> **Unofficial notice:** This is an independent tool and is **not** affiliated with, endorsed by, or connected to Douyin, 抖音 or ByteDance. "Douyin", "抖音" and "ByteDance" are trademarks of their respective owners, used here only to describe what the Actor scrapes.

### What is Douyin?

Douyin (抖音) is China's largest short-video platform, with over 700 million daily users. It is ByteDance's domestic sister app to TikTok, and it is where Chinese consumer trends, viral recipes, product launches and live-commerce stars are born. This scraper gives you programmatic access to Douyin videos, creators and comments so you can track creators, benchmark engagement and analyze audience reactions at scale without a Douyin account.

### Operations

Pick one **Operation** and fill in the matching field:

| Operation | Input field | What you get |
|-----------|-------------|--------------|
| **Creator's posted videos** | `userUrls` | Every video on a creator's profile, newest or most popular first, paginated. |
| **Creator profile** | `userUrls` | A creator's profile: followers, following, video count, total likes, bio, IP region, verification. |
| **Video details** | `videoUrls` | The full detail of each video: caption, hashtags, category tags, engagement, music, video and cover links. |
| **Video comments** | `videoUrls` | Top-level comments for each video, with likes, reply counts, region and commenter data. |
| **Search creators by keyword** | `keywords` | Creators matching each keyword, with followers, total likes and video count. |

`videoUrls` accept `douyin.com/video/<id>` URLs, `v.douyin.com` share links or numeric video IDs (e.g. `7681577005137181019`). `userUrls` accept `douyin.com/user/<sec_uid>` URLs, `v.douyin.com` share links, sec_uids (they start with `MS4wLj`) or Douyin IDs (抖音号) - one per line.

Looking for videos by keyword? Use our [Douyin Search Scraper](https://apify.com/vulnv/douyin-search-scraper), which is built for keyword video search.

### How to use it (step by step)

1. Choose an **Operation**.
2. Fill in the matching input:
   - Creator's videos / Creator profile -> paste **Creator URLs / IDs**.
   - Video details / Video comments -> paste **Video URLs / IDs**.
   - Search creators -> add one or more **Creator search keywords**.
3. Set **Maximum results per input** (default 100, or 0 for all available) for the paginated operations.
4. For creator videos, optionally set **Creator video order** (newest first or most popular first).
5. Press **Start**. Export the dataset as JSON, CSV, Excel, XML or via the API.

### Input

| Field | Type | Description |
|-------|------|-------------|
| `operation` | string | **Required.** `user_videos`, `user_profile`, `video_detail`, `video_comments`, or `search_users`. |
| `userUrls` | array | Creator URLs, share links, sec_uids or Douyin IDs (for `user_videos`, `user_profile`). |
| `videoUrls` | array | Video URLs, share links or numeric IDs (for `video_detail`, `video_comments`). |
| `keywords` | array | Creator search keywords (for `search_users`). |
| `maxItems` | integer | Max results per creator / video / keyword. `0` = all available. Default `100`. |
| `userVideoSort` | string | `latest` or `hot` (creator videos only). |

### Output

Every row carries a `record_type` of `video`, `user` or `comment`. Common video fields:

| Field | Description |
|-------|-------------|
| `aweme_id`, `video_url`, `share_url` | Video identity and canonical URL. |
| `title`, `desc`, `hashtags`, `video_tags` | Title, caption, #hashtags and Douyin's own category tags. |
| `like_count`, `comment_count`, `share_count`, `collect_count`, `download_count` | Engagement metrics. |
| `duration_seconds`, `width`, `height`, `cover_url`, `video_play_url`, `video_download_url` | Video media data. |
| `music_id`, `music_title`, `music_author`, `music_is_original` | Background music. |
| `author_id`, `author_sec_uid`, `author_unique_id`, `author_name`, `author_avatar_url`, `author_profile_url`, `author_verify_reason` | Creator data. |
| `create_time`, `ip_location`, `is_pinned` | Publish time (ISO-8601 UTC), IP region and whether the video is pinned. |

Creator (`user`) rows add `user_id`, `sec_uid`, `unique_id`, `nickname`, `signature`, `avatar_url`, `profile_url`, `ip_location`, `follower_count`, `following_count`, `video_count`, `likes_total`, `verify_reason`, `is_live` and `has_shop`. Creator search rows carry the name, avatar, profile link, followers, total likes and video count; run **Creator profile** on them for the rest. Comment (`comment`) rows add `comment_id`, `content`, `image_urls`, `like_count`, `reply_count`, `ip_location`, `is_hot`, `is_author_liked` and the commenter's `author_*` fields.

Example video row:

```json
{
  "record_type": "video",
  "operation": "video_detail",
  "input": "https://www.douyin.com/video/7681577005137181019",
  "aweme_id": "7681577005137181019",
  "video_url": "https://www.douyin.com/video/7681577005137181019",
  "title": "干锅土豆片做法",
  "desc": "干锅土豆片做法 姐妹们我告诉你啊 … #干锅土豆片 #美食教程 #家常菜",
  "hashtags": ["干锅土豆片", "美食教程", "家常菜"],
  "video_tags": ["美食", "美食教程", "烘焙教程"],
  "media_type": "video",
  "duration_seconds": 85,
  "create_time": "2026-09-04T07:22:00+00:00",
  "ip_location": "广东",
  "like_count": 17359,
  "comment_count": 338,
  "share_count": 5684,
  "collect_count": 16171,
  "music_title": "@逗哥美食记创作的原声",
  "author_name": "逗哥美食记",
  "author_unique_id": "24333426490"
}
```

### Common use cases

- **Creator (KOL / 达人) research** - find creators in a niche, then pull their profile and full video history to compare reach and engagement.
- **Competitor and brand monitoring** - track the videos a brand account posts and how each one performs.
- **Audience and sentiment analysis** - collect a video's comments with region data to see how viewers react.
- **Market and AI research** - build datasets of Chinese short-video captions, hashtags, music and comments.

### Notes on reliability

- Douyin does not show public view (play) counts, so rows carry likes, comments, shares, saves and downloads instead.
- With **Newest first**, a creator's pinned videos come first (`is_pinned` is `true`), then the rest newest-first. Single-video details do not report pinning.
- Some creators hide part of their history; a creator's video list then ends earlier than their video count suggests.
- Older videos (before 2022) have no `ip_location`, and only some videos have a separate `title`.
- Video, cover and avatar URLs are served by Douyin's CDN and expire; fetch them promptly.
- If a video or creator is private, deleted or restricted, that input is skipped and the run continues.

### FAQ

**Do I need a Douyin account, cookies or a proxy?** No. Just add your input and press Start.

**Which creator links work?** `douyin.com/user/<sec_uid>` links, `v.douyin.com` share links, bare sec_uids and Douyin IDs (抖音号, shown on the profile) all work.

**Can I search Douyin videos by keyword?** Not in this Actor - use the [Douyin Search Scraper](https://apify.com/vulnv/douyin-search-scraper) for keyword video search. This Actor searches creators by keyword.

**Can I run several creators, videos or keywords at once?** Yes - add multiple lines. Duplicate videos, comments and creators are removed automatically.

**Can I try it for free?** Yes. Users on the free Apify plan can fetch up to 10 results in total to try the Actor. Upgrade to a paid Apify plan to run it without that limit.

**What export formats are supported?** JSON, CSV, Excel, XML and HTML, plus the Apify API and integrations such as Google Sheets, Zapier, Make and webhooks.

### Pricing

This Actor is **pay per result**: you are charged for each record it returns (videos, video details, comments, creator profiles and creator search results), plus standard Apify platform usage. Different record types have different prices; see the **Pricing** tab for current rates. You are never charged for inputs that return nothing.

### Related scrapers

- **[Douyin Search Scraper](https://apify.com/vulnv/douyin-search-scraper)** - 抖音 videos by keyword, with creators and downloads.
- **[Kuaishou Scraper](https://apify.com/vulnv/kuaishou-scraper)** - 快手 videos, creators and comments.
- **[Xiaohongshu Scraper](https://apify.com/vulnv/xiaohongshu-scraper)** - 小红书 / RedNote notes, users and comments.

# Actor input Schema

## `operation` (type: `string`):

What to scrape. Each operation uses a different input field below:

• Creator's videos → Creator URLs / IDs
• Creator profile → Creator URLs / IDs
• Video details → Video URLs / IDs
• Video comments → Video URLs / IDs
• Search creators → Keywords

## `userUrls` (type: `array`):

For the "Creator's videos" and "Creator profile" operations. Paste douyin.com/user/... URLs, v.douyin.com share links, sec_uids (start with MS4wLj) or Douyin IDs (抖音号) - one per line.

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

For the "Video details" and "Video comments" operations. Paste douyin.com/video/... URLs, v.douyin.com share links or numeric video IDs (e.g. 7681577005137181019) - one per line.

## `keywords` (type: `array`):

For the "Search creators" operation. Add one or more keywords - Chinese, English and brand names all work. Each keyword is searched independently and cross-keyword duplicates are removed. To search videos by keyword, use the Douyin Search Scraper.

## `maxItems` (type: `integer`):

Upper bound on results per creator / video / keyword (for the paginated operations: creator's videos, comments, creator search). Cost scales linearly. Set 0 to fetch all available.

## `userVideoSort` (type: `string`):

For "Creator's videos" only. Newest first (pinned videos come first) or most popular first.

## Actor input object example

```json
{
  "operation": "user_videos",
  "userUrls": [
    "https://www.douyin.com/user/MS4wLjABAAAAAOGB-IWhZY4wvAZtdLB8-ACo1A6ZDMFBpxGDmgMMAGWxMWElEJyV603vF8xilPXj"
  ],
  "maxItems": 100,
  "userVideoSort": "latest"
}
```

# Actor output Schema

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

All scraped Douyin results in the default dataset.

## `overview` (type: `string`):

Overview table of the scraped results.

# 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 = {
    "userUrls": [
        "https://www.douyin.com/user/MS4wLjABAAAAAOGB-IWhZY4wvAZtdLB8-ACo1A6ZDMFBpxGDmgMMAGWxMWElEJyV603vF8xilPXj"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("vulnv/douyin-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 = { "userUrls": ["https://www.douyin.com/user/MS4wLjABAAAAAOGB-IWhZY4wvAZtdLB8-ACo1A6ZDMFBpxGDmgMMAGWxMWElEJyV603vF8xilPXj"] }

# Run the Actor and wait for it to finish
run = client.actor("vulnv/douyin-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 '{
  "userUrls": [
    "https://www.douyin.com/user/MS4wLjABAAAAAOGB-IWhZY4wvAZtdLB8-ACo1A6ZDMFBpxGDmgMMAGWxMWElEJyV603vF8xilPXj"
  ]
}' |
apify call vulnv/douyin-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,vulnv/douyin-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/PYJda5qQXeEW4l85r/builds/DgeIyl6a699zGBpRU/openapi.json
