Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Bilibili Scraper icon

Bilibili Scraper

Bilibili video data as rows: plays, likes, coins, favourites, danmaku, tags. From the popular list, leaderboards, sub-zones, uploaders or links. Comments too.

94 runs on Apify $0.00095 per video ($0.95 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust source, maxVideos, rankingZone (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.00095 per video = $0.95 per 1,000

You are charged forWhenPrice
Video returnedOne Bilibili video returned in the dataset.$0.00095
Comment returnedOne Bilibili comment returned in the dataset.$0.00095

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-14, and they are what you are actually charged.

Inputs

FieldWhat it doesType
sourceEach run does one of these. A run with nothing picked returns one sample row and charges nothing.string
maxVideosThe most video rows one run returns, for every choice except Comments. The popular list holds about 650 videos and a leaderboard 100. Each video returned is one charge.integer
rankingZoneFor Leaderboard. Bilibili ranks the last few days' videos and shows the top 100, for the whole site or one zone. Anime series (番剧) lists only a handful.string
subZoneFor Top videos in a sub-zone. Every Bilibili video is filed under one sub-zone, such as 单机游戏 (single-player games) under Gaming.string
topByFor Top videos in a sub-zone.string
keywordOptional, for Top videos in a sub-zone: only videos Bilibili matches to this word. With a keyword Bilibili returns one list of up to 100.string
publishedFromFor Top videos in a sub-zone, where the range can be up to 90 days and defaults to the last 7, and for uploaders sorted newest first. Beijing dates, written like 2026-09-01.string
publishedToThe last publish day, Beijing time. Leave it empty to go up to today.string
uploadersFor Uploaders' videos. A space link such as https://space.bilibili.com/2929048, or the numeric UID.array
uploaderSortFor Uploaders' videos.string
maxPerUploaderFor Uploaders' videos. Maximum videos still caps the whole run.integer
videosFor Videos from links or IDs, and for Comments (up to 200 videos there). Links like https://www.bilibili.com/video/BV1WQYd6DEgs, BV IDs, av numbers, or b23.tv short links.array
maxCommentsPerVideoFor Comments. Each comment returned is one charge.integer
includeRepliesFor Comments: also return the replies under each comment, as rows of their own. They count toward Maximum comments per video.boolean
addTagsTags take one extra lookup per video, and on a big run Bilibili can leave some of those unanswered; the status says how many. Turn this off for faster runs, and each video's tags come back empty.boolean

What you get

A structured dataset — each result includes fields like:

coverUrlranktitleuploaderNameviewslikescoinsfavouritessharesdanmakucommentsdurationpublishedAtcategorytagsurlvideoTitletextauthorNamereplyCountpostedAtisReplyvideoUrl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

Bilibili Scraper: videos, leaderboards, uploaders and comments, without an account

Pull Bilibili videos as rows with all seven counts on them: 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.

InputA source, plus uploader links, video links or IDs where the source needs them
OutputOne row per video, or one row per comment
Ceiling5,000 videos per run, 2,000 comments per video
Account neededNone, and no login
Price$0.95 per 1,000 rows, video or comment, flat on every plan

🎬 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 128 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.tv short 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 you give it

{
  "source": "categoryTop",
  "subZone": "17",
  "topBy": "click",
  "publishedFrom": "2026-09-01",
  "publishedTo": "2026-09-13",
  "maxVideos": 200,
  "addTags": true
}
FieldDefaultWhat it is
sourcenone, box starts at popularpopular, ranking, categoryTop, uploader, videos or comments.
maxVideos100, box starts at 20Video rows in the run, up to 5,000. Not used by comments.
rankingZone0Whole site, or one of 19 zones. Anime series (番剧) lists only a handful.
subZonenoneOne of Bilibili's 128 sub-zones, such as 单机游戏 under Gaming.
topByclickclick, coin, stow, dm or scores.
keywordnoneSub-zone only. With a keyword Bilibili returns one list of up to 100.
publishedFrom, publishedTononeBeijing dates. Up to a 90-day range for a sub-zone, and a stop point for uploaders sorted newest first.
uploadersnoneUp to 100 space links like https://space.bilibili.com/2929048, or bare UIDs.
uploaderSortnewestnewest, mostPlayed or mostFavourited.
maxPerUploader30Per uploader. Maximum videos still caps the run.
videosnoneUp to 1,000 links or IDs, 200 for comments.
maxCommentsPerVideo100Up to 2,000.
includeRepliesoffReplies come as rows of their own and count toward the per-video cap.
addTagsonOff 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"
}
FieldWhat it is
bvid, aidBoth IDs, and aid is a string so big numbers survive a spreadsheet.
publishedAtUTC, whatever the Beijing date you filtered on.
duration, durationSeconds9:16 and 556, so you can read it or sort on it.
tagsNames, or null when the extra lookup did not come back.
category, categoryIdThe 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.
listedUnderUploader runs only: whose list this row came from, which matters on a co-created video.
rankIts place in whatever list produced it.

Comment rows carry videoBvid, videoAid, videoTitle, videoUrl, commentId, text, authorName, authorId, likes, replyCount, postedAt, isReply, replyTo and scrapedAt.

🧾 Reading the output

RowHow to spot itCharged
A video or a comment_sample is absentyes
The sample row_sample: trueno

Run it with nothing chosen and you get the one sample row, a real video, so you can see the shape first.

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.

▶️ How to run it

1. Open Bilibili Scraper and click Try for free. 2. Pick What to get. 3. Fill in what that choice needs: a zone, a sub-zone and dates, uploader links, or video links. 4. Set Maximum videos, or Maximum comments per video for comments, then click Start. 5. Download the dataset as JSON, CSV or Excel, or read it from the Apify API.

💰 How much does it cost?

$0.95 per 1,000 rows, whether they are videos or comments. Flat on every Apify plan, no volume tiers.

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 people use it for

  • Watching what is on the popular list or a leaderboard each day, on a schedule, 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.
  • Reading the comments under a video to see how an audience reacted, replies included.
  • Comparing coins and favourites against plays, since on Bilibili those say more than a like does.

🚧 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 wantUse
Bilibili videos, leaderboards, uploaders and commentsThis one
Douyin's hot search boardDouyin Hot Search Scraper
TikTok videos by user, hashtag or searchTikTok Scraper
YouTube videos and channelsYouTube 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? Bilibili's own currency, which viewers spend on videos they rate. coins is usually a better quality signal than likes.

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 scraping and the law 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.