Bilibili Scraper
Under maintenancePricing
from $1.70 / 1,000 posts
Bilibili Scraper
Under maintenanceDelivers a structured dataset of Bilibili videos and creator profiles. Query by category, search keyword, or video URL for titles, URLs, BVIDs, covers, view and like counts, durations, and publish times, plus optional video and creator details.
Pricing
from $1.70 / 1,000 posts
Rating
0.0
(0)
Developer
Farhan Ali
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Bilibili Scraper creates a structured dataset of Bilibili videos and PGC titles collected from Popular/Ranking categories, search keywords, or pasted Bilibili URLs. Each dataset item represents one primary video or season, with its title, URL, BVID, cover, play/like/comment counts, duration, publish time, and creator name and URL; when enabled, it also attaches a videoDetails object, a creatorDetails profile, and a nested creatorVideos list. Query using startUrls, searchQueries, or categories, cap results with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, HTML, or XML.
Dataset at a glance
| Property | Value |
|---|---|
| Source | Bilibili.com |
| Record unit | One primary video or PGC season |
| Input methods | startUrls, searchQueries, categories |
| Main identifiers | bvid, aid, url |
| Delivery | Apify Dataset and API |
| Export formats | JSON, CSV, Excel, HTML, XML |
| Update model | Fresh records per Actor run |
| Pricing | Pay-per-event: $2.00 / 1,000 posts; optional details billed per event |
Coverage and available records
The Actor accepts three seed types, processed in the same run and combinable:
- Page URLs (
startUrls) — video pages (/video/BVxxx), creator spaces (space.bilibili.com), category hubs, search pages, and bangumi seasons. - Search queries (
searchQueries) — free-text keywords such as原神,LOL, or美食; each query is paginated untilmaxItemsis reached. - Categories (
categories) — built-in sections:popular,ranking,anime,movie,tv,variety,documentary,guochuang,entertainment,douga,music,dance,game,knowledge,tech,sports,life,food,fashion,cinephile.
Conditional enrichment is controlled by three booleans, all disabled by default:
scrapeVideoDetailsattaches avideoDetailsobject (description, tags, coins, favorites, shares, danmaku).scrapeCreatorStatsattaches acreatorDetailsprofile (followers, following, upload count, level, bio, sex).scrapeCreatorVideosattaches a nestedcreatorVideoslist;maxCreatorVideos(default10) limits uploads per creator, and0collects all.
maxItems caps primary videos from search, URLs, or categories (0 = unlimited). Nested creatorVideos entries do not count toward this limit and do not become new dataset rows. Creator space URLs already scrape uploads as primary rows, so the nested list is not duplicated onto those rows.
Data dictionary
| Field | Type | Nullable | Description | Example |
|---|---|---|---|---|
itemType | string | No | Record kind: video or pgc | "video" |
url | string | No | Public Bilibili URL for this primary item | "https://www.bilibili.com/video/BV13mt76GEfr/" |
bvid | string | Yes | BV id | "BV13mt76GEfr" |
aid | integer | Yes | Numeric archive id | 117199473809637 |
title | string | No | Video or season title | "每 天 一 遍 🔥 烦 恼 拜 拜!" |
coverUrl | string | Yes | Cover image URL | "https://i0.hdslb.com/bfs/archive/..." |
playCount | integer | Yes | Play count | 2109736 |
likeCount | integer | Yes | Like count | 63082 |
commentCount | integer | Yes | Comment count | 1499 |
durationSeconds | integer | Yes | Duration in seconds | 74 |
publishedAt | string | Yes | Publish time (UTC ISO-8601) | "2026-09-02T04:25:00+00:00" |
creatorName | string | Yes | Uploader display name | "兔总裁s" |
creatorUrl | string | Yes | Uploader space URL | "https://space.bilibili.com/15385187" |
sourceType | string | No | How this item was discovered | "category" |
sourceValue | string | Yes | Discovery source value | "popular" |
videoDetails | object | Yes | Extra video/season fields; present only when scrapeVideoDetails is on | see below |
creatorDetails | object | Yes | Creator profile; present only when scrapeCreatorStats is on | see below |
creatorVideos | array | Yes | That creator's uploads; present only when scrapeCreatorVideos is on | see below |
The optional videoDetails object carries description, tags, categoryName, playCount, likeCount, commentCount, danmakuCount, coinCount, favoriteCount, shareCount, durationSeconds, publishedAt, and — for PGC titles — seasonId, episodeId, rating, and subtitle.
The optional creatorDetails object carries creatorFaceUrl, creatorName, creatorUrl, creatorId, followerCount, followingCount, videoCount, level, sex, and sign.
Each entry in the optional creatorVideos array carries coverUrl, url, title, playCount, commentCount, durationSeconds, publishedAt, and bvid.
The best stable field for deduplication is bvid, with aid (or season id when bvid is absent) and url as fallbacks.
Example dataset record
The following representative record was produced from the popular category with scrapeVideoDetails, scrapeCreatorStats, and scrapeCreatorVideos all enabled. Identifiers and values are real output; the top-level creatorId seen in some runs is omitted here because it is not part of the documented schema.
{"itemType": "video","url": "https://www.bilibili.com/video/BV13mt76GEfr/","bvid": "BV13mt76GEfr","aid": 117199473809637,"title": "每 天 一 遍 🔥 烦 恼 拜 拜!","coverUrl": "https://i0.hdslb.com/bfs/archive/64c8c613267236c595ce27a7e52ebb36cc33be20.jpg","playCount": 2109736,"likeCount": 63082,"commentCount": 1499,"durationSeconds": 74,"publishedAt": "2026-09-02T04:25:00+00:00","creatorName": "兔总裁s","creatorUrl": "https://space.bilibili.com/15385187","sourceType": "category","sourceValue": "popular","videoDetails": {"description": "一个月没古法健身了!!!\n感恩素材:武当十三","tags": [],"danmakuCount": 1040,"coinCount": 5272,"favoriteCount": 13970,"shareCount": 2669,"playCount": 2109736,"likeCount": 63082,"commentCount": 1499,"durationSeconds": 74,"publishedAt": "2026-09-02T04:25:00+00:00"},"creatorDetails": {"creatorId": 15385187,"creatorName": "兔总裁s","creatorUrl": "https://space.bilibili.com/15385187","followerCount": 2047556,"followingCount": 92,"videoCount": 227,"level": 6,"sign": "做自由且快乐的自己~","sex": "女"},"creatorVideos": [{"url": "https://www.bilibili.com/video/BV13mt76GEfr/","bvid": "BV13mt76GEfr","title": "每 天 一 遍 🔥 烦 恼 拜 拜!","coverUrl": "https://i0.hdslb.com/bfs/archive/64c8c613267236c595ce27a7e52ebb36cc33be20.jpg","playCount": 2109736,"commentCount": 1499,"durationSeconds": 74,"publishedAt": "2026-09-02T04:25:00+00:00"}]}
Query and input reference
| Input | Type | Required | Default | Accepted values | Description |
|---|---|---|---|---|---|
startUrls | array | No* | prefill: Popular URL | Bilibili page URLs | Video, creator space, category, search, or bangumi URLs. |
searchQueries | array | No* | prefill: ["原神"] | free text | Keywords searched on Bilibili; each is paginated until maxItems. |
categories | array | No* | [] (prefill: ["popular"]) | popular, ranking, anime, movie, tv, variety, documentary, guochuang, entertainment, douga, music, dance, game, knowledge, tech, sports, life, food, fashion, cinephile | Built-in Bilibili sections to scrape. |
maxItems | integer | No | 0 | 0 = unlimited | Maximum primary videos from search, URLs, or categories. |
scrapeVideoDetails | boolean | No | false | true / false | Attach a videoDetails object per row. |
scrapeCreatorVideos | boolean | No | false | true / false | Attach a creatorVideos list per row. |
maxCreatorVideos | integer | No | 10 | 0 = all | Uploads attached per creator in creatorVideos. |
scrapeCreatorStats | boolean | No | false | true / false | Attach a creatorDetails object per row. |
proxyConfiguration | object | No | Apify RESIDENTIAL | proxy config | Proxy settings; residential recommended. |
*Provide at least one of startUrls, searchQueries, or categories. A minimal request and an advanced request:
{ "categories": ["popular"], "maxItems": 20 }
{"startUrls": [{ "url": "https://www.bilibili.com/video/BV1Kthg69E9K/" }],"searchQueries": ["原神"],"categories": ["popular"],"maxItems": 50,"scrapeVideoDetails": true,"scrapeCreatorVideos": true,"maxCreatorVideos": 10,"scrapeCreatorStats": true,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Retrieve the data through the API
- Start the Actor with a JSON input.
- Wait for the run to finish, or use the synchronous
?waitForFinish=endpoint when appropriate. - Read items from the run's default dataset.
- Paginate or export the dataset.
A Python example using the Apify client:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("datascrapers/bilibili-scraper").call(run_input={"categories": ["popular"], "maxItems": 20})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item["playCount"], item["creatorName"])
For other languages, use the generated API tab on the Actor page. Never place a real token in a URL or example.
Data quality and record handling
- Conditional fields —
videoDetails,creatorDetails, andcreatorVideosare present only when the corresponding option is enabled. PGC rows may omitbvidandaidin favor of season identifiers. - Completeness — listing-only rows omit the detail objects; individual counts and timestamps can be empty when the source does not expose them.
- Deduplication — within a run, videos are deduplicated by
bvid(oraid/ season id whenbvidis missing). Re-runs can repeat the same video; deduplicate across runs onbvidorurl. - Retries — individual items fail soft, so one failed request does not stop the run; residential proxies reduce blocking.
- Normalization —
publishedAtis UTC ISO-8601; counts are numeric;itemTypeis normalized tovideoorpgc. - Raw versus derived — all fields are source values; the Actor does not compute engagement rates or convert currencies.
Export and pipeline examples
| Destination | Recommended method | Typical use |
|---|---|---|
| PostgreSQL / Supabase | Dataset API or webhook consumer | Video and creator history storage |
| Google Sheets | Apify integration | Popular/Ranking snapshots for reporting |
| S3 / cloud storage | Scheduled export or integration | Daily trending archives |
| BI / analytics | Scheduled run + export | Engagement and creator trend analysis |
Pricing and cost examples
Billing is pay-per-event. Each primary video or season written to the dataset triggers the dataset-item ("Post") event; a one-time apify-actor-start event ($0.00005) is applied per run.
| Event | What counts | Rate (per 1,000) |
|---|---|---|
dataset-item (Post) | Each primary video or season saved | $2.00 |
video-details | Each row with a videoDetails object | $2.00 |
creator-details | Each row with a creatorDetails object | $1.50 |
creator-videos | Each nested upload in creatorVideos | $2.00 |
Higher Apify plan tiers apply a discount (per 1,000 posts): Bronze $1.90, Silver $1.80, Gold/Platinum/Diamond $1.70. Creator-details tiers are $1.40 / $1.30 / $1.20.
| Records | Estimated base cost |
|---|---|
| 1,000 posts (listing only) | $2.00 |
| 10,000 posts (listing only) | $20.00 |
| 1,000 posts with video details | $4.00 |
| 1,000 posts with creator details | $3.50 |
Estimates assume the standard tier and selected options; extras are billed only when enabled and data is attached. Failed rows and empty extras are not charged.
Limitations and responsible data use
- The Actor collects publicly accessible Bilibili.com video and creator data only.
- Play, like, and comment counts reflect the source at crawl time and change continuously.
- Some fields are conditional or empty (see Data quality).
- No historical snapshots are guaranteed unless you store the exported datasets yourself.
- You are responsible for complying with applicable privacy, contractual, and legal requirements when using the data.
Dataset questions
What does one dataset item represent?
One primary Bilibili video (itemType: "video") or PGC season (itemType: "pgc"), optionally enriched with a videoDetails object, a creatorDetails profile, and a nested creatorVideos list.
Which field should I use as a unique identifier?
Use bvid; fall back to aid (or the season id when bvid is absent) and url for PGC titles.
Are fields nullable or conditional?
Yes. videoDetails, creatorDetails, and creatorVideos are conditional on their respective options, and several identifier and count fields can be empty when the source does not expose them.
Can I retrieve the records as CSV or JSON?
Yes. Download JSON, CSV, Excel, or HTML from the Apify Console Storage tab, or pull JSON items from the Dataset API.
How do I paginate large datasets?
maxItems caps primary videos across all sources (0 = unlimited). Nested creatorVideos are stored on the same row and do not consume the cap; limit them with maxCreatorVideos.
What counts as a billable result?
Each primary video or season is one dataset-item charge. Enabling details adds video-details, creator-details, or creator-videos per attached row or nested upload.
Related datasets from Data Scrapers
- Red Note Scraper — Red Note (Xiaohongshu) posts and creator profiles; the closest Chinese social-video analogue for cross-platform trend research.
- TikTok Creator Stats — TikTok creator and video engagement data for short-video creator benchmarking.
- YouTube Channel Scraper — YouTube channel and video records for long-form content analytics.
- Instagram Post Scraper — Instagram post and engagement data for social content monitoring.
- Twitter X Profile Scraper — X/Twitter profile data for creator and audience research.
Data Scrapers support
Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, the required fields, the expected record volume, and your preferred delivery format.