# Bilibili Video Scraper (`scrapedrift/bilibili-video-scraper`) Actor

Bilibili Video Scraper extracts public video data including titles, descriptions, creators, views, likes, comments, upload dates, tags, and video URLs. Build structured datasets for content research, competitor analysis, trend discovery, and audience insights.

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

## Pricing

from $3.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Video Scraper extracts public video data from Bilibili video URLs, including titles, descriptions, creators, views, likes, comments, upload dates, tags, and video URLs.

Our Bilibili Video Scraper Tool also supports optional comment extraction. You can provide multiple video URLs and set the maximum number of comments collected per video.

The extracted Bilibili Video Data comes as structured results that you can use for content research, competitor research, trend discovery, audience research, and other permitted workflows.

### 🔍 What does Bilibili Video Scraper do?

Bilibili Video Scraper collects structured information from public Bilibili video pages. Instead of manually checking every page, you provide the video URLs and let the Actor process them.

The workflow covers common Bilibili Video Information, Bilibili Video Details, and Bilibili Video Metadata. It can also collect selected engagement information and comments when comment fetching is enabled.

You can use it as a Bilibili Scraper, Bilibili Video Data Scraper, Bilibili Video Extractor, or Bilibili Video Crawler depending on your workflow.

### 📊 What can Bilibili Video Scraper extract?

The Actor can return video-level information and, when enabled, individual comment records.

| Data field | What it contains |
| --- | --- |
| Video ID | Bilibili video identifier such as a BV ID |
| Video URL | Source Bilibili video URL |
| Title | Video title |
| Description | Video description |
| Cover | Video cover image URL |
| Author | Video uploader or creator name |
| Author URL | Creator profile URL |
| Avatar | Creator avatar URL |
| Views | Video view count |
| Likes | Like count |
| Coins | Coin count |
| Favorites | Favorite count |
| Shares | Share count |
| Comments | Reply count and scraped comments |
| Tags | Video tags |
| Topic | Topic or category information |
| Publication date | Original publication timestamp |
| Copyright | Copyright-related source value |
| Scrape timestamp | Time when the record was collected |
| Comment author | Commenter's name when comments are collected |
| Comment text | Extracted comment text |
| Comment likes | Like count for each collected comment |
| Comment timestamp | Comment publication timestamp |
| Parent ID | Related video ID for child comment records |

This makes the Actor useful for Bilibili Video Metadata Scraper, Bilibili Video Details Scraper, Bilibili Video Information Extractor, and Bilibili Video Metadata Extractor workflows.

You can also use the returned URL and ID fields as a Bilibili Video URL Extractor, Bilibili Video ID Extractor, or Bilibili Video Link Extractor.

### 🖼️ Bilibili video data structure

The Actor returns structured records rather than forcing you to manually copy information from individual Bilibili pages.

A video record can contain the Bilibili Video Title, description, URL, ID, creator information, publication timestamp, tags, and engagement statistics.

The same dataset can support Bilibili Video Statistics, Bilibili Video Stats Scraper, Bilibili Video Engagement Data, and Bilibili Video Analytics Data workflows.

When comments are enabled, the output also contains Bilibili Video Comments Data.

#### ⚙️ Key Features of Bilibili Video Scraper

The Bilibili Video Scraper focuses on collecting useful video and engagement data from supplied URLs. Instead of manually opening every video, you can process multiple URLs in one run.

##### 🎥 Extract Video Information

Collect Bilibili Video Information, including video IDs, titles, URLs, descriptions, publication timestamps, covers, and available topic data.

##### 👤 Collect Creator Details

The output includes the creator name, profile URL, and avatar URL. This helps when building creator datasets or conducting Bilibili creator research.

##### 📊 Capture Engagement Metrics

The scraper can collect views, likes, coins, favorites, shares, and reply counts. These fields provide useful signals for Bilibili video analysis and competitive research.

##### 💬 Scrape Video Comments

Need audience feedback too? Enable comment fetching to collect comment text, commenter names, comment likes, timestamps, and related video IDs.

##### 🏷️ Extract Tags and Topics

The Actor can return available Bilibili Video Tags, topic information, and other classification fields from the processed video records.

##### 🔗 Process Multiple Video URLs

You can submit a list of Bilibili video URLs instead of processing pages individually. This makes larger Bilibili data collection tasks easier to manage.

##### 📦 Return Structured Data

Results are returned as structured records, making them suitable for Bilibili datasets, content research, competitor analysis, and analytics workflows.

### 🚀 How to use Bilibili Video Scraper

Using the Actor is straightforward. You only need Bilibili video URLs and, if required, comment settings.

#### 1. Log in or sign up

First, log in to Apify or create an account if you do not already have one.

#### 2. Add Bilibili video URLs

Enter the Bilibili video URLs you want to process in the Bilibili Video URLs input.

For example:

{

"urls": \[

```
"https://www.bilibili.com/video/BV1dj411E7vt/"
```

]

}

You can provide multiple URLs when you want to build a larger Bilibili Video Collection or Bilibili Video Dataset.

#### 3. Enable comment extraction

Turn on Fetch Comments when your workflow requires comment information.

You can then control the number of comments collected using Max Comments Per Video.

For example:

{

"urls": \[

```
"https://www.bilibili.com/video/BV1dj411E7vt/"
```

],

"fetchComments": true,

"maxCommentsPerVideo": 20

}

#### 4. Start the Actor

Click Start to begin the run.

The Actor processes the supplied URLs and creates structured results. Apify supports running Actors manually from the Console or programmatically through its API.

#### 5. Review the results

After the run finishes, open the output to review the extracted video and comment records.

You can then export the data or continue using it in another workflow.

### 🔄 How does it work?

The Bilibili Video Scraper works by taking Bilibili video URLs as input and turning available page information into structured records.

#### Step 1: Add your video URLs

Start by entering the Bilibili video URLs you want to analyze.

{

"urls": \[

```
"https://www.bilibili.com/video/BV1dj411E7vt/"
```

]

}

#### Step 2: Choose comment settings

If you also want audience feedback, enable comment extraction and define the maximum number of comments per video.

{

"urls": \[

```
"https://www.bilibili.com/video/BV1dj411E7vt/"
```

],

"fetchComments": true,

"maxCommentsPerVideo": 20

}

#### Step 3: Start the scraper

Run the Actor with your selected settings. It processes the supplied Bilibili video pages and extracts the available data.

#### Step 4: Get structured results

The output can contain video metadata, creator information, engagement statistics, tags, URLs, and comments.

You can then use these records for Bilibili content research, Bilibili competitor research, Bilibili video analytics, audience research, and dataset creation.

#### Step 5: Build your workflow

Once the data is available, you can export or connect it to your broader research and automation workflow.

That makes the Actor useful when you want to collect Bilibili video data at scale without manually copying information from every video page.

### 📦 Bilibili Video Scraper output format

The Actor returns structured JSON records for videos and comments. Each video record contains fields such as the ID, title, URL, creator, statistics, tags, description, and timestamps.

A simplified video output looks like this:

```json
{

  "id": "BV1dj411E7vt",

  "type": "video",

  "isChild": false,

  "parentId": null,

  "cover": "https://i0.hdslb.com/bfs/face/example@96w.webp",

  "title": "Example video title",

  "url": "https://www.bilibili.com/video/BV1dj411E7vt/",

  "view\_count": "137.6万",

  "dm\_count": "4307",

  "pubdate": 1700401279,

  "copyright": 1,

  "like\_count": "9.8万",

  "coin\_count": "5.7万",

  "favorite\_count": "1.4万",

  "share\_count": "1.3万",

  "note\_count": "18篇笔记",

  "description": "Example description text.",

  "reply\_count": "4202",

  "topic\_tag": "Gaming",

  "author": "Example Uploader",

  "author\_url": "https://space.bilibili.com/12345678/",

  "avatar": "https://i0.hdslb.com/bfs/face/example.jpg",

  "tags": \["Gaming", "Review"\],

  "commentsScraped": 20,

  "scrapedAt": "2026-08-26T12:00:00.000Z",

  "error": false

}
```

#### ⬇️ Input

The main input is a list of Bilibili video URLs.

```json
{

  "urls": \[

    "https://www.bilibili.com/video/BV1dj411E7vt/"

  \],

  "fetchComments": true,

  "maxCommentsPerVideo": 20

}
```

The Bilibili Video URLs field accepts a string\[] list. Comment collection is controlled separately through the available comment settings.

#### ⬆️ Output

When comments are enabled, comment records are returned separately as child records linked to their parent video.

```json
{

  "id": "123456789",

  "type": "comment",

  "isChild": true,

  "parentId": "BV1dj411E7vt",

  "url": "https://www.bilibili.com/video/BV1dj411E7vt/",

  "author": "Example commenter",

  "like\_count": "312",

  "text": "Example real comment text pulled from the video.",

  "timestamp": 1700500000,

  "scrapedAt": "2026-08-26T12:00:05.000Z",

  "error": false

}
```

This structure makes it easier to separate Bilibili Comment Data, video records, and related engagement information.

### 🎯 Use Cases of Bilibili Video Scraper

Bilibili Video Scraper fits research workflows that require structured public video information.

#### Bilibili market research

Collect video-level information for Bilibili market research, topic discovery, and content comparison.

#### Bilibili competitor research

Compare competitor videos using titles, descriptions, views, likes, tags, and other available metrics.

This supports Bilibili competitor research, Bilibili competitive analysis, and content benchmarking.

#### Bilibili content research

Build a dataset for Bilibili content research without manually recording every video detail.

You can analyze titles, descriptions, tags, topics, creators, and engagement signals.

#### Bilibili trend analysis

Collect selected videos and compare their available engagement information to support Bilibili trend analysis.

The same approach can support a Bilibili Trending Videos Scraper or Bilibili Popular Videos Scraper workflow when you already have the relevant video URLs.

#### Bilibili creator research

The output includes creator names, profile URLs, and avatar URLs.

That makes the dataset useful for Bilibili Creator Scraper, Bilibili Creator Data Extractor, Bilibili Creator Information, and Bilibili creator research workflows.

#### Bilibili audience research

When comments are enabled, you can collect comment text, commenters, timestamps, and comment likes.

This provides data for Bilibili audience research, Bilibili Comment Scraper, and Bilibili Comments Extractor workflows.

#### Bilibili video analytics

The extracted views, likes, coins, favorites, shares, and replies can support Bilibili video analytics, Bilibili creator analytics, and Bilibili social media analytics.

#### Bilibili content monitoring

Run the Actor again with updated URLs to maintain datasets for Bilibili content monitoring and Bilibili video monitoring.

#### Bilibili dataset creation

The structured output can also support Bilibili dataset creation, Bilibili research data, Bilibili Video Database, and Bilibili Video Library workflows.

### 💰 How much does Bilibili Video Scraper cost?

Bilibili Video Scraper starts at $3.99 per 1,000 results.

Your actual usage can depend on the Actor run and the amount of data processed. Apify provides run-level usage information, while finalized usage figures can take some time to update after completion.

For larger Bilibili data collection projects, you can run the Actor repeatedly and retrieve the resulting datasets through the platform.

### ⚖️ Is it legal to scrape Bilibili?

Scraping Bilibili is not automatically legal or illegal in every situation. The answer depends on what you collect, how you access it, and how you use the resulting data.

#### 🌐 Check the Source Rules

Before starting Bilibili Video Scraping, review Bilibili's applicable terms and restrictions. Your workflow should respect rules governing automated access and data collection.

#### 🔒 Focus on Public Information

The Actor is designed around supplied video URLs and publicly available video information. Avoid attempting to collect private, restricted, or unauthorized data.

#### ©️ Respect Creator Rights

Video descriptions, comments, images, and other content can have copyright or other legal protections. Scraping data does not automatically grant permission to reuse copyrighted content.

#### 💼 Consider Your Use Case

A research dataset and a commercial content-republishing workflow can create very different legal considerations. Review applicable privacy, copyright, and data-protection requirements before using collected information commercially.

When in doubt, get legal advice for your specific Bilibili data collection workflow.

### 🧾 Bilibili Video Scraper input parameters

The Actor uses a small set of focused inputs.

| Parameter | Type | Description |
| --- | --- | --- |
| urls | string\[] | List of Bilibili video URLs to scrape. |
| fetchComments | boolean | Controls whether comments are collected. |
| maxCommentsPerVideo | number | Sets the maximum comments collected per video. |

The input structure can be passed through the Console or API. Apify's documentation confirms that Actor input can be supplied as JSON when running an Actor through the API.

### ⏳ During the Actor run

During the Actor run, the scraper processes each supplied Bilibili video URL and creates structured output records. If comment extraction is enabled, it also processes comments according to your selected limit.

#### 1. URLs are processed

The Actor starts with the URLs provided through the Bilibili Video URLs input.

You can submit one URL or multiple URLs for a larger Bilibili video collection.

#### 2. Video information is collected

For each processed page, the Actor extracts available information such as title, description, creator, URL, video ID, tags, timestamps, and engagement metrics.

#### 3. Comments are processed

When Fetch Comments is enabled, the Actor collects comments from the processed videos.

The Max Comments Per Video setting controls how many comments the Actor attempts to collect for each video.

#### 4. Results are structured

The Actor organizes the collected information into video and comment records.

A video appears as the main record, while extracted comments can appear as child records linked through the video's ID.

#### 5. The run finishes

After processing the supplied URLs, the Actor makes the structured results available for review and further data workflows.

### 📝 Final Note

Bilibili Video Scraper turns supplied Bilibili video URLs into structured video and comment data. It covers core metadata, creator information, engagement statistics, tags, URLs, and optional comments.

For research teams, agencies, analysts, and developers, this creates a practical foundation for Bilibili content intelligence, Bilibili media research, Bilibili content analysis, and structured Bilibili data collection.

If your workflow requires programmatic extraction, the Actor can also support Bilibili Video Automation, Bilibili Scraping Automation, Bilibili Data Extraction Automation, and Bilibili Video Data Automation through the Apify platform.

### ❓ FAQ

#### What is Bilibili Video Scraper?

Bilibili Video Scraper extracts structured public data from supplied Bilibili video URLs. It can collect titles, descriptions, creators, views, likes, comments, upload timestamps, tags, and video URLs.

#### How to scrape Bilibili videos?

Add your Bilibili video URLs to the Actor, configure comment collection if required, and start the run. The Actor processes the supplied URLs and returns structured results.

#### How to scrape Bilibili video data?

Provide one or more Bilibili video URLs through the urls input. The resulting records contain available Bilibili Video Data and related metadata.

#### How to extract Bilibili video data?

Use the Actor with the relevant Bilibili video URLs. After the run completes, retrieve the structured dataset containing the extracted video information.

#### How to get Bilibili video information?

Submit the Bilibili video URL and run the Actor. The output can contain the video title, description, creator, URL, statistics, tags, and publication timestamp.

#### How to scrape Bilibili video metadata?

Use the Actor with your target video URLs. The output includes metadata such as video IDs, titles, descriptions, URLs, creators, tags, and timestamps.

#### Can I scrape Bilibili comments?

Yes. Enable Fetch Comments and set Max Comments Per Video to control the number collected from each processed video.

#### How to extract Bilibili comments?

Enable comment fetching before starting the run. Comment records can contain the commenter, text, likes, timestamp, parent video ID, and source URL.

#### Can I collect Bilibili video statistics?

Yes. The output can include views, likes, coins, favorites, shares, and reply counts, depending on the available source data.

#### Can I scrape Bilibili creator data?

The video output includes creator information such as the author name, author profile URL, and avatar URL.

#### Can I use Bilibili Video Scraper through an API?

Yes. Apify supports running Actors through its API and retrieving their output programmatically.

#### What is the difference between a Bilibili Video Scraper and downloader?

A Bilibili Video Scraper extracts structured video information. This Actor is designed around video data extraction rather than claiming to download the video file itself.

#### Can I scrape Bilibili search results?

This Actor's documented input is Bilibili video URLs. It does not document search keywords or search-result URLs as an input, so search-result scraping is outside the confirmed scope of this Actor.

#### Can I use it for Bilibili trending videos?

You can process specific trending video URLs with the Actor. However, the Actor does not document automatic discovery of trending videos, so you must provide the relevant URLs.

#### Can I build a Bilibili Video Dataset?

Yes. Run the Actor against multiple video URLs and use the structured results to create a Bilibili Video Dataset for permitted research and analysis.

#### What data can I use for Bilibili video analysis?

Useful fields include titles, descriptions, creators, views, likes, coins, favorites, shares, replies, tags, topics, timestamps, and comments when comment extraction is enabled.

#### How does Bilibili Video Scraper support Bilibili competitor research?

You can collect structured information from competitor video URLs and compare available metadata and engagement fields across records.

#### How does Bilibili Video Scraper support content research?

It provides structured video records that make it easier to compare topics, titles, descriptions, tags, creators, and engagement data across selected videos.

#### Is Bilibili Video Scraping allowed?

The legality depends on the data, purpose, applicable law, and Bilibili's rules. Review the relevant terms and legal requirements before conducting automated or commercial collection.

# Actor input Schema

## `urls` (type: `array`):

List of Bilibili video URLs to scrape. Example: https://www.bilibili.com/video/BV1dj411E7vt/

## `fetchComments` (type: `boolean`):

When enabled, also scrapes the top-level comments posted under each video (commenter, text, likes, timestamp). Comments are pushed as separate child rows linked to their video and are never charged as video items. Default is false — base scraping behavior is unchanged when off.

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

Caps how many top-level comments are pulled per video when 'Fetch Comments' is enabled. Example: maxCommentsPerVideo=20 → up to 20 comment rows per video. Default is 20. 0 = fetch all available top-level comments. Ignored when 'Fetch Comments' is off.

## `proxyConfiguration` (type: `object`):

Proxy settings used for both video pages and comment API requests. Residential proxy is recommended for reliability.

## Actor input object example

```json
{
  "urls": [
    "https://www.bilibili.com/video/BV1dj411E7vt/"
  ],
  "fetchComments": false,
  "maxCommentsPerVideo": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

No description

# 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 = {
    "urls": [
        "https://www.bilibili.com/video/BV1dj411E7vt/"
    ],
    "maxCommentsPerVideo": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapedrift/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 = {
    "urls": ["https://www.bilibili.com/video/BV1dj411E7vt/"],
    "maxCommentsPerVideo": 20,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapedrift/bilibili-video-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 '{
  "urls": [
    "https://www.bilibili.com/video/BV1dj411E7vt/"
  ],
  "maxCommentsPerVideo": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scrapedrift/bilibili-video-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapedrift/bilibili-video-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/NHLxBUwrEhAqY5Mj9/builds/q2kSl3c54OsWgtdSb/openapi.json
