# Bilibili Scraper 哔哩哔哩 - Videos, Comments, Creators, No Login (`benthepythondev/bilibili-scraper`) Actor

Returns Bilibili (哔哩哔哩, B站) videos with views, likes, coins and tags, every comment and reply under a video, a creator's complete upload list and profile, trending and category rankings, and danmaku. Reads a keyword search past Bilibili's 1,000-result limit. No login, cookies or browser.

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

## Pricing

from $0.85 / 1,000 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 Scraper (哔哩哔哩 / B站): Videos, Comments, Creators and Rankings

Returns Bilibili videos with views, likes, coins, favourites, tags and creator, the comments and replies under a video, a creator's complete upload list and profile, the trending board, the top 100 of every category, and danmaku (弹幕). Search by keyword in Chinese or English, give creators or video links, or pick a ranking. It needs no login, no cookies and no browser. Export to JSON, CSV or Excel, run on a schedule, call via API, or connect to Make, Zapier or n8n.

**Price:** $4.00 per 1,000 videos or creator profiles and $1.00 per 1,000 comments on the Apify Free plan, down to $3.40 and $0.85 from Gold up. Not charged: a search without results, a creator or video link that does not exist, a video's comments when they are closed.

### What other Bilibili scrapers state as their limits, and what this one does

| Their documentation says | This Actor |
|---|---|
| A creator's videos are found by searching the channel name, because Bilibili's upload list refuses requests | Reads the upload list itself, from the newest video to the first: 1,442 of 1,442 and 678 of 678 in the tests |
| Deep comment paging needs a logged-in session; newest-first returns about three comments | Pages the whole comment list in hot or newest order: 1,392 comments and replies of a video Bilibili counts 1,390 on, 5,000 newest comments of another in 80 seconds |
| The category is empty for a video given by link | `category` is filled for video links as well |
| Coins and shares are missing in search and creator lists | `includeDetails` adds them, with tags and the creator's followers, at no extra charge |
| Category rankings answer an error, so a category is picked out of the trending board | The top 100 of each of 18 categories and the overall top 100, as Bilibili ranks them |
| One price for every row, comments included: $0.002 to $0.02, depending on the Actor and the plan | $0.004 a video, $0.001 a comment |

One Bilibili search lists about 1,000 videos. Sorted by newest, this Actor continues behind the oldest video read: 2,300 videos of one keyword in 24 seconds.

### 🔎 What is the Bilibili Scraper?

Bilibili is China's largest video community: uploads by creators (UP主), a comment section under every video and danmaku, the comments that scroll across a video at a chosen second. The site offers no public API to developers outside China. This Actor calls the same data requests that Bilibili's website and phone app make and returns clean rows.

#### What data does it extract?

- **Videos:** title, description, cover, length, views, likes, coins, favourites, shares, number of comments and danmaku, publish time (UTC), category, tags, parts, place of publication
- **Creators:** name, signature, followers, following, total likes, number of videos, level, verification text, live room
- **Comments and replies:** text, likes, number of replies, time, author name, id, level and avatar, and for a reply the comment it stands under
- **Danmaku:** each one's second in the video, text, colour and time of sending
- **Rankings:** the trending board (about 600 videos) and the top 100 of each category

### ⬇️ Input

Fill in one or several of the first four fields.

| Field | Type | Default | What it does |
|---|---|---|---|
| `queries` | array | | Search keywords, Chinese or English |
| `creators` | array | | Space links, UIDs or exact names of creators |
| `videoUrls` | array | | Video links, BV ids, av numbers, b23.tv short links |
| `categories` | array | | `popular` (trending board), `all` (top 100 overall), or `animation`, `music`, `dance`, `game`, `knowledge`, `tech`, `sports`, `car`, `life`, `food`, `animal`, `kichiku`, `fashion`, `entertainment`, `film`, `movie`, `tv`, `guochuang` |
| `maxResults` | integer | 20 | Videos per search, creator or ranking, up to 20,000 |
| `sortBy` | string | `relevance` | `relevance`, `newest`, `views`, `danmaku`, `favorites`, `comments`; for creators `views` or newest |
| `duration` | string | `any` | `under10`, `10to30`, `30to60`, `over60` (minutes), for searches |
| `publishedAfter`, `publishedBefore` | string | | A day such as `2026-09-01` (UTC) or an age such as `7 days`; for searches and creators |
| `creatorOutput` | string | `videos` | `videos`, `profile` (one row per creator, no videos) or `both` |
| `includeDetails` | boolean | false | Full record for every video of a search, creator or ranking |
| `maxCommentsPerVideo` | integer | 0 | Comments to save under each video, up to 20,000 |
| `commentsSort` | string | `hot` | `hot` or `newest` |
| `includeReplies` | boolean | false | Replies under the comments, as rows of their own |
| `includeDanmaku` | boolean | false | One row per video with its danmaku |
| `onlyNew`, `monitorId` | boolean, string | false | Skip videos an earlier run of the same monitor delivered |

#### Example input

Videos for a keyword, newest first, from the last week:

```json
{
  "queries": ["黑神话悟空"],
  "sortBy": "newest",
  "publishedAfter": "7 days",
  "maxResults": 500
}
```

Every upload of two creators, with their profiles:

```json
{
  "creators": ["https://space.bilibili.com/546195", "9617619"],
  "creatorOutput": "both",
  "maxResults": 2000
}
```

A video with its newest 1,000 comments and their replies:

```json
{
  "videoUrls": ["https://www.bilibili.com/video/BV1feaH63Epk"],
  "maxCommentsPerVideo": 1000,
  "commentsSort": "newest",
  "includeReplies": true
}
```

The 100 top videos in tech and in games, with full records:

```json
{
  "categories": ["tech", "game"],
  "maxResults": 100,
  "includeDetails": true
}
```

### ⬆️ Output

Every row has a `type`: `video`, `comment`, `user` or `danmaku`. The dataset has a view for videos, one for comments and one for creators. All samples are from runs of October 5, 2026.

A video (here with its full record):

```json
{
  "type": "video",
  "bvid": "BV1feaH63Epk",
  "aid": 117354226849930,
  "url": "https://www.bilibili.com/video/BV1feaH63Epk",
  "title": "我在一天内学会了5个乐器！！",
  "description": "别管难听不难听，你就说发没发出声来吧。",
  "thumbnailUrl": "https://i2.hdslb.com/bfs/archive/462781c040fdb9dd4584f0ba9cf4c00cd1fba795.jpg",
  "duration": 727,
  "durationFormatted": "12:07",
  "viewCount": 2468667,
  "likeCount": 174038,
  "coinCount": 15272,
  "favoriteCount": 24917,
  "shareCount": 1777,
  "danmakuCount": 3438,
  "replyCount": 1389,
  "authorName": "老番茄",
  "authorMid": 546195,
  "authorFollowers": 20821588,
  "publishDate": "2026-09-30T03:30:00+00:00",
  "publishTimestamp": 1790739000,
  "category": "单机游戏",
  "tags": ["搞笑", "乐器", "萨克斯", "钢琴", "架子鼓", "老番茄"],
  "parts": 1,
  "cid": 42310699872,
  "publishLocation": "上海",
  "source": "videos:video links",
  "rank": 1,
  "scrapedAt": "2026-10-05T09:16:40.646953+00:00"
}
```

Which fields a list fills without `includeDetails`: a search has everything except coins, shares, the creator's followers, `parts`, `cid` and `publishLocation`; a creator's upload list has title, cover, length, views, danmaku count, publish time, category and the creator; a category ranking has likes, favourites and comments as well; the trending board has the full record except tags. A field a list does not carry is `null`, never 0.

A comment (author replaced here; a reply carries `isThreadReply: true` and the id of the comment it stands under):

```json
{
  "type": "comment",
  "commentId": 315527976641,
  "text": "…",
  "likeCount": 51,
  "replyCount": 0,
  "createdAt": "2026-09-30T07:17:17+00:00",
  "createdTimestamp": 1790752637,
  "authorName": "example_user",
  "authorMid": 12345678,
  "authorAvatar": "https://i0.hdslb.com/bfs/face/example.jpg",
  "authorLevel": 6,
  "videoBvid": "BV1feaH63Epk",
  "videoAid": 117354226849930,
  "isThreadReply": true,
  "rootRpid": 319089854560,
  "parentRpid": 319089854560,
  "scrapedAt": "2026-10-05T09:16:40.227311+00:00"
}
```

A creator:

```json
{
  "type": "user",
  "mid": 546195,
  "name": "老番茄",
  "face": "https://i0.hdslb.com/bfs/face/bc5ca101313d4db223c395d64779e76eb3482d60.jpg",
  "sign": "新浪微博：_老番茄_",
  "level": 6,
  "fans": 20821588,
  "friend": 6,
  "attention": 6,
  "isOfficial": true,
  "officialDesc": "2025百大UP主、2025年度商业影响力奖UP主、2022年度联合创作奖UP主",
  "archiveCount": 678,
  "likeCount": 195572013,
  "profileUrl": "https://space.bilibili.com/546195",
  "isLive": true,
  "liveRoomUrl": "https://live.bilibili.com/21852",
  "source": "creator:546195",
  "scrapedAt": "2026-10-05T09:16:38.344466+00:00"
}
```

A video's danmaku (two of 1,800 shown):

```json
{
  "type": "danmaku",
  "videoBvid": "BV1feaH63Epk",
  "videoAid": 117354226849930,
  "cid": 42310699872,
  "danmakuCount": 1800,
  "danmakuOnVideo": 3438,
  "danmaku": [
    {"time": 0.0, "text": "《看了场交响乐 啥乐器都想学》", "sentAt": "2026-09-30T05:03:56+00:00", "color": "#ffffff"},
    {"time": 0.0, "text": "《三分钟热度》", "sentAt": "2026-10-01T07:48:26+00:00", "color": "#ffffff"}
  ],
  "scrapedAt": "2026-10-05T09:16:40.632601+00:00"
}
```

A video's row is saved after its comments and its danmaku row. The run's `SUMMARY` record lists, per search, creator and ranking, how many videos were saved, how many Bilibili has, and how the reading ended.

### 💰 What a run costs

| Apify plan | Per 1,000 videos, creator profiles or danmaku lists | Per 1,000 comments or replies |
|---|---|---|
| Free | $4.00 | $1.00 |
| Bronze | $3.80 | $0.95 |
| Silver | $3.60 | $0.90 |
| Gold, Platinum, Diamond | $3.40 | $0.85 |

A video row costs two events, the row ($0.001) and the record ($0.003); a comment row costs the row only. Apify's standard start event ($0.00005 per run at the default memory) is the only other charge. `includeDetails` costs nothing extra. With a maximum charge set for the run, the Actor stops when the next row would pass it, and a video that was started still gets its own row.

Examples on the Free plan: 500 videos for a keyword, $2.00. The 678 uploads of one creator with the profile, $2.72. One video with 5,000 comments, $5.00. A daily check of 50 creators that finds 30 new videos, $0.12.

### ⏱️ Measured (October 5, 2026)

| Run | Rows | Time |
|---|---|---|
| Sample input: 20 videos for one keyword | 20 | 3 s |
| Five keywords, 300 videos each | 1,500 | 13 s |
| One keyword, newest first, past Bilibili's list limit | 2,300 | 24 s |
| One keyword, most views, September 2026 only (Bilibili's limit for one search) | 1,050 | 14 s |
| Every upload of one creator (1,442 of 1,442) | 1,442 | 24 s |
| Ten creator profiles | 10 | 3 s |
| Top 100 of one category with full records | 100 | 32 s |
| One video with every comment and reply (Bilibili counts 1,390) | 1,393 | 25 s |
| One video with its 5,000 newest comments | 5,001 | 80 s |

Measured from a server in Germany without a proxy, at 85 MB of memory in a 3,500-row run. A run killed after 7 seconds in the middle of ten videos with 200 comments each, and started again on the same dataset, ended with 10 videos and 2,000 comments, none of them twice.

### 🔔 Monitoring: only what is new

Turn on `onlyNew`, give the run a `monitorId`, and put it on a schedule. Every video a run saves is remembered under that name; later runs skip it. With `sortBy: newest` a search stops reading two pages after the last new video, so a daily check of a keyword or of fifty creators takes a few seconds and costs only the new videos. A watch starts at its first run: videos older than the oldest one the first run saved are not delivered later. The memory is a key-value store named `bilibili-monitor` in your own account.

```json
{
  "creators": ["546195", "9617619"],
  "onlyNew": true,
  "monitorId": "creators-daily",
  "maxResults": 50
}
```

### 🤖 For AI agents

Smallest useful calls:

```json
{"queries": ["人工智能"], "maxResults": 20}
```

```json
{"videoUrls": ["BV1feaH63Epk"], "maxCommentsPerVideo": 50}
```

Every row has `type` (`video`, `comment`, `user`, `danmaku`). All four target fields are arrays and can be combined in one run. No credentials are needed. A target that does not exist returns no row, and the status message and `SUMMARY` name it. A video is saved once per run, also when two searches find it.

### 💡 Use cases

- 📈 **Brand and product monitoring in China:** what is said about a brand, a game or a film this week, with comments and danmaku as reaction data.
- 🧑‍🎤 **Creator (KOL) research:** followers, likes, upload history and views per video for a list of creators, before a campaign and during it.
- 🧠 **Chinese text for analysis and model training:** comments, replies and danmaku by topic, with times and like counts.
- 🔥 **Trend tracking:** the trending board and the top 100 of each category, every day.

### ⚠️ Limits, stated plainly

- **The times above are from a test server, not from Apify's network.** The Actor paces its requests and moves to Apify's datacenter proxy, then to residential addresses, when Bilibili turns an address away.
- **One search lists about 1,050 videos.** Sorted by newest the Actor continues behind the oldest video read; in any other order the search ends there and the status message says so. Narrow the dates to cover more.
- **Bilibili's search is loose.** A query without good matches still returns videos. Check `title` and `tags`.
- **`includeDetails` reads about five videos a second.** Bilibili turns an address away for twenty minutes and more when the video record is asked for in bursts.
- **Danmaku:** what Bilibili's danmaku file of a video holds, which is a selection on busy videos (1,800 of 3,438 on the test video), and of a video's first part only.
- **Comments:** what a visitor can read. A video with comments closed returns none. The author's IP region is not given to visitors.
- **Not available without login:** subtitles and transcripts, a creator's followers list, favourites, watch history.
- **Creator by name** takes the creator Bilibili's search puts first, an exact name before the others; `SUMMARY` says which one was matched. A link or UID is exact.
- **Times are UTC.** Bilibili shows Beijing time (UTC+8).

### ❓ FAQ

**Do I need a Bilibili account, cookies or an API key?** No.

**Is there an official Bilibili API?** Not one open to developers outside China: Bilibili's developer platform asks for verification with a Chinese phone number. This Actor reads what the website and the app show to a visitor.

**Can I use the input I wrote for another Bilibili Actor?** Mostly. `mode` (`search`, `video_detail`, `video_comments`, `user_videos`, `user_profile`, `popular`), `searchQuery`, `userIds`, `sortOrder`, `durationFilter`, `pubtimeBegin`, `pubtimeEnd`, `maxComments`, `sortComments`, `includeComments`, `deltaMode`, `deltaStateKey`, `keywords`, `searchTerms`, `startUrls`, `userUrls` and `maxItems` are read. The output uses the same field names as the most-used Bilibili Actor (`bvid`, `viewCount`, `coinCount`, `authorMid`, `publishDate`, `commentId`, `rootRpid`, `fans`, `archiveCount`). Differences: a comments run also returns the video's own row, and a creator run returns the profile only when `creatorOutput` asks for it.

**How do I get everything for a keyword?** `sortBy: newest` with a large `maxResults`. Add `publishedAfter` to stop at a date.

**Why does a video appear only once when two of my searches find it?** A video is saved, and charged, once per run, under the first search that found it. `source` says which.

**How fresh are the counts?** They are read at the moment of the run; `scrapedAt` is on every row.

**What happens at a spending limit or a timeout?** The run stops cleanly, keeps its rows and says in the status message where it stopped. Started again on the same dataset (resurrected), it continues without saving a row twice.

**How do I call it from code?** With the Apify API or the Python and JavaScript clients; every run returns a dataset you can fetch as JSON or CSV. It also works as a tool through Apify's MCP server.

**Is it legal?** The Actor reads what Bilibili shows to every visitor without login. Comment and danmaku authors are people: their names and what they wrote are personal data, so GDPR, China's PIPL and similar rules apply to how you store and use them. Respect Bilibili's terms and the copyright of creators; the Actor returns data about videos, not the videos.

### 🔗 You might also like

- [YouTube Comments Scraper](https://apify.com/benthepythondev/youtube-comments-scraper): comments and replies of YouTube videos
- [TikTok Comments Scraper](https://apify.com/benthepythondev/tiktok-comments-scraper): comments and replies of TikTok videos
- [TikTok Profile Videos Scraper](https://apify.com/benthepythondev/tiktok-profile-videos-scraper): every video of a TikTok profile with statistics
- [Telegram Channel Scraper](https://apify.com/benthepythondev/telegram-channel-scraper): posts of public Telegram channels

**Keywords:** bilibili scraper, bilibili api, 哔哩哔哩 爬虫, B站 数据, bilibili video scraper, bilibili comments scraper, bilibili danmaku, 弹幕, bilibili creator data, UP主 数据, bilibili search api, bilibili trending, bilibili ranking, china social media scraper, chinese video data, bilibili kol monitoring, bilibili comment export

# Actor input Schema

## `queries` (type: `array`):

Keywords to search Bilibili videos for, in Chinese or English, for example "人工智能" or "AI tutorial". Each query returns videos up to the limit below. One Bilibili search lists about 1,000 videos; sorted by newest, the Actor reads on past that.

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

Creators (UP主) whose uploads or profile you want: a space link such as https://space.bilibili.com/546195, the UID (546195), or the exact name. Returns every upload from new to old, up to the limit below. A name is looked up with Bilibili's own creator search.

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

Videos by link or id: https://www.bilibili.com/video/BV1suam6sEtq, a bare BV id, an av number (av170001) or a b23.tv short link. Each returns the video's full record; add comments or danmaku with the options below.

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

Trending videos: `popular` is Bilibili's trending board (about 600 videos), `all` the top 100 across categories, every other value the top 100 of that category.

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

Videos to save for each search query, each creator and each ranking, up to 20,000. A video link is always one video. This is the main cost lever: every video row is charged.

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

Order of search results. For creators, `views` lists the most played uploads first and every other value the newest first.

## `duration` (type: `string`):

Only search results of this length.

## `publishedAfter` (type: `string`):

Only videos published on or after this day (2026-09-01, read as UTC) or within this age (7 days, 2 weeks). Applies to searches and creators.

## `publishedBefore` (type: `string`):

Only videos published up to the end of this day (UTC). Applies to searches and creators.

## `creatorOutput` (type: `string`):

`profile` returns one row per creator and no videos: followers, total likes, number of videos, level, verification, live room.

## `includeDetails` (type: `boolean`):

Adds what lists do not carry: coins, shares, favourites, tags, description, parts, the creator's followers. Costs two requests per video (about five videos a second) and nothing extra. Video links always get the full record.

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

Comments to save under each video, up to 20,000; 0 saves none. Each comment and reply is a row of its own, charged at the comment price.

## `commentsSort` (type: `string`):

Which comments come first when the limit is smaller than the comment section.

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

Also saves the replies under each comment (楼中楼), each as a row with `rootRpid` and `isThreadReply`. They count towards the limit per video.

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

Adds one row per video with its danmaku: the second of the video each one is shown at, its text, colour and time of sending. Bilibili's danmaku file holds a selection on busy videos (1,800 of 3,438 in a test), and the first part of a video only.

## `onlyNew` (type: `boolean`):

For scheduled runs: skips every video an earlier run with the same monitor name saved. Use it with `sortBy: newest` to get what was published since the last run.

## `monitorId` (type: `string`):

Names the memory of the only-new mode, for example `brand-daily`. Without a name the memory belongs to this exact list of searches, creators and rankings.

## `debug` (type: `boolean`):

Writes each request with its size and time to the log, for support.

## Actor input object example

```json
{
  "queries": [
    "人工智能"
  ],
  "maxResults": 20,
  "sortBy": "relevance",
  "duration": "any",
  "creatorOutput": "videos",
  "includeDetails": false,
  "maxCommentsPerVideo": 0,
  "commentsSort": "hot",
  "includeReplies": false,
  "includeDanmaku": false,
  "onlyNew": false,
  "debug": false
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "queries": [
        "人工智能"
    ]
};

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

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

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

```

## Python example

```python
from apify_client import ApifyClient

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

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

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

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

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

```

## CLI example

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

```

## MCP server setup

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

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

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Fj7M6DbpK6IBHxDuy/builds/f0Q07nHX7dYfHSoed/openapi.json
