Douyin Trending API
API health
- 24h health
- 91%
- 24h average time
- 8.98 s
- Healthy / normal
- Available
- Limited
- Mostly down
Last 24 hours
Last 30 days
Check Douyin's trending boards for hot keywords. Each keyword has rank, heat score, related video, article and live-room counts, label and peak rank. Choose boards with boards (default hotspot). hot_value is Douyin's own score and you can compare it only within one board.
Send POST https://api.everyinfra.com/api/v1/social with platform set to douyin and action set to trending. Price $0.56 per 1,000 requests ($0.000556 per call). Failed calls and empty results are not charged. Synchronous. For slow jobs add "mode": "async" to the body, take the job_id and poll.
Douyin Trending reads the current entries on one or more Douyin trending boards: rank, the trending phrase, heat value, related video count, board and cover image, plus, when Douyin shows them, the event time, the best rank reached so far and counts of related posts and live rooms. It answers what people on Douyin are watching right now, for content planning, newsjacking, early warning on brand topics and scheduling.
Choose boards with boards: hotspot, seeding, entertainment, social or challenge, one or several; leave it out for the hotspot board. No keyword is needed. hot_value is Douyin's own heat measure, comparable only within one board and often empty on the hotspot board, and rank is the position at the moment of the call, so call on a schedule and store each snapshot to see how entries move.
AI prompt
#Please help me write a data collection script with the EveryInfra Douyin Trending endpoint (douyin/trending).
How the endpoint works:
- Request: POST https://api.everyinfra.com/api/v1/social with the header Authorization: Bearer <API key>. Read the key from the EVERYINFRA_API_KEY environment variable and never hard-code it.
- In the request body, set platform to douyin and action to trending, and put the parameters inside params.
- No required parameters.
- Optional parameters:
- boards: Specifies trending board types to query in the trending action, passed as a single string or an array of strings: hotspot, seeding, entertainment, social, and challenge. (allowed: challenge / entertainment / hotspot / seeding / social)
- limit: The most rows to return in this call, an integer from 1 to 60. The default applies when you leave it out, and a call can return fewer rows. Larger values return 422 before any charge. (default: 20)
- Returns a list of records. Main fields of each record: rank (Position from 1: the trending rank on t…), keyword (Keyword: the trending phrase on trendin…), hot_value (Heat value, Douyin's own measure, compa…), video_count (Video count: the account's videos on pr…), board (Board the entry belongs to), image_url, event_time (Time of the trending event), sentence_id (ID of the trending phrase (trending)), group_id (ID of the trending event (trending)), label (Numeric badge code on the board entry (…), word_type (Numeric type code of the trending phras…), article_count (Number of related image posts under the…); 19 fields in total, full list at https://api.everyinfra.com/api/v1/social/catalog?platform=douyin.
- Example request body:
{
"platform": "douyin",
"action": "trending",
"params": {}
}
- Price: $0.56 per 1,000 requests; failed and empty results are not charged.
- For dozens or hundreds of targets, add "mode": "async" to the body: you get a job_id at once and poll GET https://api.everyinfra.com/api/v1/jobs/{job_id} for the result.
- On 422, fix the request using the suggested parameter names and allowed values in the error; on 429 or 503, wait for Retry-After and try again.
Before writing code, ask me which targets I need, how many, which fields, and what output format I want; then confirm the plan and the rough cost with me.Request parameters
#| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
Authorization | header | string | Yes | - | Bearer followed by your API key. Create it in the console; never put it in a URL or a code repository. |
platform | body | string | Yes | douyin | Platform identifier, fixed value. |
action | body | string | Yes | trending | Capability identifier, fixed value. |
boards | body.params | array | No | - | Specifies trending board types to query in the trending action, passed as a single string or an array of strings: hotspot, seeding, entertainment, social, and challenge. Defaults to hotspot if omitted or passed as an empty array.Allowed valueschallengeentertainmenthotspotseedingsocial |
limit | body.params | integer (1–60) | No | 20 | The most rows to return in this call, an integer from 1 to 60. The default applies when you leave it out, and a call can return fewer rows. Larger values return 422 before any charge. |
Code samples
#curl -X POST 'https://api.everyinfra.com/api/v1/social' \
-H "Authorization: Bearer $EVERYINFRA_API_KEY" \
-H 'Content-Type: application/json' \
--data-raw '{
"platform": "douyin",
"action": "trending",
"params": {}
}'OpenAPI definition (JSON)Samples read the key from the EVERYINFRA_API_KEY environment variable; copied code never contains your key.
Response example
#{ "id": "req_…", "platform": "douyin", "action": "trending", "results": [ { "rank": 1, "keyword": "渡船之上 信仰如磐", "video_count": 1, "board": "hotspot", "event_time": "2026-10-25 02:34:26", "sentence_id": "2711825", "label": 0, "word_type": 14, "is_pinned": true, "platform": "douyin" }, { "rank": 2, "keyword": "中超成都蓉城0:1大连英博", "hot_value": 11367047, "video_count": 12, "board": "hotspot", "image_url": "https://p5-ex-gddgtc-sign.douyinpic.com/tos-cn-i-dy/782a03e57ee24eb7b51eac3c0ee20e5e~noop.jpeg?lk3s=bfd515bb&x-expires=1792886400&x-signature=TFoV42oMHa89HkqBwV3AKbDx6sI%3D&from=3218412987", "event_time": "2026-10-24T07:01:06.000Z", "sentence_id": "2711309", "group_id": "7699487992537503010", "label": 3, "word_type": 1, "article_count": 0, "is_pinned": false, "max_rank": 1, "live_room_count": 0, "topic_view_count": 59034929, "sentence_tag": 5000, "label_icon_url": "https://lf3-static.bytednsdoc.com/obj/eden-cn/vjl_avo_upfbvk/ljhwZthlaukjlkulzlp/hotspot_detail_page/3.png", "platform": "douyin" } ], "count": 20, "billing": { "charged": …, "charged_usd": …, "balance_after_usd": …, … }, "quota": { … }}
Response fields
#Business data is in results. The table lists the fields a record can contain; values the platform does not show are never made up.
| Field | Meaning |
|---|---|
rank | Position from 1: the trending rank on trending, the position on the Xingtu board on xingtu_creator_rankings, the position on the search board on billboard_search_hot, and the suggestion's place in Douyin's search box on search_suggest. |
keyword | Keyword: the trending phrase on trending, the search term on billboard_search_hot, the suggested search on search_suggest. |
hot_value | Heat value, Douyin's own measure, comparable only within one board and window: on trending, the heat of the entry (often empty on the hotspot board); on the Hot Spot Treasure video boards, the board's heat score, rows ordered highest first; on billboard_search_hot, the term's search heat in the window. |
video_count | Video count: the account's videos on profile and billboard_account_search, videos related to the entry on trending. |
board | Board the entry belongs to. |
image_url | Image link. Capabilities with several images may return an image_urls array. |
event_time | Time of the trending event. |
sentence_id | ID of the trending phrase (trending). |
group_id | ID of the trending event (trending); empty for some entries. |
label | Numeric badge code on the board entry (trending), such as hot, new or surging; 0 means no badge. |
word_type | Numeric type code of the trending phrase (trending). |
article_count | Number of related image posts under the trend (trending). |
is_pinned | Whether the item is pinned (post rows: pinned on the author's profile; trending: pinned on the board). |
max_rank | Highest position the trend has reached on the board (trending). |
live_room_count | Number of related live rooms under the trend (trending). |
topic_view_count | Keeps the platform's own meaning |
sentence_tag | Keeps the platform's own meaning |
label_icon_url | Keeps the platform's own meaning |
related_music_id | Keeps the platform's own meaning |
platform | Source platform identifier, the same as platform in the request (for example xiaohongshu, tiktok). |
FAQ
#Can I query several boards at once?
#Yes. boards takes a single string or an array, and each row's board says which board it came from, so group by it before you merge results. Leaving boards out, or sending an empty array, returns the hotspot board only.
Can I compare hot_value across boards?
#No. It is Douyin's own heat measure and only means something within one board; on hotspot rows it is often empty. Compare across boards with rank, or with related-content counts such as video_count and article_count.
How do I track a trend over time?
#Call on a schedule and store every result with the time of the call. sentence_id ties rows for the same trending phrase together across snapshots, max_rank is the best position it has reached, and is_pinned marks a phrase pinned to the top of the board, which you may want to keep out of rank analysis.
Errors and billing
#- 401
- Missing or invalid key.
- 402
- Insufficient balance. Top up first.
- 422
- Invalid parameter name or value. Fix it using the suggestions in the error. No charge.
- 429
- Per-minute request limit reached. Wait for Retry-After, then try again.
- 503
- Could not complete. The held charge is returned to your balance. If the outcome is unknown, verify it before you retry.
- 200 empty
- No data. No charge.