# Douban Scraper: Movies, Books, Reviews, Comments, Groups (豆瓣) (`datagleaner/douban-scraper`) Actor

Douban scraper for movies, TV and books (search, Top 250 and hot charts, subject pages) with ratings and star distribution, long reviews with full text, short comments and group topics. No login, no browser, no cookies. From $2 per 1,000 rows.

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

## Pricing

from $3.00 / 1,000 douban subjects

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

## Douban Scraper: Movies, Books, Reviews, Comments, Groups (豆瓣)

**Douban Scraper** pulls public data from Douban (豆瓣), China's largest film, TV and book rating site, into JSON, CSV or Excel. You get no login, no cookies and no browser to run. Search by title or keyword, read the Top 250 and hot charts, or paste movie, TV and book links. Each title comes back with its Douban score, rating count, 1-5 star distribution, genres, directors, cast or authors, release dates and synopsis. On request you also get its long reviews (影评 / 书评) with full text, its short comments (短评) and the newest topics of any public Douban group (小组). Rows cost **$2 to $3 per 1,000**.

### What you can do with it

- **Film, TV and book market research in China.** Find out how Chinese audiences rate a title, how the score is spread across 1 to 5 stars, and how many people have watched it or want to.
- **Sentiment and review analysis.** Collect the most helpful long reviews with full text and the hottest short comments, each with its star rating and vote count. The text is ready for sentiment models, topic modelling or an LLM summary.
- **Charts and catalogues.** Pull Douban Top 250 Movies, Top 250 Books, the real-time hot movies and series, the weekly top 10s, films now showing and coming soon, and bestsellers, in chart order with a `rank` on each row.
- **Release tracking.** Run the hot and coming-soon charts on a schedule to see which titles are rising and how their scores move after release.
- **Community listening.** Read the newest topics in public Douban groups (rentals, hobbies, fan groups, consumer advice), with full text, replies, likes and tags.
- **LLM and RAG pipelines.** Every text field is clean plain text with HTML removed, one row per review, comment or topic.

### Input

| Field | Type | What it does |
|---|---|---|
| `searchQueries` | list of text | Titles or keywords, Chinese or English (`三体`, `流浪地球`, `Christopher Nolan`). Each returns matching movies, series and books as `subject` rows. |
| `searchType` | `all` / `movie` / `book` | Default `all`: runs the movie and TV search and the book search for each keyword. |
| `subjectUrls` | list of text | Douban pages such as `https://movie.douban.com/subject/1292052/` or `https://book.douban.com/subject/2567698/` (m.douban.com links work too). A bare numeric ID is tried as a movie or series, then as a book. |
| `charts` | list | Any of `movie_top250`, `movie_real_time_hotest`, `movie_weekly_best`, `movie_showing`, `movie_soon`, `movie_hot_gaia`, `tv_real_time_hotest`, `tv_hot`, `tv_chinese_best_weekly`, `tv_global_best_weekly`, `show_hot`, `book_top250`, `book_bestseller`. |
| `maxSubjects` | number | Cap per keyword (per category) and per chart. Default 50, max 250. |
| `fetchSubjectDetails` | true / false | Default true. Fetches the full page for search and chart rows: genres, directors, cast, authors, countries, languages, dates, runtime, pages, synopsis, tags and the star distribution. Two extra requests per title. Turn it off for a fast list (title, year, score, rating count, cover). |
| `includeReviews` | true / false | Default false. Adds each title's most helpful long reviews as `review` rows. |
| `maxReviewsPerSubject` | number | Default 40, max 40 (Douban's limit for signed-out visitors). |
| `fetchFullReviewText` | true / false | Default true. Adds the full text of each review, plus its unhelpful votes, read count, spoiler flag and IP region. One extra request per review. Off: Douban's opening excerpt of about 300 characters. |
| `includeComments` | true / false | Default false. Adds each title's hottest short comments as `comment` rows. |
| `maxCommentsPerSubject` | number | Default 100, max 150 (Douban's limit for signed-out visitors). |
| `reviewUrls` | list of text | Single reviews (`https://movie.douban.com/review/1000369/` or an ID), each with full text. |
| `groupUrls` | list of text | Groups such as `https://www.douban.com/group/beijingzufang/` or a group ID. Returns the newest topics. |
| `maxTopicsPerGroup` | number | Default 100, max 450. |
| `fetchTopicContent` | true / false | Default true. Adds each topic's full text, IP region and save count. One extra request per topic. |
| `topicUrls` | list of text | Single group topics (`https://www.douban.com/group/topic/503033210/` or an ID). |
| `requestDelaySeconds` | number | Pause between requests, default 1.2 s (randomised up to 1.5x). |
| `proxyConfiguration` | object | Optional. The default is no proxy. If Douban keeps refusing the run's IP, the Actor moves to a fresh Apify Proxy session by itself. |

Give at least one keyword, link, chart, group or topic. With an empty input the Actor runs a built-in example instead of failing: the top 5 of the real-time hot movies chart.

```json
{
  "subjectUrls": ["https://movie.douban.com/subject/1292052/"],
  "includeReviews": true,
  "maxReviewsPerSubject": 20,
  "includeComments": true,
  "maxCommentsPerSubject": 50,
  "charts": ["movie_top250"],
  "maxSubjects": 250,
  "groupUrls": ["https://www.douban.com/group/beijingzufang/"],
  "maxTopicsPerGroup": 50
}
```

### Output

The dataset has one row per item. The `type` field tells the four kinds apart: `subject`, `review`, `comment` and `groupTopic`. The Output tab has a view for each kind. Field names are camelCase, timestamps are ISO 8601 in Beijing time (`+08:00`) and counts are numbers. Every row carries `scrapedAt` and the input it came from (`query`, `chart`, `subjectUrl`, `reviewUrl`, `groupUrl` or `topicUrl`). Authors appear only as their public display name, numeric Douban ID and profile link.

A `subject` (movie, series or book):

```json
{
  "type": "subject",
  "id": "1292052",
  "subjectType": "movie",
  "title": "肖申克的救赎",
  "originalTitle": "The Shawshank Redemption",
  "year": 1994,
  "rating": 9.7,
  "ratingCount": 3352326,
  "ratingDistribution": {"star1": 0.1, "star2": 0.1, "star3": 1.4, "star4": 13.0, "star5": 85.4},
  "watchedOrReadCount": 5758894,
  "wishCount": 520505,
  "genres": ["剧情", "犯罪"],
  "directors": ["弗兰克·德拉邦特"],
  "actors": ["蒂姆·罗宾斯", "摩根·弗里曼", "鲍勃·冈顿"],
  "countries": ["美国"],
  "languages": ["英语"],
  "durations": ["142分钟"],
  "intro": "一场谋杀案使银行家安迪（蒂姆·罗宾斯 Tim Robbins 饰）蒙冤入狱……",
  "reviewCount": 15009,
  "commentCount": 668735,
  "honors": ["豆瓣电影Top250"],
  "url": "https://movie.douban.com/subject/1292052/",
  "coverUrl": "https://img3.doubanio.com/view/photo/m_ratio_poster/public/p2934829882.jpg",
  "rank": 1,
  "chart": "movie_top250",
  "scrapedAt": "2026-10-22T00:30:13+00:00"
}
```

Books add `authors`, `translators`, `publisher`, `pages`, `price`, `subtitle` and `authorIntro`. Series add `episodesCount`.

A `review` (long review):

```json
{
  "type": "review",
  "id": "1000369",
  "subjectId": "1292052",
  "subjectType": "movie",
  "subjectTitle": "肖申克的救赎",
  "title": "十年·肖申克的救赎",
  "abstract": "距离斯蒂芬·金（Stephen King）和德拉邦特（Frank Darabont）们缔造这部伟大的作品已经有十年了……",
  "fullText": "距离斯蒂芬·金（Stephen King）和德拉邦特……\n在我眼里，肖申克的救赎与信念、自由和友谊有关。\n……",
  "rating": 5,
  "usefulCount": 18956,
  "uselessCount": 735,
  "commentsCount": 1082,
  "readCount": 1429185,
  "spoiler": false,
  "createdAt": "2005-05-12T20:44:13+08:00",
  "author": {"id": "1000152", "name": "大头绿豆", "profileUrl": "https://www.douban.com/people/1000152/"},
  "url": "https://movie.douban.com/review/1000369/"
}
```

A `comment` (short comment, 短评):

```json
{
  "type": "comment",
  "id": "32514679",
  "subjectId": "1292052",
  "subjectType": "movie",
  "text": "恐惧让你沦为囚犯，希望让你重获自由。——《肖申克的救赎》",
  "rating": 5,
  "usefulCount": 26520,
  "status": "done",
  "createdAt": "2008-02-27T21:43:23+08:00",
  "author": {"id": "1289463", "name": "如小果", "profileUrl": "https://www.douban.com/people/1289463/"},
  "subjectLink": "https://movie.douban.com/subject/1292052/"
}
```

A `groupTopic`:

```json
{
  "type": "groupTopic",
  "id": "503033210",
  "groupId": "661193",
  "groupName": "火花四射观察室",
  "title": "膳食纤维。。。其实是被名字骗了。。。",
  "text": "一提到膳食纤维。。。大家可能就会想到绿叶蔬菜什么的。。。",
  "createdAt": "2026-10-19T23:36:12+08:00",
  "updatedAt": "2026-10-21T19:13:40+08:00",
  "commentsCount": 151,
  "likeCount": 1687,
  "collectionsCount": 2028,
  "tags": [],
  "ipLocation": "山东",
  "url": "https://www.douban.com/group/topic/503033210/"
}
```

A review or comment's `rating` is the author's own 1-5 stars (`null` when they gave none). A subject's `rating` is the Douban score out of 10. A field Douban does not show for an item is `null` or an empty list.

### How much does it cost to scrape Douban?

You pay per row saved to the dataset. These prices are final:

| Event | Price | Per 1,000 |
|---|---|---|
| `subject`: one movie, series or book | $0.003 | $3 |
| `review`: one long review (full text included) | $0.003 | $3 |
| `comment`: one short comment | $0.002 | $2 |
| `topic`: one group topic | $0.003 | $3 |

Nothing is charged for failed pages, retries or the extra requests behind full text and details. The run stops by itself when it reaches your **maximum total charge**. Platform usage is included in the price.

Examples:

- **Douban Top 250 movies** with full details: 250 subjects = **$0.75**.
- **10 films with 40 reviews and 100 short comments each:** 10 × $0.003 + 400 × $0.003 + 1,000 × $0.002 = **$3.23**.
- **A group's newest 100 topics** with full text: **$0.30**.

### Limits

Douban shows signed-out visitors only part of each list. The Actor stops cleanly at each limit and says so in the run's status message. We measured these limits on 2026-10-22:

- **Long reviews: the top 40 per title**, most helpful first. Douban hides a few of them, so expect 35 to 40 (37 for The Shawshank Redemption, 39 for 三体).
- **Short comments: the top 150 per title**, hottest first. Many books stop at 100. Sorting by newest needs a login, so it is not offered.
- **Group topics: the newest 450 or so per group.** We got 434 from a busy group, after removing duplicates and ads.
- **Search:** the most relevant 250 titles per keyword and category.
- **Public data only.** Private groups, members-only topics, user profiles, ratings lists and replies under reviews or topics are not included.
- Douban can change or throttle its public pages at any time. The Actor backs off and retries on errors, and it moves to a fresh proxy session if its IP keeps being refused. Even so, a run can return fewer rows than asked when Douban limits it. Raising `requestDelaySeconds` helps.

### Use with Python

```python
## pip install apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("datagleaner/douban-scraper").call(
    run_input={"subjectUrls": ["https://movie.douban.com/subject/1292052/"], "includeComments": True, "maxCommentsPerSubject": 20}
)
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item["type"], item.get("rating"), (item.get("text") or item.get("title") or "")[:60])
```

That run returns 1 subject and 20 comments, for $0.043.

### Use with JavaScript / Node.js

```js
// npm install apify-client
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('datagleaner/douban-scraper').call({
    charts: ['movie_top250'],
    maxSubjects: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const s of items) console.log(s.rank, s.title, s.rating, s.ratingCount);
```

### Use it from n8n, Make, Zapier or an AI agent

Actor ID: `datagleaner/douban-scraper`

Minimal input:

```
{"searchQueries": ["三体"], "maxSubjects": 10}
```

Each tool below runs this Actor with your own Apify API token.

- **n8n:** add the **Apify** node (`@apify/n8n-nodes-apify`) and choose **Run an Actor and get dataset**. Set the Actor to `datagleaner/douban-scraper` and paste the input above.
- **Make:** use the Apify app's **Run an Actor** module, then **Get Dataset Items**.
- **Zapier:** use the Apify action **Run Actor**, then the search **Fetch dataset items**.
- **AI agents (MCP):** connect to `https://mcp.apify.com?tools=datagleaner/douban-scraper`. In Claude Code:

  ```
    claude mcp add --transport http apify "https://mcp.apify.com?tools=datagleaner/douban-scraper"
  ```

  Then run `/mcp` to sign in to Apify, and ask in plain language. For example: "Use the Douban scraper to get the 40 most helpful reviews of 流浪地球2, and summarise in English what Chinese viewers praised and criticised."

### FAQ

**How do I scrape Douban movie reviews?** Put the movie's Douban link in `subjectUrls` and turn on `includeReviews`. You get up to 40 long reviews with full text. To also get short comments, turn on `includeComments`, which gives up to 150.

**Can I scrape the Douban Top 250?** Yes. Add `movie_top250` or `book_top250` to `charts` and set `maxSubjects` to 250. The rows come in chart order with `rank`.

**Does it work for TV series and books?** Yes. Movie links that point to a series return `subjectType: "tv"`. Book links return `subjectType: "book"`, with authors, publisher, pages and price.

**Do I need a Douban account, API key or cookies?** No. The Actor reads the same public pages any visitor sees on m.douban.com. You only need an Apify account.

**Why are there fewer than 150 comments or 40 reviews?** Douban shows signed-out visitors only the top of each list, and fewer for some books. A title with few ratings may also have fewer. The status message says when a limit was reached.

**Can I get the newest comments instead of the hottest?** No. Douban requires a login to sort by newest, and this Actor never logs in. For ongoing tracking, schedule a run and dedupe on `id`.

**Can I translate the text?** The text is returned as Douban shows it (mostly Chinese). Pipe the `text` and `fullText` fields to any translation or LLM step.

### Responsible use

This Actor collects only publicly visible Douban pages and keeps the request rate low by default. Respect Douban's terms. Reviews, comments and group posts are written by people, and group topics can contain personal details that posters chose to share. **You** are responsible for having a lawful basis to process this data and for meeting your obligations under GDPR, China's PIPL and any other law that applies to your use, including retention, deletion requests and cross-border transfer. This is not legal advice.

### Feedback

If this Actor saved you time, a rating on its Store page helps others find it. Problems or requests: open an issue on the Issues tab.

### 中文说明

**豆瓣抓取器：** 无需登录、无需 Cookie、无需浏览器，抓取豆瓣公开数据并输出干净的 JSON。支持电影、电视剧、图书的搜索、榜单（电影 Top250、图书 Top250、实时热门、一周口碑榜、正在热映、即将上映、畅销书等）和条目链接，返回评分、评分人数、星级分布、类型、导演、演员、作者、上映日期、简介，可选影评/书评（含全文）、短评，以及豆瓣小组的最新帖子。

- **输入：** `searchQueries`（关键词）、`subjectUrls`（条目链接或 ID）、`charts`（榜单）、`includeReviews` / `includeComments`（影评、短评）、`groupUrls`（小组）、`topicUrls`（帖子）。
- **价格：** 条目、影评、小组帖子每 1,000 条 3 美元，短评每 1,000 条 2 美元。只为实际保存的数据付费。
- **限制：** 游客状态下每部作品最多约 40 篇影评、约 150 条热门短评（部分图书约 100 条），每个小组约 450 个最新帖子；只抓取公开数据。
- **合规：** 请遵守豆瓣服务条款；个人信息的处理须符合 GDPR、《个人信息保护法》等适用法律，责任由使用者承担。

# Actor input Schema

## `searchQueries` (type: `array`):

Titles or keywords to search on Douban, Chinese or English (for example 三体, 流浪地球, Christopher Nolan). Each keyword returns matching movies, TV series and books as subject rows; see Search category.

## `searchType` (type: `string`):

Which Douban catalogue to search. 'all' runs the movie/TV search and the book search for every keyword.

## `subjectUrls` (type: `array`):

Douban subject pages such as https://movie.douban.com/subject/1292052/ or https://book.douban.com/subject/2567698/ (m.douban.com links work too). A bare numeric ID is tried as a movie or series, then as a book. Each returns one full subject row, plus reviews and comments when those are on.

## `charts` (type: `array`):

Douban's public charts, in chart order with a rank on each row: Top 250 movies and books, real-time hot movies and series, weekly top 10s, now showing, coming soon and bestsellers.

## `maxSubjects` (type: `integer`):

Upper bound on movies, series or books for each search keyword (per category) and each chart. Top 250 charts stop at 250.

## `fetchSubjectDetails` (type: `boolean`):

Fetches each subject's full page: genres, directors, actors or authors, countries, release dates, runtime, pages, intro, tags and the 1-5 star rating distribution. Two extra requests per subject. Turn off for fast lists with title, year, rating, rating count and cover only.

## `includeReviews` (type: `boolean`):

Adds the hottest long reviews of every subject as 'review' rows: title, rating, helpful votes, comment count, date, author and (with full text on) the whole review as plain text. Douban shows signed-out visitors the top 40 reviews per title.

## `maxReviewsPerSubject` (type: `integer`):

Upper bound on long reviews for each subject. 40 is Douban's limit for signed-out visitors.

## `fetchFullReviewText` (type: `boolean`):

Fetches each review's full text, unhelpful votes, read count, spoiler flag and IP region (one extra request per review). Off: the review keeps Douban's abstract of about 300 characters.

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

Adds the hottest short comments of every subject as 'comment' rows: text, star rating, helpful votes, date and author. Douban shows signed-out visitors about the top 150 per title (often 100 for books).

## `maxCommentsPerSubject` (type: `integer`):

Upper bound on short comments for each subject. About 150 is Douban's limit for signed-out visitors.

## `reviewUrls` (type: `array`):

Single long reviews such as https://movie.douban.com/review/1000369/ or a bare review ID, each returned as one review row with full text.

## `groupUrls` (type: `array`):

Douban groups such as https://www.douban.com/group/beijingzufang/ or a group ID like 35417. Returns the group's newest topics as 'groupTopic' rows; Douban shows signed-out visitors the newest 450 or so.

## `maxTopicsPerGroup` (type: `integer`):

Upper bound on topics for each group, newest first.

## `fetchTopicContent` (type: `boolean`):

Fetches each group topic's full text, IP region and save count (one extra request per topic). Off: title, dates, counts, tags and photos only.

## `topicUrls` (type: `array`):

Single group topics such as https://www.douban.com/group/topic/503033210/ or a bare topic ID, each returned with its full text.

## `requestDelaySeconds` (type: `number`):

Base pause between requests; the actual pause is randomised up to 1.5x. Raise it if you see throttling.

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

Optional. Works without a proxy from Apify datacenter IPs; if Douban starts refusing a run, it moves to a fresh Apify Proxy session on its own.

## Actor input object example

```json
{
  "searchQueries": [
    "三体"
  ],
  "searchType": "all",
  "maxSubjects": 10,
  "fetchSubjectDetails": true,
  "includeReviews": false,
  "maxReviewsPerSubject": 10,
  "fetchFullReviewText": true,
  "includeComments": false,
  "maxCommentsPerSubject": 20,
  "maxTopicsPerGroup": 10,
  "fetchTopicContent": true,
  "requestDelaySeconds": 1.2,
  "proxyConfiguration": {
    "useApifyProxy": 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 = {
    "searchQueries": [
        "三体"
    ],
    "maxSubjects": 10,
    "maxReviewsPerSubject": 10,
    "maxCommentsPerSubject": 20,
    "maxTopicsPerGroup": 10,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("datagleaner/douban-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 = {
    "searchQueries": ["三体"],
    "maxSubjects": 10,
    "maxReviewsPerSubject": 10,
    "maxCommentsPerSubject": 20,
    "maxTopicsPerGroup": 10,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("datagleaner/douban-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 '{
  "searchQueries": [
    "三体"
  ],
  "maxSubjects": 10,
  "maxReviewsPerSubject": 10,
  "maxCommentsPerSubject": 20,
  "maxTopicsPerGroup": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call datagleaner/douban-scraper --silent --output-dataset

```

## MCP server setup

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