How to Scrape Weibo and Bilibili Data in 2026 (No Login Required)
Weibo and Bilibili are two of the biggest public data sources on the Chinese internet — a microblog with a live hot-search board, and the largest video community with comments and danmaku (弹幕) overlay text. Both expose a lot of that data without requiring a login, which means you can build search, monitoring and research tooling on top of them without ever handling an account cookie. Here's how, grounded in what these actors actually return.
Scraping Bilibili (哔哩哔哩)
Bilibili Scraper covers five modes, all without login, cookie or API key:
| Mode | What you get | Input |
|---|---|---|
search | Videos matching keywords, with sort/length/date filters | searchQueries |
video_detail | Views, likes, coins, favorites, shares,
danmaku count, comment count, parts, hasSubtitles |
videoUrls (links or BV ids) |
video_comments | Top-level comments (popular or newest first) plus optional replies | videoUrls |
popular | The popular / trending board | — |
user_profile | Creator followers, following, video count, total likes, level, verification, bio | userIds |
Pricing is $0.001 per run plus $0.002 per row (video, comment, reply or creator), and
$0.01 per danmaku summary when includeDanmaku is on. A 50-video search with
comments or a 50-video danmaku pass each run to roughly a dollar; error rows are always
free.
{
"mode": "search",
"searchQueries": ["机械键盘"],
"maxResults": 50,
"sortOrder": "pubdate",
"includeComments": true,
"maxComments": 20
}
Two things to know before you plan a Bilibili project: subtitle and AI-subtitle text
is only served to logged-in users, so the actor reports whether tracks exist
(hasSubtitles) rather than downloading the text; and a creator's upload list
(their space page) is blocked by Bilibili's risk control without login — to find a
creator's videos, use search with their name instead. Search itself is
capped at roughly 1,000 results per keyword, so split broad topics into several
keywords or date windows.
Scraping Weibo (微博)
Weibo Scraper covers six modes, also without login or cookie:
| Mode | What you get | Input |
|---|---|---|
search | Posts from the 综合/实时/热门 tabs, merged and deduplicated | searchQueries |
hot_search | The live hot search board: rank, keyword, heat, label | — |
post_detail | Full text, counts, images, hashtags and author | postUrls |
post_comments | Comments, paged with Weibo's own cursor | postUrls |
user_profile | Followers, following, post count, verification, bio | userIds |
user_posts | A user's latest posts | userIds |
Pricing is $0.001 per run plus $0.003 per row. The honest limit: without a logged-in account, Weibo only serves the first result page — about 10 posts per search tab (up to roughly 30 unique posts per keyword per run) and about 10 latest posts per user. Comments, post details, profiles and the hot search board aren't limited this way. Schedule the actor hourly to build a continuous feed of new posts for a keyword instead of trying to get everything in one run:
{ "mode": "search", "searchQueries": ["小米", "比亚迪"],
"includeComments": true, "maxComments": 20 }
{ "mode": "hot_search", "maxResults": 50 }
Public data only
Neither actor logs in, ever. Comment and post rows carry only the author's public nickname and numeric id — no avatars, no location/IP-region tags, and no private fields. This isn't a detail to work around; it's the ceiling of what's available without authenticating as a user, and both actors are built to stay under it.
Running both from code
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
bili_run = client.actor("dheerajitbhu/bilibili-scraper").call(run_input={
"mode": "search", "searchQueries": ["原神"], "maxResults": 30,
})
for row in client.dataset(bili_run["defaultDatasetId"]).iterate_items():
print(row.get("type"), row.get("title") or row.get("text"))
weibo_run = client.actor("dheerajitbhu/weibo-scraper").call(run_input={
"mode": "hot_search", "maxResults": 20,
})
for row in client.dataset(weibo_run["defaultDatasetId"]).iterate_items():
print(row.get("rank"), row.get("keyword"), row.get("heat"))
Both actors run a daily self-test against the live sites, so if Bilibili or Weibo ever blocks every request in a run, the run is marked failed instead of quietly ending green with zero rows — which means your schedule's failure alert actually fires when something breaks.
Getting cheaper LLM input from either actor
If you're piping the output into an LLM rather than a spreadsheet, both actors
support "outputFormat": "compact", a lossless columnar JSON encoding that
cuts token count by roughly a quarter to two-fifths depending on row shape — see
our compact output benchmark for
the measured numbers on real Bilibili and Weibo exports.
Wrap-up
Both Bilibili and Weibo publish a surprising amount of structured data without needing you to log in — search, comments, trending boards and public profiles are all reachable. The practical limits are Weibo's first-page-only search (solved with a schedule) and Bilibili's login-gated subtitles and creator upload lists (solved by searching instead of browsing a profile). Try Bilibili Scraper and Weibo Scraper on Apify.