# WeChat Official Account Scraper: 公众号 Articles & Full Text (`serenido/wechat-official-account-scraper`) Actor

Search WeChat Official Account (微信公众号) articles by keyword and get full text, account, author, publish time, province, original label and images. Or paste article links. No login, no cookies. Deleted or blocked articles are free.

- **URL**: https://apify.com/serenido/wechat-official-account-scraper.md
- **Developed by:** [Serenido](https://apify.com/serenido) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.10 / 1,000 article saveds

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

> ⭐ If this tool saves you time, please leave a quick review on this page. It helps other people find it. Found a problem? Open an issue in the Issues tab and we'll fix it fast.

### What does WeChat Official Account Scraper do?

It gets **WeChat Official Account articles (微信公众号文章)** as clean rows you can open in Excel, Google Sheets, Python or your AI agent. No WeChat account, no login, no cookies.

- **Search articles by keyword** in Chinese or English (人工智能, 新能源汽车, iPhone 17...). Uses Sogou WeChat search (搜狗微信搜索), the public search engine for WeChat articles.
- **Read article links** you already have (mp.weixin.qq.com/s/...).
- **Full text** of every article, plus the account name and ID, author, publish time (UTC and China time), the author's province (IP属地), the **original (原创) label**, summary, cover image, all images, video count and the "read more" (阅读原文) link.

### Why use it?

- **One clean row per article.** Text without HTML, line breaks kept, word count included.
- **Fair billing.** Deleted articles, articles WeChat removed, expired or invalid links, and articles that stay blocked after all retries are saved as free rows with the reason. You only pay for complete articles.
- **Filters for keyword search.** Keep only one account's articles (put the account name in your keywords too, since some big accounts are not in Sogou's results), or only articles from the last N days.
- **No duplicates.** The same article found by two keywords is saved once.

### How to use it

1. Add **keywords** (or article links).
2. Choose how many **articles per keyword** (up to 100).
3. Keep **Open each article** on for the full text, or turn it off for a faster list (title, summary, account, date, cover, link).
4. Click **Start**.

Input example:

```json
{
  "keywords": ["人工智能", "新能源汽车"],
  "maxArticlesPerKeyword": 20,
  "fullText": true,
  "publishedWithinDays": 30
}
```

### Output fields

| Field | Meaning |
|---|---|
| status | ok, or why a free row has no article (deleted, removed_by_wechat, invalid_link, link_expired, blocked...) |
| keyword, rank | Your keyword and the article's position in the search |
| title, summary, contentText, wordCount | The article |
| accountName, accountId, accountWechatId, accountAvatar | The Official Account |
| author, province, isOriginal, articleType | Author, IP province (IP属地), original label (原创), article / picture / video post |
| publishedAt, publishedAtChina, publishedTs | Publish time in UTC, China time and Unix seconds |
| coverImage, images, imageCount, videoCount | Pictures and videos in the article |
| readMoreUrl | The "阅读原文" link, when the article has one |
| url | The article link |

### Good to know

- **Search limit:** Sogou shows logged-out visitors about 100 articles per keyword (10 pages). Use several keywords for more.
- **Picture and video posts:** their text is the post's own description, and their pictures are listed in images.
- **Links from search are temporary.** WeChat search links stay valid for a while, not forever, so the tool saves the full text right away.
- **Not available without the WeChat app:** read counts, likes, comments and an account's full article history. This tool does not claim them.

### How much does it cost?

You pay only for complete articles saved to your dataset. Deleted, removed, expired, invalid and blocked articles, and duplicates, are saved as free rows or skipped, never charged. The run's status message lists them. Set a maximum cost per run in the run options and the run stops cleanly when it is reached.

### Use it from AI agents and code

Run it from the Apify API, Python or JavaScript, Make, Zapier, n8n, or any MCP client (Claude, ChatGPT, Cursor) through Apify's MCP server: `https://mcp.apify.com?tools=serenido/wechat-official-account-scraper`.

### Is it legal?

It reads public pages that anyone can open without logging in. Use the data in line with WeChat's and Sogou's terms and the laws that apply to you. This tool is not affiliated with Tencent, WeChat or Sogou.

# Actor input Schema

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

Search WeChat articles for these words, in Chinese or English (one search per keyword). Uses Sogou WeChat search, which shows logged-out visitors about 100 articles per keyword.

## `maxArticlesPerKeyword` (type: `integer`):

How many articles to save for each keyword (1 to 100).

## `fullText` (type: `boolean`):

On: open every article for the full text, author, province, original label and all images. Off: faster, only what the search page shows (title, summary, account, date, cover, link).

## `accountName` (type: `string`):

Keyword search only: keep articles from accounts whose name contains this text, for example 南方都市报. Put the account name in Keywords too (南方都市报 人工智能), so Sogou finds its articles. Some big accounts are not in Sogou's results.

## `publishedWithinDays` (type: `integer`):

Keyword search only: keep articles published in the last N days. 0 = any date. Skipped articles are not saved or charged.

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

WeChat article links to read directly (mp.weixin.qq.com/s/...). Every link gives one row. Invalid, deleted or expired links are saved as free rows.

## `maxConcurrency` (type: `integer`):

How many articles to load at the same time.

## `proxy` (type: `object`):

Residential proxy is recommended: Sogou shows a captcha to an address after a few searches, and the tool then switches to a fresh address.

## Actor input object example

```json
{
  "keywords": [
    "人工智能"
  ],
  "maxArticlesPerKeyword": 10,
  "fullText": true,
  "publishedWithinDays": 0,
  "maxConcurrency": 4,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `fullText` (type: `string`):

No description

## `all` (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": [
        "人工智能"
    ],
    "maxArticlesPerKeyword": 10,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("serenido/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": ["人工智能"],
    "maxArticlesPerKeyword": 10,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

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

```

## MCP server setup

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