Bilibili Scraper: Videos, Creators, Comments & Danmaku avatar

Bilibili Scraper: Videos, Creators, Comments & Danmaku

Pricing

from $0.02 / 1,000 videos

Go to Apify Store
Bilibili Scraper: Videos, Creators, Comments & Danmaku

Bilibili Scraper: Videos, Creators, Comments & Danmaku

Scrape Bilibili (哔哩哔哩): videos by keyword, link, creator, collection or trending list, with exact counts, creator profiles, comments, danmaku and subtitles. Export to JSON, CSV or Excel.

Pricing

from $0.02 / 1,000 videos

Rating

0.0

(0)

Developer

Nice Dev

Nice Dev

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 hours ago

Last modified

Share

📺 What is Bilibili Videos Scraper?

Bilibili Videos Scraper extracts videos from Bilibili (哔哩哔哩): title, views, likes, coins, favorites, shares, danmaku and comment counts, tags, publication date and creator, from a keyword search, video links, creators, collections, the Top 100 rankings or the Popular lists. On request it adds comments and replies, danmaku (弹幕) with a summary, subtitles, chapters, background music, creator profiles, contacts from creator bios, creator posts (动态) and public favorites. It works as a Bilibili API alternative: run it on a schedule, call it from your code, or plug it into Make, Zapier or n8n.

Type a keyword (原神, minecraft), paste video or creator links, or pick a ranking, click Start, and download the results in JSON, CSV or Excel. No Bilibili account needed for videos, creators, rankings, replies and danmaku, and it is fast: about 100 videos of a search in 15 seconds.

📋 What data can you extract from Bilibili?

One row per result, 125 fields. Each row says what it is (video, comment, danmaku, creator profile, post or hot search keyword):

CategoryWhat you get
🎬 Videostitle, link, BV and av ids, cover, length, publication date, tags, category (zone) and main zone, paid or co-created — 《原神》过场动画-「遗赠」
📊 Video statsviews (播放), likes, coins, favorites, shares, danmaku and comment counts, engagement rate, current and best all-site rank, badges — 719916 views
🧾 Full video pageparts (分P) with their resolution, original or repost, rights, b23.tv short link, first frame, the text posted with the upload, the notice under the video, co-creators, collection (合集)
👤 Creators (UP主)UID, name, avatar and page on the video rows; profile rows with followers, following, uploads, posts, total likes, level, verification, VIP, live room, bio, birthday, school
📇 Contacts from biose-mails, phone numbers, links and WeChat, Weibo, QQ, Douyin, RedNote, YouTube… handles written in a creator's bio
💬 Comments and repliestext, likes, replies, date, author level and VIP, pinned, liked or answered by the creator, pictures, emotes, IP region (with your cookie)
🌠 Danmaku (弹幕)text, second of the video, send time, color, mode, size, pool, weight, sender hash; a summary per video: count, unique senders, busiest minute, per-minute curve, most said terms
📝 Subtitles, chapters, musicCC and AI subtitles with timed lines and full text (with your cookie), chapters, background music title, artist and link
📰 Creator posts (动态)text, image, date, likes, comments, shares, favorites, pinned
🏆 Rankings and hot searchesposition, list name, ranking score, Popular badge, hot search keyword with its heat score and badge — 热, 新
🕒 Run infohow the row was found (search, link, creator, collection, list, favorites, related), search keyword, scrape date

Every field, with an example, is listed in the Output section below.

Fields marked detail in the Output tab (coins, shares, parts, resolution, rights, short link, honors…) are filled when Full video details is on, and always for the videos you paste in Video URLs or IDs.

✅ Why use Bilibili Videos Scraper?

  • 🚀 Fast: about 100 videos of a search in 15 seconds.
  • 🧩 Everything in one Actor: videos, creators, comments and replies, danmaku and their summary, subtitles, chapters, music, creator posts, public favorites, collections, rankings and hot searches.
  • 🏆 Every Top 100: the all-site ranking (all, newcomers or original videos) and the 14 categories of the ranking page, Popular (热门), Weekly must-watch (每周必看, any issue) and All-time must-watch (入站必刷).
  • 📅 Past the 1,000 results of a search: when Max videos is above 1,000 (or 0), with or without dates, the Actor splits the search into date windows to go past the site's cap. The order is then the windows' (the most recent window first).
  • 🔔 Monitoring built in: tick Only new videos, schedule the Actor, and each run returns (and charges) only what it has never delivered before.
  • 🔒 Privacy option: Anonymize commenters and danmaku senders replaces commenters by a stable hash.
  • 🔌 API, scheduling, monitoring, integrations (Make, Zapier, n8n, Google Sheets…) and JSON/CSV/Excel export via the Apify platform.

🚀 How to scrape Bilibili

  1. Create a free Apify account.
  2. Open Bilibili Videos Scraper and type a Search keyword (e.g. 原神).
  3. Or paste Video URLs or IDs, Creator URLs or UIDs or Collection / series URLs, or pick Trending lists.
  4. Set Max videos (100 by default, 0 = no limit), tick the extra data you want (comments, danmaku, profiles…), then click Start.
  5. Download the dataset in JSON, CSV, Excel or via API.

💰 How much does it cost to scrape Bilibili?

This Actor uses pay per event pricing: you pay for the rows saved, each kind of row at its own price, plus a small fee per run start. The prices are on the Pricing tab of this page. Every extra (comments, danmaku, profiles, posts, details, subtitles, chapters and music, danmaku summary, contacts) is off by default: nothing is charged for it unless you tick it.

What you pay forEvent
Video row: a search result, a pasted video, a creator's upload, a video of a collection, a list or a ranking, a favorite, a related videovideo
Creator profile row: a pasted creator, a creator found by a search, or the author of a video with Creator profilesprofile
Comment or reply, with Comments / Comment repliescomment
Danmaku row, with Danmakudanmaku
Creator post, with Creator postspost
Hot search keyword, with Hot searches in Trending listskeyword
The video's own page read for a video found by a search or a list, with Full video details (included for the videos you paste)video-details
Chapters and music added to a video, with Chapters and background music (only when the video has some)chapters-music
Subtitles added to a video, with Subtitles (only when the video has some)subtitles
Danmaku summary added to a video, with Danmaku summary (only when the video has at least one danmaku)danmaku-summary
Contacts added to a profile, with Contacts from creator bios (only when at least one is found)bio-contact
A row dropped by one of the Actor's own filters (dates, views, likes, followers, excluded words): charged for each video a filter drops, not for the ones it keepsfilter-check
Run startapify-actor-start

A row you keep pays its own price; a row a filter drops pays only the check, which costs less: filtering never costs more than taking everything. Platform usage (compute, proxy) is included in the price.

⚙️ Input

A search with the full video page:

{
"query": "原神",
"maxItems": 100,
"includeVideoDetails": true
}

Several searches, newest first, only last week's videos with 1,000 views or more, only the ones not delivered before:

{
"searchQueries": ["原神", "minecraft"],
"sortBy": "pubdate",
"maxItemsPerQuery": 50,
"postedAfter": "7 days",
"minViews": 1000,
"onlyNew": true,
"stateKey": "genshin-daily"
}

Videos with their comments, replies and danmaku, commenters anonymized:

{
"videoUrls": ["https://www.bilibili.com/video/BV1pTap6UE1w", "BV18fhb65EGs"],
"includeComments": true,
"includeReplies": true,
"includeDanmaku": true,
"maxDanmakuPerVideo": 500,
"includeDanmakuSummary": true,
"anonymizeUsers": true
}

Creators with their uploads, posts and bio contacts:

{
"profileUrls": ["https://space.bilibili.com/546195", "401742377"],
"maxVideosPerProfile": 50,
"includeCreatorPosts": true,
"maxPostsPerProfile": 20,
"includeBioContacts": true
}

The Gaming and Knowledge Top 100 and the hot searches:

{
"trending": ["ranking", "hotSearch"],
"rankingCategories": ["1008", "1010"],
"maxItems": 300
}
FieldNotes
query, searchQueriesKeywords, as typed in the site's search box (原神, minecraft). searchQueries adds more keywords, one search each; a Bilibili search page URL is accepted too (its keyword, sort, duration and category are used). Up to 1,000 results per search on the site.
searchTypevideo (default) or creator: one profile row per creator found (UP主), with followers, video count, level and verification.
creatorSortOrder of a creator search: default, fans or level.
sortByOrder of a video search: totalrank (default), click (most viewed), pubdate (newest), dm (most danmaku), stow (most favorited), scores (most commented).
duration, categoryThe site's own search filters: video length, and one zone.
videoUrlsVideos to read directly: https://www.bilibili.com/video/BV1pTap6UE1w, bare ids (BV1pTap6UE1w, av170001), b23.tv short links, mobile links. Always with the full video page.
profileUrls, maxVideosPerProfileCreators: https://space.bilibili.com/546195 or a bare UID (546195). One profile row each; Max videos per creator also reads their uploads, newest first (0 = profile row only).
collectionUrlsA creator's collections (合集) and series (系列): https://space.bilibili.com/546195/lists/1903592?type=season. Every video of each, in the creator's order.
trendingBilibili's own lists: popular (Popular, 热门, about 600 videos), ranking (Top 100, 排行榜), weekly (Weekly must-watch, 每周必看), precious (All-time must-watch, 入站必刷), hotSearch (hot searches, 热搜, one keyword row each).
rankingCategoriesThe categories of the ranking page, one Top 100 each: 1005 Animation, 1008 Gaming, 1007 Kichiku / remix, 1003 Music, 1004 Dance, 1001 Film & TV, 1002 Entertainment, 1010 Knowledge, 1012 Tech, 1020 Food, 1013 Cars, 1014 Fashion, 1018 Sports, 1024 Animals. Empty = the all-site Top 100.
rankingTypeWhich all-site Top 100: all, rookie (newcomers) or origin (original videos). A category's Top 100 has no types.
weeklyIssuesIssues of Weekly must-watch to read: 290 or 280-290. Empty = the latest issue. Needs Weekly must-watch in Trending lists.
maxItemsVideos (and creators of a creator search) for the whole run, 0 = no limit. Profile rows of pasted creators and of video authors, posts, comments, danmaku and keyword rows are not counted: they have their own caps. Related videos are counted.
maxItemsPerQueryCap for EACH search, creator or list, so that the first one cannot use up the whole budget. 0 = no per-search cap.
cookieOptional: your SESSDATA cookie (or the whole cookie header) from a logged-in bilibili.com tab, for the full comment list, the IP region of comments and subtitles. Stored encrypted, never written to the results or the log.
includeVideoDetailsRead each video's page: coins, shares, exact length, parts, resolution, badges, original or repost, rights, tags, subtitle languages.
includeChaptersAndMusicChapters (start, end, title) and the background music Bilibili recognized (title, artist, link), when the video has them.
includeAuthorProfile, includeBioContactsOne profile row per creator met; contacts from the bio and the live-room notice added to profile rows.
includeCreatorPosts, maxPostsPerProfilePosts (动态) of each pasted creator, newest first, with their date and counts: 1 extra page per post (2 for an article, 专栏). 0 = all the feed serves, up to 10,000 posts.
includeFavorites, maxFavoritesPerProfileVideos of each pasted creator's public favorite folders (收藏夹), as video rows naming the folder. 0 = all the site serves.
commentSort, includeComments, maxCommentsPerVideoTop comments of each video, in the order hot (default) or newest. Without a cookie, about 6 to 8 a video; with your cookie, the whole list up to Max comments per video (0 = all).
includeReplies, maxRepliesPerCommentReplies under each top comment, as comment rows, 20 a page in the site's order. No cookie needed. 0 = all.
includeDanmaku, maxDanmakuPerVideoDanmaku rows of each video, the first N by second of the video. 0 = all the site's file holds. No cookie needed.
includeDanmakuSummaryA summary of ALL the danmaku of the file, whatever Max danmaku per video says: count, unique senders, busiest minute, per-minute curve (the first 1,440 minutes), the 20 most said terms, oldest and newest send time.
includeSubtitlesCC and AI subtitles: languages, timed lines and full text. Needs your cookie (skipped with a message without it).
includeRelatedVideosThe videos Bilibili recommends next to each video you get, as video rows naming that video. They take places of Max videos as the run goes: when Max videos is smaller than the search, the recommended videos of the first videos can take places before the next pages of the search are read. To get the whole search first, set Max videos above the size of the search or leave this option unticked. They are charged as videos.
postedAfter, postedBeforePublication date range: 2026-09-01, or a period before now (7 days, 2 weeks, 1 month, 24 hours). Applies to videos and creator posts.
excludeKeywordsDrop the videos whose title, the creators whose name and the posts whose text contain one of these words (case and accents ignored).
minViews, minLikesDrop the videos with fewer views or likes. 0 = no minimum. The videos of a collection, a series or a favorites folder have no likes on their card: without includeVideoDetails, minLikes lets them through; with it, they are judged on their page.
minFollowers, maxFollowersCreator rows: keep the creators within this follower range. 0 = no bound.
anonymizeUsersCommenters become a stable hash of their UID; UID, avatar, page and the comment pictures whose address carries the UID are left out. Danmaku rows lose the sender's hash. Creators are kept.
onlyNew, stateKey, resetStateMonitoring: only the videos never delivered under this memory key (genshin-daily); resetState forgets the memory.
AdvancedproxyConfiguration (Apify proxy by default, included in the price; the residential proxy is not available), maxConcurrency, maxRequestsPerMinute, minRequestIntervalMs, maxRequestRetries, debugLog.

📦 Output

A video read with Chapters and background music and Danmaku summary (a real row, shortened: the empty fields, 3 of the 4 parts, 17 of the 20 terms and the end of the description are left out):

{
"recordType": "video",
"id": "BV1pTap6UE1w",
"url": "https://www.bilibili.com/video/BV1pTap6UE1w",
"bvid": "BV1pTap6UE1w",
"aid": 117353656356865,
"cid": 42306046424,
"title": "《原神》过场动画-「遗赠」",
"description": "唯有直面死亡才能理解其中的感受,死神也不例外。",
"coverUrl": "https://i1.hdslb.com/bfs/archive/2063b8933f7ab4ad868ceda83d509af4bb92f996.jpg",
"durationSec": 450,
"durationText": "7:30",
"publishedAt": "2026-10-10T04:00:00.000Z",
"categoryId": 172,
"categoryName": "手机游戏",
"tags": ["死之执政", "圣土化", "过场动画", "米哈游", "miHoYo", "原神"],
"viewCount": 719916,
"danmakuCount": 1355,
"commentCount": 7299,
"likeCount": 85446,
"coinCount": 16633,
"favoriteCount": 11092,
"shareCount": 2513,
"engagementRate": 0.1442,
"highestRank": 39,
"honors": ["全站排行榜最高第39名", "热门收录"],
"isOriginal": true,
"isPaid": false,
"isCollab": false,
"partCount": 4,
"parts": [{ "cid": 42306046424, "page": 1, "title": "《原神》过场动画-「遗赠」", "durationSec": 108, "width": 2560, "height": 1440 }],
"width": 2560,
"height": 1440,
"danmakuSummary": {
"count": 600,
"uniqueSenders": 454,
"peakMinute": 0,
"perMinute": [371, 229],
"topWords": [
{ "word": "异象", "count": 29 },
{ "word": "娜瓦", "count": 28 },
{ "word": "若娜", "count": 26 }
],
"firstSentAt": "2026-10-10T04:00:44.000Z",
"lastSentAt": "2026-10-16T11:08:36.000Z"
},
"parentCategoryId": 4,
"parentCategoryName": "游戏",
"categoryV2Id": 2064,
"shortUrl": "https://b23.tv/BV1pTap6UE1w",
"firstFrameUrl": "https://i0.hdslb.com/bfs/storyff/_0000094vdfj8gsar424alq2xh7r7e8b_firsti.jpg",
"dynamicText": "#原神# #过场动画# #遗赠#\n《原神》过场动画-「遗赠」",
"rights": {
"noReprint": true,
"download": true,
"interactive": false,
"panorama360": false,
"paid": false,
"chargeOnly": false,
"isStory": false
},
"authorId": 401742377,
"authorName": "原神",
"authorAvatarUrl": "https://i2.hdslb.com/bfs/face/e63bacc8b9e68f59f401cc41728a99262ba661a3.jpg",
"authorUrl": "https://space.bilibili.com/401742377",
"source": "video",
"scrapedAt": "2026-10-16T13:49:20.978Z"
}

You can download the dataset in various formats such as JSON, HTML, CSV or Excel. Filter on recordType to split videos, comments, danmaku, profiles, posts and hot search keywords.

All 125 fields

Every row has all the columns; a column that does not apply to its kind of row is null (or an empty list).

FieldsWhat you get
recordType, id, urlEvery row: video, comment, danmaku, profile, post or keyword; the site's id of the row (BV id, comment id, danmaku id, UID, post id or the keyword); its public page
bvid, aid, cidVideo: BV1pTap6UE1w, 117353656356865, id of the first part (detail; danmaku rows: the part they belong to)
title, description, coverUrltitle, description (简介), cover image (post rows: first image)
durationSec, durationText, publishedAt450, 7:30, 2026-10-10T04:00:00.000Z (what the date filters read; comments and posts: their own date)
categoryId, categoryName, tagszone 172 手机游戏, tags
viewCount, danmakuCount, commentCount, likeCount, coinCount, favoriteCount, shareCountStats: views, danmaku, comments, likes, coins and shares (detail), favorites; comment and post rows: their own likes, and the post's comments, coins, favorites, shares
engagementRate(likes + favorites + comments) ÷ views, the same whichever way the video was found: 0.1442
currentRank, highestRank, honorsall-site rank now and best ever, badges such as 热门收录 (detail)
isOriginal, isPaid, isCollaboriginal upload or repost (detail), paid or charge-only, co-created
partCount, parts, width, heightFull video page: parts (分P) with cid, title, length and resolution; 2560 × 1440
subtitleLanguages, subtitles, transcriptsubtitle tracks listed on the page (detail); subtitles with timed lines and the full text of the first track (your cookie)
danmakuSummaryDanmaku summary: count, unique senders, busiest minute, danmaku per minute, the most said terms, first and last send time
parentCategoryId, parentCategoryName, categoryV2Id, categoryV2Namemain zone (4 游戏), category of the site's new zone system (detail)
recommendReason, publishLocationPopular / Weekly must-watch badge (百万播放), region the video was published from when Bilibili shows it
shortUrl, firstFrameUrl, dynamicText, creatorNotice, collaborators, rightsb23.tv link, first frame image, text posted with the upload, notice under the video, co-creators, video flags (detail)
seasonId, seasonTitlecollection (合集) the video belongs to
chapters, musicId, musicTitle, musicArtist, musicUrlChapters and music: chapters (start, end, title), background music
favoriteFolder, relatedTopublic favorite folder the video was found in, BV id of the video it was recommended next to
authorId, authorName, authorAvatarUrl, authorUrl, authorLevel, authorVipCreator or commenter: UID, name, avatar, page; level 0-6 and VIP of a commenter
commentId, parentCommentId, rootCommentId, text, replyCount, ipLocationComments: comment id, the comment replied to and the top of the thread (replies), text (also danmaku and post text), replies, IP region (your cookie)
isPinned, likedByAuthor, repliedByAuthor, pictures, commentOrderpinned, liked or answered by the creator, attached pictures, order it was read in (hot, newest, replies)
progressSec, sentAt, mode, fontSize, color, senderHash, weight, poolDanmaku: second of the video, send time, mode (scrolling, bottom, top…), size, #ffffff, the site's sender hash, display weight, pool
emotesemotes (表情) of a comment: code and image
uid, name, avatarUrl, bio, gender, levelCreator profile: UID, name, avatar, signature, gender as shown, level
followerCount, followingCount, videoCount, postCount, collectionCount, articleCount, totalLikesfollowers, following, uploads, posts, collections, articles (专栏), likes received
verified, verifyType, verifyTitle, vipType, isSeniorMemberverification (personal or organization) and its text, VIP, senior member (硬核会员)
liveRoomUrl, isLive, liveTitle, liveCoverUrllive room link, live now, title and cover
verifyDescription, bannerUrllonger verification text, profile banner
contactPhones, profileTags, contactEmails, contactUrls, socialHandlesContacts from bios: phones, profile tags, e-mails, links, handles by network (WeChat, Weibo, QQ, Douyin, RedNote, YouTube, X, Instagram, TikTok)
school, profession, birthdayas shown on the profile
keyword, heatScore, labelHot search: the keyword, its heat score, its badge (热, 独家, 新, 梗)
source, searchQuery, listName, rank, pointsRun info: how the row was found (search, video, creator, collection, favorites, related…), the keyword, the list or collection, position (1 = first), Top 100 score when shown
scrapedAtwhen the row was read, ISO 8601 UTC

💡 Tips

How to get more results

A search gives at most 1,000 results on Bilibili. Set Max videos above 1,000 (or 0) and the Actor splits the search into date windows to go past that cap, with or without postedAfter / postedBefore; the results then come window by window, the most recent window first, instead of in the site's order. A creator's uploads (maxVideosPerProfile) are the full list, not a name search. Set maxItems to 0 to remove the run's cap.

How to reduce costs

The price is per row, so the levers are maxItems, maxItemsPerQuery, the caps per video (maxCommentsPerVideo, maxDanmakuPerVideo, maxRepliesPerComment), the extras you tick, the filters (a row a filter drops costs only the check) and onlyNew for recurring runs (you never pay twice for the same video). Danmaku summary gives the shape of all the danmaku of a video without paying a row per danmaku.

Several searches in one run

Fill searchQueries (max 100 searches per run, on top of Search keyword). A video found by several searches is saved — and charged — once. Set maxItemsPerQuery to give every search, creator and list its own cap: without it the first ones can use up the whole maxItems budget.

Without a cookie, Bilibili shows a visitor about 3 top comments per sort order: the Actor merges the hot and newest lists, the pinned comment first, so expect about 6 to 8 top comments a video, plus their replies (Comment replies, no cookie needed). To get more, paste your SESSDATA cookie in Bilibili cookie (stored encrypted, never written to the results or the log): with your cookie the Actor reads the comment list in the order you chose, the IP region of each comment and the subtitles.

Monitoring: only the new videos

Tick Only new videos (onlyNew) and schedule the Actor. The first run returns everything; each later run skips the videos already delivered: they are not saved and not charged. The memory lives in a named key-value store of your account (bilibili-videos-scraper-seen, up to 150,000 videos per key) and is only updated with videos that really reached the dataset, so a failed run never hides anything. Give each schedule its own stateKey (two schedules sharing a key would hide each other's videos), and tick resetState once to start over. Sort the searches by newest (pubdate): a search sorted that way, like a creator's uploads, stops once it meets a long run of videos you already have. Only videos, creator rows and posts are remembered; comments, danmaku, hot search keywords and the profiles of video authors are not (a run that reads them again returns them again).

Filter by publication date

postedAfter and postedBefore take a date (2026-09-01, the whole day is included) or a period before now (7 days, 2 weeks, 1 month; via the API also 24 hours or a full ISO date-time). A search sends the range to Bilibili; lists, creators and posts are filtered by the Actor, and a creator's uploads and posts stop being read at the first page that is entirely too old. A video without a publication date is dropped as soon as a date bound is set. Filtered-out rows are not saved and do not count in maxItems; the run summary tells how many were filtered.

🔌 Integrations and API

Call the Actor via the Apify API, the JavaScript or Python clients, or connect it with integrations and webhooks (Make, Zapier, n8n, Google Sheets, Slack, Airtable…). The dataset can be fetched as JSON or CSV from any tool.

🤖 Use with AI agents (MCP)

AI agents (Claude, ChatGPT, Cursor…) can find and run this Actor through the Apify MCP server, billed to their Apify account like any run. It returns one row per Bilibili video (and, on request, per comment, danmaku, creator, post or hot search keyword). Actor id: nice_dev/bilibili-videos-scraper; MCP server with this Actor only: https://mcp.apify.com/?tools=fetch-actor-details,nice_dev/bilibili-videos-scraper.

Smallest input, for a cheap first call:

{
"query": "原神",
"maxItems": 10
}

Key output fields: recordType, url, title, viewCount, likeCount, publishedAt, authorName and engagementRate.

Cost: pay per event, one price per kind of row and per extra (all extras off by default), plus a small fee per run start: see the pricing section above. Cap each call with maxItems and, through the API, with the run option maxTotalChargeUsd.

❓ FAQ

The Actor only reads what Bilibili shows publicly to any anonymous visitor; with your optional cookie, it reads what your own account sees. Results can contain personal data (names and UIDs of creators and commenters, contacts written in public bios), which is protected by GDPR and other laws: do not store it without a legitimate reason. Anonymize commenters and danmaku senders replaces commenters by a hash — a pseudonym, not a proof of anonymity. You are responsible for using the data in compliance with Bilibili's Terms of Use and applicable law. This Actor is not affiliated with Bilibili.

Does it need a login or a proxy?

No login: videos, creators, rankings, replies and danmaku are read as a visitor. Your cookie is only needed for the full comment list, the IP region of comments and subtitles. The proxy is included in the price: leave the default setting (the residential proxy is not available). A request the site turns away is retried at once on a new proxy session, up to 10 times on top of the retries (without a proxy, after a pause of 5 seconds, doubled at each retry up to 150 seconds).

Is the data safe to open in Excel or to show on a web page?

Titles, descriptions, comments, danmaku and bios are the users' own words, copied as they are. A text can begin with -, +, = or @: Excel and Google Sheets may read such a cell of a CSV file as a formula or as a number. The Actor leaves the text as it is, so that the JSON and the API give the real value: when you open a CSV, import these columns as text. On a web page, escape every field like any text written by a stranger.

Known limitations

  • Without your cookie: about 6 to 8 top comments a video (plus their replies), ipLocation always empty, no subtitles (skipped with a message), and subtitleLanguages empty on most videos.
  • A search stops at 1,000 results on Bilibili; with Max videos above 1,000 (or 0) the Actor goes past it by splitting the search into date windows (the order is then the windows', the most recent first).
  • Danmaku come from the first part (分P) of a video. Bilibili's file holds the danmaku currently shown, so a busy video gives fewer than its counter says (the example above: 600 in the file for a counter of 1,355).
  • Videos of a collection, a series or a favorite folder come as list cards: no author name for a collection's videos and no engagementRate (their list gives no likes or comments) unless Full video details reads their page.
  • Related videos are list cards too: no details, comments, danmaku or profile are read for them.
  • Private favorite folders are not visible.
  • onlyNew remembers video ids, not their content: a video whose views grew is not returned again.
  • Two runs sharing the same stateKey at the same time may both return the same new video.

A run that reaches its timeout stops itself about 45 seconds before it: no new page is asked, what it read is saved and, with onlyNew, remembered, and the run ends Succeeded with "Stopped before the run's timeout". Resurrect it to go on from there, or give the next run a longer timeout (Run options).

A run the platform stops without warning

  • Resurrect it: it goes on from where it stood at most a minute before the stop. What it had read since is read again, and the rows already saved are skipped: none is delivered or charged twice, and maxItems still counts them.
  • With onlyNew, the memory is saved after each write (at most once every 2 seconds): resurrect the stopped run and the videos it had saved meanwhile join the memory; leave it stopped for good, and the next run may return the videos of its last 2 seconds once more.

Something doesn't work?

The last line of the log counts the videos saved, filtered out and no longer on Bilibili (removed, or a video id that does not exist), and the requests that failed after every retry. Those requests and the removed videos are listed, with the reason, in the FAILED_REQUESTS record of the run's key-value store. A run that saved nothing and had failed requests fails, and its last message gives the cause.

If Bilibili changes its pages, you are told instead of paying for blank rows. A results page that counts videos but gives none the Actor can read is an error (listed in FAILED_REQUESTS), never a quiet "No videos found". Each source of the run (a search, a ranking, a creator's uploads, the recommended videos…) is checked on its own first 20 rows: if they all lack their title, publication date, view count, author id or author name — or, when the video's page is read, the id of its first part, its coins, shares or number of parts; for creators, their name or follower count — the run saves nothing more, stops and fails, and its last message names the missing field and the source: at most those first rows are charged. A video that postedAfter / postedBefore drops because it has no date at all counts among those 20. A run of fewer videos (a scheduled onlyNew run that finds a few new ones, a small Max videos) is checked at its end, from 5 videos: its videos are already saved, and the run fails with the missing field instead of ending green.

🛟 Support

Open an issue in the Issues tab with a link to your run: the run log and the FAILED_REQUESTS record of the key-value store show exactly which requests failed and why.