Answers
How do I find Bilibili creators (UP主) in a niche for sponsorships?
Short answer
Search Bilibili for your niche's keywords, collect a few hundred videos, group them by uploader and rank uploaders by their typical views and how recently they posted. Ten pages for each of five keywords is $0.10 at $0.002 a page. Follower counts are not available here, so confirm the shortlist on the creator's page or on Bilibili's official sponsorship platform.
A mechanical keyboard brand wants ten mid-sized tech creators for a launch: big enough to move sales, small enough to answer a DM and fit the budget. The fastest honest way to a shortlist is to let the content point to the creators. Search the topics your buyers watch, see who keeps showing up with videos that get watched, and only then look at the people.
The method
- Search the niche. Run Bilibili video search for five to ten keywords your buyers would type (客制化键盘, 键盘测评, 轴体推荐...). Use
sort=most_viewedto see who wins the topic andsort=latestto see who is active now. - Group by uploader. Every result has
author.id(the creator's mid) andauthor.name. Count each creator's videos in your results and take the median views. - Rank. Favour creators with several videos in the niche, a steady median rather than one viral hit, and a recent
published_at. - Check engagement. For the top 30 videos, Bilibili video detail with
view=fulladds coins and danmaku count. A video with many views but very few coins or comments deserves a second look.
Cost
| Step | Calls | Cost |
|---|---|---|
| 5 keywords × 10 pages | 50 | $0.10 |
| Same, both sorts | 100 | $0.20 |
| Plus detail on 30 top videos | 100 + 30 | {{cost:bilibili.videos.search100+bilibili.videos.get30}} |
Script
import os, statistics, collections, requests
URL = "https://api.okdata.online/v1/bilibili/videos/search"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
KEYWORDS = ["客制化键盘", "键盘测评", "轴体推荐"]
by_up = collections.defaultdict(list)
for kw in KEYWORDS:
for sort in ("most_viewed", "latest"):
cursor = None
for _ in range(5):
params = {"query": kw, "sort": sort, **({"cursor": cursor} if cursor else {})}
body = requests.get(URL, headers=H, params=params, timeout=60).json()
if body["code"] != "ok":
break
for v in body["data"]["items"]:
by_up[(v["author"]["id"], v["author"]["name"])].append(v)
if not body["page"]["has_more"]:
break
cursor = body["page"]["next_cursor"]
rows = []
for (mid, name), vids in by_up.items():
unique = {v["id"]: v for v in vids}.values()
views = [v["metrics"]["views"] or 0 for v in unique]
rows.append((len(views), statistics.median(views), max(v["published_at"] for v in unique), name, mid))
for n, med, last, name, mid in sorted(rows, reverse=True)[:30]:
print(f"{name} videos={n} median_views={med:,.0f} last={last[:10]} https://space.bilibili.com/{mid}")
What this cannot tell you
- There is no creator profile endpoint for Bilibili in the catalog, so follower counts are missing;
author.followersis null andmeta.unavailablesays so. - There is no endpoint that lists one creator's videos. You only see the videos that matched your keywords, which is a sample of their work.
- Views in search results are lifetime totals. A two-year-old video will look stronger than last week's; compare creators on recent videos.
The official route
Bilibili's own creator marketplace, 花火 (huahuo.bilibili.com), shows verified follower counts, audience profiles and quoted prices, and brand deals on Bilibili are expected to go through it anyway. Use the search method above to decide who to look up there. Agencies and MCNs can also hand you a list, at a fee. For the same workflow on Douyin, Xiaohongshu and TikTok, see the creator discovery guide.
Updated