How to use it: 3 steps
- Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
AIin Search keywords. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
Scrape public Bilibili data with no login. Search videos by keyword, get full stats for video links, collect up to 2,000 root comments per video, or read creator profiles and their latest videos. Each item is one clean row with views, likes, coins, favorites, danmaku, tags and more. A typical run with 20 rows takes about 5 seconds and costs $0.062 on the Free plan.
Data you get
- Videos: BV ID, av ID, title, URL, description, cover image, duration, publish time, author name and ID, views, likes, coins, favorites, shares, danmaku count, comment count, tags and category.
- Comments: comment ID, text, likes, reply count, user name, user ID, user level, created time, pinned flag and the video it belongs to.
- Creators: user ID, name, profile URL, public bio, level, followers, following, video count, total likes, official title and avatar URL.
- Status: one free row that lists inputs that were not found, invalid, duplicate or failed, with a reason for each.
Who uses it
China market researchers
See which topics get the most views on Bilibili.
Brand teams
Read what viewers say in comments about your product.
Influencer agencies
Build a creator shortlist with followers and total likes.
Price
Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.
| What you pay for | Price | When |
|---|---|---|
| Start fee | $0.006 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
| Data row | $0.0028 (from $0.0024 on paid Apify plans) | Charged for each saved video, comment or creator row. The status row is free. |
Examples
- One row: about $0.0088.
- 1,000 rows: about $2.81.
- Every day 100 rows, for 30 days: about $8.58 a month.
Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 1,700 rows.
Prices checked on 24 October 2026. See the current price on Apify.
Questions
Can I get replies to comments?
No. You get root comments and the danmaku count only.
Why do I get fewer search results than I asked for?
Bilibili had fewer results, or it reached its limit of 1,000 results.
Do I need to add my cookies?
No. The tool uses public guest access. Please do not add cookies.
Do I need a Bilibili account or cookies?
No. The Actor uses public guest access. Do not add your cookies.
Are BV and av IDs both supported?
Yes. BV1xx411c7mD, av2 and the full link point to the same video, and the Actor saves and charges it once.
Why did a search return fewer rows than maxItems?
Bilibili had fewer results for that keyword, or it reached its limit of 1,000 results.
Is the data the same as on the website?
Yes, it comes from the same public data. Counters change quickly, so values can differ a little minutes later.
Details
Step by step on Apify
- Open Input.
- Keep What to scrape as
search, Search keywords asAIand Max items as20. - Click Start.
- Open the Videos tab of the Output to see the rows. Open Run summary to check each input.
Use cases
| Task | Input | Key fields | Next step |
|---|---|---|---|
| Track a topic on Bilibili | search, several keywords, pubdate | title, views, publishedAt, tags | Compare topics by views and dates. |
| Compare video performance | video with a list of links | views, likes, coins, favorites, danmaku | Rank videos by engagement. |
| Study audience opinion | comments, hot, maxItems: 1000 | text, likes, createdAt | Run sentiment or keyword analysis. |
| Research creators | user with creator IDs | followers, videoCount, totalLikes, videos | Build a creator shortlist. |
Tips for better results
- Pick one mode per run: search, videos, comments or creators.
- BV and av IDs both work; duplicates are counted once.
- Send comment text to a translation or sentiment tool.
Limits and good to know
- Field names are this Actor's own (
views,likes,danmaku…). They are not a drop-in copy of other Bilibili scrapers' output - Bilibili search serves at most 1,000 results per keyword. Some keywords return fewer; the run summary warns about it
- A creator's public video list can be shorter than
videoCount, because Bilibili hides some videos - Comments mode collects root comments only. Replies are counted in
replyCountbut not collected. Danmaku text is not collected - Bilibili sometimes refuses requests from cloud IPs (HTTP 412). Creator video lists are refused more often than other pages. The Actor retries on a new proxy session up to 6 times within about one minute and keeps going after a single refused input. Two refused inputs in a row stop the run as a partial
SOURCE_ERRORwith all saved rows kept - The Actor waits 0.5 s between requests to stay polite. Large creator lists and comment runs take longer than search
- Counters change all the time. Keep
fetchedAtwith your data - Short
b23.tvlinks are not resolved. Open them in a browser and copy the full video link
Troubleshooting
| Symptom | Possible reason | Check | Action |
|---|---|---|---|
| Run fails with "Invalid input" | Missing list for the mode, or a value over a limit | The message in the run log | Use an example above and change one field at a time. |
NOT_FOUND, no data rows | Videos or creators do not exist or are hidden | The status row | Check the IDs in a browser. |
duplicate in the status row | The same video or creator was given twice (BV and av forms count as one) | The status row | Nothing to do; it was not charged twice. |
Partial CHARGE_LIMIT | Your maximum cost per run was reached | counts.chargedRows in Run summary | Raise the limit if you need more rows. |
Partial TIME_LIMIT | Too much work for the run timeout | Status message | Raise the timeout or split the input into several runs. |
Partial SOURCE_ERROR | Bilibili refused or failed repeatedly | http.blocked in Run summary | Run again later; keep the default Apify Proxy. |
coins or shares are null in search | Search lists do not carry these counters | fullStats is false | Set includeFullStats: true. |
| Other tabs show empty cells | Dataset views cannot filter rows by kind | type column | Filter by type in your export. |
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"type": "video",
"bvid": "BV1Lzpr6TELC",
"aid": 117437089450751,
"url": "https://www.bilibili.com/video/BV1Lzpr6TELC",
"title": "AI自制打针情景短片《母女打针》第二天",
"description": "视频已做合理化删减",
"thumbnailUrl": "https://i1.hdslb.com/bfs/archive/07188a8bef3c3146aaa5b3ea2b37186058221df4.jpg",
"durationSec": 321,
"publishedAt": "2026-10-14T03:23:59.000Z",
"authorMid": 113904740,
"authorName": "西瓜智造BOB",
"views": 2975,
"likes": 81,
"coins": null,
"favorites": 153,
"shares": null,
"danmaku": 4,
"comments": 27,
"tags": ["影视剪辑", "娱乐观察局", "AI", "剧情向", "电视剧", "国产", "情景", "医生", "母女", "短片"],
"category": "小剧场",
"source": "search",
"fullStats": false,
"input": "AI",
"searchKeyword": "AI",
"searchRank": 1,
"fetchedAt": "2026-10-14T13:03:47.027Z"
}Use it from code
Actor ID: cliqtomedia/bilibili-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/bilibili-scraper").call(run_input={
"mode": "search",
"keywords": [
"AI"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~bilibili-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode": "search", "keywords": ["AI"]}'# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("cliqtomedia/bilibili-scraper")
result = tool.invoke({"run_input": {"mode": "search", "keywords": ["AI"]}})
print(result)The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.
Input settings (10)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| What to scrape required | mode | string | "search" |
| Search keywords | keywords | array | ["AI"] |
| Video links or IDs | videoUrls | array | |
| Creator IDs or space links | userIds | array | |
| Max items per keyword, video or creator | maxItems | integer | 20 |
| Search sort order | searchOrder | string | "totalrank" |
| Comment sort order | commentSort | string | "hot" |
| Add full video stats (coins, shares) | includeFullStats | boolean | false |
| Include creator videos | includeUserVideos | boolean | true |
| Proxy | proxyConfiguration | object | {"useApifyProxy": true} |
Use cases with this tool
Each guide shows all the steps and the other tools.