# Bilibili Trending Videos Scraper 哔哩哔哩: Rankings & Hot Searches (`getascraper/bilibili-popular-video-intelligence`) Actor

Scrape Bilibili 哔哩哔哩 (B站) popular videos, category ranking boards, the all-time must-watch list and hot searches as JSON. Filter by views, category and age, sort by views per hour, and track new entries and rank moves between scheduled runs. Export to CSV, Excel or API.

- **URL**: https://apify.com/getascraper/bilibili-popular-video-intelligence.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (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 $3.00 / 1,000 feed rows

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/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 Trending Videos Scraper 哔哩哔哩: Rankings & Hot Searches

<table width="100%" style="margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#FEF1F6;border:1px solid #F8CBDB;border-top:4px solid #E4457A;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">See what is breaking out on Bilibili, hour by hour</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Pull the popular feed, category top 100s, the must-watch list and hot searches from Bilibili, with views per hour, engagement rates and rank moves on every row.</span>
</td>
</tr>
</table>
<table width="100%" style="margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F8CBDB;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#E4457A">📊 Four lists, one run</span><br>
<span style="font-size:12px;color:#57534E">Popular feed, top-100 boards for 19 partitions, the must-watch list and hot searches.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F8CBDB;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#E4457A">⚡ Views per hour built in</span><br>
<span style="font-size:12px;color:#57534E">Engagement rate and views per hour on every row, ready to sort.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F8CBDB;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#E4457A">🔁 Rank-change tracking</span><br>
<span style="font-size:12px;color:#57534E">See new entries, places moved and views gained since your last run.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F8CBDB;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#E4457A">🎯 Filters that cut the noise</span><br>
<span style="font-size:12px;color:#57534E">Category, keywords, creators, minimum views, length and age.</span>
</td>
</tr>
</table>

Track what is trending on Bilibili (哔哩哔哩, also known as B站), China's biggest video community, without any login. Read four public lists, filter them down to what matters, and compare runs to see which videos are rising, new or dropping out.

### 🔍 What does Bilibili Trending Videos Scraper do?

It collects the lists Bilibili itself publishes: the live popular feed (up to 500 positions), the top-100 ranking boards for 19 category partitions, the all-time must-watch list and the current hot search keywords. Results download as JSON, CSV or Excel.

Each video row comes with engagement rate, like, coin, favorite and share rates, views per hour and video age already worked out. Turn on change tracking and a scheduled run also tells you who is new, how many places a video moved and how many views it gained. Optional extras add video tags and creator stats such as followers, uploads, level and verification.

Fields Bilibili does not provide are left out, never filled with placeholders.

### 💡 Why use it

- **I am a trend analyst covering China's online video.** I sort by views per hour each morning to find videos that are climbing fast, not just the ones that are already huge.
- **I am a brand or agency scout.** I filter a category ranking board by minimum views and engagement rate, then pull creator followers and verification to build an outreach shortlist.
- **I am a content strategist.** I watch hot search keywords and video tags to see which topics are heating up before I plan the next batch of content.
- **I am a market researcher.** I schedule daily snapshots and load the flat rows straight into a dashboard to show what China's online audience is watching.

### 🚀 How it works

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#FEF1F6;border:1px solid #F8CBDB;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#E4457A;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Choose a list</span><br>
<span style="font-size:12px;color:#57534E">Pick the popular feed, a ranking board, the must-watch list or hot searches, then add filters.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FEF1F6;border:1px solid #F8CBDB;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#E4457A;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Get ranked rows</span><br>
<span style="font-size:12px;color:#57534E">Every video arrives with engagement rates and views per hour, sorted the way you asked.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FEF1F6;border:1px solid #F8CBDB;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#E4457A;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Schedule and track</span><br>
<span style="font-size:12px;color:#57534E">Run it hourly or daily to see what is new, what climbed and what dropped out.</span>
</td>
</tr>
</table>

### 📥 Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `feed` | enum | No | Which Bilibili list to collect: the live popular feed, the top-100 ranking board, the all-time must-watch list or the current hot search keywords. Defaults to the popular feed. |
| `rankingPartition` | enum | No | Ranking board only. Pick one of 19 category partitions, or all partitions for the site-wide top 100. |
| `rankingType` | enum | No | Ranking board only. All content, original uploads only, or rookie creators only. |
| `categories` | array of strings | No | Keep videos in these categories. Accepts English or Chinese names such as Gaming or 游戏, sub-category names or numeric category IDs. Leave empty for all. |
| `excludeCategories` | array of strings | No | Drop videos in these categories. Same formats as the category filter. |
| `keywords` | array of strings | No | Keep videos whose title, description or hashtags contain at least one of these words. Not case sensitive. |
| `excludeKeywords` | array of strings | No | Drop videos whose title, description or hashtags contain any of these words. |
| `creators` | array of strings | No | Keep videos from these creators. Accepts a creator ID, a space.bilibili.com profile link or part of the creator name. |
| `minViews` | integer | No | Drop videos with fewer views than this. Zero turns the filter off. |
| `minLikes` | integer | No | Drop videos with fewer likes than this. Zero turns the filter off. |
| `minEngagementRatePct` | number | No | Drop videos whose engagement rate is lower. Engagement rate adds likes, coins, favorites, shares and comments as a percentage of views. Zero turns the filter off. |
| `minDurationMinutes` | number | No | Drop videos shorter than this many minutes. Zero turns the filter off. |
| `maxDurationMinutes` | number | No | Drop videos longer than this many minutes. Zero turns the filter off. |
| `publishedWithin` | enum | No | Keep only recent uploads, from the last 6 hours up to the last 30 days. Good for spotting fresh breakouts. Defaults to any time. |
| `contentOrigin` | enum | No | Keep only self-made uploads, or only reposts and licensed uploads. Defaults to both. |
| `contentKind` | enum | No | Creator uploads versus official series episodes (anime, drama and similar) that Bilibili mixes into its lists. Defaults to both. |
| `includeTags` | boolean | No | Add each video's tag list, useful for topic analysis. Off by default. Billed only for videos that have tags. |
| `includeCreatorStats` | boolean | No | Add follower count, following count, upload count, total likes, level and verification for each creator. Off by default. Billed only for videos where creator stats were found. |
| `trackChanges` | boolean | No | Save a snapshot after each run and add rank moves, new-entry flags and views gained by comparing with the last snapshot. The first run only creates the baseline. On by default. |
| `historyName` | string | No | A name for the tracking history. Use different names to keep separate histories for different schedules or filter sets that read the same feed. |
| `onlyNewEntries` | boolean | No | Save only videos that entered the list since the last run, or came back after leaving. Needs change tracking and an earlier run. |
| `maxItems` | integer | No | Maximum rows to save after filtering and sorting, from 1 to 500. Defaults to 20. |
| `scanDepth` | integer | No | How many list positions to read before filtering, up to 500 on the popular feed. Raise it when your filters are tight. Defaults to 100. |
| `sortBy` | enum | No | Order of the saved rows: Bilibili's own order, or by views, likes, coins, favorites, shares, comments, danmaku, engagement rate, views per hour or newest. |
| `proxyConfiguration` | object | No | Optional proxy settings. Used only when Bilibili turns a direct request away, and blocked requests are retried automatically. The default is enough for most runs. |

The default input returns the top 20 videos from the popular feed in a few seconds.

### 📊 Data table

Each dataset row is one video or one hot search keyword.

| Field | Type | Description |
| --- | --- | --- |
| `recordType` | string | Row type: video or hotSearch. |
| `feed` | string | Feed the row came from: popular, ranking, mustWatch or hotSearches. |
| `position` | integer | Position in the feed (1 is the top). |
| `videoId` | string | Bilibili BV video ID. |
| `avId` | integer | Numeric AV video ID. |
| `title` | string | Video title. |
| `description` | string | Video description. |
| `url` | string | Video page link. |
| `shortUrl` | string | Short b23.tv link. |
| `thumbnailUrl` | string | Cover image link. |
| `durationSeconds` | integer | Length in seconds. |
| `durationFormatted` | string | Length as m:ss or h:mm:ss. |
| `publishedAt` | string | Publish time (ISO 8601, UTC). |
| `ageHours` | number | Hours since publication at retrieval time. |
| `category` | string | Bilibili sub-category name. |
| `categoryId` | integer | Sub-category ID. |
| `categoryParent` | string | Top-level partition name in Chinese. |
| `categoryParentEn` | string | Top-level partition name in English. |
| `contentKind` | string | ugc for creator uploads, ogv for official series episodes. |
| `isOriginal` | boolean | True for self-made uploads, false for reposts and licensed uploads. |
| `partCount` | integer | Number of parts for multi-part videos. |
| `isVertical` | boolean | True for portrait video. |
| `resolution` | string | Video resolution, for example 1920x1080. |
| `publishLocation` | string | Upload location label shown by Bilibili. |
| `recommendReason` | string | Badge or editor note shown on the list, for example 百万播放. |
| `hashtags` | array of strings | Hashtags found in the video post text. |
| `creatorId` | integer | Creator (UP主) ID. |
| `creatorName` | string | Creator name. |
| `creatorUrl` | string | Creator profile link. |
| `creatorAvatarUrl` | string | Creator avatar link. |
| `views` | integer | View count. |
| `likes` | integer | Like count. |
| `coins` | integer | Coin count. |
| `favorites` | integer | Favorite count. |
| `shares` | integer | Share count. |
| `comments` | integer | Comment count. |
| `danmaku` | integer | Danmaku (bullet comment) count. |
| `peakRankingPosition` | integer | Best position the video has reached on Bilibili ranking boards, when shown. |
| `engagementRatePct` | number | Likes, coins, favorites, shares and comments as a percent of views. |
| `likeRatePct` | number | Likes as a percent of views. |
| `coinRatePct` | number | Coins as a percent of views. |
| `favoriteRatePct` | number | Favorites as a percent of views. |
| `shareRatePct` | number | Shares as a percent of views. |
| `tripleActionRatePct` | number | Likes, coins and favorites together as a percent of views. |
| `danmakuPer1kViews` | number | Danmaku per 1,000 views. |
| `viewsPerHour` | integer | Average views per hour since publication. |
| `rankingPartition` | string | Ranking partition name. |
| `rankingType` | string | Ranking type. |
| `mustWatchList` | string | Name of the all-time must-watch list. |
| `tags` | array of strings | Video tags. Only with Add video tags on. |
| `creatorFollowers` | integer | Creator followers. Only with Add creator stats on. |
| `creatorFollowing` | integer | Accounts the creator follows. Only with Add creator stats on. |
| `creatorVideoCount` | integer | Creator upload count. Only with Add creator stats on. |
| `creatorTotalLikes` | integer | Total likes across the creator. Only with Add creator stats on. |
| `creatorLevel` | integer | Creator account level. Only with Add creator stats on. |
| `creatorBio` | string | Creator bio. Only with Add creator stats on. |
| `creatorVerified` | boolean | Whether the creator is officially verified. Only with Add creator stats on. |
| `creatorVerifiedTitle` | string | Verification title. Only with Add creator stats on. |
| `isNew` | boolean | True when the item entered the feed since the previous run. |
| `reEntered` | boolean | True when the item left the feed and came back. |
| `previousPosition` | integer | Position in the previous run. |
| `positionChange` | integer | Positions gained since the previous run; positive means it moved up. |
| `previousSeenAt` | string | When the previous run saw the item. |
| `firstSeenAt` | string | When tracking first saw the item. |
| `timesSeen` | integer | Number of runs that have seen the item. |
| `bestPosition` | integer | Best position seen across runs. |
| `viewsGained` | integer | Views gained since the previous run. |
| `viewsGainedPerHour` | integer | Views gained per hour since the previous run. |
| `likesGained` | integer | Likes gained since the previous run. |
| `coinsGained` | integer | Coins gained since the previous run. |
| `favoritesGained` | integer | Favorites gained since the previous run. |
| `commentsGained` | integer | Comments gained since the previous run. |
| `sharesGained` | integer | Shares gained since the previous run. |
| `danmakuGained` | integer | Danmaku gained since the previous run. |
| `keyword` | string | Hot search keyword. |
| `displayName` | string | Display text when different from the keyword. |
| `heatScore` | integer | Hot search heat score. |
| `heatChange` | integer | Heat score change since the previous run. |
| `searchUrl` | string | Bilibili search link for the keyword. |
| `iconUrl` | string | Badge icon link for the keyword. |
| `retrievedAt` | string | When the row was collected (ISO 8601). |

A run summary with counts, filter results, new entries, videos that dropped out and the biggest risers is saved with every run.

### 📤 Sample output

A real video row from a second scheduled run with tags and creator stats switched on. Long text fields and image links are left out here for length.

```json
{
  "recordType": "video",
  "feed": "popular",
  "position": 1,
  "videoId": "BV1Vtpg65EnA",
  "title": "也是当上外卖大法官了",
  "url": "https://www.bilibili.com/video/BV1Vtpg65EnA",
  "durationFormatted": "4:55",
  "publishedAt": "2026-10-10T10:30:00.000Z",
  "ageHours": 22.9,
  "category": "综合",
  "categoryParentEn": "Animation",
  "isOriginal": false,
  "creatorId": 480680646,
  "creatorName": "阿萨Aza",
  "views": 1533775,
  "likes": 53187,
  "coins": 3397,
  "favorites": 4324,
  "shares": 911,
  "comments": 1019,
  "danmaku": 495,
  "engagementRatePct": 4.1,
  "viewsPerHour": 66977,
  "retrievedAt": "2026-10-11T09:26:17.934Z",
  "isNew": false,
  "previousPosition": 1,
  "positionChange": 0,
  "viewsGained": 3883,
  "likesGained": 50,
  "firstSeenAt": "2026-10-11T09:25:50.801Z",
  "timesSeen": 2,
  "bestPosition": 1,
  "tags": [
    "搞笑",
    "阿萨Aza",
    "切片",
    "外卖",
    "虚拟主播"
  ],
  "creatorFollowers": 1726313,
  "creatorVideoCount": 2738,
  "creatorTotalLikes": 54025548,
  "creatorLevel": 6,
  "creatorVerified": true
}
```

### 💰 Pricing

Pricing is pay per result. You pay for each row saved to your dataset, so a run that saves nothing costs nothing. There are no subscriptions, and per-row prices fall automatically on higher Apify plans.

- Tags and creator stats are billed only for videos that actually include them, and only when you switch those options on.
- Change tracking, rank moves, new-entry flags, filters and engagement metrics are included in the row price.
- Set a maximum charge for the run in Apify and the Actor stops saving rows once it is reached.

### ⭐ Enjoying Bilibili Trending Videos Scraper?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#FEF1F6;border:1px solid #F8CBDB;border-left:5px solid #E4457A;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">One scheduled run just showed you which Bilibili videos are breaking out, not just which are big.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other trend analysts, agencies and brand scouts find this Actor. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#E4457A;border:1px solid #F8CBDB;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/bilibili-popular-video-intelligence/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ❓ FAQ

##### B站热门视频怎么批量导出？

Run the Actor with the popular feed selected and set `maxItems` and `scanDepth` to the number of positions you want, up to 500. Download the rows as JSON, CSV or Excel, or send them to a sheet or dashboard.

##### 哔哩哔哩排行榜和热搜怎么每天自动监控？

Pick the ranking board or hot searches, then schedule the Actor hourly or daily with the same tracking name. From the second run on, every row shows whether it is new, how many places it moved and how many views it gained.

##### Do I need a Bilibili account?

No. The Actor reads public lists, so no login, cookie or API key is needed. It does not return comment threads, danmaku text, keyword search results or video downloads.

##### Why did I get fewer rows than my limit, or no trend fields?

Filters apply after the scan, so tight filters can leave fewer rows. Raise `scanDepth` or loosen a filter, and check the run summary to see which filter removed rows. Trend fields start on the second run, because the first run only creates the baseline.

### 🔗 Other actors

- [Douban Movie Top 250 Scraper 豆瓣电影: Hot Charts, Filters, Changes](https://apify.com/getascraper/douban-movie-rankings-scraper) ↗ - Chinese film charts with ratings, filters and change tracking.
- [Douban Music Scraper 豆瓣音乐: Top 250, Weekly Charts and Tag Lists](https://apify.com/getascraper/douban-music-rankings-scraper) ↗ - Chinese music rankings and weekly charts.
- [Douban Book Scraper 豆瓣读书: Top 250, Tags, New Releases, Changes](https://apify.com/getascraper/douban-book-rankings-scraper) ↗ - Chinese book rankings, tag lists and new releases.
- [Xigua Video Scraper 西瓜视频: Keyword & Hashtag Search, Play Stats](https://apify.com/getascraper/xigua-video-search-scraper) ↗ - Search Chinese short video by keyword or hashtag with play stats.
- [Kick Trending Clips Scraper: Rank Viral Clips by View Velocity](https://apify.com/getascraper/kick-trending-clips-scraper) ↗ - Find streaming clips going viral, ranked by views per hour.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/bilibili-popular-video-intelligence/changelog.md

# Actor input Schema

## `feed` (type: `string`):

Which Bilibili list to collect: the live popular feed, the top-100 ranking board, the all-time must-watch list, or the current hot search keywords.

## `rankingPartition` (type: `string`):

Only used when the feed is the ranking board. Pick one top-level partition, or all partitions for the site-wide top 100.

## `rankingType` (type: `string`):

Only used for the ranking board. All content, original uploads only, or rookie creators only.

## `categories` (type: `array`):

Keep videos in these categories. Accepts English or Chinese partition names such as Gaming or 游戏, sub-category names such as 单机游戏, or numeric category IDs. Leave empty for all categories.

## `excludeCategories` (type: `array`):

Drop videos in these categories. Same formats as the category filter.

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

Keep videos whose title, description or hashtags contain at least one of these words. Not case sensitive.

## `excludeKeywords` (type: `array`):

Drop videos whose title, description or hashtags contain any of these words.

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

Keep videos from these creators. Accepts a creator ID, a space.bilibili.com profile link, or part of the creator name.

## `minViews` (type: `integer`):

Drop videos with fewer views than this. Zero turns the filter off.

## `minLikes` (type: `integer`):

Drop videos with fewer likes than this. Zero turns the filter off.

## `minEngagementRatePct` (type: `number`):

Drop videos whose engagement rate is lower. Engagement rate is likes, coins, favorites, shares and comments added together as a percentage of views. Zero turns the filter off.

## `minDurationMinutes` (type: `number`):

Drop videos shorter than this. Zero turns the filter off.

## `maxDurationMinutes` (type: `number`):

Drop videos longer than this. Zero turns the filter off.

## `publishedWithin` (type: `string`):

Keep only videos uploaded recently. Useful for spotting fresh breakouts instead of long-running hits.

## `contentOrigin` (type: `string`):

Keep only self-made uploads, or only reposts and licensed uploads.

## `contentKind` (type: `string`):

Creator uploads versus official series episodes (anime, drama and similar) that Bilibili lists in its feeds.

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

Add the creator's tag list to each saved video. Useful for topic analysis.

## `includeCreatorStats` (type: `boolean`):

Add follower count, following count, upload count, total likes, level and verification to each saved video. One lookup per distinct creator.

## `trackChanges` (type: `boolean`):

Save a snapshot after each run and add fields such as isNew, positionChange and viewsGainedPerHour by comparing with the last snapshot. The first run only creates the baseline.

## `historyName` (type: `string`):

A name for this tracking history, so each run compares against the right earlier snapshot. Use a different name for each schedule or filter set that reads the same feed, for example gaming-daily or all-weekly.

## `onlyNewEntries` (type: `boolean`):

Save only videos that entered the feed since the last run, or came back after leaving. Needs change tracking and an earlier run.

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

Maximum number of rows to save after filtering and sorting.

## `scanDepth` (type: `integer`):

How many feed positions to read before filtering (the popular feed goes up to 500, ranking and must-watch lists are shorter). Raise it when filters are tight.

## `sortBy` (type: `string`):

Order of the saved rows. Feed order keeps Bilibili's own ranking; the others re-rank the matching videos.

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

Apify Proxy is a fallback for requests Bilibili refuses. The default datacenter proxy is enough. Turn it off to always connect directly.

## Actor input object example

```json
{
  "feed": "popular",
  "rankingPartition": "0",
  "rankingType": "all",
  "minViews": 0,
  "minLikes": 0,
  "minEngagementRatePct": 0,
  "minDurationMinutes": 0,
  "maxDurationMinutes": 0,
  "publishedWithin": "any",
  "contentOrigin": "any",
  "contentKind": "any",
  "includeTags": false,
  "includeCreatorStats": false,
  "trackChanges": true,
  "historyName": "default",
  "onlyNewEntries": false,
  "maxItems": 20,
  "scanDepth": 100,
  "sortBy": "feed",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `videos` (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 = {
    "feed": "popular",
    "rankingPartition": "0",
    "rankingType": "all",
    "minViews": 0,
    "minLikes": 0,
    "minEngagementRatePct": 0,
    "minDurationMinutes": 0,
    "maxDurationMinutes": 0,
    "publishedWithin": "any",
    "contentOrigin": "any",
    "contentKind": "any",
    "includeTags": false,
    "includeCreatorStats": false,
    "trackChanges": true,
    "historyName": "default",
    "onlyNewEntries": false,
    "maxItems": 20,
    "scanDepth": 100,
    "sortBy": "feed",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/bilibili-popular-video-intelligence").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 = {
    "feed": "popular",
    "rankingPartition": "0",
    "rankingType": "all",
    "minViews": 0,
    "minLikes": 0,
    "minEngagementRatePct": 0,
    "minDurationMinutes": 0,
    "maxDurationMinutes": 0,
    "publishedWithin": "any",
    "contentOrigin": "any",
    "contentKind": "any",
    "includeTags": False,
    "includeCreatorStats": False,
    "trackChanges": True,
    "historyName": "default",
    "onlyNewEntries": False,
    "maxItems": 20,
    "scanDepth": 100,
    "sortBy": "feed",
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/bilibili-popular-video-intelligence").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 '{
  "feed": "popular",
  "rankingPartition": "0",
  "rankingType": "all",
  "minViews": 0,
  "minLikes": 0,
  "minEngagementRatePct": 0,
  "minDurationMinutes": 0,
  "maxDurationMinutes": 0,
  "publishedWithin": "any",
  "contentOrigin": "any",
  "contentKind": "any",
  "includeTags": false,
  "includeCreatorStats": false,
  "trackChanges": true,
  "historyName": "default",
  "onlyNewEntries": false,
  "maxItems": 20,
  "scanDepth": 100,
  "sortBy": "feed",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/bilibili-popular-video-intelligence --silent --output-dataset

```

## MCP server setup

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

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/EVcwVM122wFSYWk8N/builds/MQdYBOfSB6OTcd3T1/openapi.json
