# WeChat Official Account Scraper — Articles, Accounts & Search (`sian.agency/wechat-official-account-data-scraper`) Actor

Extract WeChat Official Account data into clean datasets: article content & detail, account profiles & registration info, today's & historical articles, comments, engagement metrics, plus article, hot, mini-program, index & account search. wxid-native, no login.

- **URL**: https://apify.com/sian.agency/wechat-official-account-data-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** News, Social media, Business
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## WeChat Official Account Scraper — Articles, Accounts, Comments & Search 🚀

[![Store-SIÁN Agency](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Store-WeChat Channels](https://img.shields.io/badge/Store-WeChat%20Channels-07C160)](https://apify.com/sian.agency/wechat-channels-scraper?fpr=sian) [![Store-Taobao & Tmall](https://img.shields.io/badge/Store-Taobao%20%26%20Tmall-FF4F00)](https://apify.com/sian.agency/taobao-tmall-product-scraper?fpr=sian) [![Store-Xiaohongshu](https://img.shields.io/badge/Store-Xiaohongshu-FF2442)](https://apify.com/sian.agency/xiaohongshu-rednote-scraper?fpr=sian)

#### 🎉 The complete WeChat Official Account (微信公众号) toolkit — 16 operations, one actor, zero login
##### Built for China-market researchers, brand monitors, and content & competitive intelligence teams

---

### 📋 Overview

**Everything you need to turn WeChat Official Accounts into clean, structured data** — articles, account profiles, comments, engagement metrics, and five kinds of search, all in a single actor with no WeChat login, cookies, or API key.

**Why thousands of professionals choose us:**
- ✅ **16 operations in one**: account search, profiles, registration info, today's & historical articles, article detail, metrics, comments, replies, link conversion, article/hot/mini-program/index/suggestion search — no need to stitch together five tools.
- ⚡ **wxid-native input**: paste the short id you already know (`rmrbwx`), a `ghid` (`gh_363b924965e9`), or an account URL — the actor resolves the rest automatically.
- 🎯 **Engagement that others can't reach**: real read, like, looking (在看), share, and collect counts plus full comment threads and nested replies.
- 💰 **Pay only for results**: per-row pricing, generous FREE tier, and empty results are never billed.
- 💎 **Trend intelligence built in**: WeChat Index keyword-trend timeseries and hot/viral article rankings to spot rising topics before competitors.
- ✨ **NEW**: rebuilt on WeChat's relaunched data catalog (June 2026) for improved coverage and stability across every operation.

---

### ✨ Features

- 🔍 **Article Search**: find WeChat Official Account articles by keyword, with category filters (latest, hot, followed).
- 🔥 **Hot Article Search**: surface viral and trending articles within any date range, filtered by content type.
- 👤 **Account Search & Profiles**: discover accounts by keyword and pull profile, avatar, type, and verification.
- 🏢 **Registration & Principal Info**: company name, owner, verification status, registration date, authorized agents.
- 📚 **Today's & Historical Articles**: full publication history for any account with stable cursor pagination.
- 📄 **Article Detail & Content**: title, cover, author, publish time, full content, copyright, and source URL.
- 📊 **Engagement Metrics**: read, like, looking (在看), share, collect, and comment counts per article.
- 💬 **Comments & Nested Replies**: top-level comments and reply threads with author, location, likes, and timestamps.
- 📈 **WeChat Index & Suggestions**: keyword-trend timeseries and search autocomplete for topic research.
- 📦 **Mini Program Search**: discover WeChat mini programs by keyword with app IDs.

---

### 🎬 Quick Start

Pick an operation, fill in the one field it needs, and run. One operation per run, one clean dataset out. No account, cookies, or API key required.

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~wechat-official-account-data-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"operation": "articleSearch", "keyword": "人工智能", "maxPages": 3}'
````

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Choose your operation

Pick from 16 operations — search articles or accounts, pull article detail/metrics/comments, or get full account history.

#### Step 2: Provide the input

Add the field that operation needs — a `keyword`, an `account` (wxid / ghid / URL), or an `articleUrl`.

#### Step 3: Run and export

Run the actor and export your structured dataset as JSON, CSV, or Excel.

**That's it! In under a minute, you'll have:**

- Clean, deduplicated rows with curated camelCase fields
- Engagement, content, and account intelligence in one place
- A ready-to-use dataset for analysis, dashboards, or pipelines

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| operation | string | Yes | One of 16 operations (see list below) |
| keyword | string | For search ops | Term to search (Chinese gives richest results) |
| account | string | For account ops | wxid (`rmrbwx`), ghid (`gh_...`), or account URL |
| articleUrl | string | For article ops | A full `mp.weixin.qq.com` article link |
| contentId | string | For comment replies | The `commentId` of a top-level comment |
| link | string | For link conversion | A WeChat short/intermediate article link |
| subSearchType | string | No | Article Search category (ALL / LATEST / HOT / FOLLOWED) |
| startDay / endDay | string | For hot search | Date range in `yyyy-MM-dd` |
| publishType | string | No | Hot Search content-type filter |
| businessType | string | No | Search Suggestions scope |
| maxPages | integer | No | Pages to fetch for paginated ops (default 3, max 50) |

**Operations:** `articleSearch` · `hotArticleSearch` · `accountSearch` · `miniProgramSearch` · `searchSuggestions` · `wechatIndexSearch` · `articleDetail` · `articleMetrics` · `articleComments` · `articleCommentReplies` · `convertArticleLink` · `accountBasicInfo` · `accountPrincipalInfo` · `accountOriginalCount` · `accountTodayArticles` · `accountHistoryArticles`

**Example (account history by wxid):**

```json
{
  "operation": "accountHistoryArticles",
  "account": "rmrbwx",
  "maxPages": 5
}
```

**Example (article engagement metrics):**

```json
{
  "operation": "articleMetrics",
  "articleUrl": "https://mp.weixin.qq.com/s/XXXXXXXXXXXX"
}
```

***

### 📤 Output

Results are saved to the Apify dataset with **40+ fields** (the exact set depends on the operation), including:

| Field | Type | Description |
|-------|------|-------------|
| title | string | Article title |
| content | string | Full article content (detail op) |
| accountName | string | Official account display name |
| wxid / ghid | string | Account short id / gh\_ id |
| articleUrl | string | Canonical article link |
| cover | string | Cover image URL |
| postDate / publishDate | string | ISO publish timestamp |
| readNum / likeNum | number | Read and like counts |
| shareNum / collectNum | number | Share and collect counts |
| commentContent | string | Comment text (comments op) |
| companyName / verifyStatus | string | Registration intelligence (principal op) |
| latestIndex / trend | number / array | WeChat Index trend signal (index op) |

**Example (article search row):**

```json
{
  "_operation": "articleSearch",
  "status": "success",
  "title": "事关数据赋能人工智能发展，国家层面首次系统部署",
  "accountName": "中国发展改革",
  "articleUrl": "https://mp.weixin.qq.com/s/XXXXXXXXXXXX",
  "cover": "https://mmbiz.qpic.cn/...",
  "publishDate": "2026-06-09T01:57:54.000Z",
  "desc": "数据从供给到价值释放的良性循环基本形成…",
  "docID": "16009154363152756282"
}
```

***

### 💼 Use Cases & Examples

#### 1. Brand & Competitor Content Monitoring

**Marketing teams tracking how a brand or campaign appears across WeChat Official Accounts.**

**Input:** A keyword via `articleSearch`, scheduled daily.
**Output:** Article titles, accounts, publish dates, and engagement.
**Use:** Benchmark share of voice and spot competitor campaigns early.

#### 2. Account Intelligence & Partner Due Diligence

**Business development teams vetting accounts, KOLs, or partners before a deal.**

**Input:** A wxid or ghid via `accountPrincipalInfo` + `accountHistoryArticles`.
**Output:** Company name, owner, verification status, registration date, and full article history.
**Use:** Confirm an account's operating entity and publishing track record.

#### 3. Article Engagement & Audience Research

**Content strategists measuring what resonates on WeChat.**

**Input:** An article URL via `articleMetrics` and `articleComments`.
**Output:** Read, like, looking, share, collect counts plus comment threads.
**Use:** Reverse-engineer high-performing content and audience sentiment.

#### 4. Trend & Keyword Discovery

**Market researchers mapping rising topics in China.**

**Input:** A keyword via `wechatIndexSearch`, `hotArticleSearch`, and `searchSuggestions`.
**Output:** Keyword-trend timeseries, viral article rankings, and autocomplete signals.
**Use:** Identify emerging narratives before they peak.

#### 5. Content Pipeline & Dataset Building

**Data scientists assembling Chinese-language corpora.**

**Input:** Keywords or accounts via `articleSearch` and `articleDetail`.
**Output:** Article URLs, covers, and full content at scale.
**Use:** Feed downstream NLP, classification, or media pipelines.

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/wechat-official-account-data-scraper').call({
  operation: 'articleSearch',
  keyword: '人工智能',
  maxPages: 3
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/wechat-official-account-data-scraper').call(
    run_input={'operation': 'accountHistoryArticles', 'account': 'rmrbwx', 'maxPages': 5}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~wechat-official-account-data-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "articleMetrics", "articleUrl": "https://mp.weixin.qq.com/s/XXXXXXXXXXXX"}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule or webhook
2. **HTTP Request**: Call the actor API with your operation + input
3. **Process**: Handle the JSON dataset
4. **Action**: Save to a sheet, notify a channel, or feed a dashboard

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- Real rows per run — full feature access, same data quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- Higher volumes per run across every operation
- Faster, uninterrupted processing
- Pay-per-result: you're only charged for successful rows — empty results are never billed

💰 **Transparent per-row pricing** — bulk search and listing operations are priced lower than single-row premium lookups, so you pay for the depth you actually use.

🔗 [View current pricing](https://apify.com/sian.agency/wechat-official-account-data-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: Do I need a WeChat account, login, or API key?**
A: No. The actor handles data access for you — just provide a keyword, account, or article URL.

**Q: Can I use the short wxid (公众号 id) I already know?**
A: Yes. Account operations accept a wxid (e.g. `rmrbwx`), a ghid (`gh_363b924965e9`), or an account URL — the actor resolves the rest.

**Q: Does it work with private content?**
A: No — only publicly accessible WeChat Official Account content is supported.

**Q: Why are some articles' comments empty?**
A: WeChat restricts comment visibility on many articles. When comments aren't public the actor returns an empty result (and never charges you for it).

**Q: What output formats are available?**
A: JSON, CSV, and Excel — export directly from the Apify dataset.

**Q: What is gongzhonghao (公众号)?**
A: It's the Chinese term for a WeChat Official Account — the publishing accounts this actor extracts data from.

**Q: Is this legal?**
A: Yes — we only extract publicly available data. See the [legal section](#-is-it-legal-to-scrape-data) below.

***

### 🐛 Troubleshooting

**An account operation says it couldn't resolve a ghid**

- Double-check the wxid spelling, or pass the `gh_...` ghid or an account URL directly.

**An article operation returns an error row**

- Confirm the `articleUrl` is a full `mp.weixin.qq.com` link and the article is still published.

**A search returns fewer rows than expected**

- WeChat web search recycles results across deep pages; the actor de-duplicates and stops early. Lower `maxPages` or refine the keyword.

**Comment replies return no rows**

- The comment may have no replies, or the `contentId` is from a different article. Use a `commentId` from the same article's `articleComments` run.

***

### ⚠️ Trademark Disclaimer

This is an independent, third-party tool. It is **not affiliated with, endorsed by, sponsored by, or in any way officially connected to Tencent Holdings Ltd., WeChat, Weixin (微信), or the WeChat Official Accounts platform (微信公众平台)**. "WeChat", "Weixin", "微信", and "公众号" and all related names, marks, and logos are trademarks of their respective owners and are used here for descriptive and identification purposes only.

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

***

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's Issues tab
- Check the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `operation` (type: `string`):

What to scrape. Each operation maps to one WeChat Official Account capability. Fill in only the field(s) that operation requires (shown below).

## `keyword` (type: `string`):

Used by the search operations (Article / Account / Mini Program / Suggestions / WeChat Index). Chinese keywords give the richest results (try 人工智能, 财经, 健康). English & brand names also work.

## `account` (type: `string`):

Used by the Account operations (Basic Info / Principal Info / Original Count / Today's Articles / Historical Articles). Accepts a short wxid (e.g. `rmrbwx`), a ghid (`gh_363b924965e9`), or an account/article URL. A bare wxid is resolved to its ghid automatically.

## `articleUrl` (type: `string`):

Used by Article Detail / Metrics / Comments / Comment Replies. A full mp.weixin.qq.com article link.

## `contentId` (type: `string`):

Used by Article Comment Replies only — the commentId of a top-level comment (returned by the Article Comments operation).

## `link` (type: `string`):

Used by Convert Article Link — a WeChat Official Account short or intermediate article link to normalize into a full destination URL.

## `subSearchType` (type: `string`):

Used by Article Search only — narrow the result category.

## `startDay` (type: `string`):

Used by Hot Article Search — start date in yyyy-MM-dd format.

## `endDay` (type: `string`):

Used by Hot Article Search — end date in yyyy-MM-dd format.

## `publishType` (type: `string`):

Used by Hot Article Search (optional) — filter hot articles by content type.

## `businessType` (type: `string`):

Used by Search Suggestions (optional) — scope of the autocomplete suggestions.

## `maxPages` (type: `integer`):

How many pages to fetch for paginated operations (Article / Account / Mini Program / Hot search, Comments, Historical Articles). The actor de-duplicates across pages and stops early when results are exhausted. Default 3. Range 1–50.

## Actor input object example

```json
{
  "operation": "articleSearch",
  "keyword": "人工智能",
  "account": "rmrbwx",
  "articleUrl": "https://mp.weixin.qq.com/s/XXXXXXXXXXXX",
  "contentId": "9180837077346943597",
  "link": "https://mp.weixin.qq.com/s/XXXXXXXXXXXX",
  "subSearchType": "ALL",
  "startDay": "2026-06-01",
  "endDay": "2026-06-08",
  "publishType": "ALL",
  "businessType": "ALL",
  "maxPages": 3
}
```

# Actor output Schema

## `output` (type: `string`):

WeChat Official Account results — one flat row per item with title, content, accountName, wxid/ghid, engagement metrics, comment threads, search results, or trend data depending on the operation, plus the raw upstream fields.

## `report` (type: `string`):

HTML report with run status, success/error counts, pages fetched, duration, and the inputs used — written even on fatal crash.

# 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 = {
    "keyword": "人工智能",
    "account": "rmrbwx",
    "maxPages": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/wechat-official-account-data-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 = {
    "keyword": "人工智能",
    "account": "rmrbwx",
    "maxPages": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/wechat-official-account-data-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "keyword": "人工智能",
  "account": "rmrbwx",
  "maxPages": 3
}' |
apify call sian.agency/wechat-official-account-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=sian.agency/wechat-official-account-data-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "WeChat Official Account Scraper — Articles, Accounts & Search",
        "description": "Extract WeChat Official Account data into clean datasets: article content & detail, account profiles & registration info, today's & historical articles, comments, engagement metrics, plus article, hot, mini-program, index & account search. wxid-native, no login.",
        "version": "1.0",
        "x-build-id": "FwlkBNTnPh9F47MLr"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~wechat-official-account-data-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-wechat-official-account-data-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/sian.agency~wechat-official-account-data-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-wechat-official-account-data-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/sian.agency~wechat-official-account-data-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-wechat-official-account-data-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "operation"
                ],
                "properties": {
                    "operation": {
                        "title": "Operation",
                        "enum": [
                            "articleSearch",
                            "hotArticleSearch",
                            "accountSearch",
                            "miniProgramSearch",
                            "searchSuggestions",
                            "wechatIndexSearch",
                            "articleDetail",
                            "articleMetrics",
                            "articleComments",
                            "articleCommentReplies",
                            "convertArticleLink",
                            "accountBasicInfo",
                            "accountPrincipalInfo",
                            "accountOriginalCount",
                            "accountTodayArticles",
                            "accountHistoryArticles"
                        ],
                        "type": "string",
                        "description": "What to scrape. Each operation maps to one WeChat Official Account capability. Fill in only the field(s) that operation requires (shown below).",
                        "default": "articleSearch"
                    },
                    "keyword": {
                        "title": "Search Keyword",
                        "type": "string",
                        "description": "Used by the search operations (Article / Account / Mini Program / Suggestions / WeChat Index). Chinese keywords give the richest results (try 人工智能, 财经, 健康). English & brand names also work."
                    },
                    "account": {
                        "title": "Account (wxid, ghid, or URL)",
                        "type": "string",
                        "description": "Used by the Account operations (Basic Info / Principal Info / Original Count / Today's Articles / Historical Articles). Accepts a short wxid (e.g. `rmrbwx`), a ghid (`gh_363b924965e9`), or an account/article URL. A bare wxid is resolved to its ghid automatically."
                    },
                    "articleUrl": {
                        "title": "Article URL",
                        "type": "string",
                        "description": "Used by Article Detail / Metrics / Comments / Comment Replies. A full mp.weixin.qq.com article link."
                    },
                    "contentId": {
                        "title": "Comment Content ID",
                        "type": "string",
                        "description": "Used by Article Comment Replies only — the commentId of a top-level comment (returned by the Article Comments operation)."
                    },
                    "link": {
                        "title": "Article Short Link",
                        "type": "string",
                        "description": "Used by Convert Article Link — a WeChat Official Account short or intermediate article link to normalize into a full destination URL."
                    },
                    "subSearchType": {
                        "title": "Article Search Category",
                        "enum": [
                            "ALL",
                            "LATEST",
                            "HOT",
                            "FOLLOWED",
                            "RECENT_READ"
                        ],
                        "type": "string",
                        "description": "Used by Article Search only — narrow the result category.",
                        "default": "ALL"
                    },
                    "startDay": {
                        "title": "Hot Search — Start Day",
                        "type": "string",
                        "description": "Used by Hot Article Search — start date in yyyy-MM-dd format."
                    },
                    "endDay": {
                        "title": "Hot Search — End Day",
                        "type": "string",
                        "description": "Used by Hot Article Search — end date in yyyy-MM-dd format."
                    },
                    "publishType": {
                        "title": "Hot Search — Publish Type",
                        "enum": [
                            "ALL",
                            "IMAGE_TEXT",
                            "VIDEO",
                            "AUDIO",
                            "IMAGE",
                            "TEXT",
                            "REPRINT"
                        ],
                        "type": "string",
                        "description": "Used by Hot Article Search (optional) — filter hot articles by content type.",
                        "default": "ALL"
                    },
                    "businessType": {
                        "title": "Suggestions — Scope",
                        "enum": [
                            "ALL",
                            "ACCOUNT",
                            "ARTICLE",
                            "CHANNEL",
                            "MOMENTS",
                            "LIVE"
                        ],
                        "type": "string",
                        "description": "Used by Search Suggestions (optional) — scope of the autocomplete suggestions.",
                        "default": "ALL"
                    },
                    "maxPages": {
                        "title": "Max pages (paginated ops)",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "How many pages to fetch for paginated operations (Article / Account / Mini Program / Hot search, Comments, Historical Articles). The actor de-duplicates across pages and stops early when results are exhausted. Default 3. Range 1–50.",
                        "default": 3
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
