Douyin Hot Search Scraper API - Trending Topics
Pricing
from $0.38 / 1,000 trending topics
Douyin Hot Search Scraper API - Trending Topics
Douyin's hot search boards as rows: hot, entertainment, society and the rising strip, about 156 topics in all. Each topic has its rank, text, heat score, views, video and live-room counts, badge, start time and cover. Run it on a schedule to track trends. No login. $0.40 per 1,000 topics.
Pricing
from $0.38 / 1,000 trending topics
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
4
Monthly active users
8 days ago
Last modified
Categories
Share
Scrape Douyin's hot search boards, no login: Douyin's hot boards are the ranked list of what China is searching and posting about right now, and this reads them into one row per topic. You get the rank, the topic text, Douyin's heat score, views, how many videos and live rooms sit under it, the badge, when it started and the cover image.
There are about 156 topics across the four boards at any moment, and that is the whole snapshot. So this is a thing you schedule and stack over time, not a thing you crawl deeply once.
| Input | Which boards to read |
| Output | One row per trending topic, with rank, topic text, heat score, views, video and live-room counts, badge, start time and cover |
| Ceiling | About 156 topics per snapshot, all four boards |
| Account needed | None, and no cookie |
| Price | $0.40 per 1,000 topics on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 12,500 |
🔍 What Douyin Hot Search Scraper does
Four boards, each its own ranking:
| Board | What it is | Rows |
|---|---|---|
hot | 抖音热榜, the main hot list | about 51 |
entertainment | 娱乐榜, film, TV, music, celebrities | about 50 |
society | 社会榜, news, economy, public affairs | about 50 |
rising | 实时上升热点, the real-time rising strip | 5 |
rising arrives inside the hot list's own response, so asking for both is no more work than asking
for one.
The boards refresh every few minutes, so two runs ten minutes apart will disagree on ranks and heat
values. boardActiveTime is Douyin's own time for the snapshot, in Beijing time, and sentenceId
stays the same for a topic across runs, which is what you join on when you build a time series.
📋 What data you get from each Douyin trending topic
| What you get | Field |
|---|---|
| Which board, and the place on it | board, boardName, rank, isPinned |
| The topic, as Douyin wrote it | word |
| Heat score, views and the best rank it has held | hotValue, viewCount, peakRank |
| Videos, discussion videos, articles and live rooms under it | videoCount, discussionVideoCount, articleCount, liveRoomCount |
| The badge, as a number, in English and as Douyin's image | label, labelName, labelImageUrl |
| When the topic first appeared | eventTime, eventTimestamp |
| IDs that stay the same across runs | sentenceId, groupId |
| Cover images | coverUrl, coverUrls |
| Links into Douyin for the topic | searchUrl, hotSpotUrl |
| When Douyin built the snapshot, and when it was read | boardActiveTime, scrapedAt |
▶️ How to scrape Douyin's hot search boards
- Open Douyin Hot Search Scraper and click Try for free.
- Pick your Boards. All four come to about 156 rows and take seconds.
- Leave Maximum topics alone unless you only want the top of a board.
- Click Start.
- Download the dataset as JSON, CSV or Excel, or read it from the Apify API.
Clear the board list entirely and you get one labelled sample row instead of topics.
💰 How much does it cost to scrape Douyin's hot search boards?
$0.40 per 1,000 topics on the Free plan. Paid plans pay a little less: $0.395 on Starter, $0.39 on Scale and $0.385 on Business. On the free plan, the $5 Apify gives you each month covers about 12,500 topics.
You pay per topic row, and the pinned promo row counts as one. The sample row and diagnostic rows are not charged.
Worth doing the sum before you schedule it: all four boards every 15 minutes is roughly 15,000 topics a day, which is about $6 a day at this price. Hourly instead of quarter-hourly is about $1.50.
📥 What you give it
{"boards": ["hot", "entertainment", "society", "rising"],"maxItems": 200}
| Field | Default | What it is |
|---|---|---|
boards | ["hot"] | Which boards to read: hot, entertainment, society, rising. Leave it as it comes and you get the main hot list, about 51 topics. |
maxItems | 200 | A hard cap on rows across every board you picked, 1 to 1,000. All four boards together come to about 156, so the default does not cut anything off. |
proxyConfiguration | none, the form starts with it off | Leave it alone unless you have your own servers you want the run to go out through. Only servers you enter yourself are used. |
Calling it from the API with an empty input reads the hot list, because boards defaults to
["hot"]. Only an empty list, "boards": [], gives the sample row.
When maxItems runs out partway through your board list, the boards after it are skipped and noted
in the log.
📤 What you get back
A real row, rank 1 on the hot list, with the signed image links cut short:
{"board": "hot","boardName": "Douyin Hot List (抖音热榜)","rank": 1,"isPinned": false,"word": "中国U23男足0:0伊朗U23","hotValue": 11466642,"viewCount": 66387319,"videoCount": 3,"discussionVideoCount": 1,"articleCount": 0,"liveRoomCount": 0,"peakRank": 1,"label": 1,"labelName": "New (新)","labelImageUrl": "https://lf3-static.bytednsdoc.com/obj/eden-cn/.../hotspot_detail_page/1.png","eventTime": "2026-09-20T06:14:23.000Z","eventTimestamp": 1789884863,"sentenceId": "2657642","groupId": "7686803507378263306","coverUrl": "https://p3-sign.douyinpic.com/tos-cn-p-0015/oca1BIeGagzO7nVBB7fsaXxueCkALI4tLSVpgA~noop.jpeg?...","coverUrls": ["...", "...", "..."],"searchUrl": "https://www.douyin.com/search/%E4%B8%AD%E5%9B%BDU23%E7%94%B7%E8%B6%B30%3A0%E4%BC%8A%E6%9C%97U23","hotSpotUrl": "https://www.douyin.com/hot/2657642/%E4%B8%AD%E5%9B%BDU23%E7%94%B7%E8%B6%B30%3A0%E4%BC%8A%E6%9C%97U23","boardActiveTime": "2026-09-20 15:41:15","scrapedAt": "2026-09-20T07:43:19.499Z"}
| Field | How to read it |
|---|---|
word | The topic exactly as Douyin publishes it, in Chinese. Nothing is translated. |
hotValue | Douyin's own heat score. Good for ranking topics against each other inside one snapshot, not meaningful as an absolute number. |
peakRank | The best rank the topic has held, which is how you spot something that has already passed its peak. |
labelName | The badge in English, with the original: New (新), Commercial (商), Hot (热), Exploding (爆), Premiere (首发), Exclusive (独家), Challenge (挑战), Debunked (辟谣), Widely discussed (热议). Most topics have none and come back null. |
eventTime | When the topic first appeared. eventTimestamp is the same moment in unix seconds. |
sentenceId | Stable for a topic across runs. This is your join key. |
coverUrl, coverUrls | Signed image links with about a day of life. |
A count of 0 can mean Douyin published no number for that row, not that the real figure is
zero. You see it on the pinned row, which also comes back with rank, peakRank, eventTime and
the cover links empty, and on the lighter rows described below.
🧾 Reading the output
| Row | How to spot it | Charged |
|---|---|---|
| A topic | It has a word and no charged field | yes |
| The pinned promo row | isPinned: true, rank: null | yes, it counts as a topic |
| The sample row | _sample: true and charged: false | no |
| A diagnostic | _diagnostic: true and an errorCode | no |
Keep the rows with neither _sample nor _diagnostic and you have the topics. Douyin pins a promo
or public-service row above rank 1 on the ranked boards, and it is counted like any other topic, so
filter on isPinned too if you do not want it.
Some rows are lighter than the rest. Those
rows carry a source field, keep the topic text and heat value, and show 0 for the detailed
counts.
errorCode | What it means |
|---|---|
UNKNOWN_BOARD | That board name is not one of the four. |
EMPTY_BOARD | No rows were written for that board. It also appears when your maxItems ran out partway through, so check the cap before assuming the board was empty. |
LOGIN_REQUIRED | Douyin asked for an account for that request. Re-run it later. |
NOT_SERVED | This topic was not served this run. Re-run it later. Until 12 October 2026 this code was called BLOCKED. |
BAD_RESPONSE | Douyin answered with something that could not be read. |
FETCH_FAILED | The request did not complete. Re-run it. |
TIME_LIMIT | The run reached its time limit and stopped early. The topics already written stay and are charged. Give the run more time, or pick fewer boards, to get the rest. The run ends as failed only when the time limit stopped it before any topic came back. |
💡 What people use it for
- Building a time series of Chinese trending topics, by running it on a schedule and joining
snapshots on
sentenceId. - Spotting a topic on the way up rather than at its peak, using
rankagainstpeakRank. - Watching the 社会榜 for the news stories that actually moved, apart from the celebrity noise on the 娱乐榜.
- Checking whether a brand moment reached the boards at all, and which board it landed on.
From the boards to a trend line, in three steps:
- Schedule it hourly with all four boards.
- Join the runs on
sentenceIdand plotrankandhotValueagainstboardActiveTime. - Run
wordthrough a translation step on your side, so the chart reads in your language.
🚧 What it does not do
- No keyword search. Douyin's search needs a signed-in account, so this covers the hot boards and nothing else.
- No videos per topic. Douyin does not publish the list of videos behind a topic to a
signed-out visitor.
videoCountis a count, and a column of videos would be a column of guesses. - No translation.
wordstays in Chinese. Everything else is a number or English. - No live-room contents.
liveRoomCountis a count. - About 156 rows is the whole thing. There is no deeper history to page into. Depth comes from running it repeatedly.
- Cover links expire in around a day.
- A
0count can mean "not published", because of how Douyin returns those fields. - Boards move under you. A snapshot is a snapshot, and
boardActiveTimetells you which one. - It is not an official Douyin tool. Dami's Studio is independent and is not affiliated with or endorsed by Douyin, or by any other company named on this page.
🧭 Which China or trends scraper do you need?
| If you want | Use |
|---|---|
| Douyin's hot, entertainment, society and rising boards | This one |
| Bilibili's popular list and leaderboards, with every count on each video | Bilibili Scraper |
| Public RedNote (Xiaohongshu) notes, with likes, collects and comment counts | RedNote Scraper |
| The hashtags trending on TikTok in one country | TikTok Trending Hashtags |
| How interest in a search term moves on Google | Google Trends Scraper |
❓ Questions people ask
Do I need a Douyin account?
No. The boards are public and nothing is signed in.
Can I search Douyin for a keyword?
Not from here, and not without an account. Douyin answers signed-out search requests by asking you to log in.
Why is the topic text in Chinese?
Because that is how Douyin publishes it, and translating it here would mean shipping a guess.
Translate word on your side if you need to.
Why does one row have no rank?
That is the promo row Douyin pins above rank 1. It is flagged isPinned, and it is charged like any
other topic.
How often should I run it?
Depends what you are after. The boards move every few minutes, hourly is enough for most trend tracking, and quarter-hourly is what you want if you are hunting the moment a topic breaks.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has
ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP
client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/douyin-hot-search-scraper.
Either way the run happens on your Apify account at the same price.
Is scraping Douyin legal?
These are public rankings on public pages. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the board and the run ID. If you got a diagnostic
row, its errorCode and hint usually name the problem on their own.