# WeChat Official Account Scraper 公众号 - Full Text, No Login (`benthepythondev/wechat-official-account-scraper`) Actor

Returns WeChat Official Account (微信公众号) articles with full text, Markdown and HTML, images, author, publish time and the account's name, gh\_ id and WeChat ID. Search by keyword, read articles by link, or list an account's albums (合集) with permanent links. No WeChat login, cookies or browser.

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

## Pricing

from $1.20 / 1,000 articles

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

## 📰 WeChat Official Account Scraper (微信公众号): Articles with Full Text, No Login

Returns articles of WeChat Official Accounts (公众号) with their full text as plain text, Markdown and HTML, title, author, publish time, cover, images with sizes, and the account's name, `gh_` id, WeChat ID and description. Search articles by keyword, read articles by link, or list a whole album (合集) of an account with permanent links. It needs no WeChat account, 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 per 1,000 articles with full text:** $4.00 on the Apify Free plan, $3.80 on Bronze, $3.50 on Silver, $3.30 from Gold up. **Per 1,000 list rows without it:** $1.50, $1.40, $1.30, $1.20. Not charged: a search without results, a link that leads to no article, an article its author deleted or hid, an album that does not exist.

### What other WeChat Actors state as their limits, and what this one does

| Their documentation or issue tab says | This Actor |
|---|---|
| "Sogou hides the real article URL behind `/link?url=`, and that hop returns a captcha", so a search result is a card without link and without text | Follows the redirect of every result: 97 of 97 and 95 of 95 links in two searches read to the end. A search result comes with its full text |
| Full text is an operation of its own at $29.99 per 1,000 articles, on top of $5.99 per 1,000 search results | $4.00 per 1,000 search results with full text, $1.50 without |
| "Actor not working" and "The service is temporarily unavailable. Please try again later." (the two issues on the most-used Actor) | Reads Sogou's public index and WeChat's public article pages itself. When one of them turns an address away, the run goes on through the next route |
| Free plan: 25 runs in total, one page of results each | The same on every plan, no run limit |
| An account's archive: "No", or "articles available in the public index … not guaranteed to be a publisher's complete lifetime archive" | Whole albums (合集) of an account from the first to the last article, with permanent links: 1,000 of 1,000 and 115 of 115 in the tests. An account's complete list stays closed to visitors, see the limits |
| "Residential proxy access is used" for the search | The run's own address and Apify's datacenter proxy first; residential addresses only when those are refused |
| Nothing about it | A long article link without `chksm`, as other tools hand it out, answers every visitor with a captcha. This Actor reads it: 20 of 20 in a test |

Sogou lists about 100 articles per keyword to a visitor, and that holds for every scraper of the public index. A run takes many keywords at once, and an article that several keywords find is saved, and charged, once.

### 🔎 What is the WeChat Official Account Scraper?

WeChat Official Accounts are the publishing channel of media, companies and public bodies in China. Their articles live at `mp.weixin.qq.com`, WeChat has no public search for them, and the only public keyword index is Sogou's WeChat search. This Actor searches that index, follows each result to the article and reads the article page, where WeChat carries the whole record. It also reads any article by its link and any album by its link or id.

#### What data does it extract?

- **Article:** title, summary, author, publish time (Beijing time, Unix seconds and UTC), cover, link, WeChat's ids (`biz`, `mid`, `idx`, `sn`), the original mark (原创), publishing region, kind (article, image post, video post)
- **Full text:** plain text with one line per paragraph, Markdown with headings, lists, quotes, tables, code blocks, links and images, and the HTML as WeChat stores it
- **Media:** every image of the article with width and height, video ids
- **Account:** name, `gh_` id, WeChat ID (alias), description, avatar
- **Albums and topics:** the albums (合集) an article belongs to, each with id, title, size and link, and its #hashtags

### ⬇️ Input

Fill in one or several of the first three fields.

| Field | Type | Default | What it does |
|---|---|---|---|
| `keywords` | array | | Keywords to search articles for, Chinese or English |
| `articleUrls` | array | | Article links: `https://mp.weixin.qq.com/s/...`, the long form with `__biz`, `mid`, `idx`, `sn` (with or without `chksm`), or a signed link from a search |
| `albums` | array | | Album links or album ids |
| `maxResults` | integer | 10 | Articles per keyword and per album, up to 5,000. A keyword ends at about 100 |
| `includeContent` | boolean | true | Opens every article of a search or album for its full record. Off: the list row only |
| `publishedAfter` | string | | A day such as `2026-09-01` (UTC) or an age such as `1 day`; older articles are skipped unopened and uncharged |
| `debug` | boolean | false | Writes every request with its size and time to the log, for support |

#### Example input

The newest articles on a topic with full text:

```json
{
  "keywords": ["人形机器人", "具身智能"],
  "maxResults": 100
}
```

A daily brand watch that costs only what is new:

```json
{
  "keywords": ["特斯拉 FSD"],
  "publishedAfter": "1 day",
  "maxResults": 100
}
```

Articles by link:

```json
{
  "articleUrls": [
    "https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw",
    "https://mp.weixin.qq.com/s?__biz=MzIzNjc1NzUzMw==&mid=2247779806&idx=1&sn=90e649a28eb85dec7311d6627d37e36d"
  ]
}
```

Every article of an album, as a list with permanent links:

```json
{
  "albums": ["https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzIzNjc1NzUzMw==&action=getalbum&album_id=1865468163396517889"],
  "maxResults": 500,
  "includeContent": false
}
```

### ⬆️ Output

One row per article, the same columns for every row. A full row, from a run of October 6, 2026 (text, Markdown, HTML and the two lists shortened here):

```json
{
  "articleId": "3236757533_2247780992_1",
  "title": "“老黄骗人”！5070首批评测：说好1/3价格赛4090，实际不如4070Ti",
  "digest": "博主：史上最差70系列",
  "author": "关注前沿科技",
  "accountName": "量子位",
  "accountUserName": "gh_114e76fd6e5d",
  "accountAlias": "QbitAI",
  "accountDescription": "追踪人工智能新趋势，关注科技行业新突破",
  "accountAvatar": "https://wx.qlogo.cn/mmhead/Q3auHgzwzM6PqxX9Yx8MibJ3nial8ialvVrRs3PxhCJm7eWgR7vFrowLA/0",
  "publishTime": "2025-03-05 12:22",
  "publishTimestamp": 1741148529,
  "publishedAt": "2025-03-05T04:22:09+00:00",
  "coverUrl": "https://mmbiz.qpic.cn/mmbiz_jpg/YicUhk5aAGtB8zqMsOsFEsStNXL6hpuYEEo7paXlpMMYk4vGbXsTSlicpz4ichWzMY4dmQbTRfIsoKl1mr5bPL2CA/0?wx_fmt=jpeg",
  "articleUrl": "https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw",
  "isTemporaryUrl": false,
  "shortLink": "https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw",
  "biz": "MzIzNjc1NzUzMw==",
  "mid": 2247780992,
  "idx": 1,
  "sn": "24a33e0bf7a46cd28911be93eff3b531",
  "contentText": "金磊 发自 凹非寺\n量子位 | 公众号 QbitAI\n一夜之间，RTX 5070被网友们喷成“史上最差的70系列”了。\n这咋回事呢？\n…",
  "contentMarkdown": "##### 金磊 发自 凹非寺\n量子位 | 公众号 QbitAI\n\n一夜之间，**RTX 5070**被网友们喷成**“史上最差的70系列”**了。\n\n![](https://mmbiz.qpic.cn/mmbiz_png/…/640?wx_fmt=png&from=appmsg)\n\n…",
  "contentHtml": "<h5 style=\"word-break: break-all;font-family: ExtraLight-0;…",
  "characterCount": 2997,
  "images": [
    {"url": "https://mmbiz.qpic.cn/mmbiz_png/YicUhk5aAGtB8zqMsOsFEsStNXL6hpuYE3sPnVa42OQxBo5q68vLSQZDOTKElicOib7y4uLTQOUpdUiavxajLoflSg/640?wx_fmt=png&from=appmsg", "width": 1080, "height": 845}
  ],
  "videoIds": [],
  "isOriginal": true,
  "itemType": "article",
  "ipRegion": {"country_name": "中国", "country_id": "156", "province_name": "北京"},
  "albums": [
    {"albumId": "1865468163396517889", "title": "英伟达", "articleCount": 115, "url": "https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzIzNjc1NzUzMw==&action=getalbum&album_id=1865468163396517889"}
  ],
  "hashtags": [],
  "sourceUrl": null,
  "commentId": "3884868893382230017",
  "source": "link",
  "queryTarget": "https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw",
  "position": null,
  "docId": null,
  "scrapedAt": "2026-10-06T21:28:40.086586+00:00"
}
```

`articleId` is WeChat's own key of an article (the account's number, the message and the article's place in it): the field to join on and to drop doubles by. `source` is `search`, `link` or `album`; `queryTarget` is the keyword, the link or the album id the row came from; `position` is the place in Sogou's list or the article's number in the album; `docId` is Sogou's id of a search result, the same for every keyword that finds it.

A list row (`includeContent: false`) has the same columns, most of them `null`. From a search it holds `title`, `digest` (Sogou's excerpt), `accountName`, the three time fields, `coverUrl`, `articleUrl`, `docId` and `position`. From an album it holds `title`, `accountName`, `accountUserName`, the time fields, `coverUrl`, the permanent `articleUrl`, `articleId`, `biz`, `mid`, `idx`, `sn`, `albums` and `position`.

How often the optional fields were filled in a search of 97 articles read with full text: `author` 66, `accountAlias` 57, `images` 80, `albums` 22, `sourceUrl` 16, `hashtags` 7, `ipRegion` 97. A field WeChat does not send is `null`, a list without entries is empty.

The run's `SUMMARY` record lists, per keyword and album and for the links, how many articles were saved and listed, how many were older than asked, not opened or gone, and how the reading ended.

### 💰 What a run costs

| Apify plan | Per 1,000 articles with full text | Per 1,000 list rows |
|---|---|---|
| Free | $4.00 | $1.50 |
| Bronze | $3.80 | $1.40 |
| Silver | $3.50 | $1.30 |
| Gold, Platinum, Diamond | $3.30 | $1.20 |

An article with its full record costs two events, the article ($0.0015) and the full record ($0.0025); a list row costs the article only. Apify's standard start event ($0.00005 per run at the default memory) is the only other charge. With a maximum charge set for the run, the Actor stops when the next article would pass it.

Examples on the Free plan: the sample run of 10 articles with full text, $0.04. One keyword to the end of Sogou's list with full text, about $0.39. An album of 1,000 articles as a list, $1.50. A daily watch of one keyword that finds seven new articles, $0.03.

### ⏱️ Measured (October 6 and 7, 2026)

| Run | Rows | Time |
|---|---|---|
| Sample input: 10 articles for one keyword, with full text | 10 | 16 to 18 s |
| One keyword to the end of Sogou's list, with full text | 97 | 139 s |
| One keyword to the end of the list, list rows only | 91 | 68 s |
| Three keywords side by side, 30 articles each, with full text | 90 | 71 s |
| 40 article links, 20 of them without `chksm`, with full text | 40 | 21 s |
| An album of 1,000 articles, list rows only (the album says 1,000) | 1,000 | 30 s |
| An album of 115 articles with full text (the album says 115) | 115 | 62 s |
| One keyword, `publishedAfter: 1 day` (7 of the 84 listed) | 7 | 29 s |

Measured from a test server in Germany, not from Apify's network: WeChat was read directly, Sogou through Apify's datacenter proxy after the server's own address had used up its allowance. In three further runs the datacenter addresses were refused as well and Sogou was read through residential addresses; such a run is slower (25 list rows took 49 s). Peak memory was 161 MB in the 97-article run. A run killed after 9 seconds in the middle of a keyword, an album and two links, and started again on the same dataset, ended with 52 rows, none of them twice.

### 📚 How to get the articles of one account

WeChat shows an account's article list inside its app only. What a visitor can read are the account's albums (合集), and many accounts file their articles in them: in a search of 97 articles, 22 belonged to at least one album, the largest with 893 articles.

1. Read one article of the account, by link or from a keyword search. Its row names the albums it belongs to in `albums`, with size and link.
2. Give those album links in `albums`. Every article of the album comes back with its permanent link, newest first, with full text when `includeContent` is on.

Searching the account's name as a keyword returns what Sogou's index holds for it: 32 of 91 results were the account's own articles for one name, 48 of 96 for another and none for a third.

### 🤖 For AI agents

Smallest useful calls:

```json
{"keywords": ["人工智能"], "maxResults": 10}
```

```json
{"articleUrls": ["https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw"]}
```

All three target fields are arrays and can be combined in one run. No credentials are needed. Every row has the same columns; `contentMarkdown` is the article for a language model, `contentText` the same without marks. A keyword without results, a wrong link and a deleted article return no row, and the status message and `SUMMARY` say so. A search result's `articleUrl` is a signed link (`isTemporaryUrl: true`) and not a permanent one: store the text, not the link. Read counts, likes and comments are not public and are not returned.

### 💡 Use cases

- 📈 **Brand and topic monitoring in China:** what Official Accounts published about a brand, a product or a policy today, with the full text for analysis instead of a headline.
- 🧠 **Chinese text for language models and retrieval:** articles as clean Markdown with titles, dates and sources, by topic or by album.
- 🗂️ **Archiving:** articles by link with text, images and ids, before an account deletes them.
- 🔍 **Publisher research:** which accounts write about a topic, their WeChat ID and description, and their albums as reading lists.

### ⚠️ Limits, stated plainly

- **The times above are from a test server, not from Apify's network.** Sogou serves an address about 40 requests in a row and then shows a captcha for half a minute, so the Actor reads each result page through a fresh visitor: its own address first, then Apify's datacenter proxy, then residential addresses.
- **About 100 articles per keyword.** Sogou shows a visitor ten pages of ten results, 91 to 97 articles in the tests, in its own order: mostly the last days, with older articles mixed in. It takes no date filter, no sort order and no account filter from a visitor; `publishedAfter` filters what is listed.
- **A search result has no permanent link.** Its `articleUrl` is Sogou's signed link, and the page behind it names no `sn` and no short link. The link still opened two hours after the search in a test; how long it lasts was not measured, and it is not meant to last. Rows from article links and albums carry permanent links.
- **An account's complete article list is not public,** and neither are read counts, likes, shares, comments, the account search, an account's registered company or the WeChat Index. WeChat answers these calls with "open link in Weixin" or "no session", and its call for an article's counts leaves the counts out for a visitor. This Actor does not return them.
- **Deleted and hidden articles return no row.** One of 95 results in a test was hidden by its author's privacy setting. The status message counts them.
- **Video and audio posts** have a record without text; a video post carries its video id. Audio posts were not among the tested articles.
- **Images are links** to WeChat's image servers; the Actor does not download them. Formulas and drawings that an article holds as vector graphics are left out of text and Markdown.
- **`digest`** is the article's own summary; when it has none, a search row keeps Sogou's excerpt.
- **Times:** `publishTime` is Beijing time as WeChat shows it, `publishedAt` the same moment in UTC.

### ❓ FAQ

**Do I need a WeChat account, cookies or a proxy of my own?** No.

**Can I use the input I wrote for another WeChat Actor?** Mostly. `operation` (`articleSearch`, `articleDetail`), `mode`, `keyword`, `keywords`, `articleUrls`, `links`, `maxPages` (a page is ten results here), `maxItems`, `includeContent` and `publishTime` (`day`, `week`, `halfYear`) are read. Operations for read counts, comments, account histories and the WeChat Index end the run with a message and without a charge.

**Are the field names the same as on the most-used WeChat Actor?** For an article, yes: `articleUrl`, `title`, `author`, `digest`, `accountName`, `accountUserName`, `publishTime`, `publishTimestamp`, `coverUrl`, `contentText`, `contentHtml`, `images`, `ipRegion`, `commentId`, `isOriginal`, `shortLink`, `hashtags`. Differences: `albums` is a list of all albums instead of one `album`; `source` and `queryTarget` take the place of `operation`; a search row has the columns of an article row; there is no raw `content` object and there are no engagement numbers. Added: `contentMarkdown`, `accountAlias`, `accountDescription`, `biz`, `mid`, `idx`, `sn`, `articleId`, `publishedAt`.

**My long link shows a captcha in the browser. Does it work here?** Yes. WeChat answers a long link (`__biz`, `mid`, `idx`, `sn`) that lacks its `chksm` field with a captcha page. The Actor reads such links as well, and the row's `articleUrl` is the complete permanent link as WeChat names it. The `chksm` value in it differs from read to read, so join on `articleId`, not on the link.

**How do I watch a keyword every day?** Schedule the run with `publishedAfter: "1 day"`. Articles listed but older are skipped before they are opened and cost nothing.

**Why does an article appear only once when two of my keywords find it?** An article is saved, and charged, once per run, under the first keyword that found it. `queryTarget` says which.

**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 Sogou and WeChat show to every visitor without login. Articles are their authors' work: copyright applies to republishing them, and authors named in a byline are people, so GDPR, China's PIPL and similar rules apply to how you store and use the data. Respect the terms of WeChat and Sogou.

### 🔗 You might also like

- [Telegram Channel Scraper](https://apify.com/benthepythondev/telegram-channel-scraper): posts of public Telegram channels with views and reactions
- [Threads Scraper](https://apify.com/benthepythondev/threads-public-scraper): posts, profiles and replies on Threads
- [YouTube Transcript Scraper](https://apify.com/benthepythondev/youtube-transcript-scraper): transcripts of YouTube videos as text
- [Reddit Scraper](https://apify.com/benthepythondev/reddit-scraper): posts and comments by keyword or subreddit

**Keywords:** wechat scraper, wechat official account scraper, 微信公众号 爬虫, 公众号 文章 采集, weixin article scraper, mp.weixin.qq.com scraper, wechat article full text, wechat article api, sogou wechat search, 搜狗微信搜索, wechat article markdown, wechat album scraper, 合集, china social media scraper, chinese content for llm, wechat brand monitoring, wechat media monitoring, gongzhonghao data

# Actor input Schema

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

Searches WeChat Official Account articles for each keyword, in Chinese or English, for example "新能源汽车" or "Tesla". Each keyword returns articles up to the limit below. The public index (Sogou) lists about 100 articles per keyword, so several narrow keywords reach further than one broad one.

## `articleUrls` (type: `array`):

Reads each article by its link and returns its full record. Accepted: the short form https://mp.weixin.qq.com/s/..., the long form with \_\_biz, mid, idx and sn (with or without chksm), and the signed links this Actor's searches return.

## `albums` (type: `array`):

Lists every article of an account's album, with permanent links, from the album's link (https://mp.weixin.qq.com/mp/appmsgalbum?...album_id=...) or its album id. A full article row names the albums the article belongs to in `albums`; that is how to get from one article to more of the same account.

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

Articles to save for each keyword and each album. A keyword ends at about 100 articles, an album at its own size. An article link is always one article. This is the main cost lever: every article row is charged.

## `includeContent` (type: `boolean`):

Opens every article of a search or album and adds its full record: text, Markdown, HTML, images, author, the account's gh\_ id, WeChat ID and description, region and albums. Charged as a second event per article. Switched off, a row holds what the list shows: title, account name, time, summary, cover and link. Article links always get the full record.

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

Keeps only articles published on or after this day (2026-09-01, read as UTC) or within this age (1 day, 7 days), for searches and albums. Older ones are skipped before they are opened and are not charged. Sogou takes no date filter from a visitor, so for a keyword this works on the about 100 articles it lists.

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

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

## Actor input object example

```json
{
  "keywords": [
    "人工智能"
  ],
  "maxResults": 10,
  "includeContent": true,
  "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 = {
    "keywords": [
        "人工智能"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/wechat-official-account-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 = { "keywords": ["人工智能"] }

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/wechat-official-account-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 '{
  "keywords": [
    "人工智能"
  ]
}' |
apify call benthepythondev/wechat-official-account-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,benthepythondev/wechat-official-account-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/7KOaQpb5cpja9dFJt/builds/aIkD7e8ubQxJaSqkP/openapi.json
