Bilibili Scraper - Videos, Rankings, Uploaders & Comments
Pricing
from $0.92 / 1,000 videos
Bilibili Scraper - Videos, Rankings, Uploaders & Comments
Bilibili videos with plays, likes, coins, favourites, shares, danmaku and comment counts, tags and sub-zone, from the popular list, a leaderboard, a sub-zone's top videos by date, uploaders or links. Comments on any video too. No account. $0.95 per 1,000 videos or comments.
Pricing
from $0.92 / 1,000 videos
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape Bilibili videos, leaderboards, uploaders 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 and the uploader. Six ways in: the popular list, a leaderboard, a sub-zone's top videos over a date window, an uploader's videos, straight links or IDs, and comments on any video.
There is no whole-site keyword search. The keyword filter works inside one sub-zone, and that is as close as this gets to searching Bilibili. Comments have a catch too: when Bilibili will not page through a video's comments, you get the top ones it shows, not all of them.
| Input | A source, plus uploader links, video links or IDs where the source needs them |
| Output | One row per video, with the seven counts, tags, sub-zone, length, publish time and uploader; or one row per comment |
| Ceiling | 5,000 videos per run, 2,000 comments per video |
| Account needed | None, and no login |
| Price | $0.95 per 1,000 rows, video or comment, flat on every plan. 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:
- Popular right now (热门) walks the popular list, which holds about 650 videos.
- Leaderboard (排行榜) takes the top 100 of the last few days, whole site or one of 19 zones.
- Top videos in a sub-zone takes one of 127 sub-zones over a publish window of up to 90 days, ordered by plays, coins, favourites, danmaku or comments, with an optional keyword.
- Uploaders' videos takes up to 100 space links or UIDs, newest, most played or most favourited.
- Videos from links or IDs takes up to 1,000 links, BV ids, av numbers or
b23.tvshort links. - Comments on videos takes up to 200 videos and returns comment rows, optionally with replies.
Dates are Beijing dates, since that is how Bilibili files them. The sub-zone window defaults to the last 7 days.
Tags cost one extra lookup per video. On a large run Bilibili leaves some of those unanswered, those
rows arrive with tags empty, and the status message counts them. Turn Add tags off for a
faster run.
📋 What data you get from each Bilibili video 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 |
| Tags and sub-zone | tags, category, categoryId |
| Where the row came from, and when it was read | source, rank, listedUnder, scrapedAt |
| 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 |
▶️ 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: 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, so you can see the shape first.
💰 How much does it cost to scrape Bilibili?
$0.95 per 1,000 rows, whether they are videos or comments. Flat on every Apify plan, no volume tiers. On the free plan, the $5 Apify gives you each month covers about 5,200 rows.
You pay per row delivered. A video that is gone or hidden, an uploader that does not exist, a page that could not be read, a repeat, a row outside your dates or zone, and the sample row are all free. Tags ride along with the video row and add nothing.
📥 What you give it
{"source": "categoryTop","subZone": "17","topBy": "click","publishedFrom": "2026-09-01","publishedTo": "2026-09-13","maxVideos": 200,"addTags": true}
| Field | Default | What it is |
|---|---|---|
source | none, box starts at popular | popular, ranking, categoryTop, uploader, videos or comments. |
maxVideos | 100, box starts at 20 | Video 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. |
publishedFrom, publishedTo | none | Beijing dates. Up to a 90-day range 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. |
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. |
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. |
Anything that cannot work stops the run before a single request goes out, with one plain sentence: a sub-zone with no list, a date that is not a date, a window over 90 days, or more videos or uploaders than the caps allow.
📤 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"}
| 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. |
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. |
🧾 Reading the output
| Row | How to spot it | Charged |
|---|---|---|
| A video or a comment | _sample is absent | yes |
| The sample row | _sample: true | no |
There are no diagnostic rows. The status message leads with the result, then the stop reason, videos
that are not available and why, uploaders with no public videos, anything that could not be read,
comment lists that fell back to the short version, repeats and missing tags. RUN_REPORT in the
key-value store holds all of it as numbers, plus one entry per page or list read.
Two dataset views are set up, overview for videos and comments for comment rows.
💡 What people use it for
- Watching what is on the popular list or a leaderboard each day, keyed on
bvid. - Measuring a sub-zone over a date window to see which topics actually get plays.
- Following a set of uploaders and picking up every new video with its counts.
- Comparing coins and favourites against plays, since on Bilibili those say more than a like does.
From a sub-zone to its strongest uploaders and their audience, in three runs:
- Run Top videos in a sub-zone over the last 30 days and sort the rows on
coins. - Paste the
uploaderUrlof the names that keep coming up into Uploaders, and run Uploaders' videos newest first. - Paste the
urlof their newest videos into Videos and run Comments on videos to read how the audience took them.
🚧 What it does not do
- No whole-site keyword search. The keyword only narrows one sub-zone.
- No danmaku text. You get the danmaku count, not the scrolling comments themselves.
- 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.
- Tags can come back empty on a large run, counted in the status. Turn Add tags off if you do not need them.
- 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.
- Anime series (番剧) has almost nothing on its leaderboard.
- Dates are Beijing dates, whatever your own clock says.
🧭 Which video scraper do you need?
| If you want | Use |
|---|---|
| Bilibili videos, leaderboards, uploaders 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?
Only inside a sub-zone, with Keyword set under Top videos in a sub-zone. There is no whole-site search here.
Why are some tags empty?
The tag lookup is a separate request per video and Bilibili does not always answer it on a big run. The status message counts how many.
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.
What is a coin on Bilibili?
Bilibili's own currency, which viewers spend on videos they rate. coins is usually a better quality
signal than likes.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has ready-made code for
Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect
https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/bilibili-scraper. Either way the run
happens on your Apify account at the same price.
Is scraping Bilibili legal?
These are public video, list and comment pages. Comments carry personal data, which GDPR and similar laws cover, and Bilibili's terms govern reuse, so have a reason and read the terms. 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 or IDs you used. The status
message and RUN_REPORT usually name the problem between them.