Douyin Trending Scraper avatar

Douyin Trending Scraper

Pricing

from $6.00 / 1,000 results

Go to Apify Store
Douyin Trending Scraper

Douyin Trending Scraper

Collect Douyin's official hot.douyin.com trend boards: overall, rising, and city hot topics, hot videos, hashtags, search terms, and content words, plus rankings for small-account hits and high like, follow, and completion-rate videos. This data normally needs a Douyin login to see.

Pricing

from $6.00 / 1,000 results

Rating

0.0

(0)

Developer

ToolzerHub

ToolzerHub

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Collect Douyin's official hot.douyin.com trend boards — overall, rising, and city hot topics, hot videos, hashtags, search terms, and content words, plus rankings for small-account hits and high like, follow, and completion-rate videos. This data normally needs a Douyin login to view. Pick a board with scraperType; 18 modes are available, grouped below.

The default hotBoard run avoids a frozen dashboard

billboard/hot only returns current rows when snapshot_time lands exactly on a five-minute mark ending in 5 — :05, :15, :25, and so on, in UTC. Leave snapshot_time blank and, instead of erroring, the source quietly serves a frozen snapshot from January 2025. Pick any other mark yourself — the current minute rounded down, midnight, "now" naively rounded — and it comes back with zero rows instead. Leave snapshot_time empty and this Actor computes the nearest valid five-minute mark itself, so a default hotBoard run returns today's board, not a stale one from over a year ago and not an empty one.

Modes

Hot-topic boards — share the same sentence/topic shape:

scraperTypeReturnsKey input
hotBoard (default)Overall hot-topic boardrange_type, snapshot_time or start_date/end_date, tag, keyword
risingBoardTopics rising fastestorder, city_code, tag, keyword
cityBoardHot topics by cityorder, city_code, tag, keyword
challengeBoardHot hashtag challengeskeyword

Video-performance boards — share the same item shape, an alias of aweme_id onto item_id:

scraperTypeReturnsKey input
videoBoardTop-performing videos over a lookback windowdate_window, sub_type, keyword
lowFollowerHitsVideos that broke out from small accountsdate_window, keyword
highLikeRateVideos with the highest like ratedate_window, keyword
highFollowRateVideos with the highest follow-conversion ratedate_window, keyword
highCompletionRateVideos with the highest completion ratedate_window, keyword

Topic and search-term performance:

scraperTypeReturnsKey input
topicBoardHashtag challenges by play/publish performancedate_window, keyword
risingTopicsHashtag challenges rising fastestdate_window, keyword
searchBoardRanked in-search termsdate_window, keyword
risingSearchesIn-search terms rising fastestdate_window, keyword

Content words:

scraperTypeReturnsKey input
contentWordsFrequently-searched content wordsdate_window, keyword
contentWordDetailDaily/weekly/monthly breakdown for one content wordkeyword, word_id, query_day (all required together)

Reference lists — fill the filters the boards above take:

scraperTypeReturns
categoriesCategory tags to pass as tag
cityCodesCity codes to pass as city_code
contentTagsContent-tag values, with child tags nested

Input

FieldUse it for
range_typehotBoard only: snapshot (default, reads one moment) or range (aggregates start_dateend_date instead).
snapshot_timehotBoard only, snapshot mode. As yyyyMMddHHmmss. Leave empty — see the note above.
start_date, end_datehotBoard in range mode, as yyyyMMdd.
orderrisingBoard, cityBoard: rank (default) or trending.
city_coderisingBoard, cityBoard. From cityCodes.
taghotBoard, risingBoard, cityBoard. Comma-separated category tags, from categories.
keywordNarrows almost every board to one search term.
date_windowVideo, topic, search, and content-word boards. Hours, not days: 1 past hour, 24 past day (default), 168 past week, 720 past month.
sub_typevideoBoard only. Which board section to read. Default 1001.
billboard_typecategories only: total, city, or rise. Douyin rejects hot here.
word_id, query_daycontentWordDetail, alongside keyword. From a contentWords row's id and query_day.
addonVideoDetailsVideo-performance boards. Fetches full video detail per row — one extra request and one extra charge per row.
maxItemsCaps every paginated board. Default 100. Set 0 for no limit.
{
"scraperType": "videoBoard",
"date_window": "168"
}

Output

FieldModesContents
rank, rank_diff, sentence, sentence_id, hot_score, video_count, sentence_tag_name, city_name, create_at, trends, label_nameHot-topic boardsRank, topic sentence, and heat score
item_id, item_title, item_cover_url, item_duration, item_url, nick_name, avatar_url, fans_cnt, play_cnt, like_cnt, score, aweme_id, video_detailVideo-performance boardsEach video, with aweme_id aliased for downstream enrichment
challenge_id, challenge_name, play_cnt, publish_cnt, cover_url, score, avg_play_cnt, create_time, trendstopicBoard, risingTopicsEach hashtag challenge
key_word, search_score, trendssearchBoard, risingSearchesEach ranked search term
id, title, score, rising_ratio, rising_speed, query_daycontentWordsEach content word
word_windows, source_keyword, source_word_idcontentWordDetailThe word's daily/weekly/monthly breakdown
label, value, numcategoriesEach category tag
label, valuecityCodesEach city code
label, value, count, childrencontentTagsEach content tag, with children nested
{
"rank": 1,
"sentence": "秋分",
"hot_score": 9481203,
"sentence_tag_name": "节气"
}

Questions

I set snapshot_time myself and got zero rows — why? It has to land exactly on a five-minute mark ending in 5, in UTC. Any other value — including the current minute rounded down — returns an empty board rather than the nearest valid one. Leave snapshot_time empty and let the Actor compute a valid mark, or compute one to that exact rule yourself.

Why do categories, cityCodes, and contentTags exist as separate modes? They're not trend data — they're the reference lists that fill tag, city_code, and content-tag filters on the boards above. Run one of these first if you need a valid value for those fields rather than guessing.

What does contentWordDetail need all three fields for? keyword, word_id, and query_day together, or the run fails outright. word_id and query_day come from a row already returned by contentWords — this mode drills into one of those rows, it doesn't discover words on its own.

Why does videoBoard take a sub_type but the other video-performance boards don't? Only videoBoard reads Douyin's board-section split; lowFollowerHits, highLikeRate, highFollowRate, and highCompletionRate are each already a single fixed ranking, so there's no section to choose on them.

ActorPurpose
Douyin Hot Search ScraperThe in-app hot-search board and music/brand charts, rather than the hot.douyin.com dashboard
Douyin Account Analytics ScraperThe hot-account board and per-account analytics, split out from this Actor's video and topic boards
Douyin Video Analytics ScraperComment word cloud and audience demographics for one video these boards surface
Douyin Marketing Calendar ScraperPlan content around Douyin's own campaign calendar rather than reactive trend boards

Support

Questions, bugs, or feature requests: contact@toolzerhub.com

Browse the rest: apify.com/toolzerhub