Bilibili Scraper: Videos, Comments & Creators, No Login avatar

Bilibili Scraper: Videos, Comments & Creators, No Login

Pricing

from $2.40 / 1,000 data rows

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

Bilibili Scraper: Videos, Comments & Creators, No Login

Scrape public Bilibili data with no login: keyword search, video stats, up to 2,000 root comments per video and creator profiles with their videos. Views, likes, coins, favorites, danmaku, tags and comment text in clean rows, with a free status row for not-found inputs.

Pricing

from $2.40 / 1,000 data rows

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Scrape public Bilibili data with no login. Search videos by keyword, get full stats for video links, collect up to 2,000 root comments per video, or read creator profiles and their latest videos. Each item is one clean row with views, likes, coins, favorites, danmaku, tags and more. A typical run with 20 rows takes about 5 seconds and costs $0.062 on the Free plan.

Use it for trend research, creator analysis and comment studies on Bilibili (哔哩哔哩), the Chinese video platform. Start with the keyword AI and 20 results.

Bilibili search, video links and creators to video, comment and creator rows

Table of contents

What it does

The Actor has four modes. You pick one mode per run.

ModeYou giveYou get
searchUp to 20 keywordsVideo rows in Bilibili search order, up to 1,000 per keyword
videoUp to 50 video links or IDsOne video row with full stats and tags for each video
commentsUp to 25 video links or IDsRoot comments, up to 2,000 per video, hot or newest first
userUp to 50 creator IDs or linksOne creator profile row, plus up to 1,000 of their latest videos

It reads public Bilibili web API responses. It does not sign in, download videos, read danmaku text, read replies to comments or read private data.

Data you get

  • Videos: BV ID, av ID, title, URL, description, cover image, duration, publish time, author name and ID, views, likes, coins, favorites, shares, danmaku count, comment count, tags and category.
  • Comments: comment ID, text, likes, reply count, user name, user ID, user level, created time, pinned flag and the video it belongs to.
  • Creators: user ID, name, profile URL, public bio, level, followers, following, video count, total likes, official title and avatar URL.
  • Status: one free row that lists inputs that were not found, invalid, duplicate or failed, with a reason for each.

Quick start

  1. Open Input.
  2. Keep What to scrape as search, Search keywords as AI and Max items as 20.
  3. Click Start.
  4. Open the Videos tab of the Output to see the rows. Open Run summary to check each input.

The example returns 20 video rows in about 5 seconds. Search results change over time.

Input

Only mode is required. Each mode also needs its list: keywords for search, videoUrls for video and comments, userIds for user. The new form prefills mode: "search", keywords: ["AI"] and maxItems: 20. The default build is latest.

FieldTypeDefault / prefillAllowed valuesWhat it changes / advice
modestringsearch / samesearch, video, comments, userWhat to scrape. Only the list for this mode is used.
keywordsarray of stringsnone / ["AI"]1–20 keywords, up to 100 characters eachSearch mode. Chinese or English. Exact duplicates are merged.
videoUrlsarray of stringsnone1–50 in video mode, 1–25 in comments modehttps://www.bilibili.com/video/BV… (also m.bilibili.com), BV1xx411c7mD, av170001 or 170001. Short b23.tv links are not supported and get an INVALID_INPUT status.
userIdsarray of stringsnone1–50User mode. Numeric user ID (mid), uid:946974 or https://space.bilibili.com/946974.
maxItemsinteger20 / same1–1,000 in search and user mode, 1–2,000 in commentsSearch: videos per keyword. Comments: comments per video. User: videos per creator (the profile row is extra). Not used in video mode. A value over the mode limit fails validation before any request.
searchOrderstringtotalranktotalrank, click, pubdate, dm, stowSearch mode. Relevance, most viewed, newest, most danmaku or most favorited.
commentSortstringhothot, timeComments mode. hot puts the most liked first and includes pinned comments. time lists newest first.
includeFullStatsbooleanfalsetrue, falseSearch and user modes. Opens each video page to fill the counters that lists do not have. One extra request per video, so runs are slower. Video mode always has full stats.
includeUserVideosbooleantruetrue, falseUser mode. false returns only the profile rows.
proxyConfigurationobject{"useApifyProxy": true}Apify Proxy settingsApify Proxy datacenter IPs work for Bilibili. Keep the default. The Actor changes the proxy session when Bilibili refuses a request.

What each mode fills

Field groupsearchvideouser videos
views, likes, favorites, danmaku, commentsyesyesviews only
coins, shareswith includeFullStatsyeswith includeFullStats
likes, favorites, danmaku, comments (user mode)——with includeFullStats
tagsyesyesno (null)

Input examples

Search two keywords, newest first:

{ "mode": "search", "keywords": ["AI", "原神"], "searchOrder": "pubdate", "maxItems": 50 }

Returns up to 50 video rows per keyword with searchKeyword and searchRank.

Stats for video links:

{ "mode": "video", "videoUrls": ["https://www.bilibili.com/video/BV1xx411c7mD", "av170001"] }

Returns one row per video with all counters and tags.

Comments of one video:

{ "mode": "comments", "videoUrls": ["BV1xx411c7mD"], "commentSort": "hot", "maxItems": 500 }

Returns up to 500 root comments, most liked first.

A creator and their latest videos:

{ "mode": "user", "userIds": ["946974"], "maxItems": 100 }

Returns one profile row and up to 100 video rows.

Output

All rows go to the default Dataset. The type field tells the row kind: video, comment, user or status.

Output examples

A search row (type: "video"):

{
"type": "video",
"bvid": "BV1Lzpr6TELC",
"aid": 117437089450751,
"url": "https://www.bilibili.com/video/BV1Lzpr6TELC",
"title": "AI自制打针情景短片《母女打针》第二天",
"description": "视频已做合理化删减",
"thumbnailUrl": "https://i1.hdslb.com/bfs/archive/07188a8bef3c3146aaa5b3ea2b37186058221df4.jpg",
"durationSec": 321,
"publishedAt": "2026-10-14T03:23:59.000Z",
"authorMid": 113904740,
"authorName": "西瓜智造BOB",
"views": 2975,
"likes": 81,
"coins": null,
"favorites": 153,
"shares": null,
"danmaku": 4,
"comments": 27,
"tags": ["影视剪辑", "娱乐观察局", "AI", "剧情向", "电视剧", "国产", "情景", "医生", "母女", "短片"],
"category": "小剧场",
"source": "search",
"fullStats": false,
"input": "AI",
"searchKeyword": "AI",
"searchRank": 1,
"fetchedAt": "2026-10-14T13:03:47.027Z"
}

A comment row:

{
"type": "comment",
"commentId": "495059",
"text": "wwwww",
"likes": 54852,
"replyCount": 1542,
"userMid": 2,
"userName": "碧诗",
"userLevel": 6,
"createdAt": "2010-12-09T18:10:39.000Z",
"isPinned": false,
"videoBvid": "BV1xx411c7mD",
"videoAid": 2,
"videoTitle": "字幕君交流场所",
"input": "https://www.bilibili.com/video/BV1xx411c7mD",
"fetchedAt": "2026-10-14T12:46:49.512Z"
}

A creator row (bio shortened):

{
"type": "user",
"mid": 946974,
"url": "https://space.bilibili.com/946974",
"name": "影视飓风",
"sign": "无限进步!…",
"level": 6,
"followers": 18646385,
"following": 686,
"videoCount": 948,
"totalLikes": 128801992,
"officialTitle": "2025百大UP主、2023年度最高人气奖UP主、课堂优质讲师",
"faceUrl": "https://i0.hdslb.com/bfs/face/c1733474892caa45952b2c09a89323157df7129a.jpg",
"input": "946974",
"fetchedAt": "2026-10-14T12:44:04.849Z"
}

Video fields

FieldTypeNull?Meaning / example
bvidstringnoBilibili video ID, e.g. BV1xx411c7mD.
aidintegeryesOld numeric video ID (av), e.g. 2.
urlstringnoPublic video URL.
titlestringnoVideo title, HTML highlight tags removed.
descriptionstringyesVideo description.
thumbnailUrlstringyesCover image URL.
durationSecintegeryesLength in seconds. Some search results report 0; this comes from Bilibili.
publishedAtstringyesPublish time, ISO UTC.
authorMidintegeryesUploader user ID.
authorNamestringyesUploader name.
viewsintegeryesPlay count.
likesintegeryesLikes. Null in user mode without includeFullStats.
coinsintegeryesCoins given. Null in search and user mode without includeFullStats.
favoritesintegeryesFavorites. Null in user mode without includeFullStats.
sharesintegeryesShares. Null in search and user mode without includeFullStats.
danmakuintegeryesDanmaku (bullet comment) count. Null in user mode without includeFullStats.
commentsintegeryesComment count. Null in user mode without includeFullStats.
tagsarray of stringsyesVideo tags. [] when the video has none. Null in user mode.
categorystringyesBilibili category name, e.g. 小剧场.
sourcestringnosearch, video or user_videos: which list gave the row.
fullStatsbooleannotrue when the counters come from the video page.
searchKeywordstringyesKeyword in search mode, else null.
searchRankintegeryesPosition in this run's search results, from 1. Null outside search mode.
inputstringnoThe input line that produced the row.
fetchedAtstringnoUTC fetch time, ISO format.

Comment fields

FieldTypeNull?Meaning / example
commentIdstringnoComment ID, e.g. 495059.
textstringnoComment text.
likesintegeryesLikes on the comment.
replyCountintegeryesNumber of replies. Replies themselves are not collected.
userMidintegeryesCommenter user ID.
userNamestringyesCommenter public name.
userLevelintegeryesCommenter level, 0–6.
createdAtstringyesComment time, ISO UTC.
isPinnedbooleannotrue for a pinned comment (hot sort only).
videoBvidstringnoThe video BV ID.
videoAidintegeryesThe video av ID.
videoTitlestringyesThe video title.
inputstringnoThe input line.
fetchedAtstringnoUTC fetch time.

Creator fields

FieldTypeNull?Meaning / example
midintegernoUser ID, e.g. 946974.
urlstringnoPublic space URL.
namestringnoPublic name.
signstringyesPublic bio, as the creator wrote it. It can hold contact details; treat it as personal data.
levelintegeryesAccount level, 0–6.
followersintegeryesFollower count.
followingintegeryesNumber of accounts the creator follows.
videoCountintegeryesPublic video count from the profile.
totalLikesintegeryesTotal likes on the creator's content.
officialTitlestringyesBilibili verification title, if any.
faceUrlstringyesAvatar image URL.
inputstringnoThe input line.
fetchedAtstringnoUTC fetch time.

Status row

When some inputs give no new data, the run adds one free type: "status" row. It has a message (for example 2 input(s) returned no new data: 1 not found, 1 duplicate, 0 failed or not processed. Free row.) and an inputs list. Each entry has input, status (not_found, error, duplicate or not_processed), code and reason.

Output tabs

The Output has Videos, Comments and Creators tabs and a Run summary. Each tab shows the columns for its row kind. Apify Dataset views cannot filter rows, so every tab lists all rows of the run, and rows of other kinds show empty cells. In search, video and comments mode all data rows are one kind. User mode has creator rows and their video rows. The status row comes on top when some inputs gave no data. For clean exports, filter by type or use the JSON export.

Run summary is the RUN_SUMMARY record in the default key-value store. It has status, partialReason, message, counts (rows by kind, charged rows, inputs complete, partial, not found, errors, not processed), per-input inputs, http (requests, retries, blocks) and timing.

SituationDatasetRun result
Results foundData rowsSucceeded, COMPLETE.
Video or creator does not existStatus row lists itSucceeded. NOT_FOUND when nothing at all was found.
Same video or creator given twiceOne data row; status duplicateSucceeded. The repeat is not charged.
Your maximum cost per run reachedRows that fit the budgetSucceeded, partial CHARGE_LIMIT. Other inputs are not_processed.
Run time almost overRows saved so farSucceeded, partial TIME_LIMIT. The status message tells you to raise the timeout or split the input.
Bilibili refuses or fails repeatedlyRows saved so far stayFailed, partial SOURCE_ERROR. Not the same as "no results".
Invalid inputEmptyFailed before any Bilibili request.

Pricing and limits

Pay per event: a start fee per run plus each saved data row (video, comment or creator). The status row is free. Platform compute and proxy traffic are included.

PlanStart fee per runPer data rowPer 1,000 rows, excluding start
Free$0.006$0.0028$2.80
Bronze$0.006$0.0026$2.60
Silver$0.006$0.0025$2.50
Gold / Platinum / Diamond$0.006$0.0024$2.40

The start fee is charged once per run (the Actor runs with up to 512 MB). It also applies when nothing is found. Duplicates, not-found inputs and invalid inputs are not charged as rows. Partial and failed runs charge only the start fee and the rows that were saved.

Saved rowsRunsFree-plan totalGold-plan total
01$0.006$0.006
11$0.0088$0.0084
201$0.062$0.054
1001$0.286$0.246
1,0001$2.806$2.406
2,0001 (comments)$5.606$4.806

These are price calculations, not promised result counts. Set Maximum cost per run to control spending. The run stops cleanly when it reaches your limit.

Limits per run: 20 keywords and up to 1,000 results per keyword (Bilibili serves no more), 50 videos in video mode, 25 videos and 2,000 comments per video in comments mode, 50 creators and 1,000 videos per creator in user mode. Measured on Apify: 20 search rows in about 5 s, 500 comments in 16 s, 970 search rows in 19 s, 2,000 comments in 65 s, a creator with 935 videos in 89 s. The default timeout is 300 seconds.

Use cases

TaskInputUseful fieldsNext step
Track a topic on Bilibilisearch, several keywords, pubdatetitle, views, publishedAt, tagsCompare topics by views and dates.
Compare video performancevideo with a list of linksviews, likes, coins, favorites, danmakuRank videos by engagement.
Study audience opinioncomments, hot, maxItems: 1000text, likes, createdAtRun sentiment or keyword analysis.
Research creatorsuser with creator IDsfollowers, videoCount, totalLikes, videosBuild a creator shortlist.

Scheduling and monitoring

You can save the input as an Apify task and schedule it, for example daily for the same keywords or videos. Each run is a new snapshot and is charged normally. There is no "only new items" mode. Compare snapshots in your own system by bvid, commentId or mid and fetchedAt.

API, export and integrations

Start the Actor with the Apify API using the same JSON input. When the run ends, read the default Dataset and the RUN_SUMMARY record. Export as JSON, CSV, Excel or XML from the Dataset. tags is a list; in CSV it becomes several columns.

Apify webhooks, Make, Zapier and n8n can start runs and pass the Dataset ID on. Use bvid as the key for videos, commentId for comments and mid for creators.

Use with AI agents (MCP)

Add https://mcp.apify.com?tools=cliqtomedia/bilibili-scraper to your MCP client. A small input:

{ "mode": "search", "keywords": ["AI"], "maxItems": 20 }

Read title, url, views, likes, danmaku, tags and publishedAt. This run took about 5 seconds and costs $0.062 on the Free plan. Check RUN_SUMMARY.status before you treat a partial run as complete.

Limitations and partial results

  • Field names are this Actor's own (views, likes, danmaku…). They are not a drop-in copy of other Bilibili scrapers' output.
  • Bilibili search serves at most 1,000 results per keyword. Some keywords return fewer; the run summary warns about it.
  • A creator's public video list can be shorter than videoCount, because Bilibili hides some videos.
  • Comments mode collects root comments only. Replies are counted in replyCount but not collected. Danmaku text is not collected.
  • Bilibili sometimes refuses requests from cloud IPs (HTTP 412). Creator video lists are refused more often than other pages. The Actor retries on a new proxy session up to 6 times within about one minute and keeps going after a single refused input. Two refused inputs in a row stop the run as a partial SOURCE_ERROR with all saved rows kept.
  • The Actor waits 0.5 s between requests to stay polite. Large creator lists and comment runs take longer than search.
  • Counters change all the time. Keep fetchedAt with your data.
  • Short b23.tv links are not resolved. Open them in a browser and copy the full video link.
  • This Actor is not affiliated with or endorsed by Bilibili. It reads public data only. Use the data in line with Bilibili terms and local law, and respect the privacy of commenters and creators.

Troubleshooting

SymptomPossible reasonCheckAction
Run fails with "Invalid input"Missing list for the mode, or a value over a limitThe message in the run logUse an example above and change one field at a time.
NOT_FOUND, no data rowsVideos or creators do not exist or are hiddenThe status rowCheck the IDs in a browser.
duplicate in the status rowThe same video or creator was given twice (BV and av forms count as one)The status rowNothing to do; it was not charged twice.
Partial CHARGE_LIMITYour maximum cost per run was reachedcounts.chargedRows in Run summaryRaise the limit if you need more rows.
Partial TIME_LIMITToo much work for the run timeoutStatus messageRaise the timeout or split the input into several runs.
Partial SOURCE_ERRORBilibili refused or failed repeatedlyhttp.blocked in Run summaryRun again later; keep the default Apify Proxy.
coins or shares are null in searchSearch lists do not carry these countersfullStats is falseSet includeFullStats: true.
Other tabs show empty cellsDataset views cannot filter rows by kindtype columnFilter by type in your export.

FAQ

Do I need a Bilibili account or cookies?

No. The Actor uses public guest access. Do not add your cookies.

Can I get comment replies or danmaku text?

No. It collects root comments and the danmaku count only.

Are BV and av IDs both supported?

Yes. BV1xx411c7mD, av2 and the full link point to the same video, and the Actor saves and charges it once.

Why did a search return fewer rows than maxItems?

Bilibili had fewer results for that keyword, or it reached its limit of 1,000 results.

Do empty runs cost money?

Only the start fee of $0.006. Inputs that are not found do not create paid rows.

Is the data the same as on the website?

Yes, it comes from the same public data. Counters change quickly, so values can differ a little minutes later.

Support

Use the Actor's Issues tab for questions or bugs. Include the run ID and the error code from the Run summary. Do not send API tokens or cookies.