Bilibili Video and Creator Details Scraper avatar

Bilibili Video and Creator Details Scraper

Pricing

from $8.00 / 1,000 video detail results

Go to Apify Store
Bilibili Video and Creator Details Scraper

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

Arjun AI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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 includeParts to 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 lookupStatus row. A usable profile with unavailable optional sections is marked partial.

Ready-to-run examples

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

ParameterTypeDefaultDescription
lookupTypevideos or usersvideosSelect the input and result type. users is displayed as Creators (UP profiles).
sourcesarray of 1–50 stringsRequiredDirect URLs or IDs matching the chosen type. One value per line in the form.
includePartsbooleanfalseVideos 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

ModeAccepted values
Videoshttps://www.bilibili.com/video/BV..., /video/av... URLs, BV IDs, av-prefixed IDs, or numeric AV IDs as strings
Creatorshttps://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"

FieldsDescription and source
bvid, aid, cidNative video and content identifiers.
urlCanonical video URL assembled from the returned BV ID.
title, description, thumbnailUrlNative title, desc, pic.
durationSeconds, durationTextVideo-level native duration and a formatted version. Enable includeParts for individual part durations.
publishTimestamp, publishedAtNative pubdate in Unix seconds and its ISO 8601 UTC representation.
createdTimestamp, createdAtNative ctime in Unix seconds and its ISO 8601 UTC representation. It can differ from publication time.
categoryId, categoryNameNative tid, tname.
categoryV2Id, categoryV2NameNative tid_v2, tname_v2, when provided.
copyright, stateNative numeric codes, preserved without inferred classifications. Copyright code 1 means original and 2 means repost.
viewCount, likeCount, coinCountNative video stat.view, stat.like, stat.coin.
favoriteCount, shareCountNative video stat.favorite, stat.share.
danmakuCount, commentCountNative stat.danmaku and stat.reply; these are different kinds of comments.
authorMid, authorName, authorAvatarUrlBasic identity from owner.mid, owner.name, owner.face.
authorUrlSpace URL assembled from the owner's UID.
tagsNames in the video's returned Tags list.
partCountNative videos count. This field stays in video records regardless of includeParts; an unavailable source value remains null.
partsReturned pages, represented as the part objects described below. Included only when includeParts is true; otherwise the key is omitted entirely.
dimensionNative dimensions object, including width, height and rotation when present.
rightsNative video rights flags, without an inferred legal interpretation.
staffPublic credited co-creators, with mid, name, role, avatarUrl.

When includeParts is enabled, each object in parts contains:

FieldMeaning
cidNative part content ID.
pageNative one-based part number.
titleNative part title.
durationSeconds, durationTextThis part's duration and its formatted value.
firstFrameUrlNative first-frame image when returned. This may be absent even when the main video cover is available.
dimensionNative part dimensions.
urlVideo 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"

FieldsDescription and source
mid, nameNative card.mid, card.name.
profileUrlSpace URL assembled from the UID.
avatarUrl, bannerUrlNative avatar and space background image URLs.
descriptioncard.sign. The card's empty description placeholder is not used.
genderOriginal public sex text, such as 男, 女 or 保密; never inferred.
levelcard.level_info.current_level.
followerCount, followingCountCard followers and account following count. Viewer-relative follow state is not used.
archiveCountarchive_count from the public user card.
videoCountvideo from the space navigation statistics. This can differ from archiveCount.
totalLikeCountNative card like_num.
articleCount, audioCount, courseCount, collectionCountNavigation article, audio, pugv, season_num.
isVerified, verificationTypeMapped from native verification type: personal, organization or unverified; missing values remain null.
verificationRole, verificationTitle, verificationDescriptionNative certification role, title and supplemental description.
vipType, vipStatus, vipLabelNative VIP type, current status and displayed membership text. VIP membership is separate from creator verification.
vipDueTimestamp, vipExpiresAtNative VIP expiry in milliseconds and its ISO 8601 UTC value. Nonpositive timestamps are not converted into dates.
isSeniorMember, accountStateNative senior-member flag and spacesta account code.
avatarDecorationDecoration id, name, imageUrl, animatedImageUrl; absent decoration is null. The enhanced image may be identical to the static image.
badgeNative profile badge id, name, imageUrl, level, condition.
hasLiveRoom, isLive, isLoopingMapped from native room, live and round status flags.
liveRoomId, liveRoomUrl, liveTitle, liveCoverUrlPublic live-room identity, title and cover. A room can have a title while offline.
detailStatuscomplete 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:

EventPriceWhat 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 unitApify 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 os
from decimal import Decimal
from apify_client import ApifyClient
client = 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.