Bilibili Scraper - Videos, Rankings, Uploaders & Comments avatar

Bilibili Scraper - Videos, Rankings, Uploaders & Comments

Pricing

from $0.92 / 1,000 videos

Go to Apify Store
Bilibili Scraper - Videos, Rankings, Uploaders & Comments

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

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

a day ago

Last modified

Security

Limited permissions

Share

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.

InputA choice of what to get, plus keywords, uploader links, video links or IDs where it needs them
OutputOne 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
Ceiling5,000 rows per run, 2,000 comments per video
Account neededNone, 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 getField
Both video IDs and the linkbvid, aid, url
Title, description and covertitle, description, coverUrl
Length, readable and in secondsduration, durationSeconds
When it was publishedpublishedAt
The uploaderuploaderId, uploaderName, uploaderUrl
Plays, likes, coins, favourites, shares, danmaku and commentsviews, likes, coins, favourites, shares, danmaku, comments
Likes, coins and favourites over playsengagementRate
Tags and sub-zonetags, category, categoryId
Where the row came from, and when it was readsource, rank, listedUnder, keyword (search rows), scrapedAt
Danmaku stats, when asked fordanmakuStats: read, total, perMinute, peakMinute, peakMinuteCount, uniqueSenders, sample
On comment rows: the video, the comment, its author, likes and repliesvideoBvid, videoAid, videoTitle, videoUrl, commentId, text, authorName, authorId, likes, replyCount, postedAt, isReply, replyTo
On comment rows: the commenter and the uploader's reactionauthorLevel, authorIsVip, authorVerified, authorAvatarUrl, likedByUploader, uploaderReplied
On creator rowsuploaderId, uploaderName, uploaderUrl, avatarUrl, bio, followers, following, videoCount, totalLikes, level, verified, verifiedText
On hot-search and suggestion rowskeyword, rank, shownAs, heat, suggestion, searchUrl

▶️ How to scrape Bilibili videos and comments

  1. Open Bilibili Scraper and click Try for free.
  2. Pick What to get.
  3. Fill in what that choice needs: keywords, 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.

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
}
FieldDefaultWhat it is
sourcenone, box starts at popularsearch, popular, ranking, categoryTop, uploader, videos, links, creators, creatorSearch, hotSearch, suggestions or comments.
searchKeywordsnoneUp to 50, for keyword search, creator search and suggestions. One page each, unless maxSearchPages is higher.
maxSearchPages1Keyword search only: pages per keyword, about 20 videos a page, up to 50. A keyword stops early when a page brings nothing new.
maxVideos100, box starts at 20Rows 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 127 sub-zones, such as 单机游戏 (single-player games) under Gaming.
topByclickclick, coin, stow, dm or scores.
keywordnoneSub-zone only. With a keyword Bilibili returns one list of up to 100.
subZones, allSubZonesnone, offWith a keyword: more sub-zones to look in, or all 127.
publishedFrom, publishedTononeBeijing 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.
uploadersnoneUp to 100 space links like https://space.bilibili.com/2929048, or bare UIDs. Also for creator profiles.
uploaderSortnewestnewest, mostPlayed or mostFavourited.
maxPerUploader30Per uploader. Maximum videos still caps the run.
videosnoneUp to 1,000 links or IDs, 200 for comments.
linksnoneAny mix of video, uploader and zone links. Sub-zone pages are left out with a note.
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.
minDurationSec, maxDurationSecnoneLength filter, in seconds. Checked before any further lookup, so left-out videos cost nothing.
includeComments, maxCommentsPerFoundVideooff, 20Top comments under each video found.
addCreatorRowsoffOne creator row per uploader of the videos found.
onlyNewSinceLastRun, stateNameoff, defaultSkip videos an earlier run with the same state name returned.
includeDanmakuoffAdds 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
}
FieldHow to read it
aidA string, so big numbers survive a spreadsheet.
publishedAtUTC, whatever the Beijing date you filtered on.
tagsNames, 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, 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.
danmakuStatsCounted 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 fieldsnull when Bilibili's answer did not carry them.

🧾 Reading the output

RowHow to spot itCharged
A videobvid is there and recordType is absentyes, as a video
A commentcommentId is thereyes, as a comment
A creator, a creator found by keyword, a hot-search term, a suggestionrecordType is creator, creatorSearch, hotSearch or suggestionyes, like one video
The sample row_sample: trueno
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_INPUTA value in the input is one the run refuses, so nothing was read. The run still ends as succeeded.
COST_LIMITThe 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_SERVEDThe 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:

  1. Run Keyword search with Add a creator row for each uploader on, and sort the creator rows on followers.
  2. Paste their uploaderUrl into 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 wantUse
Bilibili videos, search, leaderboards, uploaders, creators and commentsThis one
What China is searching for on Douyin right nowDouyin Hot Search Scraper
TikTok videos and profiles by handle, hashtag or keywordTikTok Scraper
YouTube search results, or a channel's newest uploadsYouTube 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.

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.