Douyin Scraper — Hot Trends, Videos & TikTok China Data
Pricing
from $0.48 / 1,000 hot search topics
Douyin Scraper — Hot Trends, Videos & TikTok China Data
Collect Douyin hot-search topics with ranks, hot values, views, video counts, IDs, timestamps, and quality fields. Run with hot_search; other modes require real logged-in cookies. Pricing: $0.00049 per result on Free.
Pricing
from $0.48 / 1,000 hot search topics
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
90
Total users
9
Monthly active users
17 minutes ago
Last modified
Categories
Features
Share
Douyin Scraper for Hot Trends and Videos
Douyin Scraper extracts Douyin (抖音) hot-search topics, videos, user posts, comments, and metadata from Douyin endpoints. Use hot_search for trending topics; other modes require a real logged-in session through cookie inputs, while Free runs cap maxItems at 10, retain one input ID or keyword, and return zero comments.
- Monitor ranked topics with hot values, views, video counts, and event times.
- Extract video metadata and engagement fields for content intelligence.
- Review comments, authors, likes, replies, and timestamps.
- Run keyword, user-video, comment, and video-detail jobs through one Actor.
What you get
Normalized records include parse_confidence and warnings. Missing source values are null.
| Record type | Fields | Type | What they contain |
|---|---|---|---|
| Hot-search identity | rank, sentence_id, word | rank: integer; others: string | Topic rank, ID, and text (hot_search) |
| Hot-search metrics | hot_value, view_count, video_count, discuss_video_count | integer | Hot value, views, associated and discussion videos |
| Hot-search metadata | word_type, label | integer | Topic type and label |
| Hot-search timing | event_time, scraped_at | ISO 8601 string | Event and scrape times |
| Hot-search quality | parse_confidence, warnings | number; array of strings | Completeness and missing-field warnings |
| Video identity | aweme_id, desc | — | Video ID and caption |
| Video author | author_uid, author_nickname, author_sec_uid | — | Author IDs and display name |
| Video engagement | digg_count, comment_count, share_count, play_count, collect_count | — | Likes, comments, shares, plays, and saves |
| Video media | video_url, cover_url | — | Video and cover URLs |
| Music | music_title, music_author, music_url | — | Music title, author, and URL |
| Video metadata | create_time, duration_ms, is_top, hashtags | — | Creation time, duration, pinned status, and hashtags |
| Video quality | scraped_at, parse_confidence, warnings | — | Scrape time, completeness, and warnings |
| Comment identity | comment_id, aweme_id, text | — | Comment ID, video ID, and text |
| Comment author | author_uid, author_nickname | — | Author ID and display name |
| Comment engagement | digg_count, reply_count | — | Comment likes and replies |
| Comment metadata | create_time, scraped_at | — | Creation and scrape times |
| Comment quality | parse_confidence, warnings | — | Completeness and warnings |
Sample output
The sample below is one real hot-search record from the dataset sample.
{"rank": 2,"sentence_id": "2736348","word": "BLG战胜T1挺进决赛","hot_value": 12135561,"view_count": 68973633,"video_count": 15,"discuss_video_count": 1,"word_type": 1,"event_time": "2026-11-08T13:00:17+00:00","label": 3,"scraped_at": "2026-11-09T06:58:08.913182+00:00","parse_confidence": 1,"warnings": []}
Pricing
Billing uses events. hot-search-result is charged for each trending topic. video-result is charged for video records and each pushed comment in comments mode. apify-actor-start is charged when the Actor starts; its event count depends on Actor memory, with one event per GB and a minimum of one event.
Live event prices
| Event | Plan | Price per event |
|---|---|---|
apify-actor-start | Free plan | $0.00005 |
apify-actor-start | Bronze plan | $0.0000495 |
apify-actor-start | Silver plan | $0.000049 |
apify-actor-start | Gold plan | $0.0000485 |
apify-actor-start | Platinum plan | $0.000048 |
apify-actor-start | Diamond plan | $0.0000475 |
hot-search-result | Free plan | $0.00049 |
hot-search-result | Bronze plan | $0.0004851 |
hot-search-result | Silver plan | $0.0004802 |
hot-search-result | Gold plan | $0.0004753 |
hot-search-result | Platinum plan | $0.0004704 |
hot-search-result | Diamond plan | $0.0004655 |
video-result | Free plan | $0.00099 |
video-result | Bronze plan | $0.0009801 |
video-result | Silver plan | $0.0009702 |
video-result | Gold plan | $0.0009603 |
video-result | Platinum plan | $0.0009504 |
video-result | Diamond plan | $0.0009405 |
1,000 hot-search results = $0.49005 on Free, assuming one Free-plan Actor Start event: $0.49 for results plus $0.00005 for the start event. 10,000 hot-search results = $4.90005 on Free, assuming one Free-plan Actor Start event: $4.90 for results plus $0.00005 for the start event.
The $5 credit covers 10,203 hot-search results after one Free-plan Actor Start event.
Apify Free plan includes $5 of monthly platform usage credit. This Actor does not use the Pay per event + usage option, so compute, proxy traffic, and storage are not billed separately.
How to use
- Choose
hot_search,search,user_videos,comments, orvideo_detail. - Add
keywords,sec_user_ids, oraweme_idsfor the selected mode. - Configure an Apify residential proxy with country
CN. - Provide
msToken,ttwid, orsvWebIdvalues when available for session-based modes. - Set
maxItemsormaxComments, then start the run. - Repeat the run through Apify Schedules; daily is a reasonable starting point for hot-search monitoring.
{"mode": "hot_search","maxItems": 10,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "CN"}}
Export the dataset as JSON or CSV, or read it through the Apify dataset API.
Input parameters
| Parameter | What it does | Default |
|---|---|---|
mode | Selects hot_search, search, user_videos, comments, or video_detail; invalid values become hot_search. | hot_search |
keywords | Search terms for search; each runs separately up to the item limit. | No value; empty list |
sec_user_ids | Douyin sec_user_id strings for user_videos. | No value; empty list |
aweme_ids | Video IDs for comments or video_detail. | No value; empty list |
maxItems | Limits videos in search and user_videos, and hot-search records on non-paying runs. Range: 1–10000. | 50 |
maxComments | Limits comments per video in comments. Range: 1–5000; non-paying runs set it to 0. | 50 |
msToken | Optional real msToken cookie for session-based modes. | Not set |
ttwid | Optional ttwid cookie; if omitted, the Actor attempts to obtain one automatically. | Not set |
svWebId | Optional real s_v_web_id cookie for session-based modes. | Not set |
proxyConfiguration | Configures the Apify proxy. | CN RESIDENTIAL prefill; CN residential fallback |
Limits and edge cases
| Condition | What the buyer sees | What to do |
|---|---|---|
| A Free or otherwise non-paying run is used | maxItems is capped at 10, one keyword, user ID, or video ID is retained, and maxComments becomes 0 | Use a paid Apify plan for more inputs or comments |
comments runs on a non-paying plan | Zero comments and an explanation that comments are not returned on free runs | Use a paid Apify plan |
| A required mode input is missing | Succeeded with zero records; OUTPUT contains no_keywords, no_sec_user_ids, or no_aweme_ids | Supply the required input |
Douyin returns login-required code 2483 | Session modes can return zero records, the run fails, and OUTPUT.errors lists the error | Review OUTPUT.errors and cookies, or use hot_search |
| No usable CN residential proxy is available | Requests may be rate-limited, challenged, blocked, or return an access error | Configure Apify RESIDENTIAL with country CN |
The hot-search response has an empty word_list | Zero records, a no-topics message, a failed run, and the condition in OUTPUT.errors | Run again later or check for a changed response format |
| Some requests succeed and later requests fail | Delivered batches reach the dataset; the run succeeds with delivered records, OUTPUT.errors lists failures, and it reports a partial result | Review OUTPUT.errors and rerun the failed scope |
| A valid request returns no records without a fetch error | Succeeded with an empty dataset and a status message | Try different keywords or IDs, or use hot_search |
| A private account or video is requested | The private content cannot be retrieved because login is required and unsupported | Use publicly available content and supported session-based modes |
| An expired video CDN URL is used | video_url may no longer download because URLs expire within hours to days | Download required media promptly |
Request signing uses a pure-Python a_bogus implementation based on SM3, RC4, and custom Base64 processing, so a browser is not required for signing.
FAQ
How much does it cost to scrape Douyin?
On Free, hot-search results cost $0.00049 each, video results cost $0.00099 each, and Actor Start costs $0.00005 per event. 1,000 hot-search results = $0.49005 on Free, assuming one Actor Start event.
Why did my run return an empty result?
The mode-specific input may be missing, or a non-paying comments run may have maxComments set to zero. Check the run status and OUTPUT.errors, then provide the required input or use hot_search.
What should I do if Douyin blocks the run?
Configure an Apify residential proxy for country CN. If the run reports login-required code 2483, provide the required real session cookies or use hot_search.
Can I scrape public Douyin data legally?
The Actor retrieves Douyin data from its public hot-search source and other Douyin endpoints. Whether a use is legal or allowed depends on the buyer’s use case, applicable law, and the source’s terms; this Actor provides no legal guarantee.
Related actors
- Bilibili Video & Search Scraper — related video and search collection for Bilibili.
- Bluesky Scraper — Posts, Profiles & Followers — related social-media collection for posts, profiles, and followers.
- Facebook Comments Scraper — related comment collection for Facebook content.