Bilibili Scraper: Videos, Search, Rankings & Creators API
Pricing
$3.00 / 1,000 results
Bilibili Scraper: Videos, Search, Rankings & Creators API
Bilibili (China's YouTube) data in one call: keyword search, popular and ranking lists, full video details and creator stats. Views, likes, coins, favorites, tags, followers. Drop-in input. $3 per 1,000 results.
Pricing
$3.00 / 1,000 results
Rating
0.0
(0)
Developer
Prague Data Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Get Bilibili (哔哩哔哩, B站, China's YouTube) data as clean JSON rows: one row per video (title, views, likes, coins, favorites, shares, danmaku and comment counts, tags, category, creator, publish date) or per creator (followers, following, video count, total likes, level, verification). Search by keyword, read the popular and ranking boards, look up full video details or monitor creators. $3 per 1,000 results, no login, no cookies to supply.
Quick start
Minimal input (search mode):
{"mode": "search","searchQuery": "python","maxResults": 40}
Sample output row:
{"type": "video","bvid": "BV1gKJ86JEuP","aid": 117451568191221,"title": "我是人类","description": "游戏:i'm not a robot","url": "https://www.bilibili.com/video/BV1gKJ86JEuP","thumbnailUrl": "https://i2.hdslb.com/bfs/archive/e858b6164334a31c2703cd38ef517f13210ef42d.jpg","duration": 1442,"durationFormatted": "24:02","viewCount": 2874934,"likeCount": 152887,"coinCount": 20219,"favoriteCount": 25691,"shareCount": 2482,"danmakuCount": 6498,"replyCount": 1777,"authorName": "老番茄","authorMid": 546195,"authorUrl": "https://space.bilibili.com/546195","authorFace": "https://i0.hdslb.com/bfs/face/bc5ca101313d4db223c395d64779e76eb3482d60.jpg","authorFollowers": 20853119,"publishDate": "2026-10-17T03:30:00Z","publishTimestamp": 1792207800,"category": "单机游戏","categoryId": 17,"tags": ["推荐宝藏游戏", "解谜", "搞笑", "老番茄", "我不是机器人", "captcha"],"rank": null,"searchQuery": null,"source": "video_detail","scrapedAt": "2026-10-19T13:14:25.441Z"}
Drop-in replacement
Compatible with the input of zhorex/bilibili-scraper. The same field names, types and values work here: mode (search, video_detail, user_profile, user_videos, popular), searchQuery, searchAliases, sortOrder, durationFilter, pubtimeBegin, pubtimeEnd, videoUrls, userIds, category, maxResults, deltaMode and deltaStateKey. Switch by changing only the Actor id in your API call, schedule or integration. The output uses the same field names for videos (bvid, viewCount, likeCount, coinCount, favoriteCount, shareCount, danmakuCount, replyCount, authorName, authorMid, authorFace, publishDate, publishTimestamp, category, tags, url, thumbnailUrl, duration, durationFormatted, scrapedAt) and for creators (type: "user", mid, name, face, sign, level, followers, following, videoCount, totalLikes, isOfficial, officialTitle, officialRole, profileUrl, plus fans, attention, archiveCount, likeCount).
What is different:
- Scope: no comments and no danmaku. Comment threads and danmaku texts are user-generated personal data and are not collected.
includeComments,includeReplies,followUpComments,includeDanmaku,danmakuSampleSize,maxComments,sortCommentsandsentimentAnalysisare accepted and ignored; the run status names the ones you switched on. Modevideo_commentsreturns nothing and costs nothing. Every video row still carries itsdanmakuCountandreplyCount. autoLocalizeis ignored: add the Chinese name yourself insearchAliasesorkeywords(for example"searchQuery": "Nike", "searchAliases": ["耐克"]).user_videosreads the creator's real upload list (newest first, complete history, collaborations included) instead of a search by channel name, with full stats on every row.- Extra modes and fields:
rankingmode,rankingType,fetchVideoDetails,authorFollowers,authorUrl,categoryId,rank,searchQuery,source.
Modes
| Mode | Input | Rows |
|---|---|---|
search | searchQuery (+ optional keywords/searchAliases), sortOrder, durationFilter, pubtimeBegin, pubtimeEnd | Videos matching the query, up to about 1,000 per query |
popular | optional category | The trending board (综合热门, 450 to 500 videos); with a category, that category's trending board (top 100) |
ranking | category, rankingType (all, origin, rookie) | The ranking board (排行榜) of a category, top 100 |
video_detail | videoUrls: URLs, BV ids, av ids, b23.tv short links | One complete row per video, with tags and the creator's followers |
user_profile | userIds: mid, space.bilibili.com/<mid> or UID:<mid> | One creator row each |
user_videos | userIds | Each creator's profile row, then their newest uploads |
video_comments | — | Nothing (out of scope, see above) |
Input
| Field | Type | Default | Notes |
|---|---|---|---|
mode | string | search | See the table above |
searchQuery | string | — | Required in search mode. Chinese or English: python, 人工智能, 原神 |
keywords | array | [] | More queries; results are merged, deduplicated and share maxResults |
searchAliases | array | [] | Same as keywords (compatibility) |
sortOrder | string | totalrank | totalrank (relevance), click (views), pubdate (newest), dm (danmaku), stow (favorites), scores (comments) |
durationFilter | string | any | short (< 10 min), medium (10-30), long (30-60), verylong (> 60) |
pubtimeBegin, pubtimeEnd | string | — | 2026-04-15, 2026/04/15, 20260415, 2026-04-15 10:30, ISO 8601 with or without zone (no zone = UTC). One bound alone works too (Bilibili needs both, the Actor fills the other one). Unreadable values are not applied and the run status says so |
category | string | all | animation, music, dance, game, knowledge, tech, sports, car, life, food, animal, kichiku, fashion, entertainment, cinephile |
rankingType | string | all | Ranking mode: all, origin (original content), rookie (new creators) |
videoUrls | array | — | Required in video_detail mode |
userIds | array | — | Required in user_profile and user_videos modes. A channel name does not work, use the number in the profile link |
maxResults | integer | 100 | Maximum rows for the run (1 to 5,000). In user_videos mode the rows are shared fairly between creators |
fetchVideoDetails | boolean | false | In list modes, open each video's detail record to add tags, coins, shares and creator followers (one extra request per video, same price) |
includeCreatorProfile | boolean | true | user_videos: start each creator with a profile row |
deltaMode | boolean | false | Only videos that earlier runs with the same deltaStateKey did not deliver (search, popular, ranking, user_videos) |
deltaStateKey | string | default | One key per monitor, e.g. nike-daily |
proxyConfiguration | object | off | Optional. Not needed from Apify's datacenter IPs (see below); switch on Apify Proxy only if runs keep reporting HTTP 412 or code -352 |
More examples:
{ "mode": "search", "searchQuery": "AI", "sortOrder": "pubdate", "durationFilter": "medium", "pubtimeBegin": "2026-09-01", "maxResults": 200 }
{ "mode": "video_detail", "videoUrls": ["https://www.bilibili.com/video/BV1xx411c7mD", "BV1gKJ86JEuP", "av170001"] }
{ "mode": "user_videos", "userIds": ["546195", "https://space.bilibili.com/456664753"], "maxResults": 100 }
{ "mode": "ranking", "category": "knowledge", "rankingType": "origin", "maxResults": 100 }
Output
Video rows (type: "video"):
| Field | Description |
|---|---|
bvid, aid | Video ids (BV id and numeric av id) |
title, description | Clean text, without search highlight tags |
url, thumbnailUrl | Video page and cover image |
duration, durationFormatted | Seconds and m:ss / h:mm:ss |
viewCount, likeCount, coinCount, favoriteCount, shareCount | Views (播放), likes (点赞), coins (投币), favorites (收藏), shares. coinCount and shareCount are null in search mode unless fetchVideoDetails is on |
danmakuCount, replyCount | Number of danmaku and of comments (counts only) |
authorName, authorMid, authorUrl, authorFace | Uploader channel and avatar |
authorFollowers | Uploader's followers (video_detail, user_videos, or fetchVideoDetails) |
publishDate, publishTimestamp | ISO 8601 UTC and unix seconds |
category, categoryId | Bilibili zone name (Chinese, e.g. 单机游戏) and id |
tags | Video tags (search and video_detail; other modes with fetchVideoDetails) |
rank | Position in the search results or board |
searchQuery | Query that found the video (search) |
source | Mode that produced the row |
scrapedAt | Collection time |
Creator rows (type: "user"):
| Field | Description |
|---|---|
mid, name, profileUrl | Creator id, channel name, space.bilibili.com link |
face, sign, level | Avatar URL, public channel bio, account level 0-6 |
followers, following, videoCount, totalLikes | Audience and output numbers |
isOfficial, officialTitle, officialRole | Bilibili verification (person or organisation), as shown on the profile |
fans, attention, archiveCount, likeCount | Same numbers under Bilibili's own names (compatibility) |
source, scrapedAt | Mode and collection time |
A number Bilibili does not report is null, never a made-up 0. A video or creator that does not exist is not charged and is named in the run status.
Monitoring with delta mode
Schedule a run with "deltaMode": true and a deltaStateKey per monitor. The first run returns everything and sets the baseline; later runs skip what earlier runs with that key delivered, so you pay only for new videos.
- Newest-first lists (
user_videos, andsearchwith"sortOrder": "pubdate"): a later run returns only videos published since the last run. It stops at the first video an earlier run delivered, so older videos the baseline did not reach are never backfilled or charged. - Other search orders,
popularandranking: a later run returns the videos no earlier run delivered. To monitor a whole board, setmaxResultsto its size (500 for popular, 100 for a ranking board): later runs then return exactly the videos that entered the board. - In
user_videosthe creator profile rows are delivered on every run (follower counts change); set"includeCreatorProfile": falseto pay only for new videos.
Popular and ranking keep one list per category. The list lives in the key-value store bilibili-scraper-delta of your Apify account and remembers up to 200,000 videos.
{ "mode": "search", "searchQuery": "原神", "sortOrder": "pubdate", "deltaMode": true, "deltaStateKey": "genshin-daily", "maxResults": 200 }
Pricing
Pay per result: $0.003 per row ($3 per 1,000), video or creator. No start fee, no platform usage on top. Set a maximum cost per run in the Apify Console and the Actor stops exactly there.
How it works and limits
- Data comes from Bilibili's public web APIs, the same ones bilibili.com calls in your browser: an anonymous visitor session (buvid3 cookie, bili_ticket), WBI request signing, at most 3 requests in parallel and retries with backoff when Bilibili's risk control answers (HTTP 412, code -352), with a fresh session from the second failure. No account, no cookies from you, no browser.
- Datacenter IPs: tested from a US cloud datacenter IP (the kind Apify runs on) in October 2026, every endpoint the Actor uses answers without a proxy: search, popular, ranking, video details, creator card and creator uploads. Bilibili's channel-page endpoints (
space.bilibili.comvideo list and profile: HTTP 412 / code -352) are blocked from datacenter IPs, so the Actor reads creators through the creator card and upload-list endpoints instead.proxyConfigurationstays available if that changes. - If Bilibili cannot be reached after the retries and nothing was saved, the run ends as failed with the reason in its status (so schedules and monitors notice); nothing is charged.
- The data is Chinese-language content hosted in China; titles, tags and categories are returned as published (no translation).
- Search returns at most about 1,000 videos per query (Bilibili's own limit): split big pulls into several queries or date ranges. A ranking board has 100 videos, the popular board 450 to 500.
- Only public data: videos and public creator channels. No comments, no danmaku texts, no data about viewers.
Support
Open an issue on the Actor's Issues tab: we answer within 24 hours.