Answers

Is there one API for Chinese hot lists: Weibo, Bilibili, Douyin and Xiaohongshu?

Short answer

Yes. okdata serves four hot lists with one API key and the same row shape (rank, name, heat, link): Weibo hot search, Bilibili popular, Douyin hot search and Xiaohongshu hot topics. One snapshot of all four costs $0.026, and hourly snapshots for 30 days cost $18.72.

A brand team in Shanghai wants one screen at 9 am: what is trending on Weibo, Bilibili, Douyin and Xiaohongshu, side by side, so the social editor can decide whether to jump on anything before lunch. Each platform has its own list, its own page format and its own blocking habits. With okdata it is four calls with the same key, and every row comes back in the same shape.

The four lists

List Endpoint Rows per call Price
Weibo hot search weibo.trends.list about 50 $0.002
Bilibili popular bilibili.trends.list about 50 $0.002
Douyin hot search douyin.trends.list about 50 $0.002
Xiaohongshu hot topics xiaohongshu.trends.list about 20 $0.02

Every row has rank, name, heat and url. None of the four takes a parameter.

Cost of a routine

Routine Cost
One snapshot of all four {{cost:weibo.trends.list1+bilibili.trends.list1+douyin.trends.list1+xiaohongshu.trends.list1}}
Three a day for 30 days {{cost:weibo.trends.list90+bilibili.trends.list90+douyin.trends.list90+xiaohongshu.trends.list90}}
Hourly for 30 days {{cost:weibo.trends.list720+bilibili.trends.list720+douyin.trends.list720+xiaohongshu.trends.list720}}

If cost matters, check the price column and poll the dearer boards less often. Xiaohongshu topics change more slowly than Weibo hot search anyway, so a few snapshots a day is plenty there.

Merge them in Python

import os, requests

API = "https://api.okdata.online"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
BOARDS = {
    "weibo": "/v1/weibo/trends/list",
    "bilibili": "/v1/bilibili/trends/list",
    "douyin": "/v1/douyin/trends/list",
    "xiaohongshu": "/v1/xiaohongshu/trends/list",
}

rows = []
for platform, path in BOARDS.items():
    body = requests.get(API + path, headers=H, timeout=60).json()
    if body["code"] != "ok":
        print(platform, body["code"], body["message"])  # one board down should not sink the rest
        continue
    rows += [{"platform": platform, **r} for r in body["data"]["items"][:10]]

for r in rows:
    print(f"{r['platform']:<12} #{r['rank']:<3} {r['name']}  heat={r['heat']}")

The same four calls work from an AI assistant through the MCP server, if you would rather ask in plain words for a morning summary.

Differences to keep in mind

  • heat means something different on each platform. On Bilibili it is the video's view count; on Weibo and Douyin it is the platform's own heat value. Compare ranks across platforms, not heat.
  • Weibo's list comes back with promoted entries removed. Xiaohongshu's list is the set of topics the app suggests to creators, which is closer to a content calendar than a news feed.
  • Bilibili's board is a list of videos, so name is a video title, not a topic.
  • There is no history endpoint. Save each snapshot if you want to chart how long a topic stayed on a board.

Free alternatives

Open-source aggregators like DailyHotApi and RSSHub cover these boards and many more (Zhihu, Baidu, Toutiao, Kuaishou, none of which are in this catalog), and they cost nothing if you host and maintain them. They suit a team that wants dozens of sources and has someone to keep the scrapers alive. The trend research guide shows how to go from a hot topic to the posts and comments behind it.

Updated