# Douyin Scraper ✅ Xingtu Influencer Analytics (`atomus/douyin-scraper`) Actor

Scrape Douyin (抖音) by keyword or URL: video search with likes, comments and shares; full profiles; single video detail; comments; danmaku; real-time trends; plus Xingtu influencer analytics and creator advertising rate cards. No cookies, no login. Pay only for results returned.

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

## Pricing

from $2.40 / 1,000 video search results

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/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

## Douyin Scraper ✅ Xingtu Influencer Analytics

The **Douyin Scraper** extracts public data from **Douyin (抖音)**, China's version of TikTok, by keyword or URL, with no cookies and no login. Get video search results, profiles, video details, comments, danmaku (bullet comments), and real-time trends, plus **Xingtu (星图) influencer analytics and creator advertising rate cards**. You pay only for results returned.

Most Douyin scrapers only download videos. This one is built for **research, marketing, and influencer discovery**, and it is the affordable way to pull the same Xingtu creator data that brands use to plan Douyin sponsorship campaigns.

### What does this Douyin Scraper do?

Pick a mode, paste your inputs, and get clean structured JSON. Each mode is billed separately, only on results returned.

| Mode | What you get | Input |
|---|---|---|
| **Keyword search** | Videos matching a keyword, with author and engagement stats | keywords |
| **Video detail** | Full metadata and stats for a single video | video URL / ID |
| **User profile** | Follower, following, likes counts, bio, handle | profile URL / sec\_user\_id |
| **User's posts** | A creator's recent videos with full stats | profile URL / sec\_user\_id |
| **Video comments** | Comments with likes, replies, and author | video URL / ID |
| **Danmaku (弹幕)** | On-screen bullet comments with timestamps | video URL / ID |
| **Trends** | Real-time hot-search words and the hot-video billboard | none |
| **Xingtu creator search** | Discover creators by keyword, with metrics and a rate-card price preview | keywords |
| **Xingtu creator analytics** | Creator core metrics, audience and fan portraits, growth trend | creator handle (抖音号) |
| **Xingtu rate card** | Creator advertising prices by video length | creator handle (抖音号) |

### What data can you extract from Douyin?

- **Videos**: video ID, description, create time, share URL, cover, duration, a free **mp4 download URL**, and full engagement stats (likes/diggs, comments, collects, shares, plays, recommends), plus author (nickname, handle, sec\_user\_id).
- **Profiles**: nickname, unique\_id (抖音号), sec\_user\_id, signature, follower/following counts, video count, total likes.
- **Comments**: text, like count, reply count, author, create time.
- **Danmaku**: text and the on-screen timestamp (offset) of each bullet comment.
- **Trends**: ranked hot-search words with hot value and view count, and the hot-video billboard (play/like/fan counts).
- **Xingtu analytics**: creator core metrics, average plays, category, city, audience and fan distribution, and daily follower-growth trend.
- **Xingtu rate card**: advertising price per video-duration tier (e.g. 1-20s, 21-60s, 60s+), in RMB, with the original and current price.

### How do I scrape Douyin?

1. Open the actor and pick a **mode** under 🎯 *What to scrape*.
2. Fill the input that mode needs: **keywords** for search, **video URLs** for detail/comments/danmaku, **profile URLs** for profiles, or a **creator handle (抖音号)** for the two Xingtu modes.
3. Set **Max results** for the paginated modes (search, comments, danmaku, trends).
4. Click **Start**. Results stream into the dataset as they are found.
5. Download the results from the **Storage** tab, or fetch them via the Apify API.

### Input

| Field | Used by | Description |
|---|---|---|
| `searchType` | all | The mode to run. |
| `keywords` | search, creator-search | One or more search terms, e.g. `美食`, `旅行`. |
| `videoUrls` | video-detail, comments, danmaku | Douyin video URLs, share links, or bare numeric IDs. |
| `userUrls` | profile, user-posts | Douyin profile URLs or bare `sec_user_id` values. |
| `creatorHandles` | xingtu-analytics, rate-card | Douyin handles (抖音号 / unique\_id), e.g. `XiaoZhenlla`. |
| `maxItems` | search, user-posts, comments, danmaku, trends, creator-search | Max results per keyword/target (default 20). |
| `sortType`, `publishTime`, `duration`, `contentType` | search | Optional free filters. |

**Supported video references:** a full URL (`https://www.douyin.com/video/7628908247805725986`), a share link, or a bare numeric aweme ID.
**Supported profile references:** a profile URL (`https://www.douyin.com/user/MS4w...`) or a bare `sec_user_id`.

### Output

One record per result, tagged with its `searchType`. Example (keyword search):

```json
{
  "searchType": "search",
  "keyword": "美食",
  "awemeId": "7628908247805725986",
  "url": "https://www.douyin.com/video/7628908247805725986",
  "desc": "五星级酒店桌桌必点的美食！",
  "createTime": 1730000000,
  "downloadUrl": "https://v3-search.douyinvod.com/...mp4",
  "stats": { "diggCount": 1201980, "commentCount": 50077, "collectCount": 131748, "shareCount": 1169447, "playCount": 0, "recommendCount": 33295 },
  "author": { "secUid": "MS4w...", "uid": "2507361040475383", "nickname": "小珍来咯", "uniqueId": "XiaoZhenlla" }
}
```

Xingtu rate card (one record per creator, prices in RMB):

```json
{
  "searchType": "rate-card",
  "handle": "XiaoZhenlla",
  "kolId": "7265712290765209612",
  "priceTiers": [
    { "desc": "1-20s视频", "priceRmb": 1500, "originPriceRmb": 1500, "settlementDesc": "固定价格", "videoType": 1 },
    { "desc": "21-60s视频", "priceRmb": 1500 },
    { "desc": "60s以上视频", "priceRmb": 1800 }
  ]
}
```

#### Output fields reference

| Field | Modes | Meaning |
|---|---|---|
| `searchType` | all | The mode that produced the row. |
| `awemeId`, `url`, `desc`, `createTime`, `shareUrl` | search, video-detail | Video identity. |
| `downloadUrl` | search, video-detail | Free mp4 download URL (Douyin CDN; can expire). |
| `stats.*` | search, video-detail | diggCount, commentCount, collectCount, shareCount, playCount, recommendCount. |
| `author.*` | search, video-detail, user-posts | secUid, uid, nickname, uniqueId, avatarUrl, signature, verified, followerCount, awemeCount, totalFavorited — read free from the embedded author (partial: search carries the follower count, video-detail carries the post/like totals). For the complete, consistent author use the `profile` mode. |
| `music.*` | search, video-detail, user-posts | Track intelligence: id, title, author, isOriginal, playUrl. |
| `hashtags[]`, `mentions[]` | search, video-detail, user-posts | Caption hashtags + @mentions. |
| `videoTags[]` | search, video-detail, user-posts | Server content taxonomy (3 levels: id, name, level). |
| `region`, `city`, `pinned` | search, video-detail, user-posts | Geo tags + pinned-post flag. |
| `nickname`, `uniqueId`, `followerCount`, `followingCount`, `awemeCount`, `totalFavorited`, `signature` | profile | Profile stats. |
| `avatarUrl`, `verified`, `verifyReason`, `ipLocation`, `gender`, `province`, `mplatformFollowers` | profile | Identity, verification badge, geo, cross-platform followers. |
| `text`, `diggCount`, `replyCount`, `user` | comments | Comment content. |
| `text`, `offsetTimeMs` | danmaku | Bullet comment + on-screen time. |
| `word`, `hotValue`, `viewCount`, `rank` | trends (hot-search) | Trending words. |
| `title`, `playCount`, `likeCount`, `fansCount`, `rank` | trends (hot-video) | Billboard videos. |
| `follower`, `avgPlay`, `city`, `categoryId`, `fansDistribution`, `dailyFans` | xingtu-analytics | Creator analytics. |
| `uniqueId`, `secUid`, `isStar`, `eCommerceEnable`, `lowestPrice`, `grade`, `tags` | xingtu-analytics | Join keys back to the public profile + commercial-fit signals. |
| (video fields) | user-posts | Same shape as search rows: awemeId, stats, author, music, hashtags, videoTags, downloadUrl. |
| `starId`, `nickname`, `follower`, `starIndex`, `priceRmb.*` | creator-search | Creator metrics + rate-card price preview. |
| `expectedPlay`, `playOverRate30d`, `fansIncrement30d`, `ecomGmv30dRange`, `ecomScore`, `linkStarIndex`, `linkConvertIndex` | creator-search | Full analytics block — the same numbers xingtu-analytics returns, delivered inline. |
| `priceTiers[]` | rate-card | Advertising prices by video-duration tier (RMB). |

### How much does it cost to scrape Douyin?

Billing is **pay per result**, per mode. A failed or empty lookup is free. Gold and higher Apify plans get 20% off.

| Mode | Price |
|---|---|
| Keyword search | $0.003 / video |
| Video detail | $0.004 / video |
| User profile | $0.004 / profile |
| User's posts | $0.003 / post |
| Video comments | $0.002 / comment |
| Danmaku | $0.002 / danmaku |
| Trends | $0.002 / row |
| Xingtu creator search | $0.01 / creator |
| Xingtu creator analytics | $0.04 / creator |
| Xingtu rate card | $0.08 / creator |

Search and comments bill per row returned; profile, video detail, analytics, and rate card bill per target. Pulling one creator's full rate card costs $0.08; a typical influencer shortlist of 10 creators costs under $1.

**Buy only what you need — the cheap modes already carry a lot.** Xingtu **creator search** ($0.01) already returns each creator's core analytics (expected plays, engagement, e-commerce GMV range, performance indices) **and** a 3-tier video price preview. So you only need the pricier modes for the extra depth they add: **creator analytics** ($0.04) adds average plays, category, fan distribution and the daily-follower trend (two extra lookups); the **rate card** ($0.08) adds every advertising format beyond the 3 preview tiers — collection tasks, co-creation, downloads — plus settlement terms and list-vs-actual pricing. If the creator-search fields are enough, you do not need to buy those.

### Xingtu (星图) influencer analytics: the differentiator

Xingtu is Douyin's official influencer-marketing platform. Its creator analytics and rate cards are the data brands use to size and price sponsorships, and this actor is the affordable way to pull it as structured data. Use it to build influencer shortlists, benchmark creator prices, and analyze audience fit, without a Xingtu enterprise account.

### Use it with AI agents and MCP

This actor runs as a tool for AI agents through the Apify MCP server, so an assistant like Claude or ChatGPT can search Douyin, pull a creator's rate card, or analyze trends on your behalf. Point your MCP client at the Apify MCP server and call `douyin-scraper` like any other tool.

### Use cases

- **Influencer discovery and pricing**: find creators by keyword, then pull their Xingtu analytics and rate cards to shortlist and budget.
- **Competitor and content research**: track a competitor's videos, engagement, and audience.
- **Trend monitoring**: watch hot-search words and the hot-video billboard for content ideas.
- **Audience analysis**: read fan and audience distribution for any Xingtu creator.

### Douyin Scraper vs cookie-based tools vs the official API

| | This Douyin Scraper | Cookie-based tools | Official Douyin API |
|---|---|---|---|
| Login / cookies | Not required | Required (and they expire) | Enterprise approval |
| Xingtu analytics + rate cards | Yes | Rarely | No public access |
| Setup | Paste a keyword or URL | Extract and refresh cookies | Business onboarding |
| Billing | Pay per result | Subscription | Contract |

### Platform notes

- Douyin data is Chinese-language; text fields are returned as-is (e.g. `desc`, `nickname`).
- Xingtu modes take a Douyin **handle (抖音号)**; the actor resolves it to the Xingtu creator ID automatically.
- Every video result includes a free **mp4 download URL** from Douyin's CDN. The link can expire and may need a browser User-Agent when fetched; the actor returns the URL, it does not re-host the file.

### FAQ

**Do I need a Douyin account or cookies?** No. Just run the actor.

**How do I find a creator's handle?** It is the 抖音号 (unique\_id) on their profile, e.g. `XiaoZhenlla`.

**What is Xingtu (星图)?** Douyin's official influencer-marketing platform. Its creator analytics and rate cards are what brands use to plan sponsorships.

**Is there an official Douyin API?** There is no open public API for this data; official access requires enterprise onboarding. This actor reads public Douyin data without it.

**Can I download videos?** Yes. Every video result (search and video detail) includes a free mp4 download URL. The link is a Douyin CDN URL that can expire and may need a browser User-Agent to fetch; the actor returns the URL, it does not re-host the file.

**Is it legal to scrape Douyin?** The actor collects publicly available data. You are responsible for how you use it and for complying with applicable laws and Douyin's terms.

### Disclaimer

This actor collects only publicly available data from Douyin. It is not affiliated with, endorsed by, or connected to Douyin or ByteDance. Use it in compliance with applicable laws, regulations, and Douyin's terms of service. You are responsible for how you use the data you collect.

***

## 抖音采集器 ✅ 星图达人分析

**抖音采集器**按关键词或链接采集**抖音**公开数据，无需 Cookie、无需登录。获取视频搜索、主页、视频详情、评论、弹幕、实时热榜，以及**星图（星图）达人分析与广告报价**。只为返回的结果付费。

多数抖音采集器只下载视频。本采集器面向**研究、营销与达人发现**，是获取品牌方规划抖音达人投放所用星图数据最实惠的方式。

### 这个抖音采集器能做什么？

选择模式、粘贴输入，即可获得干净的结构化 JSON。每个模式单独计费，只对返回的结果收费。

| 模式 | 内容 | 输入 |
|---|---|---|
| **关键词搜索** | 匹配关键词的视频（含作者与互动数据） | keywords |
| **视频详情** | 单个视频完整元数据与统计 | 视频链接 / ID |
| **用户主页** | 粉丝/关注/获赞、简介、抖音号 | 主页链接 / sec\_user\_id |
| **用户作品** | 达人最近发布的视频（含完整数据） | 主页链接 / sec\_user\_id |
| **视频评论** | 评论（含点赞、回复、作者） | 视频链接 / ID |
| **弹幕** | 带时间戳的屏幕弹幕 | 视频链接 / ID |
| **热榜** | 实时热搜词 + 热门视频榜 | 无 |
| **星图达人搜索** | 按关键词发现达人（含指标与报价预览） | 关键词 |
| **星图达人分析** | 达人核心指标、受众与粉丝画像、涨粉趋势 | 抖音号 |
| **星图达人报价** | 达人按视频时长的广告报价 | 抖音号 |

### 能从抖音提取哪些数据？

视频（ID、描述、互动数据、作者、免费 mp4 下载链接）、主页（粉丝/关注/获赞、抖音号）、评论、弹幕（含时间戳）、热榜（热搜词/热门视频）、星图达人分析（核心指标、受众与粉丝画像、涨粉趋势）、星图报价（按时长分档的广告价格，人民币）。

### 如何采集抖音？

1. 选择**模式**。2. 填写该模式所需输入（关键词/视频链接/主页链接/抖音号）。3. 设置**最大结果数**（分页模式）。4. 点击**开始**。5. 在 **Storage** 下载结果，或用 Apify API 获取。

### 计费说明

**按结果计费**，失败或空结果免费，Gold 及以上套餐 8 折。

| 模式 | 价格 |
|---|---|
| 关键词搜索 | $0.003 / 视频 |
| 视频详情 | $0.004 / 视频 |
| 用户主页 | $0.004 / 主页 |
| 视频评论 | $0.002 / 评论 |
| 弹幕 | $0.002 / 弹幕 |
| 热榜 | $0.002 / 条 |
| 星图达人搜索 | $0.01 / 达人 |
| 星图达人分析 | $0.04 / 达人 |
| 星图达人报价 | $0.08 / 达人 |

**按需购买——便宜的模式已包含大量数据。** 星图**达人搜索**（$0.01）已返回每位达人的核心分析指标（预期播放、互动率、电商 GMV 区间、各项指数）以及三档视频报价预览。仅当需要更深数据时才购买更贵的模式：**达人分析**（$0.04）额外提供平均播放、分类、粉丝画像分布与每日涨粉趋势（两次额外调用）；**达人报价**（$0.08）额外提供三档预览之外的全部广告形式（合集任务、共创、下载）及结算方式与刊例/实际价。若达人搜索的字段已够用，则无需购买这两项。

### 星图达人分析：核心差异

星图是抖音官方达人营销平台，其达人分析与报价是品牌方规划合作的依据。本采集器让你无需星图企业账号即可以结构化数据获取这些信息，用于达人筛选、报价对比与受众分析。

### 常见问题

**需要账号或 Cookie 吗？** 不需要。
**在哪找达人抖音号？** 主页上的抖音号（unique\_id），如 `XiaoZhenlla`。
**有官方 API 吗？** 无开放公共 API；官方需企业接入。本采集器读取公开数据。
**支持视频下载吗？** 支持。每条视频结果都附带免费 mp4 下载链接（抖音 CDN，可能过期、抓取时可能需要浏览器 UA；仅返回链接，不转存文件）。
**采集抖音合法吗？** 仅采集公开数据；请遵守适用法律与抖音条款，并对使用方式负责。

### 免责声明

本采集器仅采集抖音公开数据，与抖音/字节跳动无任何关联。请在遵守适用法律法规及抖音服务条款的前提下使用，使用方式由你自行负责。

# Actor input Schema

## `searchType` (type: `string`):

Choose the mode. Each mode is a PAID event billed per result at the price shown in its name below. Failed or empty lookups are free. Gold and higher Apify plans get 20% off. // 选择模式；每个模式都是按结果计费的付费事件，价格见下方各选项名称；查询失败或为空免费，Gold 及以上套餐 8 折。

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

Used by "Keyword search" and "Xingtu creator search". One or more terms, e.g. "美食" (food), "旅行" (travel). // 用于「关键词搜索」和「星图达人搜索」，可填写一个或多个关键词。

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

Used by "Video detail", "Video comments", and "Danmaku". Paste Douyin video URLs (https://www.douyin.com/video/...), share links, or bare numeric aweme IDs. // 用于「视频详情」「视频评论」「弹幕」，可粘贴抖音视频链接、分享链接或数字视频ID。

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

Used by "User profile" and "User's posts". Paste Douyin profile URLs (https://www.douyin.com/user/MS4w...) or bare sec\_user\_id values. // 用于「用户主页」和「用户作品」，可粘贴抖音主页链接或 sec\_user\_id。

## `creatorHandles` (type: `array`):

Used by "Xingtu creator analytics" and "Xingtu creator rate card". Paste Douyin handles (unique\_id, e.g. "XiaoZhenlla"); the actor resolves each to its Xingtu KOL id. // 用于「星图达人数据」和「星图达人报价」，填写抖音号（unique\_id），系统自动解析为星图达人ID。

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

How many results to return per keyword or target (search, comments, danmaku, trends). Each result is billed at the mode's price, so a higher number costs more. Detail / profile / analytics / rate-card return one record per target. // 每个关键词或目标返回的最大结果数（搜索/评论/弹幕/榜单）；每条结果按模式价格计费，数量越大费用越高。详情/主页/达人数据/报价每个目标返回一条记录。

## `sortType` (type: `string`):

Only for "Keyword search". // 仅用于「关键词搜索」。

## `publishTime` (type: `string`):

Only for "Keyword search". Restrict results by publish time. // 仅用于「关键词搜索」，按发布时间筛选。

## `duration` (type: `string`):

Only for "Keyword search". Restrict results by video length. // 仅用于「关键词搜索」，按视频时长筛选。

## `contentType` (type: `string`):

Only for "Keyword search". Restrict results to a content type. // 仅用于「关键词搜索」，按内容类型筛选。

## Actor input object example

```json
{
  "searchType": "search",
  "keywords": [
    "美食"
  ],
  "maxItems": 20,
  "sortType": "综合排序",
  "publishTime": "不限",
  "duration": "不限",
  "contentType": "不限"
}
```

# Actor output Schema

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

No description

# 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 = {
    "keywords": [
        "美食"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("atomus/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 = { "keywords": ["美食"] }

# Run the Actor and wait for it to finish
run = client.actor("atomus/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 '{
  "keywords": [
    "美食"
  ]
}' |
apify call atomus/douyin-scraper --silent --output-dataset

```

## MCP server setup

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