Bilibili Scraper: Videos, Search, Rankings & Creators API avatar

Bilibili Scraper: Videos, Search, Rankings & Creators API

Pricing

$3.00 / 1,000 results

Go to Apify Store
Bilibili Scraper: Videos, Search, Rankings & Creators API

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

Prague Data Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

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, sortComments and sentimentAnalysis are accepted and ignored; the run status names the ones you switched on. Mode video_comments returns nothing and costs nothing. Every video row still carries its danmakuCount and replyCount.
  • autoLocalize is ignored: add the Chinese name yourself in searchAliases or keywords (for example "searchQuery": "Nike", "searchAliases": ["耐克"]).
  • user_videos reads 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: ranking mode, rankingType, fetchVideoDetails, authorFollowers, authorUrl, categoryId, rank, searchQuery, source.

Modes

ModeInputRows
searchsearchQuery (+ optional keywords/searchAliases), sortOrder, durationFilter, pubtimeBegin, pubtimeEndVideos matching the query, up to about 1,000 per query
popularoptional categoryThe trending board (综合热门, 450 to 500 videos); with a category, that category's trending board (top 100)
rankingcategory, rankingType (all, origin, rookie)The ranking board (排行榜) of a category, top 100
video_detailvideoUrls: URLs, BV ids, av ids, b23.tv short linksOne complete row per video, with tags and the creator's followers
user_profileuserIds: mid, space.bilibili.com/<mid> or UID:<mid>One creator row each
user_videosuserIdsEach creator's profile row, then their newest uploads
video_comments—Nothing (out of scope, see above)

Input

FieldTypeDefaultNotes
modestringsearchSee the table above
searchQuerystring—Required in search mode. Chinese or English: python, 人工智能, 原神
keywordsarray[]More queries; results are merged, deduplicated and share maxResults
searchAliasesarray[]Same as keywords (compatibility)
sortOrderstringtotalranktotalrank (relevance), click (views), pubdate (newest), dm (danmaku), stow (favorites), scores (comments)
durationFilterstringanyshort (< 10 min), medium (10-30), long (30-60), verylong (> 60)
pubtimeBegin, pubtimeEndstring—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
categorystringallanimation, music, dance, game, knowledge, tech, sports, car, life, food, animal, kichiku, fashion, entertainment, cinephile
rankingTypestringallRanking mode: all, origin (original content), rookie (new creators)
videoUrlsarray—Required in video_detail mode
userIdsarray—Required in user_profile and user_videos modes. A channel name does not work, use the number in the profile link
maxResultsinteger100Maximum rows for the run (1 to 5,000). In user_videos mode the rows are shared fairly between creators
fetchVideoDetailsbooleanfalseIn list modes, open each video's detail record to add tags, coins, shares and creator followers (one extra request per video, same price)
includeCreatorProfilebooleantrueuser_videos: start each creator with a profile row
deltaModebooleanfalseOnly videos that earlier runs with the same deltaStateKey did not deliver (search, popular, ranking, user_videos)
deltaStateKeystringdefaultOne key per monitor, e.g. nike-daily
proxyConfigurationobjectoffOptional. 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"):

FieldDescription
bvid, aidVideo ids (BV id and numeric av id)
title, descriptionClean text, without search highlight tags
url, thumbnailUrlVideo page and cover image
duration, durationFormattedSeconds and m:ss / h:mm:ss
viewCount, likeCount, coinCount, favoriteCount, shareCountViews (播放), likes (点赞), coins (投币), favorites (收藏), shares. coinCount and shareCount are null in search mode unless fetchVideoDetails is on
danmakuCount, replyCountNumber of danmaku and of comments (counts only)
authorName, authorMid, authorUrl, authorFaceUploader channel and avatar
authorFollowersUploader's followers (video_detail, user_videos, or fetchVideoDetails)
publishDate, publishTimestampISO 8601 UTC and unix seconds
category, categoryIdBilibili zone name (Chinese, e.g. 单机游戏) and id
tagsVideo tags (search and video_detail; other modes with fetchVideoDetails)
rankPosition in the search results or board
searchQueryQuery that found the video (search)
sourceMode that produced the row
scrapedAtCollection time

Creator rows (type: "user"):

FieldDescription
mid, name, profileUrlCreator id, channel name, space.bilibili.com link
face, sign, levelAvatar URL, public channel bio, account level 0-6
followers, following, videoCount, totalLikesAudience and output numbers
isOfficial, officialTitle, officialRoleBilibili verification (person or organisation), as shown on the profile
fans, attention, archiveCount, likeCountSame numbers under Bilibili's own names (compatibility)
source, scrapedAtMode 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, and search with "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, popular and ranking: a later run returns the videos no earlier run delivered. To monitor a whole board, set maxResults to its size (500 for popular, 100 for a ranking board): later runs then return exactly the videos that entered the board.
  • In user_videos the creator profile rows are delivered on every run (follower counts change); set "includeCreatorProfile": false to 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.com video 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. proxyConfiguration stays 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.