Weibo Trending API — The Hot-Search List (热搜)
Documentation menu
FetchLayer FetchLayer API

Get the hot-search list

Weibo’s live hot-search list (热搜) with the exact heat score behind every topic. Paid placements are left out unless includePromoted is true. 1 credit.

POST /trending Search & trending
https://api.fetchlayer.dev/weibo/trending
OpenAPI JSON

Headers

Authorization string required

Bearer token — your FetchLayer API key.

Parameters

includePromoted boolean optional

Include the paid placements Weibo mixes into the list, marked isPromoted. (default: false)

limit integer optional

Maximum topics returned, up to 60, or -1 for the maximum. Left out, the whole list.

format string optional

json or markdown, lowercase; any other value is a 400. Over MCP, markdown returns the result rendered as text; the REST API accepts it and returns JSON. (default: json)

timeoutMs integer optional

Time limit for the whole request, in milliseconds (1000–120000); a value outside that range is a 400. When it runs out, a paged request returns what it has with nextCursor, billed for the pages it read; a request with nothing to return yet fails with a 503 you can retry, marked with the response header X-Timeout-Source: caller.

Response Fields

trending

Get the hot-search list

transport string

The data source: always the platform id, "weibo".

scrapedAt string

When the result was produced (ISO 8601).

notes string[]

Caveats you can act on: a list that ends where Weibo stops showing more, long posts shortened in a list, paid placements left out. Empty when there are none. An empty result always comes with a note explaining it.

skippedRecords object[]

Records Weibo sent that could not be read, each as { id, reason, fieldsPresent }; id may be null. Normally empty. One unreadable record never costs the rest of the response or the cursor.

pagesFetched number

Full pages of results returned, minimum 1 — 20 comments or replies, 50 search posts, 48 media posts — which is what the request costs: one credit each.

topics object[]

The list, in rank order.

topics[].rank number

Position on the list.

topics[].word string

The topic. Pass it to search-posts to read the posts behind it.

topics[].heat number | null

Weibo’s heat score, exact.

topics[].category string | null

Weibo’s category, such as 民生新闻.

topics[].label string | null

Weibo’s badge, such as 新 (new) or 热 (hot), or null.

topics[].onListSince string | null

When the topic joined the list (ISO 8601).

topics[].searchUrl string

The topic’s search page on Weibo.

topics[].isPromoted boolean

True for a paid placement; only present in the list with includePromoted.

topicCount number

How many topics are in this response.

Request

curl -X POST "https://api.fetchlayer.dev/weibo/trending" \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"limit":50}'

Response

{
  "transport": "weibo",
  "skippedRecords": [],
  "scrapedAt": "2026-10-15T15:24:48.000Z",
  "notes": [
    "2 paid placements were left out; includePromoted: true includes them."
  ],
  "pagesFetched": 1,
  "topics": [
    {
      "rank": 1,
      "word": "深圳全市全天禁鸣喇叭5年",
      "heat": 1095555,
      "category": "民生新闻",
      "label": "新",
      "onListSince": "2026-10-15T14:55:22.000Z",
      "searchUrl": "https://s.weibo.com/weibo?q=%23%E6%B7%B1%E5%9C%B3%E5%85%A8%E5%B8%82%E5%85%A8%E5%A4%A9%E7%A6%81%E9%B8%A3%E5%96%87%E5%8F%AD5%E5%B9%B4%23",
      "isPromoted": false
    }
  ],
  "topicCount": 50
}