The Mine Works
← All posts
tutorial August 16, 2026 · 3 min read

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.

Try the scraper

The actor referenced in this article. Pay only for results delivered.

View the scraper →

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

FieldNotes
bvidBilibili’s stable video id, the key to store
aidLegacy numeric id, still present in some responses
title, descriptionAs published
author_name, author_uidCreator, with the uid for follow up queries
duration_secondsParsed to an integer
published_atPublication timestamp
view, like and comment countsEngagement 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 Actor

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.