# Bilibili (哔哩哔哩) Scraper - Videos, Comments & Creators (`zen-studio/bilibili-video-scraper`) Actor

Extract Bilibili (哔哩哔哩) videos by keyword, BV id, or creator UID: views, likes, coins, favorites, danmaku, tags, comments, and creator profiles. Export to JSON, CSV, or Excel.

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

## Pricing

from $4.99 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Bilibili Scraper (哔哩哔哩 / B站) | Video Search, Details, Comments & Creator Data (2026)

![Bilibili (哔哩哔哩) video scraper output: views, likes, coins, danmaku, favorites, tags, and 20M-follower creator stats as structured JSON](https://iili.io/CuILMBt.png)

<blockquote style="border-left:4px solid #4C945E;background:#F0FDF4;padding:12px 16px">
<span style="font-size:16px;font-weight:700;color:#1C1917">60+ fields per Bilibili (哔哩哔哩) video, views, likes, coins, danmaku, shares, tags, and creator stats, across five modes in clean structured JSON.</span>
</blockquote>

<table>
<tr>
<td colspan="4" style="padding:10px 14px;background:#4C945E;border:none;border-radius:4px 4px 0 0">
<span style="color:#FAFAF9;font-size:14px;font-weight:700;letter-spacing:0.5px">Zen Studio · Chinese-platform suite</span>
<span style="color:#E8F5E9;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Bilibili (B站), Douyin (抖音), RedNote (小红书), Xigua (西瓜视频)</span>
</td>
</tr>
<tr>
<td style="padding:10px 12px;border:1px solid #E7E5E4;background:#E8F5E9;border-right:none;border-top:none;vertical-align:top;width:25%">
<span style="white-space:nowrap">&#9655;&nbsp;<a href="https://apify.com/zen-studio/bilibili-video-scraper" style="color:#4C945E;text-decoration:none;font-weight:700;font-size:13px">Bilibili&nbsp;Video</a></span><br>
<span style="color:#4C945E;font-size:11px;font-weight:600">&#10148; You are here</span>
</td>
<td style="padding:10px 12px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-3TJaaOJDU1AMiOoJM-Vu2eVr0P6N-douyin-profile-scraper-logo.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/zen-studio/douyin-search-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Douyin&nbsp;Search</a></span><br>
<span style="color:#78716C;font-size:11px">Keyword video search</span>
</td>
<td style="padding:10px 12px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-mHKEEgoDqr6btQQer-fUs5ZquIeN-xiaohongshu-search-scraper-logo-square.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/zen-studio/rednote-search-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">RedNote&nbsp;Search</a></span><br>
<span style="color:#78716C;font-size:11px">小红书 note search</span>
</td>
<td style="padding:10px 12px;border:1px solid #E7E5E4;border-top:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-dexCSKEZtKS8hg4fT-lD4weyiYga-shigua-____-scraper-logo.jpg" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/zen-studio/xigua-video-search-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Xigua&nbsp;Video</a></span><br>
<span style="color:#78716C;font-size:11px">西瓜视频 search</span>
</td>
</tr>
</table>

#### Copy to your AI assistant

````

zen-studio/bilibili-video-scraper on Apify. Scrapes Bilibili (哔哩哔哩) videos, comments, and creator catalogues with full engagement metrics. Call ApifyClient("TOKEN").actor("zen-studio/bilibili-video-scraper").call(run\_input={...}), then client.dataset(run\["defaultDatasetId"]).list\_items().items. Set mode (search / video\_detail / comments / user\_videos / popular), then fill that mode's fields (keywords / videoUrls / userIds). Full spec: GET https://api.apify.com/v2/acts/zen-studio~bilibili-video-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations

````

### Key Features

- **28 fields per video**: views, likes, coins, favorites, danmaku, shares, replies, duration, tags, category, publish date, and creator name/UID/avatar, all in one row.
- **Five modes in one actor**: keyword search, video details, comments with nested replies, a creator's full video catalogue, and trending/popular.
- **Search filters**: sort by relevance, views, newest, danmaku, or favorites; filter by video length and publish-date window.
- **Free tier**: 10 lifetime preview runs, up to 20 results per run. No credit card required.

### How to Scrape Bilibili Videos

Pick a `mode`, fill in that mode's fields, and run. Each mode reads only its own fields.

#### Basic: search by keyword
```json
{
    "mode": "search",
    "keywords": ["原神"],
    "maxResults": 50
}
````

#### Search with sort and filters

```json
{
    "mode": "search",
    "keywords": ["美食", "vlog"],
    "sortOrder": "views",
    "durationFilter": "medium",
    "pubtimeBegin": "2026-01-01",
    "maxResults": 200
}
```

#### Full details for specific videos

```json
{
    "mode": "video_detail",
    "videoUrls": ["https://www.bilibili.com/video/BV1DYjA6KEJ7", "BV16D7T6AEP7"],
    "includeTags": true
}
```

#### Comments for a video

```json
{
    "mode": "comments",
    "videoUrls": ["BV1DYjA6KEJ7"],
    "maxComments": 50
}
```

#### A creator's full video catalogue

```json
{
    "mode": "user_videos",
    "userIds": ["546195", "https://space.bilibili.com/178360345"],
    "maxResults": 100
}
```

#### Trending videos

```json
{
    "mode": "popular",
    "maxResults": 100
}
```

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `mode` | string | `search` | One of `search`, `video_detail`, `comments`, `user_videos`, `popular`. |
| `keywords` | string\[] | `["原神"]` | Search terms (search mode). Chinese gives the best recall; English works too. |
| `sortOrder` | string | `relevance` | Search ranking: `relevance`, `views`, `newest`, `danmaku`, `favorites`. |
| `durationFilter` | string | `any` | Length filter: `any`, `short` (<10m), `medium` (10-30m), `long` (30-60m), `verylong` (>60m). |
| `pubtimeBegin` | string | *optional* | Only videos published on/after this date (`YYYY-MM-DD`). |
| `pubtimeEnd` | string | *optional* | Only videos published on/before this date (`YYYY-MM-DD`). |
| `videoUrls` | string\[] | `["BV1DYjA6KEJ7"]` | Video URLs or BV ids (video\_detail and comments modes). |
| `includeTags` | boolean | `true` | Include each video's tags in the output (video\_detail mode). |
| `includeRelated` | boolean | `false` | Attach Bilibili's related/recommended videos (video\_detail mode). |
| `includeHotComments` | boolean | `false` | Attach each video's top comments (video\_detail mode). For full comment scraping use Comments mode. |
| `creatorProfileDetail` | string | `subset` | Creator info per video: `none`, `subset`, or `full` (video\_detail mode). |
| `maxComments` | integer | `50` | Max comments per video (comments mode). |
| `userIds` | string\[] | `["178360345"]` | Creator UIDs or `space.bilibili.com/{uid}` URLs (user\_videos mode). |
| `maxResults` | integer | `50` | Per keyword (search), per creator (user\_videos), or total (popular). `0` = all available. |

### What Data Can You Extract from Bilibili?

Every video row includes:

- **Identity**: BV id, AV id (aid), CID, title, description, post text, canonical URL, short link, thumbnail.
- **Engagement**: view count, danmaku (bullet comment) count, likes, coins, favorites, shares, replies.
- **Creator**: name, UID, avatar, and (in video-detail mode) follower count, total likes, and video/article counts.
- **Media**: duration (seconds and formatted), resolution (width/height), part count, subtitles flag.
- **Classification**: category and subcategory (plus their IDs), tags, copyright/original flag, paid and collab flags, uploader location.
- **Timing**: publish and upload timestamps (ISO and epoch). In popular mode, the trending reason.

Comment rows add the comment text, custom emotes, pinned flag, like/reply/total-reply counts, posted-time description, commenter location and VIP/verification, whether the creator liked or replied, author name/UID/level, and one level of nested replies. Creator rows add the bio, level, rank, coins, VIP tier and expiry, verification title and role, profile banner, live-room (id/url/status/title), charging status, school/profession, total video count, and profile URL.

In video\_detail mode you can also attach each video's **hot comments** (on by default), **related videos** (`includeRelated`), and a **creator profile** (`creatorProfileDetail`: counts only, a flat subset, or a full nested object).

#### Output Example

A full video\_detail row (every field shown; `includeRelated` and `creatorProfileDetail: full` on):

```json
{
  "type": "video",
  "bvid": "BV1DYjA6KEJ7",
  "aid": 116770799295304,
  "cid": 39216154197,
  "title": "《原神》「『空月之歌·谐谑』映夏！归乡？千灵节！」前瞻特别节目",
  "description": "《原神》「『空月之歌·谐谑』映夏！归乡？千灵节！」将于...",
  "url": "https://www.bilibili.com/video/BV1DYjA6KEJ7",
  "thumbnailUrl": "https://i0.hdslb.com/bfs/archive/9839aee8582b365528c3e9f364748e4acb4c2401.jpg",
  "duration": 2583,
  "durationFormatted": "43:03",
  "width": 2560,
  "height": 1440,
  "viewCount": 1413968,
  "danmakuCount": 23909,
  "likeCount": 101132,
  "coinCount": 34937,
  "favoriteCount": 22423,
  "shareCount": 6056,
  "replyCount": 8402,
  "authorName": "原神",
  "authorMid": 401742377,
  "authorAvatar": "https://i2.hdslb.com/bfs/face/853c4a846793dfbdafd8f16a40d6d8065bdb7c6f.jpg",
  "authorFollowerCount": 20560393,
  "authorTotalLikes": 275226666,
  "authorVideoCount": 710,
  "authorArticleCount": 0,
  "publishTimestamp": 1781787600,
  "publishDate": "2026-06-18T13:00:00+00:00",
  "uploadTimestamp": 1781781127,
  "uploadDate": "2026-06-18T11:12:07+00:00",
  "category": "资讯",
  "categoryId": 172,
  "categoryV2": "单机游戏",
  "categoryIdV2": 2064,
  "parentCategory": "游戏",
  "parentCategoryId": 1008,
  "tags": ["月之八", "映夏归乡千灵节", "米哈游", "// ...more"],
  "dynamicText": "#原神# #月之八# #映夏归乡千灵节#",
  "copyright": 1,
  "isOriginal": true,
  "partCount": 1,
  "hasSubtitles": false,
  "downloadable": true,
  "isPaidVideo": false,
  "isUnionVideo": null,
  "argueMsg": "",
  "location": null,
  "trendingReason": null,
  "shortLink": "",
  "firstFrameUrl": "",
  "cover43Url": "",
  "matchedFields": null,
  "creatorBio": "原神官方账号",
  "creatorLevel": 6,
  "creatorVerifyTitle": "原神官方账号",
  "creatorVipType": 2,
  "creatorProfile": {
    "mid": 401742377, "name": "原神", "sign": "原神官方账号", "sex": "保密",
    "level": 6, "rank": 10000, "fans": 20560393, "friend": 60, "attention": 60,
    "isOfficial": true, "officialRole": 3, "officialTitle": "原神官方账号",
    "vipType": 2, "isVip": true, "isSeniorMember": false,
    "profileUrl": "https://space.bilibili.com/401742377"
  },
  "hotComments": [
    {
      "type": "comment", "isPinned": false, "commentId": 306166465616,
      "text": "当至冬海关检查我的背包时：", "emotes": null, "likeCount": 7857,
      "replyCount": 161, "totalReplyCount": 176, "createdAt": "2026-06-18T13:00:49+00:00",
      "timeDescription": "5天前发布", "location": null, "authorName": "Flame-Unicorn",
      "authorMid": 3493292303977221, "authorLevel": 5, "authorVipType": 0,
      "authorVerified": false, "upLiked": false, "upReplied": false,
      "videoBvid": "BV1DYjA6KEJ7", "videoAid": 116770799295304, "replies": []
    }
    // ... more
  ],
  "relatedVideos": [
    {
      "bvid": "BV1B4hizbEMK", "aid": 115117958104497, "title": "劝人换常驻？那确实得换换！",
      "url": "https://www.bilibili.com/video/BV1B4hizbEMK", "duration": 77,
      "viewCount": 207888, "likeCount": 2531, "authorName": "勿威勿微",
      "authorMid": 2144543, "publishDate": "2025-08-30T13:34:20+00:00"
    }
    // ... more
  ],
  "rankIndex": null,
  "keyword": null,
  "sortSource": null,
  "scrapedAt": "2026-06-24T07:00:00+00:00"
}
```

A standalone comment row (comments mode), including the creator-pinned comment and custom emotes:

```json
{
  "type": "comment",
  "isPinned": false,
  "commentId": 306166465616,
  "text": "当至冬海关检查我的背包时：[脸红]",
  "emotes": [
    { "text": "[脸红]", "url": "https://i0.hdslb.com/bfs/emote/0922c375da40e6b69002bd89b858572f424dcfca.png" }
  ],
  "likeCount": 7798,
  "replyCount": 160,
  "totalReplyCount": 176,
  "createdTimestamp": 1781787649,
  "createdAt": "2026-06-18T13:00:49+00:00",
  "timeDescription": "5天前发布",
  "location": "上海",
  "authorName": "Flame-Unicorn",
  "authorMid": 3493292303977221,
  "authorAvatar": "https://i0.hdslb.com/bfs/face/8b2142f8a9b61f0abd9e400235f8cc714c54e12e.jpg",
  "authorLevel": 5,
  "authorSex": "保密",
  "authorVipType": 0,
  "authorIsVip": false,
  "authorVerified": false,
  "mentions": null,
  "upLiked": false,
  "upReplied": false,
  "videoBvid": "BV1DYjA6KEJ7",
  "videoAid": 116770799295304,
  "replies": [
    {
      "type": "comment",
      "commentId": 303074770225,
      "text": "没这么冷静[傲娇]",
      "likeCount": 998,
      "authorName": "云芷白摆摆",
      "authorMid": 327087795,
      "authorLevel": 6,
      "videoBvid": "BV1DYjA6KEJ7"
    }
    // ... more replies
  ],
  "scrapedAt": "2026-06-23T16:58:51+00:00"
}
```

A creator row (first row in user\_videos mode):

```json
{
  "type": "user",
  "mid": 546195,
  "name": "老番茄",
  "face": "https://i0.hdslb.com/bfs/face/bc5ca101313d4db223c395d64779e76eb3482d60.jpg",
  "sign": "新浪微博：_老番茄_",
  "sex": "保密",
  "level": 6,
  "rank": 10000,
  "coins": 0,
  "birthday": null,
  "school": null,
  "profession": null,
  "topPhotoUrl": "https://i0.hdslb.com/bfs/space/3ab888c1d149e864ab44802dea8c1443e940fa0d.png",
  "isOfficial": true,
  "officialRole": 1,
  "officialTitle": "2025百大UP主、2025年度商业影响力奖UP主、2022年度联合创作奖UP主",
  "isVip": true,
  "vipType": 2,
  "vipLabel": "年度大会员",
  "vipDueDate": "2026-10-07T16:00:00+00:00",
  "isSeniorMember": false,
  "isTop100Honour": false,
  "hasMcn": false,
  "chargingEnabled": true,
  "liveRoomId": 21852,
  "liveStatus": 0,
  "liveTitle": "最折磨的一集",
  "liveRoomUrl": "https://live.bilibili.com/21852",
  "archiveCount": 662,
  "profileUrl": "https://space.bilibili.com/546195",
  "scrapedAt": "2026-06-23T17:04:52+00:00"
}
```

### Advanced Usage

Ready-made configurations for trend monitoring, competitor tracking, sentiment research, and creator analytics.

#### Track a topic's top videos by views

```json
{
    "mode": "search",
    "keywords": ["新能源汽车"],
    "sortOrder": "views",
    "pubtimeBegin": "2026-01-01",
    "maxResults": 500
}
```

#### Pull a creator's entire catalogue (newest first)

```json
{
    "mode": "user_videos",
    "userIds": ["546195"],
    "maxResults": 0
}
```

#### Harvest comments across several videos

```json
{
    "mode": "comments",
    "videoUrls": ["BV1DYjA6KEJ7", "BV16D7T6AEP7"],
    "maxComments": 100
}
```

#### Daily trending snapshot

```json
{
    "mode": "popular",
    "maxResults": 200
}
```

### Pricing: Pay Per Event (PPE)

You pay per result returned, plus a small fixed fee when a run starts. Volume discounts apply automatically at higher Apify plans.

| Event | Per result | Per 1,000 results |
|-------|-----------|-------------------|
| Result (video or creator profile) | $0.006 | $6 |
| Comment | $0.006 | $6 |

Free tier: 10 lifetime runs, up to 20 results per run. No credit card required.

### FAQ

**What is Bilibili (哔哩哔哩 / B站 / Bili Bili)?**
Bilibili, written 哔哩哔哩 and nicknamed B站 ("B-site"), is one of China's largest long-form video communities, known for its danmaku (弹幕) scrolling bullet comments. Creators ("UP主") post everything from gaming and anime to study-with-me and food vlogs. This actor extracts video, comment, and creator data across search, detail, and trending views.

**How many results can I extract?**
Set `maxResults` to any number, or `0` for everything available. Search returns up to its budget per keyword, user\_videos returns a creator's full catalogue, and popular returns the trending list. The free tier is limited to 20 results per run.

**How fresh is the data?**
Live. Every run fetches current data from Bilibili at request time, including up-to-the-minute view, like, coin, and danmaku counts.

**Do I need a Bilibili account or cookies?**
No. Provide keywords, video ids, or creator UIDs and run. No account, cookie export, or QR login is involved.

**How do I export the data?**
JSON, CSV, Excel, XML, or HTML from the run's Storage tab, or via the Apify API. JSON preserves nested fields best (comment replies, tag arrays).

**What is a BV id, and where do I find it?**
The BV id is the unique code in a video's URL, for example `BV1DYjA6KEJ7` in `bilibili.com/video/BV1DYjA6KEJ7`. Paste either the full URL or just the BV id into `videoUrls`.

**What is danmaku?**
Danmaku (弹幕) are the user comments that scroll across the video as it plays. This actor returns the danmaku count per video as an engagement signal; it does not export the individual danmaku messages.

**Can I also get a creator's followers or fan count?**
The creator row returns the profile bio, level, total video count, and profile URL. For other Chinese platforms' creator metrics, see the [RedNote User Profile Scraper](https://apify.com/zen-studio/rednote-user-profile-scraper) or [Douyin Profile Scraper](https://apify.com/zen-studio/douyin-profile-scraper).

**Why do some numeric fields show null?**
Search results expose fewer fields than a full video page. Fields a given view cannot provide (such as coins or shares in search mode) are returned as `null` rather than dropped, so the column set stays stable. Use `video_detail` mode for the complete engagement set.

**What's the free tier?**
10 runs total per account, up to 20 results each. No credit card required.

**Is it legal to scrape Bilibili data?**
This actor extracts only publicly available data, nothing behind a login. You are responsible for complying with Bilibili's terms of service and applicable data-protection law (GDPR, CCPA, and China's PIPL). Comment authors and creator names are personal data; handle them accordingly.

### Support

- **Bugs**: Issues tab
- **Features**: Issues tab

### Legal Compliance

Extracts publicly available data. Users must comply with Bilibili terms and data protection regulations (GDPR, CCPA, PIPL).

### More Zen Studio scrapers for Chinese platforms

**🎬 Short-video & social**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-3TJaaOJDU1AMiOoJM-Vu2eVr0P6N-douyin-profile-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Douyin 抖音**
  - [Douyin Search Scraper](https://apify.com/zen-studio/douyin-search-scraper)
  - [Douyin Profile Scraper](https://apify.com/zen-studio/douyin-profile-scraper)
  - [Douyin Video Scraper](https://apify.com/zen-studio/douyin-video-scraper)
  - [Douyin Comments Scraper](https://apify.com/zen-studio/douyin-comments-scraper)
  - [Douyin Transcripts Scraper](https://apify.com/zen-studio/douyin-transcripts-scraper)
  - [Douyin Creator Rankings Scraper](https://apify.com/zen-studio/douyin-xingtu-rankings-scraper)
  - [Douyin Live Recorder](https://apify.com/zen-studio/douyin-live-recorder)
  - [Douyin Hot Search Scraper](https://apify.com/zen-studio/douyin-hot-search-scraper)
  - [Douyin Product Search Scraper](https://apify.com/zen-studio/douyin-product-search-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-mHKEEgoDqr6btQQer-fUs5ZquIeN-xiaohongshu-search-scraper-logo-square.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **RedNote 小红书**
  - [RedNote User Profile Scraper](https://apify.com/zen-studio/rednote-user-profile-scraper)
  - [RedNote Search Scraper](https://apify.com/zen-studio/rednote-search-scraper)
  - [RedNote Comments Scraper](https://apify.com/zen-studio/rednote-comments-scraper)
  - [RedNote Product Search Scraper](https://apify.com/zen-studio/rednote-product-search-scraper)
  - [RedNote Note Detail Scraper](https://apify.com/zen-studio/rednote-note-detail-scraper)
  - [RedNote Product Reviews Scraper](https://apify.com/zen-studio/rednote-product-reviews-scraper)
  - [RedNote Live Recorder](https://apify.com/zen-studio/rednote-live-recorder)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-dexCSKEZtKS8hg4fT-lD4weyiYga-shigua-____-scraper-logo.jpg" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Xigua 西瓜视频**
  - [Xigua Video Search Scraper](https://apify.com/zen-studio/xigua-video-search-scraper)
  - [Xigua Video Detail Scraper](https://apify.com/zen-studio/xigua-video-detail-scraper)

**🛒 E-commerce**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-PsAKYWM55HG4AHXjK-ItywU7Bp0s-taobao-search-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Taobao 淘宝**
  - [Taobao Search Scraper](https://apify.com/zen-studio/taobao-search-scraper)
  - [Taobao Product Detail Scraper](https://apify.com/zen-studio/taobao-detail-scraper)
  - [Taobao Seller Products Scraper](https://apify.com/zen-studio/taobao-seller-products-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-uZy6tbKLKnSVtT4BN-emXnT123uR-jd-com-scraper-logo-square.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **JD.com 京东**
  - [JD.com Search Scraper](https://apify.com/zen-studio/jd-com-search-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-ghXSMZcW3GxsCrkiR-5hnvsKv4Yt-1688-wholesale-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **1688 阿里巴巴**
  - [1688 Wholesale Scraper](https://apify.com/zen-studio/1688-wholesale-scraper)
  - [Alibaba Scraper](https://apify.com/zen-studio/alibaba-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-5QcLc4BHaLMBUKYs3-f3CWQ60Row-goofish-search-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Goofish 闲鱼**
  - [Goofish (Xianyu) Search Scraper](https://apify.com/zen-studio/goofish-xianyu-search-scraper)
  - [Goofish (Xianyu) Seller Scraper](https://apify.com/zen-studio/goofish-xianyu-seller-scraper)
  - [Goofish (Xianyu) Item Detail Scraper](https://apify.com/zen-studio/goofish-xianyu-item-detail-scraper)
  - [Goofish (Xianyu) Item Comments & Q\&A Scraper](https://apify.com/zen-studio/goofish-xianyu-item-comments-scraper)

**🏠 Real estate & autos**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-1tAzNSf8Kz0v7Q2Lr-AINJ7FsZVU-anjuke-scraper-logo.jpg" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Anjuke 安居客**
  - [Anjuke For-Sale Listings Scraper](https://apify.com/zen-studio/anjuke-real-estate-scraper)
  - [Anjuke New-Home Scraper](https://apify.com/zen-studio/anjuke-new-home-scraper)
  - [Anjuke Rental Listings Scraper](https://apify.com/zen-studio/anjuke-rent-scraper)
  - [Anjuke Listing Detail Scraper](https://apify.com/zen-studio/anjuke-sale-detail-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-32OkWqsiUywoq2ci3-7JhFlW1qg3-58__-real-estate-scraper-logo.jpg" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **58.com 58同城**
  - [58.com Real Estate Scraper](https://apify.com/zen-studio/58-real-estate-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-ytaE4YpSmjXDmibPv-L1UMPHa2bO-che168-autohome-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Autohome 汽车之家**
  - [Autohome (Che168) Used-Car Scraper](https://apify.com/zen-studio/che168-car-scraper)

***

*Scrape Bilibili (哔哩哔哩) videos, comments, and creator catalogues by keyword, BV id, or UID, with full engagement metrics in structured JSON.*

# Actor input Schema

## `mode` (type: `string`):

What to scrape. Fill in the section below that matches your choice.

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

<b>search mode.</b> One or more terms. Chinese gives the best recall (e.g. <code>原神</code>, <code>美食</code>), English works too (<code>nike</code>). Each keyword runs with its own <b>Max results</b> budget.

## `sortOrder` (type: `string`):

How results are ranked.

## `durationFilter` (type: `string`):

Restrict by video length.

## `pubtimeBegin` (type: `string`):

Optional. Only videos published on/after this date. Format <code>YYYY-MM-DD</code>.

## `pubtimeEnd` (type: `string`):

Optional. Only videos published on/before this date. Format <code>YYYY-MM-DD</code>.

## `maxResults` (type: `integer`):

Per keyword (search), per creator (creator videos), or total (popular). Set <code>0</code> for all available.

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

<b>video\_detail & comments modes.</b> One or more Bilibili video URLs or BV ids (e.g. <code>https://www.bilibili.com/video/BV1DYjA6KEJ7</code> or <code>BV1DYjA6KEJ7</code>).

## `includeTags` (type: `boolean`):

<b>video\_detail mode.</b> Include each video's tag list in the output.

## `includeRelated` (type: `boolean`):

<b>video\_detail mode.</b> Attach a compact list of Bilibili's recommended/related videos to each result.

## `includeHotComments` (type: `boolean`):

<b>video\_detail mode.</b> Attach each video's top comments. Adds a separate comment fetch per video; leave off if you don't need comments here (use Comments mode for full comment scraping).

## `creatorProfileDetail` (type: `string`):

<b>video\_detail mode.</b> How much creator info to attach to each video. Follower and like counts are always included.

## `maxComments` (type: `integer`):

<b>comments mode.</b> Cap per video. Note: Bilibili only exposes a limited set of top comments per video publicly, so in practice you get the most-liked few dozen.

## `userIds` (type: `array`):

<b>user\_videos mode.</b> One or more creator UIDs or <code>space.bilibili.com/{uid}</code> URLs. Each user's output starts with a profile row, then their videos.

## Actor input object example

```json
{
  "mode": "search",
  "keywords": [
    "原神"
  ],
  "sortOrder": "relevance",
  "durationFilter": "any",
  "maxResults": 50,
  "videoUrls": [
    "BV1DYjA6KEJ7"
  ],
  "includeTags": true,
  "includeRelated": false,
  "includeHotComments": false,
  "creatorProfileDetail": "subset",
  "maxComments": 50,
  "userIds": [
    "178360345"
  ]
}
```

# Actor output Schema

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

Dataset of rows — videos, comments, or creator profiles depending on mode.

# 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": [
        "原神"
    ],
    "videoUrls": [
        "BV1DYjA6KEJ7"
    ],
    "userIds": [
        "178360345"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zen-studio/bilibili-video-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": ["原神"],
    "videoUrls": ["BV1DYjA6KEJ7"],
    "userIds": ["178360345"],
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "原神"
  ],
  "videoUrls": [
    "BV1DYjA6KEJ7"
  ],
  "userIds": [
    "178360345"
  ]
}' |
apify call zen-studio/bilibili-video-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=zen-studio/bilibili-video-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Bilibili (哔哩哔哩) Scraper - Videos, Comments & Creators",
        "description": "Extract Bilibili (哔哩哔哩) videos by keyword, BV id, or creator UID: views, likes, coins, favorites, danmaku, tags, comments, and creator profiles. Export to JSON, CSV, or Excel.",
        "version": "0.0",
        "x-build-id": "Spy1IhjDTch6oA4WS"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/zen-studio~bilibili-video-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-zen-studio-bilibili-video-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/zen-studio~bilibili-video-scraper/runs": {
            "post": {
                "operationId": "runs-sync-zen-studio-bilibili-video-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/zen-studio~bilibili-video-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-zen-studio-bilibili-video-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "video_detail",
                            "comments",
                            "user_videos",
                            "popular"
                        ],
                        "type": "string",
                        "description": "What to scrape. Fill in the section below that matches your choice.",
                        "default": "search"
                    },
                    "keywords": {
                        "title": "🔍 Search keywords",
                        "type": "array",
                        "description": "<b>search mode.</b> One or more terms. Chinese gives the best recall (e.g. <code>原神</code>, <code>美食</code>), English works too (<code>nike</code>). Each keyword runs with its own <b>Max results</b> budget.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sortOrder": {
                        "title": "Sort by",
                        "enum": [
                            "relevance",
                            "views",
                            "newest",
                            "danmaku",
                            "favorites"
                        ],
                        "type": "string",
                        "description": "How results are ranked.",
                        "default": "relevance"
                    },
                    "durationFilter": {
                        "title": "Duration",
                        "enum": [
                            "any",
                            "short",
                            "medium",
                            "long",
                            "verylong"
                        ],
                        "type": "string",
                        "description": "Restrict by video length.",
                        "default": "any"
                    },
                    "pubtimeBegin": {
                        "title": "Published after",
                        "type": "string",
                        "description": "Optional. Only videos published on/after this date. Format <code>YYYY-MM-DD</code>."
                    },
                    "pubtimeEnd": {
                        "title": "Published before",
                        "type": "string",
                        "description": "Optional. Only videos published on/before this date. Format <code>YYYY-MM-DD</code>."
                    },
                    "maxResults": {
                        "title": "📊 Max results",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Per keyword (search), per creator (creator videos), or total (popular). Set <code>0</code> for all available.",
                        "default": 50
                    },
                    "videoUrls": {
                        "title": "🎬 Video URLs or BV ids",
                        "type": "array",
                        "description": "<b>video_detail & comments modes.</b> One or more Bilibili video URLs or BV ids (e.g. <code>https://www.bilibili.com/video/BV1DYjA6KEJ7</code> or <code>BV1DYjA6KEJ7</code>).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeTags": {
                        "title": "Include tags (video_detail)",
                        "type": "boolean",
                        "description": "<b>video_detail mode.</b> Include each video's tag list in the output.",
                        "default": true
                    },
                    "includeRelated": {
                        "title": "Include related videos (video_detail)",
                        "type": "boolean",
                        "description": "<b>video_detail mode.</b> Attach a compact list of Bilibili's recommended/related videos to each result.",
                        "default": false
                    },
                    "includeHotComments": {
                        "title": "Include hot comments (video_detail)",
                        "type": "boolean",
                        "description": "<b>video_detail mode.</b> Attach each video's top comments. Adds a separate comment fetch per video; leave off if you don't need comments here (use Comments mode for full comment scraping).",
                        "default": false
                    },
                    "creatorProfileDetail": {
                        "title": "Creator profile on each video (video_detail)",
                        "enum": [
                            "none",
                            "subset",
                            "full"
                        ],
                        "type": "string",
                        "description": "<b>video_detail mode.</b> How much creator info to attach to each video. Follower and like counts are always included.",
                        "default": "subset"
                    },
                    "maxComments": {
                        "title": "Max comments per video (comments)",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "<b>comments mode.</b> Cap per video. Note: Bilibili only exposes a limited set of top comments per video publicly, so in practice you get the most-liked few dozen.",
                        "default": 50
                    },
                    "userIds": {
                        "title": "👤 Creator UIDs",
                        "type": "array",
                        "description": "<b>user_videos mode.</b> One or more creator UIDs or <code>space.bilibili.com/{uid}</code> URLs. Each user's output starts with a profile row, then their videos.",
                        "items": {
                            "type": "string"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
