# Bilibili Scraper 哔哩哔哩 \[From $1] Videos, Comments & Danmaku (`memo23/bilibili-scraper`) Actor

\[From $1 per 1000 results] Bilibili (哔哩哔哩, B站) scraper with no login: search videos, list a creator's uploads, views, likes, coins and shares, comments with replies, danmaku, creator followers, trending and hot searches. Videos $5, comments $2, danmaku $1 per 1,000.

- **URL**: https://apify.com/memo23/bilibili-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Social media, Videos
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 videos

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Bilibili Scraper 哔哩哔哩 — Videos, Comments, Danmaku, Subtitles & Creators

Scrape **Bilibili (哔哩哔哩, B站)**: search videos by keyword, list any creator's uploads, and get views, likes, coins, favorites and shares, **comments with replies**, **danmaku (bullet comments)**, **subtitles and AI transcripts (字幕)**, creator followers, the trending list and hot search terms. No login, no cookies.

| Input | Row(s) emitted |
|---|---|
| Search keyword | 50 videos per page, with sort, length and date filters |
| Creator (UID or `space.bilibili.com` link) | Their uploads, 50 per page, newest or most played |
| Creator-search keyword | Creators (UP主) matching a name or topic, 20 per page, with followers |
| `creatorSearchKeywords` | Videos inside a creator matching a keyword |
| `includePosts` | The creator's feed posts (动态): text, images, linked video, likes |
| `includeFavorites` | Videos in the creator's public favorite folders |
| Live room id or link | The room's title, status, area, followers; with `includeStreamUrl`, the stream address of a room that is on air |
| Post id or link | One feed post (动态): text, images, linked video, likes, comments, reposts |
| Video link, BV id, av id or `b23.tv` link | The full video record |
| `includeTrending` | Bilibili's site-wide popular list, 20 per page |
| `includeHotSearch` | The 50 terms trending in search right now, with heat scores |
| `includeComments` / `includeReplies` | One row per comment and reply, hottest first |
| `includeDanmaku` | One row per bullet comment: text, position in the video, colour, time |
| `includeSubtitles` | The video's transcript on its own row: plain text plus timed segments, from the uploader's subtitles or Bilibili's AI transcript |
| `includeCreatorProfile` | One creator row: followers, level, verification, video count |

### Why Use This Scraper?

- **The full engagement set.** Views, likes, coins (投币), favorites, shares, comment count and danmaku count, e.g. `views: 2399401, likes: 90821, coins: 19574`.
- **Comments with every reply.** Author, level, likes and time for each comment, and the whole reply thread under it, not just the first two.
- **Transcripts without a second actor.** `includeSubtitles` puts the subtitle track (or Bilibili's AI transcript, `ai-zh`) on the video row as `subtitleText` and timed `subtitleSegments`. Free until 3 Nov 2026, then $0.003 per transcript found; videos without one are not charged.
- **Danmaku as data.** Each bullet comment with its second in the video, colour, display mode and send time, ready for timeline and sentiment analysis.
- **Search that filters.** Relevance, most played, newest, most danmaku or most favorited; by length; by publish window.
- **Creator intelligence.** Followers, following, level, verification title and upload count, plus the whole upload history page by page.
- **Creator discovery.** Find creators by keyword with follower counts, then pull their full profile, uploads and posts in the same run.
- **Posts and favorites.** A creator's feed posts (text, images, reposts, linked videos, likes) and the videos they saved to public favorite folders.
- **Trending and hot search.** What Bilibili is watching and searching right now.
- **Only-new monitoring.** Watch creators or keywords on a schedule; videos already delivered are skipped and not billed.
- **Pay only for what comes back.** Each row type is its own event, and the run stops at your spending limit.

### Overview

This actor is for brand and marketing teams, game and anime publishers, researchers and data teams who need **Bilibili** data without an account, cookies or a China-based proxy.

Rows are told apart by `type`:

- `video`: from search (`source: "search"`), a creator's uploads (`"creator"`), a search inside a creator (`"creator-search"`), a creator's favorites (`"favorites"`), the trending list (`"trending"`) or a pasted link (`"url"`).
- `creator`: profile for an entry in **Creators**, or a creator found by keyword (`source: "search"`).
- `post`: one feed post (动态), from a creator's feed or a pasted post link; `kind` is `video`, `image`, `text`, `repost`, `article` or `live`.
- `live-room`: one live room.
- `comment` and `reply`: linked to their video by `bvid`; replies to their comment by `parentCommentId`.
- `danmaku`: linked by `bvid` and `cid`.
- `hot-search`: one trending search term.

List rows (search, creator) already carry views, comments and danmaku count. Turn on **Full details** to add coins, shares, likes, parts and resolution to each, at the same price per video.

### Supported Inputs

| Input | Pattern | Example |
|---|---|---|
| Keyword | any topic | `人工智能`, `原神` |
| Creator | numeric UID or space link | `546195`, `https://space.bilibili.com/546195` |
| Video link | `bilibili.com/video/BV…` | `https://www.bilibili.com/video/BV1PTHS6MEC5` |
| BV id / av id | `BV…` or `av…` | `BV17x411w7KC`, `av170001` |
| Short link | `b23.tv/…` | resolved to its video automatically |
| Creator-search keyword | any name or topic | `美食` |
| Live room | room id or `live.bilibili.com` link | `22816111`, `https://live.bilibili.com/22816111` |
| Post | post id, `t.bilibili.com` or `bilibili.com/opus` link | `https://t.bilibili.com/1232186887046692873` |

**Limits to know:** comments come hottest first (Bilibili does not serve a time-ordered list here). Danmaku covers the first part of a multi-part video and Bilibili serves up to about 600 per part. Video file download and subtitles are not included.

### Use Cases

| Who | What they do with the rows |
|---|---|
| Game / anime / consumer brands | Track videos and comments about a title or product |
| KOL / influencer agencies | Compare creators by followers, upload cadence and engagement |
| Market and trend research | Trending list and hot searches on a schedule |
| Community and sentiment teams | Comments, replies and danmaku around a launch |
| Content strategists | See what performs for a keyword: views, coins, favorites |
| LLM / RAG pipelines | Titles, descriptions, tags, comments and danmaku as text |

### How It Works

<p align="center">
  <img src="https://api.apify.com/v2/key-value-stores/ghgK4Y4i4fDzGyljm/records/how-it-works-bilibili.png" alt="How the Bilibili scraper works" width="900" />
</p>

1. Keywords are searched 50 per page; creators are listed 50 per page; links, BV ids and av ids are looked up directly.
2. Optional: each listed video is looked up in full.
3. Optional: comments are paged in hottest first, with the full reply thread under each.
4. Optional: danmaku is fetched and split into one row per bullet comment.
5. Monitoring skips videos already delivered before any data is fetched for them.

### Input Configuration

| Field | Type | Notes |
|---|---|---|
| `keywords` | `string[]` | Video search terms. |
| `creators` | `string[]` | UIDs or `space.bilibili.com` links. |
| `videoUrls` | `string[]` | Video links, BV ids, av ids, `b23.tv` links. |
| `creatorKeywords` | `string[]` | Find creators by name or topic (20 per page). |
| `liveRooms` | `string[]` | Live room ids or links. |
| `includeStreamUrl` | boolean | Adds `streamUrl` (FLV), `streamQuality` and `streamUrlExpiresAt` to rooms that are on air. The address is signed and expires about an hour later. No extra charge. |
| `postUrls` | `string[]` | Post ids or links; one `post` row each. |
| `includeTrending` | boolean | The site-wide popular list. |
| `includeHotSearch` | boolean | The 50 current hot search terms. |
| `searchOrder` | `totalrank` | `click` | `pubdate` | `dm` | `stow` | Relevance, most played, newest, most danmaku, most favorited. |
| `searchDuration` | `all` | `under10` | `10to30` | `30to60` | `over60` | Length filter. |
| `publishedWithinDays` | integer | Only search results from the last N days. |
| `creatorVideoOrder` | `pubdate` | `click` | Newest or most played uploads first. |
| `maxPages` | integer | Pages per keyword and creator (50 each) and of the trending list (20 each). Default `3`. |
| `includeVideoDetails` | boolean | Full record for listed videos, same price. |
| `includeCreatorProfile` | boolean | Full creator row, for listed creators and for creators found by keyword (billed `creator-profile`). |
| `includeCreatorVideos` | boolean | A creator's uploads. Default on. |
| `creatorSearchKeywords` | `string[]` | Single-word keywords searched inside each creator's uploads. |
| `includePosts` / `maxPostsPerCreator` | boolean / integer | Feed posts, about 12 per page. Default 24. |
| `includeFavorites` | boolean | Videos in the creator's public favorite folders. |
| `includeComments` / `maxCommentsPerVideo` | boolean / integer | Comment rows, 20 per page. Default 20. |
| `includeReplies` / `maxRepliesPerComment` | boolean / integer | Reply rows. Default 20. |
| `includeDanmaku` / `maxDanmakuPerVideo` | boolean / integer | Danmaku rows. Default 600. |
| `includeSubtitles` | boolean | Adds `subtitleText`, `subtitleSegments`, `subtitleLanguage`, `subtitleLanguages`, `isAiSubtitle` to each video row. First part only. From 4 Nov 2026 each transcript found is billed `subtitle` ($0.003); videos without one cost nothing extra. Default off. |
| `maxItems` | integer | Cap on video rows. Default `50`; free-tier runs cap at `100`. |
| `monitorMode`, `monitorStateName`, `emitBaseline`, `includeUnchanged`, `resetMonitoringState` | | Only-new monitoring. |

#### Example input

Most played videos on a topic from the past month, with comments:

```json
{
  "keywords": ["人工智能"],
  "searchOrder": "click",
  "publishedWithinDays": 30,
  "includeComments": true,
  "maxCommentsPerVideo": 40,
  "includeReplies": true,
  "maxItems": 50
}
```

Daily watch of two creators, only new uploads, with full details:

```json
{
  "creators": ["546195", "https://space.bilibili.com/3546824512112942"],
  "includeCreatorProfile": true,
  "includeVideoDetails": true,
  "monitorMode": true,
  "monitorStateName": "creator-watch",
  "maxPages": 1
}
```

One video with comments and danmaku:

```json
{
  "videoUrls": ["https://www.bilibili.com/video/BV1PTHS6MEC5"],
  "includeComments": true,
  "includeReplies": true,
  "includeDanmaku": true
}
```

Find creators in a niche and profile them:

```json
{ "creatorKeywords": ["美食"], "includeCreatorProfile": true, "maxPages": 2 }
```

A creator's posts and everything they uploaded about one topic:

```json
{
  "creators": ["546195"],
  "includeCreatorVideos": false,
  "creatorSearchKeywords": ["游戏"],
  "includePosts": true,
  "maxPostsPerCreator": 50
}
```

Trending now:

```json
{ "includeTrending": true, "includeHotSearch": true, "maxItems": 40, "maxPages": 2 }
```

### Output Overview

One dataset row per video, creator, post, live room, comment, reply, danmaku or hot search term. The dataset has **Videos**, **Creators**, **Posts**, **Live rooms**, **Comments & replies**, **Danmaku** and **Hot search** tabs. Monitoring adds `changeType` (`new` / `unchanged`).

### Output Samples

Creator video with full details (live run):

```json
{
  "type": "video",
  "source": "creator",
  "bvid": "BV1aZpw6DEKJ",
  "aid": "117393435138792",
  "cid": "42511303711",
  "url": "https://www.bilibili.com/video/BV1aZpw6DEKJ",
  "title": "第一次去美国，被吓到了……",
  "description": "暴雪嘉年华真好玩！！",
  "creatorId": "546195",
  "creatorName": "老番茄",
  "publishedAt": "2026-10-06T12:28:51.000Z",
  "durationSeconds": 689,
  "views": 2399401,
  "likes": 90821,
  "coins": 19574,
  "favorites": 15477,
  "shares": 2919,
  "comments": 1771,
  "danmakuCount": 3470,
  "isOriginal": true,
  "partCount": 1,
  "width": 3840,
  "height": 2160,
  "coverUrl": "https://i0.hdslb.com/bfs/archive/ebc616f717a9c799243e57c2129f095ddec81eab.jpg"
}
```

Creator:

```json
{
  "type": "creator",
  "creatorId": "546195",
  "name": "老番茄",
  "url": "https://space.bilibili.com/546195",
  "bio": "新浪微博：_老番茄_",
  "followers": 20828979,
  "following": 6,
  "level": 6,
  "videoCount": 679,
  "isVerified": true,
  "verifiedTitle": "2025百大UP主、2025年度商业影响力奖UP主、2022年度联合创作奖UP主",
  "isVip": true,
  "vipLabel": "年度大会员"
}
```

Comment and a reply under it:

```json
{
  "type": "comment",
  "bvid": "BV1PTHS6MEC5",
  "commentId": "320142686144",
  "author": "你赢了啊Q",
  "authorLevel": 2,
  "text": "我觉得你们还是先别研发新游戏了，你们先把运营游戏的理念先搞懂…",
  "likes": 446,
  "replyCount": 11,
  "postedAt": "2026-10-09T05:49:55.000Z"
}
```

```json
{
  "type": "reply",
  "bvid": "BV1PTHS6MEC5",
  "commentId": "320145135536",
  "parentCommentId": "320142686144",
  "author": "归问叁秋",
  "authorLevel": 4,
  "text": "以前玩过猫和老鼠和哈利波特，后来都退游了",
  "likes": 2,
  "postedAt": "2026-10-09T06:25:49.000Z"
}
```

Danmaku:

```json
{
  "type": "danmaku",
  "bvid": "BV1PTHS6MEC5",
  "cid": "42560719352",
  "danmakuId": "2218327074841268736",
  "text": "封面看成三角洲了，还有救吗？",
  "videoTimeSeconds": 0.506,
  "mode": "top",
  "fontSize": 25,
  "color": "#e70012",
  "sentAt": "2026-10-09T08:59:54.000Z"
}
```

Post (a repost with text):

```json
{
  "type": "post",
  "postId": "1248889675504943123",
  "url": "https://t.bilibili.com/1248889675504943123",
  "kind": "repost",
  "creatorId": "546195",
  "creatorName": "老番茄",
  "publishedAt": "2026-09-17T04:09:47.000Z",
  "text": "等了这么久终于上线了！！！游戏里有我的本体，大家来游戏里抓我吧！",
  "likes": 5189,
  "comments": 101,
  "reposts": 4,
  "originalPostId": "1248856252131311745",
  "originalCreatorName": "闪耀吧噜咪"
}
```

Creator found by keyword:

```json
{
  "type": "creator",
  "source": "search",
  "keyword": "美食",
  "creatorId": "491461718",
  "name": "吮指美食研究员",
  "url": "https://space.bilibili.com/491461718",
  "followers": 213546
}
```

Live room:

```json
{
  "type": "live-room",
  "roomId": "22816111",
  "url": "https://live.bilibili.com/22816111",
  "creatorId": "1437582453",
  "title": "云顶新手福利还有吗",
  "status": "replay",
  "followers": 887536,
  "online": 0,
  "area": "虚拟Gamer",
  "parentArea": "虚拟主播"
}
```

Hot search term:

```json
{ "type": "hot-search", "rank": 1, "keyword": "Kyxsan称NiKo此前评价并非全貌", "heatScore": 2218961 }
```

Video row with `includeSubtitles` (live run 20 Oct 2026, segments shortened):

```json
{
  "type": "video",
  "source": "search",
  "keyword": "HK416",
  "bvid": "BV1F4Ja6CER5",
  "title": "逃离塔科夫 实验室改枪HK416",
  "subtitleLanguage": "ai-zh",
  "subtitleLanguages": ["ai-zh"],
  "isAiSubtitle": true,
  "subtitleText": "这局我们将在实验室改制\n把HK416\n配件和子弹都将在这个高强度的途中找\n…",
  "subtitleSegments": [
    { "from": 0.12, "to": 1.92, "text": "这局我们将在实验室改制" },
    { "from": 1.92, "to": 3.02, "text": "把HK416" }
  ]
}
```

A video with no subtitle track keeps the row and gets `subtitleText: null` and empty `subtitleSegments`.

### Key Output Fields

| Group | Fields |
|---|---|
| Identity | `type`, `source`, `bvid`, `aid`, `cid`, `url`, `keyword`, `input` |
| Video | `title`, `description`, `tags`, `category`, `publishedAt`, `durationSeconds`, `coverUrl`, `isOriginal`, `partCount`, `parts`, `width`, `height` |
| Engagement | `views`, `likes`, `coins`, `favorites`, `shares`, `comments`, `danmakuCount` |
| Creator on a video | `creatorId`, `creatorName`, `creatorAvatar` |
| Creator row | `name`, `bio`, `followers`, `following`, `level`, `videoCount`, `isVerified`, `verifiedTitle`, `isVip` |
| Comment / reply | `commentId`, `parentCommentId`, `author`, `authorId`, `authorLevel`, `text`, `likes`, `replyCount`, `postedAt`, `likedByCreator`, `repliedByCreator` |
| Subtitles | `subtitleText`, `subtitleSegments` (`from`, `to`, `text`), `subtitleLanguage`, `subtitleLanguages`, `isAiSubtitle` |
| Danmaku | `danmakuId`, `text`, `videoTimeSeconds`, `mode`, `color`, `fontSize`, `sentAt`, `senderHash` |
| Post | `postId`, `url`, `kind`, `text`, `title`, `images`, `video`, `likes`, `comments`, `reposts`, `originalPostId`, `originalCreatorName`, `publishedAt`; `topic` on posts fetched by link |
| Favorites | `favoritedBy`, `favoritedAt`, `folderId`, `folderName` (on video rows) |
| Live room | `roomId`, `url`, `title`, `status`, `liveSince`, `followers`, `online`, `area`, `parentArea`, `tags`, `coverUrl`; with `includeStreamUrl`: `streamUrl`, `streamQuality`, `streamUrlExpiresAt` |
| Hot search | `rank`, `keyword`, `displayName`, `heatScore`, `searchUrl` |
| Monitor | `changeType`, `scrapedAt` |

### FAQ

**Do I need a Bilibili account, cookies or a proxy?**
No.

**Which fields do list rows have, and which need Full details?**
Search rows have views, likes, favorites, comments, danmaku count, tags and category. Creator rows have views, comments and danmaku count. `coins`, `shares`, parts and resolution come with Full details, and video links always return everything.

**Can I get comments newest first?**
No. Bilibili serves this list hottest first only.

**How many danmaku can I get per video?**
Up to about 600 for the first part, which is what Bilibili serves without a login.

**Does monitoring charge for videos I already have?**
No. Already-delivered videos are skipped before anything is fetched for them.

**Can I search live rooms or articles by keyword?**
Not yet: Bilibili's search returns only bare ids for those, and there is no list of rooms by category. Live rooms work by room id or link.

**Can it get subtitles or a transcript?**
Yes. Turn on `includeSubtitles`. You get the uploader's subtitles when there are any, otherwise Bilibili's AI transcript. Many short or music videos have neither; those rows keep `subtitleText: null`.

**Can it download the video file?**
Not in this actor.

### What makes this richer than the competition

| Capability | Other Bilibili actors | This actor |
|---|---|---|
| Subtitles / AI transcript | Separate transcript actors | `includeSubtitles`, on the video row, $0.003 per transcript found |
| Comments with the whole reply thread | Top-level comments, or replies capped | Every reply, `includeReplies` |
| Danmaku | Often a sample or a premium event | Up to ~600 per video at $1 per 1,000 |
| Creator feed posts (动态), favorites, live rooms | Rarely | Built in |
| Creator discovery by keyword | Rarely | `creatorKeywords` |
| Hot search terms with heat | Rarely | `includeHotSearch` |
| Only-new monitoring | Some | `monitorMode`, already-seen videos are not billed |
| Price per video | $3.50 to $20 per 1,000 | $5 per 1,000, comments $2, danmaku $1 |

### Pricing

| Event | When | Price |
|---|---|---|
| Actor start | Once per run (per GB of memory) | $0.005 |
| Video | Each video row, with or without full details | $0.005 |
| Comment | Each comment or reply | $0.002 |
| Danmaku | Each bullet comment | $0.001 |
| Subtitle | Each video whose transcript is found with `includeSubtitles` (from 4 Nov 2026; free before) | $0.003 |
| Creator profile | Each full creator profile | $0.005 |
| Creator search result | Each creator found by keyword (when not upgraded to a full profile) | $0.002 |
| Post | Each creator feed post | $0.002 |
| Live room | Each live room | $0.003 |
| Hot search term | Each hot search term | $0.001 |

Nothing is charged for rows that do not come back, and the run stops at your maximum charge.

### Support

Found a bug or need a field? Open a ticket on the [Issues](https://apify.com/memo23/bilibili-scraper/issues) tab.

### Additional Services

Need this data delivered somewhere specific, or another China platform covered? Get in touch through the Apify Console.

### Explore More Scrapers

China social in this family: [WeChat Official Accounts](https://apify.com/memo23/wechat-official-account-scraper), [WeChat Channels](https://apify.com/memo23/wechat-channels-scraper), [Douyin](https://apify.com/memo23/douyin-scraper), [Xiaohongshu / RedNote](https://apify.com/memo23/xiaohongshu-all-in-one-scraper), [Weibo](https://apify.com/memo23/weibo-scraper), [Zhihu](https://apify.com/memo23/zhihu-scraper). Full list at [apify.com/memo23](https://apify.com/memo23).

### 🤖 For AI Agents & LLM Apps

Compact reference for agents calling this actor via the [Apify MCP server](https://mcp.apify.com) or the Apify API (actor: `memo23/bilibili-scraper`).

**Purpose:** Bilibili videos by keyword, creator or link; comments with replies; danmaku; subtitles / AI transcripts; creator profiles; trending list and hot search terms.

**Minimal inputs:**

```json
{ "keywords": ["人工智能"], "maxItems": 20, "maxPages": 1 }
```

```json
{ "creators": ["546195"], "includeCreatorProfile": true, "maxItems": 50 }
```

```json
{ "videoUrls": ["BV1PTHS6MEC5"], "includeComments": true, "includeDanmaku": true }
```

**Output:** rows with `type` = `video` | `creator` | `post` | `live-room` | `comment` | `reply` | `danmaku` | `hot-search`. Comments, replies and danmaku link to their video by `bvid`.

**Behaviors an agent should know:**

- Always set `maxItems` (video rows). Comments, replies and danmaku have their own caps.
- Danmaku is billed per row; cap it with `maxDanmakuPerVideo` when you only need a sample.
- Comments come hottest first only.
- `includeSubtitles: true` adds `subtitleText` (plain transcript) to each video row; check for null, many videos have none.
- `monitorMode` skips videos already delivered, unbilled.
- Billing: $0.005 start + $0.005 per video + $0.002 per comment or reply + $0.001 per danmaku + $0.003 per subtitle transcript found (from 4 Nov 2026) + $0.005 per creator profile + $0.002 per creator found by keyword + $0.002 per post + $0.003 per live room + $0.001 per hot search term.

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Shanghai Bilibili Technology Co., Ltd. (Bilibili / 哔哩哔哩) or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

Data comes from a third-party Bilibili data API and covers publicly visible content. Users are responsible for complying with Bilibili's terms of service, applicable data-protection law (GDPR, CCPA, and PRC personal-information rules), copyright in the content they collect, and their own organization's obligations.

### SEO Keywords

bilibili scraper, 哔哩哔哩 scraper, bilibili subtitles, bilibili transcript, b站 字幕, bilibili ai subtitle, 哔哩哔哩 爬虫, b站 评论 采集, b站 弹幕 采集, b站 数据, bilibili api, bilibili video scraper, bilibili comments scraper, bilibili danmaku, 弹幕 scraper, bilibili search scraper, bilibili creator scraper, bilibili creator search, bilibili dynamics, 动态, bilibili live room, up主 数据, bilibili trending, bilibili hot search, bilibili analytics, china video scraper, bilibili monitoring, bilibili kol research, bilibili data api, anime video data, bilibili video stats

# Actor input Schema

## `keywords` (type: `array`):

Search Bilibili videos. 50 results per page. Example: `人工智能`.

## `creators` (type: `array`):

List a creator's uploads, 50 per page. Give the numeric UID (`546195`) or the space link (`https://space.bilibili.com/546195`).

## `creatorKeywords` (type: `array`):

Search Bilibili for creators (UP主) by name or topic, 20 per page. Each row has the UID, name, avatar and follower count; turn on Creator profile to look each one up in full. Example: `美食`.

## `videoUrls` (type: `array`):

Video links (`https://www.bilibili.com/video/BV1PTHS6MEC5`), BV ids, av ids, or `b23.tv` short links. Each returns the full video record.

## `liveRooms` (type: `array`):

Live room ids (`22816111`) or links (`https://live.bilibili.com/22816111`). Each returns the room's title, status, area, followers and cover. Billed as `live-room`.

## `postUrls` (type: `array`):

Feed post (动态) ids or links (`https://t.bilibili.com/1232186887046692873`, `https://www.bilibili.com/opus/1232186887046692873`). Each returns the post's text, images, linked video, likes, comments and reposts. Billed as `post`.

## `includeTrending` (type: `boolean`):

Bilibili's site-wide popular list (综合热门), 20 per page with full stats. Default: off.

## `includeHotSearch` (type: `boolean`):

The 50 terms currently trending in Bilibili search, with heat scores. Billed as `hot-search-term`. Default: off.

## `searchOrder` (type: `string`):

Order of search results. Default: relevance.

## `searchDuration` (type: `string`):

Limit search results by length. Default: any.

## `publishedWithinDays` (type: `integer`):

Only search results published in the last N days. Leave empty for any time.

## `creatorVideoOrder` (type: `string`):

Order of a creator's uploads. Default: newest.

## `maxPages` (type: `integer`):

Pages per keyword and per creator (50 videos each), and of the trending list (20 each). Default 3.

## `includeVideoDetails` (type: `boolean`):

Search and creator lists carry views, comments and (for search) likes and favorites. Turn this on to look up each video in full: coins, shares, likes, parts, category, resolution. Same price per video. Video links always return the full record. Default: off.

## `includeCreatorProfile` (type: `boolean`):

For each entry in Creators, and for each creator found by keyword, add a full `creator` row: followers, following, level, bio, verification title, video count. Billed as `creator-profile`. Default: off.

## `includeCreatorVideos` (type: `boolean`):

Return each creator's uploaded videos. Turn off when you only want their profile, posts, favorites or in-creator search results. Default: on.

## `creatorSearchKeywords` (type: `array`):

Keywords searched within each creator's own uploads, 50 per page. Use a single word per entry (Bilibili ignores spaces). Example: `游戏`.

## `includePosts` (type: `boolean`):

Return each creator's feed posts as rows with `type: post`: text, images, linked video, likes, comments, reposts and time. Billed as `post`. Default: off.

## `maxPostsPerCreator` (type: `integer`):

Posts come about 12 per page. Default 24.

## `includeFavorites` (type: `boolean`):

Return the videos in each creator's public favorite folders, with the folder name and the time they saved it. Billed as videos. Default: off.

## `includeStreamUrl` (type: `boolean`):

For each live room that is on air, add `streamUrl` (the FLV stream address), its quality and when the address expires, about an hour after the run. No extra charge. Default: off.

## `includeComments` (type: `boolean`):

Return each video's comments (hottest first) as rows with `type: comment`: author, level, text, likes, reply count, time. Default: off.

## `maxCommentsPerVideo` (type: `integer`):

Comments come 20 per page. Default 20.

## `includeReplies` (type: `boolean`):

Also return replies under each comment as rows with `type: reply`. Needs Comments. Default: off.

## `maxRepliesPerComment` (type: `integer`):

Default 20.

## `includeDanmaku` (type: `boolean`):

Return each video's danmaku as rows with `type: danmaku`: text, position in the video, colour, mode and send time. Covers the first part of multi-part videos. Billed as `danmaku` per row. Default: off.

## `maxDanmakuPerVideo` (type: `integer`):

Bilibili serves up to about 600 per video part. Default 600.

## `includeSubtitles` (type: `boolean`):

Add each video's subtitle track to its video row: subtitleText (the whole transcript as plain text), subtitleSegments (from, to, text), subtitleLanguage, and isAiSubtitle. Uses the uploader's own subtitles when there are any, otherwise Bilibili's AI transcript (ai-zh). First part of the video only. Videos without subtitles get null fields. Free until 3 Nov 2026; from 4 Nov 2026 each transcript found is billed as `subtitle` ($0.003), and videos without one are not charged. Default: off.

## `maxItems` (type: `integer`):

Cap on video rows. Comments, replies, danmaku and creator rows are capped separately. Default 50. Free-tier runs are capped at 100.

## `monitorMode` (type: `boolean`):

Skip videos already delivered to you; they are not billed and no data is fetched for them. First run builds the baseline. Default: false.

## `monitorStateName` (type: `string`):

Separate seen-lists for several schedules. Example: `tech-creators`.

## `resetMonitoringState` (type: `boolean`):

Clear the seen-list at the start of this run. Default: false.

## `emitBaseline` (type: `boolean`):

ON (default): first monitoring run returns current videos. OFF: first run seeds silently.

## `includeUnchanged` (type: `boolean`):

Also re-emit already-seen videos, tagged `changeType`. Billed. Default: false.

## Actor input object example

```json
{
  "keywords": [
    "人工智能"
  ],
  "includeTrending": false,
  "includeHotSearch": false,
  "searchOrder": "totalrank",
  "searchDuration": "all",
  "creatorVideoOrder": "pubdate",
  "maxPages": 3,
  "includeVideoDetails": false,
  "includeCreatorProfile": false,
  "includeCreatorVideos": true,
  "includePosts": false,
  "maxPostsPerCreator": 24,
  "includeFavorites": false,
  "includeStreamUrl": false,
  "includeComments": false,
  "maxCommentsPerVideo": 20,
  "includeReplies": false,
  "maxRepliesPerComment": 20,
  "includeDanmaku": false,
  "maxDanmakuPerVideo": 600,
  "includeSubtitles": false,
  "maxItems": 50,
  "monitorMode": false,
  "resetMonitoringState": false,
  "emitBaseline": true,
  "includeUnchanged": false
}
```

# Actor output Schema

## `results` (type: `string`):

Rows told apart by `type`: `video` (title, creator, views, likes, coins, favorites, shares, comments, danmaku count, duration, tags), `creator` (followers, level, verification), `post` (feed post with text, images, likes), `live-room`, `comment`, `reply`, `danmaku` and `hot-search`.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "人工智能"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/bilibili-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "keywords": ["人工智能"] }

# Run the Actor and wait for it to finish
run = client.actor("memo23/bilibili-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "人工智能"
  ]
}' |
apify call memo23/bilibili-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/bilibili-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/5Xx6tZnw9to4ZeuYk/builds/kexdmXp4bKV2kmJea/openapi.json
