# Bilibili Scraper: Videos, Search, Rankings & Creators API (`praguedatalab/bilibili-scraper`) Actor

Bilibili (China's YouTube) data in one call: keyword search, popular and ranking lists, full video details and creator stats. Views, likes, coins, favorites, tags, followers. Drop-in input. $3 per 1,000 results.

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

## Pricing

$3.00 / 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.

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

## What's an Apify Actor?

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

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

## How to integrate an Actor?

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

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

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

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

# README

## Bilibili Scraper: Videos, Search, Rankings & Creators API

Get Bilibili (哔哩哔哩, B站, China's YouTube) data as clean JSON rows: one row per video (title, views, likes, coins, favorites, shares, danmaku and comment counts, tags, category, creator, publish date) or per creator (followers, following, video count, total likes, level, verification). Search by keyword, read the popular and ranking boards, look up full video details or monitor creators. **$3 per 1,000 results**, no login, no cookies to supply.

### Quick start

Minimal input (search mode):

```json
{
    "mode": "search",
    "searchQuery": "python",
    "maxResults": 40
}
```

Sample output row:

```json
{
    "type": "video",
    "bvid": "BV1gKJ86JEuP",
    "aid": 117451568191221,
    "title": "我是人类",
    "description": "游戏：i'm not a robot",
    "url": "https://www.bilibili.com/video/BV1gKJ86JEuP",
    "thumbnailUrl": "https://i2.hdslb.com/bfs/archive/e858b6164334a31c2703cd38ef517f13210ef42d.jpg",
    "duration": 1442,
    "durationFormatted": "24:02",
    "viewCount": 2874934,
    "likeCount": 152887,
    "coinCount": 20219,
    "favoriteCount": 25691,
    "shareCount": 2482,
    "danmakuCount": 6498,
    "replyCount": 1777,
    "authorName": "老番茄",
    "authorMid": 546195,
    "authorUrl": "https://space.bilibili.com/546195",
    "authorFace": "https://i0.hdslb.com/bfs/face/bc5ca101313d4db223c395d64779e76eb3482d60.jpg",
    "authorFollowers": 20853119,
    "publishDate": "2026-10-17T03:30:00Z",
    "publishTimestamp": 1792207800,
    "category": "单机游戏",
    "categoryId": 17,
    "tags": ["推荐宝藏游戏", "解谜", "搞笑", "老番茄", "我不是机器人", "captcha"],
    "rank": null,
    "searchQuery": null,
    "source": "video_detail",
    "scrapedAt": "2026-10-19T13:14:25.441Z"
}
```

### Drop-in replacement

**Compatible with the input of `zhorex/bilibili-scraper`.** The same field names, types and values work here: `mode` (`search`, `video_detail`, `user_profile`, `user_videos`, `popular`), `searchQuery`, `searchAliases`, `sortOrder`, `durationFilter`, `pubtimeBegin`, `pubtimeEnd`, `videoUrls`, `userIds`, `category`, `maxResults`, `deltaMode` and `deltaStateKey`. Switch by changing only the Actor id in your API call, schedule or integration. The output uses the same field names for videos (`bvid`, `viewCount`, `likeCount`, `coinCount`, `favoriteCount`, `shareCount`, `danmakuCount`, `replyCount`, `authorName`, `authorMid`, `authorFace`, `publishDate`, `publishTimestamp`, `category`, `tags`, `url`, `thumbnailUrl`, `duration`, `durationFormatted`, `scrapedAt`) and for creators (`type: "user"`, `mid`, `name`, `face`, `sign`, `level`, `followers`, `following`, `videoCount`, `totalLikes`, `isOfficial`, `officialTitle`, `officialRole`, `profileUrl`, plus `fans`, `attention`, `archiveCount`, `likeCount`).

What is different:

- **Scope: no comments and no danmaku.** Comment threads and danmaku texts are user-generated personal data and are not collected. `includeComments`, `includeReplies`, `followUpComments`, `includeDanmaku`, `danmakuSampleSize`, `maxComments`, `sortComments` and `sentimentAnalysis` are accepted and ignored; the run status names the ones you switched on. Mode `video_comments` returns nothing and costs nothing. Every video row still carries its `danmakuCount` and `replyCount`.
- `autoLocalize` is ignored: add the Chinese name yourself in `searchAliases` or `keywords` (for example `"searchQuery": "Nike", "searchAliases": ["耐克"]`).
- `user_videos` reads the creator's real upload list (newest first, complete history, collaborations included) instead of a search by channel name, with full stats on every row.
- Extra modes and fields: `ranking` mode, `rankingType`, `fetchVideoDetails`, `authorFollowers`, `authorUrl`, `categoryId`, `rank`, `searchQuery`, `source`.

### Modes

| Mode | Input | Rows |
|---|---|---|
| `search` | `searchQuery` (+ optional `keywords`/`searchAliases`), `sortOrder`, `durationFilter`, `pubtimeBegin`, `pubtimeEnd` | Videos matching the query, up to about 1,000 per query |
| `popular` | optional `category` | The trending board (综合热门, 450 to 500 videos); with a `category`, that category's trending board (top 100) |
| `ranking` | `category`, `rankingType` (`all`, `origin`, `rookie`) | The ranking board (排行榜) of a category, top 100 |
| `video_detail` | `videoUrls`: URLs, BV ids, av ids, b23.tv short links | One complete row per video, with tags and the creator's followers |
| `user_profile` | `userIds`: mid, `space.bilibili.com/<mid>` or `UID:<mid>` | One creator row each |
| `user_videos` | `userIds` | Each creator's profile row, then their newest uploads |
| `video_comments` | — | Nothing (out of scope, see above) |

### Input

| Field | Type | Default | Notes |
|---|---|---|---|
| `mode` | string | `search` | See the table above |
| `searchQuery` | string | — | Required in search mode. Chinese or English: `python`, `人工智能`, `原神` |
| `keywords` | array | `[]` | More queries; results are merged, deduplicated and share `maxResults` |
| `searchAliases` | array | `[]` | Same as `keywords` (compatibility) |
| `sortOrder` | string | `totalrank` | `totalrank` (relevance), `click` (views), `pubdate` (newest), `dm` (danmaku), `stow` (favorites), `scores` (comments) |
| `durationFilter` | string | `any` | `short` (< 10 min), `medium` (10-30), `long` (30-60), `verylong` (> 60) |
| `pubtimeBegin`, `pubtimeEnd` | string | — | `2026-04-15`, `2026/04/15`, `20260415`, `2026-04-15 10:30`, ISO 8601 with or without zone (no zone = UTC). One bound alone works too (Bilibili needs both, the Actor fills the other one). Unreadable values are not applied and the run status says so |
| `category` | string | `all` | `animation`, `music`, `dance`, `game`, `knowledge`, `tech`, `sports`, `car`, `life`, `food`, `animal`, `kichiku`, `fashion`, `entertainment`, `cinephile` |
| `rankingType` | string | `all` | Ranking mode: `all`, `origin` (original content), `rookie` (new creators) |
| `videoUrls` | array | — | Required in video_detail mode |
| `userIds` | array | — | Required in user_profile and user_videos modes. A channel name does not work, use the number in the profile link |
| `maxResults` | integer | 100 | Maximum rows for the run (1 to 5,000). In user_videos mode the rows are shared fairly between creators |
| `fetchVideoDetails` | boolean | false | In list modes, open each video's detail record to add tags, coins, shares and creator followers (one extra request per video, same price) |
| `includeCreatorProfile` | boolean | true | user_videos: start each creator with a profile row |
| `deltaMode` | boolean | false | Only videos that earlier runs with the same `deltaStateKey` did not deliver (search, popular, ranking, user_videos) |
| `deltaStateKey` | string | `default` | One key per monitor, e.g. `nike-daily` |
| `proxyConfiguration` | object | off | Optional. Not needed from Apify's datacenter IPs (see below); switch on Apify Proxy only if runs keep reporting HTTP 412 or code -352 |

More examples:

```json
{ "mode": "search", "searchQuery": "AI", "sortOrder": "pubdate", "durationFilter": "medium", "pubtimeBegin": "2026-09-01", "maxResults": 200 }
```

```json
{ "mode": "video_detail", "videoUrls": ["https://www.bilibili.com/video/BV1xx411c7mD", "BV1gKJ86JEuP", "av170001"] }
```

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

```json
{ "mode": "ranking", "category": "knowledge", "rankingType": "origin", "maxResults": 100 }
```

### Output

Video rows (`type: "video"`):

| Field | Description |
|---|---|
| `bvid`, `aid` | Video ids (BV id and numeric av id) |
| `title`, `description` | Clean text, without search highlight tags |
| `url`, `thumbnailUrl` | Video page and cover image |
| `duration`, `durationFormatted` | Seconds and `m:ss` / `h:mm:ss` |
| `viewCount`, `likeCount`, `coinCount`, `favoriteCount`, `shareCount` | Views (播放), likes (点赞), coins (投币), favorites (收藏), shares. `coinCount` and `shareCount` are `null` in search mode unless `fetchVideoDetails` is on |
| `danmakuCount`, `replyCount` | Number of danmaku and of comments (counts only) |
| `authorName`, `authorMid`, `authorUrl`, `authorFace` | Uploader channel and avatar |
| `authorFollowers` | Uploader's followers (video_detail, user_videos, or `fetchVideoDetails`) |
| `publishDate`, `publishTimestamp` | ISO 8601 UTC and unix seconds |
| `category`, `categoryId` | Bilibili zone name (Chinese, e.g. `单机游戏`) and id |
| `tags` | Video tags (search and video_detail; other modes with `fetchVideoDetails`) |
| `rank` | Position in the search results or board |
| `searchQuery` | Query that found the video (search) |
| `source` | Mode that produced the row |
| `scrapedAt` | Collection time |

Creator rows (`type: "user"`):

| Field | Description |
|---|---|
| `mid`, `name`, `profileUrl` | Creator id, channel name, `space.bilibili.com` link |
| `face`, `sign`, `level` | Avatar URL, public channel bio, account level 0-6 |
| `followers`, `following`, `videoCount`, `totalLikes` | Audience and output numbers |
| `isOfficial`, `officialTitle`, `officialRole` | Bilibili verification (person or organisation), as shown on the profile |
| `fans`, `attention`, `archiveCount`, `likeCount` | Same numbers under Bilibili's own names (compatibility) |
| `source`, `scrapedAt` | Mode and collection time |

A number Bilibili does not report is `null`, never a made-up 0. A video or creator that does not exist is not charged and is named in the run status.

### Monitoring with delta mode

Schedule a run with `"deltaMode": true` and a `deltaStateKey` per monitor. The first run returns everything and sets the baseline; later runs skip what earlier runs with that key delivered, so you pay only for new videos.

- **Newest-first lists** (`user_videos`, and `search` with `"sortOrder": "pubdate"`): a later run returns only videos published since the last run. It stops at the first video an earlier run delivered, so older videos the baseline did not reach are never backfilled or charged.
- **Other search orders, `popular` and `ranking`**: a later run returns the videos no earlier run delivered. To monitor a whole board, set `maxResults` to its size (500 for popular, 100 for a ranking board): later runs then return exactly the videos that entered the board.
- In `user_videos` the creator profile rows are delivered on every run (follower counts change); set `"includeCreatorProfile": false` to pay only for new videos.

Popular and ranking keep one list per category. The list lives in the key-value store `bilibili-scraper-delta` of your Apify account and remembers up to 200,000 videos.

```json
{ "mode": "search", "searchQuery": "原神", "sortOrder": "pubdate", "deltaMode": true, "deltaStateKey": "genshin-daily", "maxResults": 200 }
```

### Pricing

Pay per result: **$0.003 per row ($3 per 1,000)**, video or creator. No start fee, no platform usage on top. Set a maximum cost per run in the Apify Console and the Actor stops exactly there.

### How it works and limits

- Data comes from Bilibili's public web APIs, the same ones bilibili.com calls in your browser: an anonymous visitor session (buvid3 cookie, bili_ticket), WBI request signing, at most 3 requests in parallel and retries with backoff when Bilibili's risk control answers (HTTP 412, code -352), with a fresh session from the second failure. No account, no cookies from you, no browser.
- **Datacenter IPs**: tested from a US cloud datacenter IP (the kind Apify runs on) in October 2026, every endpoint the Actor uses answers without a proxy: search, popular, ranking, video details, creator card and creator uploads. Bilibili's channel-page endpoints (`space.bilibili.com` video list and profile: HTTP 412 / code -352) are blocked from datacenter IPs, so the Actor reads creators through the creator card and upload-list endpoints instead. `proxyConfiguration` stays available if that changes.
- If Bilibili cannot be reached after the retries and nothing was saved, the run ends as **failed** with the reason in its status (so schedules and monitors notice); nothing is charged.
- The data is Chinese-language content hosted in China; titles, tags and categories are returned as published (no translation).
- Search returns at most about 1,000 videos per query (Bilibili's own limit): split big pulls into several queries or date ranges. A ranking board has 100 videos, the popular board 450 to 500.
- Only public data: videos and public creator channels. No comments, no danmaku texts, no data about viewers.

### Support

Open an issue on the Actor's Issues tab: we answer within 24 hours.

# Actor input Schema

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

What to collect. <b>search</b>: videos matching <code>searchQuery</code>. <b>popular</b>: the trending board (综合热门), or a category's trending board with <code>category</code>. <b>ranking</b>: the ranking board (排行榜) of a category, top 100. <b>video_detail</b>: full details of the videos in <code>videoUrls</code>. <b>user_profile</b>: one row per creator in <code>userIds</code> (followers, videos, likes, verification). <b>user_videos</b>: each creator's profile row followed by their newest uploads. <b>video_comments</b> is accepted for compatibility but returns nothing: comments are out of scope.

## `searchQuery` (type: `string`):

Keywords for <b>search</b> mode, in Chinese or English: <code>python</code>, <code>人工智能</code>, <code>原神</code>, <code>iPhone 17 review</code>.

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

Optional extra queries for <b>search</b> mode (for example the Chinese name of a brand: <code>耐克</code> next to <code>Nike</code>). Results of all queries are merged, deduplicated and share <code>maxResults</code>.

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

Order of search results.

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

Keep only videos of this length.

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

Only videos published on or after this moment. Formats: <code>2026-04-15</code>, <code>2026/04/15</code>, <code>20260415</code>, <code>2026-04-15 10:30</code>, ISO 8601 such as <code>2026-04-15T18:30:00+08:00</code>. Without a zone the time is UTC. An unreadable value is not applied and the run status says so.

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

Only videos published on or before this moment. Same formats as <i>Published after</i>; a bare date means 00:00 UTC, use <code>2026-04-15T23:59:59Z</code> to include the whole day.

## `category` (type: `string`):

Bilibili main zone for <b>popular</b> and <b>ranking</b>. In popular mode, a category other than <i>All</i> returns that category's trending board.

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

Which ranking board: all videos, original content only, or new creators.

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

Bilibili video links, BV ids, av ids or b23.tv short links: <code>https://www.bilibili.com/video/BV1xx411c7mD</code>, <code>BV1xx411c7mD</code>, <code>av170001</code>.

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

Creator ids (mid) or profile links: <code>546195</code>, <code>https://space.bilibili.com/546195</code>, <code>UID:546195</code>. A channel name does not work.

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

Maximum rows for the whole run (videos and creator rows). Each row is one <code>result</code> event. Search returns at most about 1,000 videos per query, the popular board 450 to 500, a ranking board 100. In <b>user_videos</b> mode the rows are shared fairly between the creators.

## `fetchVideoDetails` (type: `boolean`):

In search, popular, ranking and user_videos modes, open each video's detail record to fill tags, coins, shares, the creator's follower count and the full description. One extra request per video (slower), same price per row.

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

In <b>user_videos</b> mode, start each creator's rows with their profile row (followers, videos, likes). The profile row counts as one result.

## `deltaMode` (type: `boolean`):

For scheduled monitoring in <b>search</b>, <b>popular</b>, <b>ranking</b> and <b>user_videos</b> modes, so you pay only for new videos. The first run returns everything and sets the baseline. In <b>user_videos</b> and in search with <i>Newest first</i>, later runs return only videos published since the last run (they stop at the first video already delivered, no backfill of older ones). In other search orders and on the popular and ranking boards, later runs return the videos that no earlier run with the same <code>deltaStateKey</code> returned: set <code>maxResults</code> to the board size (500 popular, 100 ranking) to get exactly the new entries.

## `deltaStateKey` (type: `string`):

Name of the saved list of delivered videos. Use one key per monitor (for example <code>nike-daily</code>). Popular and ranking keep one list per category. The state is stored in the named key-value store <code>bilibili-scraper-delta</code> of your account and remembers up to 200,000 videos.

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

Optional, off by default. Every Bilibili endpoint this Actor uses answers from Apify's datacenter IPs without a proxy (tested October 2026). Switch on Apify Proxy only if your runs keep reporting HTTP 412 or code -352 (Bilibili risk control).

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

Accepted for compatibility with other Bilibili scrapers. Comments are user-generated personal data and out of scope: the flag is ignored and the run status says so.

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

Accepted for compatibility; ignored (comments are out of scope).

## `followUpComments` (type: `boolean`):

Accepted for compatibility; ignored (comments are out of scope).

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

Accepted for compatibility; ignored (comments are out of scope).

## `sortComments` (type: `string`):

Accepted for compatibility; ignored (comments are out of scope).

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

Accepted for compatibility; ignored (danmaku is out of scope). The danmaku count of each video is still in <code>danmakuCount</code>.

## `danmakuSampleSize` (type: `integer`):

Accepted for compatibility; ignored (danmaku is out of scope).

## `sentimentAnalysis` (type: `boolean`):

Accepted for compatibility; ignored.

## `autoLocalize` (type: `boolean`):

Accepted for compatibility; ignored. Add the Chinese name of a brand to <code>keywords</code> or <code>searchAliases</code> instead.

## `searchAliases` (type: `array`):

Accepted for compatibility: works like <code>keywords</code> (extra queries merged with the search query).

## Actor input object example

```json
{
  "mode": "search",
  "searchQuery": "python",
  "keywords": [],
  "sortOrder": "totalrank",
  "durationFilter": "any",
  "category": "all",
  "rankingType": "all",
  "videoUrls": [
    "https://www.bilibili.com/video/BV1xx411c7mD"
  ],
  "userIds": [
    "546195"
  ],
  "maxResults": 40,
  "fetchVideoDetails": false,
  "includeCreatorProfile": true,
  "deltaMode": false,
  "deltaStateKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "includeComments": false,
  "includeReplies": false,
  "followUpComments": false,
  "maxComments": 20,
  "sortComments": "hot",
  "includeDanmaku": false,
  "danmakuSampleSize": 25,
  "sentimentAnalysis": false,
  "autoLocalize": false
}
```

# 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 = {
    "mode": "search",
    "searchQuery": "python",
    "keywords": [],
    "sortOrder": "totalrank",
    "durationFilter": "any",
    "pubtimeBegin": "",
    "pubtimeEnd": "",
    "category": "all",
    "rankingType": "all",
    "videoUrls": [
        "https://www.bilibili.com/video/BV1xx411c7mD"
    ],
    "userIds": [
        "546195"
    ],
    "maxResults": 40,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("praguedatalab/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 = {
    "mode": "search",
    "searchQuery": "python",
    "keywords": [],
    "sortOrder": "totalrank",
    "durationFilter": "any",
    "pubtimeBegin": "",
    "pubtimeEnd": "",
    "category": "all",
    "rankingType": "all",
    "videoUrls": ["https://www.bilibili.com/video/BV1xx411c7mD"],
    "userIds": ["546195"],
    "maxResults": 40,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("praguedatalab/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 '{
  "mode": "search",
  "searchQuery": "python",
  "keywords": [],
  "sortOrder": "totalrank",
  "durationFilter": "any",
  "pubtimeBegin": "",
  "pubtimeEnd": "",
  "category": "all",
  "rankingType": "all",
  "videoUrls": [
    "https://www.bilibili.com/video/BV1xx411c7mD"
  ],
  "userIds": [
    "546195"
  ],
  "maxResults": 40,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call praguedatalab/bilibili-scraper --silent --output-dataset

```

## MCP server setup

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