# Is there an API for Bilibili's popular (热门) board?

> Get Bilibili's current popular videos board through an API: rank, title, views and link for each video, the cost per snapshot, and how to keep a history.

Canonical page: https://okdata.online/answers/bilibili-popular-board-api/

**Short answer: **Yes. Bilibili popular board on okdata returns the current 综合热门 list with rank, video title, view count and link, about 50 rows a page, for $0.002 a call. Three snapshots a day for a month cost $0.18. It needs no parameters, no login and no cookie.

A content team that checks Bilibili's popular board every morning learns fast which formats are breaking out this week: a new meme, a game patch, a kind of explainer everyone suddenly copies. Doing that by scrolling the site works until you want it in a spreadsheet, compared week over week, or summarised by a model before the stand-up. Then you want the board as data.

## The endpoint

[Bilibili popular board](/apis/bilibili/trends/list/) takes no parameters. Each row has:

- `rank`, the position on the board
- `name`, the video title
- `heat`, the video's view count at the moment of fetching
- `url`, the video link, which contains the BV id

The board is longer than one page. Pass `page.next_cursor` back as `cursor` to go further down; each page is a separate call.

Want likes, coins or the uploader for a row? Hand its link to [Bilibili video detail](/apis/bilibili/videos/get/) for $0.002 each.

## Cost

| Routine | Calls | Cost |
|---|---|---|
| One snapshot, first page | 1 | $0.002 |
| Three snapshots a day for 30 days | 90 | $0.18 |
| Same, three pages deep each time | 270 | $0.54 |
| Daily snapshot plus detail on the top 10 | 30 + 300 | $0.66 |

## Morning snapshot in Python

```python
import json, os, datetime, requests

API = "https://api.okdata.online"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}

board = requests.get(API + "/v1/bilibili/trends/list", headers=H, timeout=60).json()
rows = board["data"]["items"]

top = []
for row in rows[:10]:
    bv = row["url"].rstrip("/").split("/")[-1]
    d = requests.get(API + "/v1/bilibili/videos/get", headers=H,
                     params={"id": bv, "view": "full"}, timeout=60).json()["data"]["item"]
    top.append({"rank": row["rank"], "title": row["name"], "views": row["heat"],
                "coins": d["ext"]["coins"], "section": d["ext"]["section"], "up": d["author"]["name"]})

stamp = datetime.date.today().isoformat()
json.dump(top, open(f"bili-popular-{stamp}.json", "w", encoding="utf-8"), ensure_ascii=False, indent=1)
```

## What the board does not include

- `heat` is plain view count, not Bilibili's internal ranking score. A video can sit above one with more views.
- Only the current 综合热门 board is available. Section rankings, the weekly 每周必看 list and the 入站必刷 collection are not in the catalog.
- There is no history endpoint. If you want last month's boards, start saving snapshots now; a file per day, as above, is enough.

## Other ways

Open-source projects such as DailyHotApi and RSSHub include a Bilibili popular route you can host yourself for free, and they are a good fit if you already run one of them. For a quick look, the 热门 tab on bilibili.com is the source itself. The [trend research guide](/solutions/trend-research/) shows how to put this board next to Weibo and Douyin hot lists.

## Endpoints used

- [Bilibili popular board](https://okdata.online/apis/bilibili/trends/list/) `bilibili.trends.list`: $0.002 per call · about 50 board entries per page
- [Bilibili video detail](https://okdata.online/apis/bilibili/videos/get/) `bilibili.videos.get`: $0.002 per call

Updated 2026-11-12
