Bilibili Scraper avatar

Bilibili Scraper

Under maintenance

Pricing

from $1.70 / 1,000 posts

Go to Apify Store
Bilibili Scraper

Bilibili Scraper

Under maintenance

Delivers 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

Farhan Ali

Maintained by Community

Actor 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

PropertyValue
SourceBilibili.com
Record unitOne primary video or PGC season
Input methodsstartUrls, searchQueries, categories
Main identifiersbvid, aid, url
DeliveryApify Dataset and API
Export formatsJSON, CSV, Excel, HTML, XML
Update modelFresh records per Actor run
PricingPay-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 until maxItems is 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:

  • scrapeVideoDetails attaches a videoDetails object (description, tags, coins, favorites, shares, danmaku).
  • scrapeCreatorStats attaches a creatorDetails profile (followers, following, upload count, level, bio, sex).
  • scrapeCreatorVideos attaches a nested creatorVideos list; maxCreatorVideos (default 10) limits uploads per creator, and 0 collects 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

FieldTypeNullableDescriptionExample
itemTypestringNoRecord kind: video or pgc"video"
urlstringNoPublic Bilibili URL for this primary item"https://www.bilibili.com/video/BV13mt76GEfr/"
bvidstringYesBV id"BV13mt76GEfr"
aidintegerYesNumeric archive id117199473809637
titlestringNoVideo or season title"每 天 一 遍 🔥 烦 恼 拜 拜!"
coverUrlstringYesCover image URL"https://i0.hdslb.com/bfs/archive/..."
playCountintegerYesPlay count2109736
likeCountintegerYesLike count63082
commentCountintegerYesComment count1499
durationSecondsintegerYesDuration in seconds74
publishedAtstringYesPublish time (UTC ISO-8601)"2026-09-02T04:25:00+00:00"
creatorNamestringYesUploader display name"兔总裁s"
creatorUrlstringYesUploader space URL"https://space.bilibili.com/15385187"
sourceTypestringNoHow this item was discovered"category"
sourceValuestringYesDiscovery source value"popular"
videoDetailsobjectYesExtra video/season fields; present only when scrapeVideoDetails is onsee below
creatorDetailsobjectYesCreator profile; present only when scrapeCreatorStats is onsee below
creatorVideosarrayYesThat creator's uploads; present only when scrapeCreatorVideos is onsee 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

InputTypeRequiredDefaultAccepted valuesDescription
startUrlsarrayNo*prefill: Popular URLBilibili page URLsVideo, creator space, category, search, or bangumi URLs.
searchQueriesarrayNo*prefill: ["原神"]free textKeywords searched on Bilibili; each is paginated until maxItems.
categoriesarrayNo*[] (prefill: ["popular"])popular, ranking, anime, movie, tv, variety, documentary, guochuang, entertainment, douga, music, dance, game, knowledge, tech, sports, life, food, fashion, cinephileBuilt-in Bilibili sections to scrape.
maxItemsintegerNo00 = unlimitedMaximum primary videos from search, URLs, or categories.
scrapeVideoDetailsbooleanNofalsetrue / falseAttach a videoDetails object per row.
scrapeCreatorVideosbooleanNofalsetrue / falseAttach a creatorVideos list per row.
maxCreatorVideosintegerNo100 = allUploads attached per creator in creatorVideos.
scrapeCreatorStatsbooleanNofalsetrue / falseAttach a creatorDetails object per row.
proxyConfigurationobjectNoApify RESIDENTIALproxy configProxy 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

  1. Start the Actor with a JSON input.
  2. Wait for the run to finish, or use the synchronous ?waitForFinish= endpoint when appropriate.
  3. Read items from the run's default dataset.
  4. Paginate or export the dataset.

A Python example using the Apify client:

from apify_client import ApifyClient
client = 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, and creatorVideos are present only when the corresponding option is enabled. PGC rows may omit bvid and aid in 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 (or aid / season id when bvid is missing). Re-runs can repeat the same video; deduplicate across runs on bvid or url.
  • Retries — individual items fail soft, so one failed request does not stop the run; residential proxies reduce blocking.
  • Normalization — publishedAt is UTC ISO-8601; counts are numeric; itemType is normalized to video or pgc.
  • Raw versus derived — all fields are source values; the Actor does not compute engagement rates or convert currencies.

Export and pipeline examples

DestinationRecommended methodTypical use
PostgreSQL / SupabaseDataset API or webhook consumerVideo and creator history storage
Google SheetsApify integrationPopular/Ranking snapshots for reporting
S3 / cloud storageScheduled export or integrationDaily trending archives
BI / analyticsScheduled run + exportEngagement 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.

EventWhat countsRate (per 1,000)
dataset-item (Post)Each primary video or season saved$2.00
video-detailsEach row with a videoDetails object$2.00
creator-detailsEach row with a creatorDetails object$1.50
creator-videosEach 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.

RecordsEstimated 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.

  • 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.