# Douyin Trending API (douyin.trending)

- Canonical page: https://everyinfra.com/en/douyin-api/trending
- Endpoint: POST https://api.everyinfra.com/api/v1/social with {"platform": "douyin", "action": "trending", "params": {...}}
- Price: $0.000556 per call ($0.56 per 1,000 requests); failed calls and empty results are not charged
- Returns: list, default 20, max 60 per call
- Mode: sync; add "mode": "async" for slow tasks

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.

## Health

- Live health (24h percent, hourly and daily trends): https://api.everyinfra.com/api/v1/social/availability?platform=douyin&action=trending

## Parameters

| name | type | required | default | description |
|---|---|---|---|---|
| boards | not declared | no | not declared | 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. |
| limit | 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. |

## Response fields (items in `results`)

| 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 | platform-native meaning |
| sentence_tag | platform-native meaning |
| label_icon_url | platform-native meaning |
| related_music_id | platform-native meaning |
| platform | Source platform identifier, the same as platform in the request (for example xiaohongshu, tiktok). |

## Example

```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": {}
}'
```

```python
import os
import requests

response = requests.post(
    "https://api.everyinfra.com/api/v1/social",
    headers={"Authorization": f"Bearer {os.environ['EVERYINFRA_API_KEY']}"},
    json={
        "platform": "douyin",
        "action": "trending",
        "params": {},
    },
    timeout=120,
)
print(response.status_code)
print(response.json())
```

## Response example

Real response to the example request above, captured 2026-10-24T18:28:34Z. `results` and `count` are real with personal information (names, handles, avatars, profile links, contact details) removed; the list keeps the first 2 of 20. `id`, `billing` and `quota` differ on every call, so only their shape is shown.

```text
{
  "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": { … }
}
```

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

## Also

- Capability catalog (no key): https://api.everyinfra.com/api/v1/social/catalog?platform=douyin
- OpenAPI: https://everyinfra.com/openapi.json · Agents guide: https://everyinfra.com/agents.md
