Bilibili Scraper: Video, Creator and Search Data in Python
Pull Bilibili videos by keyword, URL or creator ID: titles, view and like counts, duration, author stats. Plain HTTP, no cookies, no login required.
The actor referenced in this article. Pay only for results delivered.
Bilibili is the main long form video platform in China, with a creator economy and comment culture closer to early YouTube than to the short video apps. For anyone doing China market research, competitor content analysis, or creator partnership sourcing, it is the platform where the substantive video content lives.
Its data is also unusually accessible. Bilibili serves public video metadata, search results and creator statistics from JSON endpoints that do not require a login or cookies, which means no browser and no session management.
Try it live: Bilibili Scraper: Videos, Creators and Search. Pay only for results delivered, no result no charge.
The Bilibili Scraper runs over plain HTTP with no browser, which is why a keyword search returns in around five seconds and costs a fraction of a cent.
Three input modes
Keyword search. Pass keywords and get ranked search results per term, paginated to your cap. This is the mode for “what content exists about X”.
Video lookup. Pass videoUrls for specific videos you already know about. Use this to re-read metrics on a tracked set.
Creator feed. Pass creatorIds (the numeric uid) to get a creator’s uploads and profile stats. This is the mode for partnership sourcing and competitor channel tracking.
You can combine them in one run. Each mode emits its own record_type, so filter on that when reading the dataset.
Fields you get
| Field | Notes |
|---|---|
bvid | Bilibili’s stable video id, the key to store |
aid | Legacy numeric id, still present in some responses |
title, description | As published |
author_name, author_uid | Creator, with the uid for follow up queries |
duration_seconds | Parsed to an integer |
published_at | Publication timestamp |
| view, like and comment counts | Engagement metrics where the endpoint returns them |
Finding creators in a niche
from apify_client import ApifyClient
from collections import defaultdict
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("themineworks/bilibili-scraper").call(run_input={
"keywords": ["home coffee brewing", "espresso"],
"maxResultsPerKeyword": 200,
})
by_creator = defaultdict(list)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
if row.get("record_type") != "video-search-result":
continue
by_creator[(row["author_uid"], row["author_name"])].append(row)
ranked = sorted(by_creator.items(), key=lambda kv: len(kv[1]), reverse=True)
for (uid, name), vids in ranked[:10]:
print(f"{name:<24} uid={uid} {len(vids)} videos in results")
Creators appearing repeatedly across searches in a niche are the ones with depth in it, which is a better partnership signal than a single viral video.
A note on stopping conditions
The actor breaks out of a keyword when a page returns nothing new, and caps at 25 pages. Bilibili’s search recycles results in the deep tail, so pushing further returns duplicates you would pay for twice. If you need more depth on a topic, use several narrower keywords rather than one broad keyword paginated further.
Pricing
Pay per result delivered, from $1.20 per 1,000 on higher Apify plans and $1.80 per 1,000 on the free plan. Search, video detail and creator rows are priced identically, so the quoted rate holds whatever mix you request. Keywords that return nothing are not charged.
Use it from an AI agent
https://mcp.apify.com/?tools=themineworks/bilibili-scraper
Related
- Weibo Scraper for Chinese microblog posts and profiles
- YouTube Channel Scraper for the equivalent western creator data
- TikTok Shop Products for social commerce listings
Explore the scraper referenced in this article: inputs, outputs, and pricing, then run it on Apify.
Frequently asked questions
Do I need a Bilibili account or cookies? +
No. Public video metadata, search results and creator stats are readable without a session. The actor sends no cookies at all, which also means there is no session to expire mid run.
What is a bvid? +
Bilibili's public video identifier, the BV string in a video URL such as BV1xx411c7mD. It is stable, so it is the right key to store if you are tracking a video over time.
Can I track a creator's uploads over time? +
Yes. Pass creator IDs and run it on a schedule. Each run returns their current uploads, so storing by bvid lets you diff for new videos and re-read view counts on existing ones.
GitHub Repo Intelligence: Vet Any Dependency Before You Add It
Pull stars, forks, contributors, commit recency, latest release and full README for any public GitHub repo in one call. No token required, MCP-ready for agents doing dependency checks.
SEEK Jobs Scraper: Australian Job Listings in Python
How to pull SEEK.com.au job listings by keyword, location, work type and salary band in Python: title, company, salary range, apply link, no login or API key.
Weibo Scraper: Posts and Profiles by User ID
Pull Weibo posts and profile data by numeric user ID: text, repost and like counts, images, follower stats. Why a China residential IP is mandatory, not optional.