Bilibili Scraper - Videos, Rankings, Uploaders & Comments
Pricing
from $0.92 / 1,000 videos
Bilibili Scraper - Videos, Rankings, Uploaders & Comments
Bilibili scraper (哔哩哔哩, B站) for videos by keyword, the popular list, leaderboards, sub-zone top lists, uploaders or links: plays, likes, coins, favourites, shares, danmaku and comment counts, tags and engagement rate. Creators, comments and danmaku stats too. $0.95 per 1,000 rows on the free plan.
Pricing
from $0.92 / 1,000 videos
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
a day ago
Last modified
Categories
Security
Limited permissionsShare
Bilibili scraper for videos, keyword search, leaderboards, uploaders, creators and comments, without an account: every video comes back as a row with all seven counts on it, plays, likes, coins, favourites, shares, danmaku and comments, plus tags, sub-zone, length, publish time, the uploader and an engagement rate.
Keyword search reads one page per keyword, about 20 videos, or up to 50 pages if asked. A keyword across sub-zones goes further, up to 100 per sub-zone. And when Bilibili will not page through a video's comments, you get the top ones it shows, not all of them.
| Input | A choice of what to get, plus keywords, uploader links, video links or IDs where it needs them |
| Output | One row per video, with the seven counts, tags, sub-zone, length, publish time and uploader; or one row per comment, creator, hot-search term or suggestion |
| Ceiling | 5,000 rows per run, 2,000 comments per video |
| Account needed | None, and no login |
| Price | $0.95 per 1,000 rows, video or comment, on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 5,200 |
🔍 What Bilibili Scraper does
Each run does one job, chosen with What to get:
- Keyword search (搜索): up to 50 keywords, up to 50 pages each.
- Popular right now (热门): the popular list, about 650 videos.
- Leaderboard (排行榜): the top 100 of the last few days, whole site or one of 19 zones.
- Top videos in a sub-zone: one of 127 sub-zones over up to 90 days, by plays, coins, favourites, danmaku or comments. With a keyword it can look in more sub-zones, or all of them.
- Uploaders' videos: up to 100 space links or UIDs, newest, most played or most favourited.
- Videos from links or IDs, or Any Bilibili links mixing videos, uploaders and zones.
- Creator profiles (UP主资料): followers, following, videos, total likes, level, verification, bio.
- Find creators by keyword, Hot-search terms (热搜) and Search suggestions.
- Comments on videos: up to 200 videos, optionally with replies.
Any video choice can also add the comments under each video, a creator row per uploader, danmaku stats, a length filter, or only the videos an earlier run has not returned. Dates are Beijing dates.
📋 What data you get from each Bilibili video, creator and comment
| What you get | Field |
|---|---|
| Both video IDs and the link | bvid, aid, url |
| Title, description and cover | title, description, coverUrl |
| Length, readable and in seconds | duration, durationSeconds |
| When it was published | publishedAt |
| The uploader | uploaderId, uploaderName, uploaderUrl |
| Plays, likes, coins, favourites, shares, danmaku and comments | views, likes, coins, favourites, shares, danmaku, comments |
| Likes, coins and favourites over plays | engagementRate |
| Tags and sub-zone | tags, category, categoryId |
| Where the row came from, and when it was read | source, rank, listedUnder, keyword (search rows), scrapedAt |
| Danmaku stats, when asked for | danmakuStats: read, total, perMinute, peakMinute, peakMinuteCount, uniqueSenders, sample |
| On comment rows: the video, the comment, its author, likes and replies | videoBvid, videoAid, videoTitle, videoUrl, commentId, text, authorName, authorId, likes, replyCount, postedAt, isReply, replyTo |
| On comment rows: the commenter and the uploader's reaction | authorLevel, authorIsVip, authorVerified, authorAvatarUrl, likedByUploader, uploaderReplied |
| On creator rows | uploaderId, uploaderName, uploaderUrl, avatarUrl, bio, followers, following, videoCount, totalLikes, level, verified, verifiedText |
| On hot-search and suggestion rows | keyword, rank, shownAs, heat, suggestion, searchUrl |
▶️ How to scrape Bilibili videos and comments
- Open Bilibili Scraper and click Try for free.
- Pick What to get.
- Fill in what that choice needs: keywords, a zone, a sub-zone and dates, uploader links, or video links.
- Set Maximum videos, or Maximum comments per video for comments, then click Start.
- Download the dataset as JSON, CSV or Excel, or read it from the Apify API.
Run it with nothing chosen and you get one sample row, a real video, to see the shape first.
💰 How much does it cost to scrape Bilibili?
$0.95 per 1,000 rows on the Free plan, whether they are videos or comments. Paid plans pay a little less: $0.94 on Starter, $0.93 on Scale and $0.92 on Business. On the free plan, the $5 Apify gives you each month covers about 5,200 rows.
A creator row is charged like one video, and so is a creator found by keyword, a hot-search term or a suggestion. Comments on the videos found are charged as comments.
You pay per row delivered. Gone or hidden videos, unknown uploaders, unread pages, repeats, rows outside your dates, zone or length, videos an earlier run returned, the sample row and the stop row are free. Tags and danmaku stats add nothing.
📥 What you give it
{"source": "search","searchKeywords": ["原神", "minecraft"],"minDurationSec": 60,"includeComments": true,"maxCommentsPerFoundVideo": 10,"addTags": true}
| Field | Default | What it is |
|---|---|---|
source | none, box starts at popular | search, popular, ranking, categoryTop, uploader, videos, links, creators, creatorSearch, hotSearch, suggestions or comments. |
searchKeywords | none | Up to 50, for keyword search, creator search and suggestions. One page each, unless maxSearchPages is higher. |
maxSearchPages | 1 | Keyword search only: pages per keyword, about 20 videos a page, up to 50. A keyword stops early when a page brings nothing new. |
maxVideos | 100, box starts at 20 | Rows in the run, up to 5,000. Not used by comments. |
rankingZone | 0 | Whole site, or one of 19 zones. Anime series (番剧) lists only a handful. |
subZone | none | One of 127 sub-zones, such as 单机游戏 (single-player games) under Gaming. |
topBy | click | click, coin, stow, dm or scores. |
keyword | none | Sub-zone only. With a keyword Bilibili returns one list of up to 100. |
subZones, allSubZones | none, off | With a keyword: more sub-zones to look in, or all 127. |
publishedFrom, publishedTo | none | Beijing dates, a date and time, or 3 months style. Up to 90 days for a sub-zone, and a stop point for uploaders sorted newest first. |
uploaders | none | Up to 100 space links like https://space.bilibili.com/2929048, or bare UIDs. Also for creator profiles. |
uploaderSort | newest | newest, mostPlayed or mostFavourited. |
maxPerUploader | 30 | Per uploader. Maximum videos still caps the run. |
videos | none | Up to 1,000 links or IDs, 200 for comments. |
links | none | Any mix of video, uploader and zone links. Sub-zone pages are left out with a note. |
maxCommentsPerVideo | 100 | Up to 2,000. |
includeReplies | off | Replies come as rows of their own and count toward the per-video cap. |
addTags | on | Off makes runs faster and leaves tags empty. |
minDurationSec, maxDurationSec | none | Length filter, in seconds. Checked before any further lookup, so left-out videos cost nothing. |
includeComments, maxCommentsPerFoundVideo | off, 20 | Top comments under each video found. |
addCreatorRows | off | One creator row per uploader of the videos found. |
onlyNewSinceLastRun, stateName | off, default | Skip videos an earlier run with the same state name returned. |
includeDanmaku | off | Adds danmakuStats to each video, one extra lookup per video. |
Input that cannot work, such as a date that is not a date or a window over 90 days, stops the run before a single request, with one plain sentence.
📤 What you get back
A real video row from a recent run, with the description cut short:
{"source": "popular","rank": 1,"bvid": "BV1DJYe6AEgP","aid": "117263076164911","url": "https://www.bilibili.com/video/BV1DJYe6AEgP","title": "【英雄联盟公益纪录片】逆风局的623326个英雄时刻","description": "过去八年,《英雄联盟》公益累计帮助人数超62w+。...","coverUrl": "https://i0.hdslb.com/bfs/archive/88cc41d1e1cfa2477ff1ce19b2786b31404ea938.jpg","duration": "9:16","durationSeconds": 556,"publishedAt": "2026-09-13T10:00:00.000Z","uploaderId": "178778949","uploaderName": "英雄联盟","uploaderUrl": "https://space.bilibili.com/178778949","views": 1108952,"likes": 22162,"coins": 1133,"favourites": 1828,"shares": 149,"danmaku": 36,"comments": 187,"tags": ["LOL", "英雄联盟", "英雄联盟15周年", "英雄联盟15周年盛典"],"category": "网络游戏","categoryId": 65,"listedUnder": null,"scrapedAt": "2026-09-14T05:42:12.129Z","engagementRate": 0.0227}
| Field | How to read it |
|---|---|
aid | A string, so big numbers survive a spreadsheet. |
publishedAt | UTC, whatever the Beijing date you filtered on. |
tags | Names, or null when the extra lookup did not come back. |
engagementRate | (likes + coins + favourites) / plays, to four places. null with no plays or a missing count. |
category, categoryId | The sub-zone. Bilibili's own label when it sends one, otherwise the name from the zone list, because brand new videos arrive with it empty. |
listedUnder | Uploader runs only: whose list this row came from, which matters on a co-created video. |
rank | Its place in whatever list produced it. |
danmakuStats | Counted from the danmaku Bilibili serves for the video, a few hundred to a few thousand of them, so read can be lower than total. peakMinute counts from 0. null when the file did not come back. |
authorLevel and the other commenter fields | null when Bilibili's answer did not carry them. |
🧾 Reading the output
| Row | How to spot it | Charged |
|---|---|---|
| A video | bvid is there and recordType is absent | yes, as a video |
| A comment | commentId is there | yes, as a comment |
| A creator, a creator found by keyword, a hot-search term, a suggestion | recordType is creator, creatorSearch, hotSearch or suggestion | yes, like one video |
| The sample row | _sample: true | no |
| The stop row | _diagnostic: true, code: "FILTER_KEEPS_ALMOST_NOTHING" | no |
The stop row appears when your length filter kept fewer than 2 of the first 100 videos, so the run stops rather than reading on for almost nothing.
The status message leads with the result, then the stop reason, what was not available or not read,
and what was left out and why. RUN_REPORT in the key-value store holds all of it as numbers.
| Note row (not charged) | What it means |
|---|---|
BAD_INPUT | A value in the input is one the run refuses, so nothing was read. The run still ends as succeeded. |
COST_LIMIT | The maximum cost you set for the run does not cover a single result. Raise it and run again. The run still ends as succeeded. |
NOT_SERVED | The site did not answer any search in this run. Run it again later. The run still ends as succeeded. |
💡 What people use it for
- Watching the popular list or a leaderboard each day, keyed on
bvid. - Following a keyword on a schedule with Only new videos, so each run brings only what is new.
- Measuring a sub-zone over a date window to see which topics actually get plays.
- Sizing up creators from their followers, total likes and verification.
From a keyword to its strongest creators and their audience, in two runs:
- Run Keyword search with Add a creator row for each uploader on, and sort the creator rows
on
followers. - Paste their
uploaderUrlinto Uploaders, run Uploaders' videos, and turn on Include comments on the videos found.
🚧 What it does not do
- Keyword search stops at 50 pages per keyword, sooner when a page brings nothing new.
- No newest-first comment order. Comments come in Bilibili's top order.
- No video or audio files, and no subtitles. Rows describe the videos; nothing is downloaded.
- Danmaku stats, not the full danmaku list. They come from the set Bilibili serves for the video, with a sample of the most repeated texts.
- No account-only data. Nothing private, nothing behind a login, no watch history.
- Comment lists are not always handed over in full. When Bilibili will not page through them, you get the top comments it does give for that video, and the status message says so.
- The popular list holds about 650 videos and a leaderboard 100. Asking for more does not produce more.
- A sub-zone window is capped at 90 days, and a longer range stops the run before it starts.
- It is not an official Bilibili tool. Dami's Studio is independent and is not affiliated with or endorsed by Bilibili, or by any other company named on this page.
🧭 Which video scraper do you need?
| If you want | Use |
|---|---|
| Bilibili videos, search, leaderboards, uploaders, creators and comments | This one |
| What China is searching for on Douyin right now | Douyin Hot Search Scraper |
| TikTok videos and profiles by handle, hashtag or keyword | TikTok Scraper |
| YouTube search results, or a channel's newest uploads | YouTube Scraper |
❓ Questions people ask
Do I need a Bilibili account?
No. No login and no cookie.
Can I search Bilibili for a word?
Yes. Keyword search returns about 20 videos a page, up to 50 pages per keyword. A keyword under Top videos in a sub-zone returns up to 100 per sub-zone, across as many sub-zones as you pick.
How do I get only new videos on a schedule?
Turn on Only new videos since the last run and give each schedule its own State name. Videos an earlier run returned are left out, free.
Why did I get fewer comments than I asked for?
Either the video has fewer, or Bilibili would not page through them and only the top ones came back. Either way you pay for what arrived.
Can I call it from code or connect it to an AI assistant?
The API tab has code for Python, JavaScript and the CLI.
MCP clients like Claude and ChatGPT use
https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/bilibili-scraper; coding assistants can load our skill
file. All
three bill your Apify account at the same price.
Is scraping Bilibili legal?
These are public video, list, profile and comment pages, read the way a signed-out visitor sees them. Comments and creator rows carry personal data, which GDPR and similar laws cover, so keep only what you need. Bilibili's terms govern reuse, so have a reason and read them. Apify's write-up on the legality of web scraping is a starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the run ID and the links, IDs or keywords you used.
The status message and RUN_REPORT usually name the problem between them.