Bilibili Video and Creator Details Scraper
Pricing
from $8.00 / 1,000 video detail results
Bilibili Video and Creator Details Scraper
Get Bilibili video details and UP creator profiles from URLs or IDs. Export video metrics, tags, descriptions and optional per-part metadata, or creator followers, verification, membership, live rooms and content counts. No Bilibili login or API key required.
Pricing
from $8.00 / 1,000 video detail results
Rating
0.0
(0)
Developer
Arjun AI
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Look up Bilibili (哔哩哔哩 / B站) videos and UP creator profiles using direct URLs or IDs. Export video descriptions, engagement metrics, tags, categories and optional individual video parts, or public creator profiles with followers, verification, membership, live rooms and content counts.
Choose Videos or Creators (UP profiles) for each run. Video results include the uploader's basic identity from the video response. Creator lookups retrieve the profile itself and its public counts; they do not enumerate the creator's videos.
The Actor operates without a Bilibili login or API key. Values depend on what Bilibili returns publicly. Data is exported to the default Dataset as JSON, CSV, Excel, JSONL or other formats supported by Apify.
What you can collect
- Video metadata: title, description, cover, publication and creation timestamps, duration, categories and tags.
- Video engagement: views, likes, coins, favorites, shares, danmaku and comment counts.
- Multi-part videos: the part count is included by default. Enable
includePartsto also get each part's CID, title, duration, dimensions, optional first frame and direct page URL, nested under one video record. - Author identity: UID, name, profile URL and avatar, plus credited co-creators when Bilibili returns them.
- UP profiles: biography, avatar, banner, followers, following, account level, certification, membership and profile badges.
- Creator counts: separate card archive and space video counts, received likes, articles, audio, courses and collections.
- Live rooms: room existence, live and looping status, room ID, URL, title and cover.
- Visible outcomes: unavailable or invalid inputs produce a
lookupStatusrow. A usable profile with unavailable optional sections is markedpartial.
Ready-to-run examples
- Get Bilibili Video Details by URL or BV ID — starts with one video and compact output; enable parts when needed.
- Get Bilibili UP Creator Profiles by UID — starts with two public UP profiles, using a profile URL and a UID.
These public Tasks are editable starting points, not free runs. Review their inputs and maximum charge before starting them. Both use the latest Actor build.
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
lookupType | videos or users | videos | Select the input and result type. users is displayed as Creators (UP profiles). |
sources | array of 1–50 strings | Required | Direct URLs or IDs matching the chosen type. One value per line in the form. |
includeParts | boolean | false | Videos only. Set to true to include all returned parts in a nested parts array. When false or omitted, the result keeps partCount but has no parts field. Ignored in Creators mode. |
Accepted inputs
| Mode | Accepted values |
|---|---|
| Videos | https://www.bilibili.com/video/BV..., /video/av... URLs, BV IDs, av-prefixed IDs, or numeric AV IDs as strings |
| Creators | https://space.bilibili.com/946974 or a numeric UID such as "946974" |
A digits-only ID is an AV ID in Videos mode and a UID in Creators mode. Nicknames are not accepted as unique identifiers. Search for a nickname using a search Actor first, then pass the returned UID here.
Use full Bilibili video or space URLs. b23.tv short links, series/season URLs and paid-course URLs are not supported in this version. A video URL containing ?p=2 still looks up the complete video submission. With includeParts: true, the result contains all returned parts, not just part 2.
Each list entry is processed independently. Repeating a video or profile, including through different ID forms, can create multiple result rows and result events. Submit each target once when you want a single record.
Look up a video
{"lookupType": "videos","sources": ["https://www.bilibili.com/video/BV1qZSLBYEpa"],"includeParts": false}
Change includeParts to true when you need individual part details. Parts come from the same video response, so this option changes the exported output without adding requests or separate result events.
Look up UP profiles
{"lookupType": "users","sources": ["https://space.bilibili.com/946974","23947287","2"]}
Real output examples
These are actual cloud results collected on September 7, 2026, using build 0.1.1. Build 0.1.2 keeps the same result fields. Metrics and profile text can change between runs; nulls below are the values returned in that capture, not placeholders.
Video sample
This is one video record with includeParts: false. The native partCount is 181; parts are not inferred from the number mentioned in the video's title.
{"recordType": "video","inputValue": "https://www.bilibili.com/video/BV1qZSLBYEpa","bvid": "BV1qZSLBYEpa","aid": 115626794420560,"cid": 34332936080,"url": "https://www.bilibili.com/video/BV1qZSLBYEpa","title": "【整整600集】清华大学196小时讲完的AI人工智能从入门到精通全套教程,全程干货无废话!学完变大佬!这还学不会,我退出IT圈!机器学习-深度学习-opencv","description": "课程涵盖基础概念、算法原理、实践应用,从零开始,深入浅出。通过实例演示,掌握神经网络、决策树、支持向量机等关键技术。适合初学者和进阶者,助您快速提升技能,开启智能时代新篇章。立即观看,开启您的AI学习之旅!","thumbnailUrl": "https://i0.hdslb.com/bfs/archive/886e0ea5bd30fdd9ddb66eb5ce108b1a3193d450.jpg","durationSeconds": 195568,"durationText": "54:19:28","publishTimestamp": 1764325216,"publishedAt": "2025-11-28T10:20:16Z","createdTimestamp": 1764325216,"createdAt": "2025-11-28T10:20:16Z","categoryId": 231,"categoryName": null,"categoryV2Id": 2096,"categoryV2Name": null,"copyright": 1,"state": 0,"viewCount": 1034494,"likeCount": 24274,"coinCount": 19285,"favoriteCount": 60887,"shareCount": 11551,"danmakuCount": 8140,"commentCount": 14215,"authorMid": 1741962246,"authorName": "IT界扛霸子","authorUrl": "https://space.bilibili.com/1741962246","authorAvatarUrl": "https://i0.hdslb.com/bfs/face/330a8ac40ac349d550961219984ba2fc269661ab.jpg","tags": ["计算机","人工智能","IT","AI","编程","机器学习","深度学习","OpenCV","人工智能课程","人工智能入门"],"partCount": 181,"dimension": {"width": 1920,"height": 1080,"rotate": 0},"rights": {"bp": 0,"elec": 0,"download": 1,"movie": 0,"pay": 0,"hd5": 0,"no_reprint": 1,"autoplay": 1,"ugc_pay": 0,"is_cooperation": 0,"ugc_pay_preview": 0,"no_background": 0,"clean_mode": 0,"is_stein_gate": 0,"is_360": 0,"no_share": 0,"arc_pay": 0,"free_watch": 0},"staff": [],"scrapedAt": "2026-09-07T06:27:30.073355Z"}
Creator sample
This profile's three requested sections succeeded. A complete profile can still contain null values when a source field is absent.
{"recordType": "user","detailStatus": "complete","inputValue": "https://space.bilibili.com/946974","mid": 946974,"name": "影视飓风","profileUrl": "https://space.bilibili.com/946974","avatarUrl": "https://i0.hdslb.com/bfs/face/c1733474892caa45952b2c09a89323157df7129a.jpg","bannerUrl": "https://i1.hdslb.com/bfs/space/8e57216d2e53d1d4afcf0a897ab59bb053bbee1f.png","description": "无限进步!|商务合作请联系邮箱:bd@ysjf.com(邮件中麻烦备注公司、咨询内容)|店铺名:影视飓风","gender": "男","level": 6,"followerCount": 17367177,"followingCount": 685,"archiveCount": 939,"videoCount": 927,"totalLikeCount": 124559272,"articleCount": 126,"audioCount": 4,"courseCount": 4,"collectionCount": 24,"isVerified": true,"verificationType": "personal","verificationRole": 7,"verificationTitle": "2025百大UP主、2023年度最高人气奖UP主、课堂优质讲师","verificationDescription": null,"vipType": 2,"vipStatus": 1,"vipLabel": "十年大会员","vipDueTimestamp": 2102774400000,"vipExpiresAt": "2036-08-19T16:00:00Z","isSeniorMember": false,"accountState": 0,"avatarDecoration": null,"badge": {"id": 89,"name": "2020百大UP主","imageUrl": "https://i1.hdslb.com/bfs/face/dbc78ef8c88f15171f0d12587fb2731f999483a6.png","level": "稀有勋章","condition": "2020年在创作力、影响力、口碑力等维度综合数据出色的UP主"},"hasLiveRoom": true,"isLive": false,"isLooping": false,"liveRoomId": 173551,"liveRoomUrl": "https://live.bilibili.com/173551","liveTitle": "假装在BIRTV现场!展会限定在这里!!","liveCoverUrl": "https://i0.hdslb.com/bfs/live/new_room_cover/4ebdfdff681b0d8ec6f0daa60c1a48251f32efcf.jpg","scrapedAt": "2026-09-07T06:29:54.480252Z"}
Output fields
Fields use consistent names while retaining values from Bilibili's public responses. URLs assembled from IDs, formatted times and durations, and boolean/enum conversions are explicitly described below. No performance scores, inferred demographics or estimated engagement values are added.
Records contain fields for their own type. A creator row does not contain empty video metrics, and a video row does not contain a full creator profile.
Video records — recordType: "video"
| Fields | Description and source |
|---|---|
bvid, aid, cid | Native video and content identifiers. |
url | Canonical video URL assembled from the returned BV ID. |
title, description, thumbnailUrl | Native title, desc, pic. |
durationSeconds, durationText | Video-level native duration and a formatted version. Enable includeParts for individual part durations. |
publishTimestamp, publishedAt | Native pubdate in Unix seconds and its ISO 8601 UTC representation. |
createdTimestamp, createdAt | Native ctime in Unix seconds and its ISO 8601 UTC representation. It can differ from publication time. |
categoryId, categoryName | Native tid, tname. |
categoryV2Id, categoryV2Name | Native tid_v2, tname_v2, when provided. |
copyright, state | Native numeric codes, preserved without inferred classifications. Copyright code 1 means original and 2 means repost. |
viewCount, likeCount, coinCount | Native video stat.view, stat.like, stat.coin. |
favoriteCount, shareCount | Native video stat.favorite, stat.share. |
danmakuCount, commentCount | Native stat.danmaku and stat.reply; these are different kinds of comments. |
authorMid, authorName, authorAvatarUrl | Basic identity from owner.mid, owner.name, owner.face. |
authorUrl | Space URL assembled from the owner's UID. |
tags | Names in the video's returned Tags list. |
partCount | Native videos count. This field stays in video records regardless of includeParts; an unavailable source value remains null. |
parts | Returned pages, represented as the part objects described below. Included only when includeParts is true; otherwise the key is omitted entirely. |
dimension | Native dimensions object, including width, height and rotation when present. |
rights | Native video rights flags, without an inferred legal interpretation. |
staff | Public credited co-creators, with mid, name, role, avatarUrl. |
When includeParts is enabled, each object in parts contains:
| Field | Meaning |
|---|---|
cid | Native part content ID. |
page | Native one-based part number. |
title | Native part title. |
durationSeconds, durationText | This part's duration and its formatted value. |
firstFrameUrl | Native first-frame image when returned. This may be absent even when the main video cover is available. |
dimension | Native part dimensions. |
url | Video URL with the corresponding ?p= value. |
Requested parts are nested in one video result, not separate Dataset rows or extra result events. The Actor does not download media, comments, danmaku messages or subtitle contents.
Creator records — recordType: "user"
| Fields | Description and source |
|---|---|
mid, name | Native card.mid, card.name. |
profileUrl | Space URL assembled from the UID. |
avatarUrl, bannerUrl | Native avatar and space background image URLs. |
description | card.sign. The card's empty description placeholder is not used. |
gender | Original public sex text, such as 男, 女 or 保密; never inferred. |
level | card.level_info.current_level. |
followerCount, followingCount | Card followers and account following count. Viewer-relative follow state is not used. |
archiveCount | archive_count from the public user card. |
videoCount | video from the space navigation statistics. This can differ from archiveCount. |
totalLikeCount | Native card like_num. |
articleCount, audioCount, courseCount, collectionCount | Navigation article, audio, pugv, season_num. |
isVerified, verificationType | Mapped from native verification type: personal, organization or unverified; missing values remain null. |
verificationRole, verificationTitle, verificationDescription | Native certification role, title and supplemental description. |
vipType, vipStatus, vipLabel | Native VIP type, current status and displayed membership text. VIP membership is separate from creator verification. |
vipDueTimestamp, vipExpiresAt | Native VIP expiry in milliseconds and its ISO 8601 UTC value. Nonpositive timestamps are not converted into dates. |
isSeniorMember, accountState | Native senior-member flag and spacesta account code. |
avatarDecoration | Decoration id, name, imageUrl, animatedImageUrl; absent decoration is null. The enhanced image may be identical to the static image. |
badge | Native profile badge id, name, imageUrl, level, condition. |
hasLiveRoom, isLive, isLooping | Mapped from native room, live and round status flags. |
liveRoomId, liveRoomUrl, liveTitle, liveCoverUrl | Public live-room identity, title and cover. A room can have a title while offline. |
detailStatus | complete if card, navigation counts and live-room requests succeeded; partial if the card succeeded but an optional section failed. |
complete describes the requested sections, not a promise that every field is non-null. A creator may have no badge, no certification description or no active live room. Failed optional sections remain null, and their reasons are available in the OUTPUT summary.
Registration date, school, inferred country, private balances and creator-wide accumulated views/reads are not included in this version. They were not reliably available through the anonymous endpoints used here. Public contact details written into a biography remain in description; there is no claim of a native email field.
Common collection metadata
recordType, inputValue, scrapedAt and detailStatus are Actor fields. scrapedAt is ISO 8601 UTC. Other timestamp fields document their source and unit; video timestamps are seconds while VIP expiry timestamps are milliseconds.
Lookup statuses
Inputs that cannot produce a usable detail record create a visible row such as the following illustrative example:
{"recordType": "lookupStatus","lookupType": "users","inputValue": "not-a-uid","status": "invalidInput","errorCode": "INVALID_INPUT","message": "Enter a numeric UID or a https://space.bilibili.com/UID URL. Nicknames are not unique IDs.","scrapedAt": "2026-09-07T00:00:00Z"}
Possible statuses include invalidInput, notFound, unavailable, blocked, failed and chargeLimitReached. Request blocking is reported separately from a missing video or account. Connection setup failures use failed with PROXY_UNAVAILABLE or SESSION_UNAVAILABLE, rather than claiming the input does not exist. These rows do not trigger a custom result event.
The Dataset has overview, video, creator and outcome table views. The video and creator views include the original input, status, error code and message so failed inputs can be identified without switching views. Views select columns; they do not remove records from JSON exports.
Run summary
The default Key-Value Store record OUTPUT contains result totals and per-input outcomes. For partial profiles, resultsByInput[].issues identifies which section could not be retrieved. Request counts, fallback counts and timings also live here, keeping operational diagnostics out of normal result rows.
Pricing
This Actor uses pay-per-event pricing, with platform usage included. The active prices as of September 7, 2026 are:
| Event | Price | What counts |
|---|---|---|
bilibili-video-detail-result | $8 / 1,000 results ($0.008 each) | One usable video detail record saved to the Dataset. Basic author data and optional parts belong to this one event. |
bilibili-creator-detail-result | $8 / 1,000 results ($0.008 each) | One usable creator profile saved to the Dataset, including partial profiles when optional counts or live-room data are unavailable. |
apify-actor-start | $0.00005 per start-event unit | Apify applies one unit per GB of run memory, with a minimum of one unit. At the default 512 MB, the start charge is $0.00005 per run. |
lookupStatus rows have no result charge, but the start charge still applies even if the run produces only statuses. One video with 181 returned parts is one video result, not 181 paid results. Repeated inputs are processed and charged independently if they produce usable records.
For example, a default-memory run that saves two usable profiles costs $0.01605: two result events plus one start-event unit. This is an example based on the listed prices, not a fixed fee per run. Check the current Pricing tab before running.
The minimum selectable maximum charge is $0.01; it is a spending-limit setting, not a minimum bill. The Actor checks whether another result event fits before processing another input and uses the SDK's charged Dataset writes. Inputs skipped because of the limit receive chargeLimitReached statuses. See Apify's spending-limit documentation.
Use the API
Install apify-client and set an APIFY_TOKEN environment variable with your Apify API token. No Bilibili login or Bilibili API key is needed. This example starts a paid run with a $1 maximum event charge and prints its Dataset rows, including any lookup statuses:
import osfrom decimal import Decimalfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("arjun_code/bilibili-details-scraper").call(run_input={"lookupType": "videos","sources": ["BV1qZSLBYEpa"],"includeParts": False,},memory_mbytes=512,max_total_charge_usd=Decimal("1.00"),)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
For profiles, change lookupType to users and use UIDs or space URLs in sources. The Apify Python client reference describes run options and waiting behavior.
FAQ
Can a single run process videos and creators together?
Select one lookup type per run. Use two runs to get both datasets. The same numeric input otherwise has different meanings as an AV ID and a creator UID.
Does a video lookup also retrieve the complete UP profile?
Video rows include the basic author fields already returned in the video response. To get the profile, use Creators mode with authorMid. A video lookup does not enumerate the creator's other uploads.
Why is the parts array missing?
includeParts defaults to false to keep results compact, especially for long courses with many parts. The video result still includes partCount. Set includeParts: true to include all parts returned by Bilibili in the same record. If Bilibili returns no part entries, the requested array is empty. This setting does not change the request count or add a separate result event; it is ignored in Creators mode.
Why do archiveCount and videoCount differ?
They come from different Bilibili endpoints. In the September 4, 2026 source inspection, one profile returned a card archive count of 939 and a navigation video count of 927. The Actor preserves both source values without interpreting the difference as deleted or private videos.
Why is the article count taken from another endpoint?
The same source inspection returned card article_count: 0 while navigation article was 126. This Actor uses navigation statistics for articles instead of the card placeholder.
Does null mean zero?
No. Missing or inaccessible values remain null. A returned zero remains zero. Empty source descriptions are normalized to null and an empty tag list remains an empty list.
Does the Actor guarantee every public field?
No. Fields vary by account, video and Bilibili response. This version focuses on the metadata exposed by its supported endpoints; it does not estimate unavailable fields.
Are emails available?
If a creator publishes contact information in their biography, it is preserved in description. The Actor does not access a private contact directory or invent an email field.
Can I submit 50 inputs?
The input limit is 50 entries per run. Inputs are processed sequentially and results are saved as they complete. Enabling includeParts for multi-part videos can create much larger individual records. Start with a few entries to review the output for your use case; the limit is a batch size, not a runtime guarantee.
Support
Report problems through the Actor's Issues tab. Include the run ID, the public input URL or ID, selected lookup type, and relevant Dataset status or partial-section issue. Do not post API tokens, cookies or other credentials.
Disclaimer
This is an independent tool and is not affiliated with or endorsed by Bilibili. It retrieves public metadata exposed at request time; availability and field values can change.