Bilibili API endpoint
Returns stable server-rendered editorial sections for one Bilibili vertical. Allowed category values: documentary, movie, tv, variety. Rotating feeds, pagination, account state, and streaming URLs are excluded.
/bilibili/vertical-homeReturns the stable editorial sections on one Bilibili vertical home page.
x-api-key (required): your Crawlora API key.category (required): one of documentary, movie, tv, or
variety.featured contains the homepage banner cards. sections contains the stable
hot, ranking, column, and campaign sections in source order. Documentary pages
can also return producer_groups. Rotating feeds, pagination, account state,
and streaming URLs are not included.
| Field | Filled in, of 6 checked | Values in the sample |
|---|---|---|
| title | 6 | “门捷列夫很忙2” and 5 other values |
| subtitle | 6 | “遇事不决量子力学” and 5 other values |
| url | 6 | bilibili.com |
| cover | 6 | i0.hdslb.com |
| season_id | 6 | |
| episode_id | 6 | |
| item_id | 6 | |
| hover_text | 6 | median 2 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| category | string | Yes | Vertical: documentary, movie, tv, variety Allowed values: documentary, movie, tv, variety. | documentary | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/bilibili/vertical-home?category=documentary" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"category": "documentary",
"featured": [
{
"title": "Featured documentary",
"url": "https://www.bilibili.com/bangumi/play/ep5683721",
"cover": "https://i0.hdslb.com/bfs/bangumi/example.jpg"
}
],
"navigation": [
{
"id": "type",
"name": "Category",
"options": [
{
"name": "All",
"url": "https://www.bilibili.com/documentary/"
}
]
}
],
"sections": [
{
"style": "web_rank_v2",
"title": "Popular ranking",
"cards": [
{
"title": "Ranked documentary",
"rank": 1,
"rating": "9.7",
"cover": "https://i0.hdslb.com/bfs/bangumi/rank.jpg"
}
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/bilibili.verticalHomeResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | bilibili.VerticalHomeResponse | No | ||||
| data.category | string | No | documentary | |||
| data.featured | array | No | ||||
| data.featured[].brief | string | No | Public editorial summary | |||
| data.featured[].cover | string | No | https://i0.hdslb.com/bfs/bangumi/example.jpg | |||
| data.featured[].episode_id | integer | No | 5683721 | |||
| data.featured[].hover_text | array | No | ||||
| data.featured[].item_id | integer | No | 12345 | |||
| data.featured[].rank | integer | No | 1 | |||
| data.featured[].rating | string | No | 9.7 | |||
| data.featured[].season_id | integer | No | 291345 | |||
| data.featured[].subtitle | string | No | Featured subtitle | |||
| data.featured[].title | string | No | Bilibili featured title | |||
| data.featured[].url | string | No | https://www.bilibili.com/bangumi/play/ep5683721 | |||
| data.navigation | array | No | ||||
| data.navigation[].field | string | No | type | |||
| data.navigation[].id | string | No | type | |||
| data.navigation[].name | string | No | Category | |||
| data.navigation[].options | array | No | ||||
| data.navigation[].options[].name | string | No | All | |||
| data.navigation[].options[].url | string | No | https://www.bilibili.com/documentary/ | |||
| data.producer_groups | array | No | ||||
| data.producer_groups[].cards | array | No | ||||
| data.producer_groups[].cards[].brief | string | No | Public editorial summary | |||
| data.producer_groups[].cards[].cover | string | No | https://i0.hdslb.com/bfs/bangumi/example.jpg | |||
| data.producer_groups[].cards[].episode_id | integer | No | 5683721 | |||
| data.producer_groups[].cards[].hover_text | array | No | ||||
| data.producer_groups[].cards[].item_id | integer | No | 12345 | |||
| data.producer_groups[].cards[].rank | integer | No | 1 | |||
| data.producer_groups[].cards[].rating | string | No | 9.7 | |||
| data.producer_groups[].cards[].season_id | integer | No | 291345 | |||
| data.producer_groups[].cards[].subtitle | string | No | Featured subtitle | |||
| data.producer_groups[].cards[].title | string | No | Bilibili featured title | |||
| data.producer_groups[].cards[].url | string | No | https://www.bilibili.com/bangumi/play/ep5683721 | |||
| data.producer_groups[].producer_id | integer | No | 1 | |||
| data.producer_groups[].rank | integer | No | 1 | |||
| data.sections | array | No | ||||
| data.sections[].cards | array | No | ||||
| data.sections[].cards[].brief | string | No | Public editorial summary | |||
| data.sections[].cards[].cover | string | No | https://i0.hdslb.com/bfs/bangumi/example.jpg | |||
| data.sections[].cards[].episode_id | integer | No | 5683721 | |||
| data.sections[].cards[].hover_text | array | No | ||||
| data.sections[].cards[].item_id | integer | No | 12345 | |||
| data.sections[].cards[].rank | integer | No | 1 | |||
| data.sections[].cards[].rating | string | No | 9.7 | |||
| data.sections[].cards[].season_id | integer | No | 291345 | |||
| data.sections[].cards[].subtitle | string | No | Featured subtitle | |||
| data.sections[].cards[].title | string | No | Bilibili featured title | |||
| data.sections[].cards[].url | string | No | https://www.bilibili.com/bangumi/play/ep5683721 | |||
| data.sections[].style | string | No | web_rank_v2 | |||
| data.sections[].title | string | No | Popular ranking | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/bilibili/vertical-home?category=documentary" \
-H "x-api-key: $CRAWLORA_API_KEY"