Douyin Trending Scraper avatar

Douyin Trending Scraper

Pricing

$3.55 / 1,000 hot-search trends

Go to Apify Store
Douyin Trending Scraper

Douyin Trending Scraper

Collect current public Douyin hot-search topics and rising-hotspot preview names. Choose a board, filter by keyword, and export topic text, ranks, metrics, source IDs, cover image URLs, and source times to an Apify dataset.

Pricing

$3.55 / 1,000 hot-search trends

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

11

Total users

4

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

🔥 Douyin hot-search analytics for current trend signals

For social-listening teams, China market researchers, content planners, newsroom researchers, brand teams, and developers, this Actor collects current public Douyin hot-search topics and rising-hotspot preview names. Choose a board and filter topic text by keyword. Rows include topic text and available ranks, hot and video metrics, source IDs, cover-image URLs, and source times. You get structured trend data in an Apify dataset for reports and dashboards.

Use the dataset in Apify, export it as JSON, CSV, Excel, XML, RSS, or HTML, or read it through the Apify API.

📈 What you get from each Douyin trend row

Each dataset row contains one topic from the selected Douyin board or its rising-hotspot preview. Board topics come first, followed by preview topics. The Actor keeps the first topic for each sentence ID, or topic text when there is no ID. Some source fields are null when Douyin does not return them. Ranks and view counts are omitted when absent.

The Actor keeps source IDs, source times, trend metrics, and cover-image URLs. It does not collect video search or profile analytics, scrape comments, collect emails or phone numbers, download videos, audio, or images, automate logged-in accounts, translate or classify topic text, score sentiment, or access private or logged-in-only data. Other Douyin surfaces may require login. Cover-image URLs are source-hosted links and can expire or change.

▶️ Run a current Douyin hot-search snapshot

  1. Choose a Board. The default is Main. Set Trend limit to 30 for a small first run or choose a higher value for more current topics.
  2. Leave the limit empty or set it to 0 when you want all available topics until the source is exhausted. Add a Keyword to keep only topics that contain that exact text.
  3. Start the Actor and open the dataset when the run finishes.

Run the Actor again when you need another current list. Each saved row keeps the source times returned with it.

⚙️ Input

Input fields

FieldTypeWhat it does
boardstringChoose main, entertainment, society, seeding, or challenge. The default is main, which also applies when omitted.
maxResultsintegerMaximum topics to save after filtering. Use a whole number of 0 or more. Omit it or use 0 for all available topics. The form prefill is 30, not a schema default. There is no set upper limit.
keywordstringKeep topics that contain this exact text. Matching is case-sensitive. Omit it or leave it empty to keep all topics.

Example input

This public input is copied from a successful current-beta default-input run.

{
"board": "main",
"maxResults": 30
}

Work limit

Leave Trend limit empty or set it to 0 to return all available topics until the source is exhausted. The source can return fewer topics than the limit. Use 30 for a small sample or a higher value for more topics. The limit includes rising-hotspot preview topics when available.

🧾 Output

Output fields

FieldTypeWhat it does
topicListstringhotSearch for a board topic or risingHotspot for a preview topic. If both lists include it, the board topic is kept.
rankintegerGives the topic's source rank. Omitted when Douyin gives no rank, such as for a pinned or preview topic.
titleOrKeywordstringGives the hot-search topic text from Douyin.
sentenceIdstring or nullGives the Douyin sentence ID when available.
groupIdstring or nullGives the Douyin group ID when available.
trendobjectGroups the trend metrics and source attributes.
trend.hotValuenumber or nullGives Douyin's hot value when available.
trend.videoCountnumber or nullGives the video count reported by Douyin when available.
trend.discussVideoCountnumber or nullGives the discussion-video count reported by Douyin when available.
trend.articleDetailCountnumber or nullGives the article count reported by Douyin when available.
trend.roomCountnumber or nullGives the live-room count reported by Douyin when available.
trend.viewCountintegerGives the view count reported by Douyin. Omitted when absent.
trend.maxRanknumber or nullGives the maximum rank reported by Douyin when available.
trend.eventTimedate-time string or nullGives the trend or event time reported by Douyin in UTC when available.
trend.sentenceTagnumber or nullGives Douyin's sentence tag when available.
trend.wordTypenumber or nullGives Douyin's word type when available.
trend.labelnumber or nullGives Douyin's category label when available.
mediaobjectGroups the cover-image URLs returned by Douyin.
media.coverImageUrlsarray of URL stringsLists the cover-image URLs returned for the topic. The list can be empty.
sourceReturnedAtdate-time string or nullGives the UTC time reported by Douyin for the hot-search response when available.

Example trend row

This unshortened row is copied from a successful current-beta run with the keyword filter set to 核电. Board and preview topics share the fields above.

{
"topicList": "hotSearch",
"rank": 4,
"titleOrKeyword": "我国核电技术双龙出海电力拉满",
"sentenceId": "2728916",
"groupId": "7703175492883125546",
"trend": {
"hotValue": 11135957,
"videoCount": 1,
"discussVideoCount": 1,
"articleDetailCount": 0,
"roomCount": null,
"viewCount": 60272357,
"maxRank": 3,
"eventTime": "2026-11-04T06:58:34.000Z",
"sentenceTag": 3001,
"wordType": 1,
"label": 3
},
"media": {
"coverImageUrls": [
"https://p26-sign.douyinpic.com/tos-cn-i-dy/0e98d2e6194f47ab9ef5da21ba874798~noop.jpeg?lk3s=bfd515bb&x-expires=1793811600&x-signature=bSFWpPoGfaL1r%2B%2BAXiQ2wvzQG1o%3D&from=3218412987",
"https://p5-ex-gddgtc-sign.douyinpic.com/tos-cn-i-dy/0e98d2e6194f47ab9ef5da21ba874798~noop.jpeg?lk3s=bfd515bb&x-expires=1793811600&x-signature=U8dcUmFcMDClHiM1bWij7DdfYHw%3D&from=3218412987",
"https://p3-sign.douyinpic.com/tos-cn-i-dy/0e98d2e6194f47ab9ef5da21ba874798~noop.jpeg?lk3s=bfd515bb&x-expires=1793811600&x-signature=1W3Cp2Q0ZU8aGPWn39V9%2B33SFxU%3D&from=3218412987"
]
},
"sourceReturnedAt": "2026-11-04T11:51:58.000Z"
}

💳 Pricing

This Actor uses pay-per-event pricing. You are charged for each topic saved to the dataset, including rising-hotspot preview topics. A run that saves no topic has no topic event to charge. The price for your account tier appears in the Pricing tab.

Charged event

Topic: One board or rising-hotspot preview topic saved to the dataset.

🔌 Integrations

Open the dataset in Apify, read it through the Apify API, or use an Apify schedule for repeated runs.

Video walkthrough

❓ FAQ

Why do some topics have no rank?

Douyin can return pinned topics and rising-hotspot preview names without a rank. The Actor leaves rank out rather than assigning a position.

Does the keyword filter search all Douyin content?

No. It keeps topics on the chosen board and its preview that contain your exact text. Matching is case-sensitive. It does not run a video or profile search.

Can I collect Douyin videos or profiles?

No. This Actor covers public hot-search boards and their rising-hotspot previews. Video search, profile analytics, and comments are outside its scope.

What happens when I leave Trend limit empty?

The Actor returns all available topics until the source is exhausted. It can return fewer rows when the source has fewer topics.

What does one dataset row represent?

One row contains one board or preview topic returned by Douyin. The row keeps the topic text and source rank when available.

Are all trend metrics always present?

No. Douyin can omit a metric or identifier for a topic, so optional fields can be null. Ranks and view counts are omitted when absent. Cover-image lists can also be empty.

Does this Actor calculate historical growth?

No. It collects current public hot-search rows. It does not calculate growth from earlier runs.

Do I need a Douyin API key or login?

No. The Actor reads public topics and does not ask for a Douyin API key, login, or cookies. You can start it in Apify Console or through the Apify API.

📝 Changelog

v2.0 (04-11-2026)

  • Choose a Douyin board with board: main, entertainment, society, seeding, or challenge. The default is main. Use keyword to keep topics that contain your exact text. Matching is case-sensitive.
  • Rows now include rising-hotspot preview names after board topics. Use topicList to tell hotSearch topics from risingHotspot topics.
  • Removed scrapedAt because its shared time did not show when each row was saved. Remove it from your exports and API readers. There is no row save-time replacement. sourceReturnedAt remains Douyin's response time.
  • Removed the fixed fields rowType, inputMode, and inputValue. Use topicList to identify the topic list. Update readers that expect the old fields.
  • Removed duplicate ID fields douyinId, sourceIds, sourceIds.sentenceId, and sourceIds.groupId. Read sentenceId and groupId directly instead. douyinId used the sentence ID, or the group ID when no sentence ID was present.
  • Removed media.coverImageUrl, which repeated the first link in media.coverImageUrls. Read the first item in that list instead, and allow an empty list.
  • Removed the request URL sourceUrl and snapshot marker snapshotId to keep rows focused on topic data. Remove these fields from your exports and API readers; they have no replacement.
  • rank now keeps only Douyin's reported position. It is omitted when no position is given, rather than filled from trend.maxRank or list order. Update readers to allow a missing rank.
  • Added trend.viewCount when Douyin reports a view count.
  • Omit maxResults or set it to 0 to return all available topics. An omitted limit no longer stops at 50 topics.
  • Topics with different sentence IDs are now kept even when their text matches. Topics without an ID are still matched by text.
  • Reliability improvements.

v1.0 (08-09-2026)

  • Trend rows now focus on hot-search topics, source IDs, trend metrics, cover images, and source times.
  • Removed username, nickname, followerCount, the creator object, creator.username, creator.nickname, and creator.followerCount. Remove these fields from your exports and API readers. There are no replacement creator fields.
  • Removed videoId, description, playCount, likeCount, commentCount, shareCount, the video object, video.videoId, video.description, video.playCount, video.likeCount, video.commentCount, and video.shareCount. Remove these fields from your exports and API readers. There are no replacement video detail fields; trend holds topic metrics, not individual video metrics.
  • Removed status, warning, unavailableReason, and targetSucceeded from rows. Remove checks that depend on these fields from your API readers. There are no replacement row status fields.
  • Reliability improvements.
  • Repeated topics are saved only once, and the Trend limit can request more than 50 topics when Douyin returns them.

v0.2

  • Removed mode and its hotSearch, videoSearch, and profileAnalytics choices. Runs now always collect hot-search topics. The video and profile choices previously returned no rows; they did not collect videos or profiles. Remove mode from saved inputs. There is no replacement mode choice in this version.
  • Removed keywords and profileTargets, which were inputs for the video and profile choices that returned no rows. Remove these keys from saved inputs. This version has no replacement inputs for video search or profile collection.
  • Added richer trend output fields.
  • Added a dataset table view in Console.
  • Lowered the price for each result.
  • Improved handling when Douyin is temporarily unavailable.

v0.1

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré