POST

API health

24h health
91%
24h average time
8.98 s
  • Healthy / normal
  • Available
  • Limited
  • Mostly down
Healthy

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

#
NameInTypeRequiredDefaultDescription
AuthorizationheaderstringYes-Bearer followed by your API key. Create it in the console; never put it in a URL or a code repository.
platformbodystringYesdouyinPlatform identifier, fixed value.
actionbodystringYestrendingCapability identifier, fixed value.
boardsbody.paramsarrayNo-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
limitbody.paramsinteger (1–60)No20The 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

#
bash
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

#
Captured October 24, 2026 at 18:28 (UTC) by calling this API with the parameters in the code sample above. results and count are that call's real response with personal information (names, handles, avatars, profile links, contact details) removed; the list keeps the first 2. id, billing and quota differ on every call, so only their shape is shown.
json
{  "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.

FieldMeaning
rankPosition 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.
keywordKeyword: the trending phrase on trending, the search term on billboard_search_hot, the suggested search on search_suggest.
hot_valueHeat 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_countVideo count: the account's videos on profile and billboard_account_search, videos related to the entry on trending.
boardBoard the entry belongs to.
image_urlImage link. Capabilities with several images may return an image_urls array.
event_timeTime of the trending event.
sentence_idID of the trending phrase (trending).
group_idID of the trending event (trending); empty for some entries.
labelNumeric badge code on the board entry (trending), such as hot, new or surging; 0 means no badge.
word_typeNumeric type code of the trending phrase (trending).
article_countNumber of related image posts under the trend (trending).
is_pinnedWhether the item is pinned (post rows: pinned on the author's profile; trending: pinned on the board).
max_rankHighest position the trend has reached on the board (trending).
live_room_countNumber of related live rooms under the trend (trending).
topic_view_countKeeps the platform's own meaning
sentence_tagKeeps the platform's own meaning
label_icon_urlKeeps the platform's own meaning
related_music_idKeeps the platform's own meaning
platformSource 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.

Errors

Our own visit stats are always on. Google Analytics loads only if you choose “Allow analytics”. Privacy policy