# WeChat Articles Scraper (微信公众号文章) via Sogou (`dheerajitbhu/wechat-articles-scraper`) Actor

Search WeChat Official Account articles (微信公众号文章) by keyword through Sogou WeChat search and export titles, summaries, accounts, publish times and full article text. No WeChat account needed. From $2 per 1,000.

- **URL**: https://apify.com/dheerajitbhu/wechat-articles-scraper.md
- **Developed by:** [dheeraj kumar](https://apify.com/dheerajitbhu) (community)
- **Categories:** Social media, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 search results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

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

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

## How to integrate an Actor?

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

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

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

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

# README

## WeChat Articles Scraper (微信公众号文章)

Search **WeChat Official Account articles (微信公众号文章)** by keyword and export them to JSON, CSV or Excel. You get titles, summaries, account names, publish times, cover images and, optionally, **the full article text**, images, author, account id and the original-content (原创) flag.

It finds articles through public WeChat search. **You don't need a WeChat account, login or cookie.**

**From $2 per 1,000 results.** Full articles cost $5 per 1,000.

> 中文简介：按关键词采集微信公众号文章，无需微信账号、无需登录。支持关键词搜索（每个关键词最多约 100 条），可选抓取文章全文、图片、作者、公众号 ID（gh\_）、微信号、是否原创。按条计费：搜索结果每 1000 条 2 美元，全文每 1000 篇 5 美元。

> **Looking for a WeChat article API?** WeChat has no public article search API. This actor turns public Official Account articles into structured data you can export or feed to AI.

### Why WeChat article data matters

- **Scale:** Weixin and WeChat had **1,439 million combined monthly active users** on June 30, 2026 ([Tencent Q2 2026 results](https://www.tencent.com/wp-content/uploads/2026/08/Tencent-Announces-2026-Second-Quarter-Results.pdf)).
- **What it's used for:** Official Accounts (公众号) are where Chinese brands, media, government bodies and analysts publish long-form content. It's China's main publishing layer, and most of it sits inside the app.
- **For brands and PR teams:** see how your brand and competitors are covered, and which accounts write about your category.
- **For market and policy researchers:** collect industry commentary, announcements and analysis by keyword.
- **For AI / LLM teams:** clean, long-form Chinese articles with titles, authors and dates, well suited to RAG, summarisation and training-data curation.

### What WeChat article data you get

| Option | Row content | Price |
|---|---|---|
| Search (default) | title, summary, account name, publish time, cover, search link | **$0.002** per row |
| `fetchFullArticle: true` | the above plus full text (`contentText`), image URLs, author, `accountId` (gh\_…), `accountAlias` (WeChat ID), `isOriginal`, article URL, biz/mid/idx | **$0.005** per row |
| `article` mode | full article for each `mp.weixin.qq.com/s/...` link you give | **$0.005** per row |

Each article is billed once, at one of the two prices. If an article can't be opened (deleted, removed or expired), you get it as a search row at the search price and a `contentError` field. There's also a $0.001 run-start fee. `maxChargeUsd` (default $5) stops the run before it goes over.

### Input examples

```json
{ "mode": "search", "searchQueries": ["新能源汽车", "跨境电商"], "maxResults": 50 }
```

```json
{ "mode": "search", "searchQueries": ["咖啡"], "maxResults": 20, "fetchFullArticle": true, "publishedAfter": "2026-01-01" }
```

```json
{ "mode": "article", "articleUrls": ["https://mp.weixin.qq.com/s/your-article-id"] }
```

### Output example (real row, 2026-10-18, text shortened)

```json
{
  "type": "article", "detail": "full",
  "title": "咖啡自由后，我们离“瑰夏自由”还有多远？",
  "summary": "咖啡豆品种的天花板是什么?“瑰夏”是最没有争议的答案之一.2004年,一支瑰夏品种咖啡豆凭借迷人的花香、柑橘和莓果风味,...",
  "accountName": "中国新闻周刊", "accountId": "gh_a7bbb71d655c", "accountAlias": "chinanewsweekly",
  "author": "肖皖璇", "publishedAt": "2023-06-13T14:00:00+00:00", "isOriginal": false,
  "coverUrl": "https://mmbiz.qpic.cn/sz_mmbiz_jpg/Zibeuu43K6ejPZPkszJtrgWb6yaDTGNpvNJSTrYUicgk0VZoHrLy1VBuX2dpoLDnures4wmozuqrc2NhIGZPApOQ/0?wx_fmt=jpeg",
  "url": "https://mp.weixin.qq.com/s?src=11&timestamp=1792340947&ver=7034&signature=…&new=1",
  "biz": "MjM5MDU1Mzg3Mw==", "mid": "2651512831", "idx": "1",
  "contentText": "咖啡豆品种的天花板是什么？“瑰夏”是最没有争议的答案之一。\n\n2004年，一支瑰夏品种咖啡豆凭借迷人的花香、柑橘和莓果风味，爆冷夺得巴拿马生豆竞赛冠军。…",
  "charCount": 3091,
  "imageUrls": ["https://mmbiz.qpic.cn/sz_mmbiz_jpg/Zibeuu43K6eiaJufhBdnDQQWITN60ZKIqgnNGGdbIxUUHVQxnvLVMFfSHxyfNz7NcB88R1MEqL4MzMuRCaa5oLgg/640?wx_fmt=jpeg"],
  "searchQuery": "咖啡", "page": 1, "position": 3
}
```

### Compact output for AI agents

Set **Output format** to `compact` and the run still pushes the same rows to the dataset
at the same price — nothing about billing changes. It additionally writes `OUTPUT_COMPACT`
to the run's key-value store: our token-optimized, lossless encoding of the same rows, built to
be cheaper to hand to an LLM than the plain dataset JSON.

Measured on a real 77-row export of this actor's full-article rows:

| Tokenizer | Pretty JSON | Minified JSON | Compact | vs Pretty | vs Minified |
|---|---:|---:|---:|---:|---:|
| cl100k_base (GPT-4/3.5) | 46,035 | 43,053 | 40,484 | 12.1% smaller | 6.0% smaller |
| o200k_base (GPT-4o) | 42,044 | 39,061 | 36,645 | 12.8% smaller | 6.2% smaller |

Need regular row objects in your own code? The normal dataset is always there, unchanged, alongside the compact copy.

### Good to know

- **Up to about 100 results per keyword.** Without login, public search shows about 100 results. Use several related keywords to collect more.
- **Results are sorted by relevance, not date.** Search-side date filtering needs login. `publishedAfter` filters the results it does return, and skipped rows aren't billed.
- **Article URLs from search are temporary.** Search results link to temporary article URLs that expire after a while. Save the text in your dataset; `biz`/`mid`/`idx` identify the article permanently.
- **No read or like counts.** WeChat shows them only inside the WeChat app.
- **Anti-spider.** The search side rate-limits fast clients and issues challenges. The actor handles them for you and is maintained against site changes. If every request is blocked, the run **fails** instead of ending green with 0 rows.

### Reliability

A self-test runs every day to catch search or WeChat site changes early.

### Run it on a schedule

Suggested frequency: **daily** for brand or industry monitoring, **weekly** for research digests. Add a published-after date so each run picks up only recent articles.

To set it up: save your input as a **Task** in Apify Console, then add a **Schedule**. Send results where you work with Apify integrations: **Google Sheets**, **Slack** or email notifications, **webhooks**, **Make / Zapier / n8n**, or straight into an AI agent through the **Apify MCP server**. A run that can't get data is marked failed, so your alerts fire.

### FAQ

**Is there an official WeChat article API?** Not for searching other accounts' articles. The official platform only covers accounts you manage. This actor finds public articles from any account by keyword.

**Do I need a WeChat account?** No account, login or cookie.

**Can I get the full article text?** Yes. Turn on full articles to get the complete text, images and author.

**What can I use it for?** Brand and competitor monitoring, industry research, translation pipelines, and AI summaries of Chinese-language coverage.

**Can I use it with AI agents?** Yes, through the Apify MCP server. Compact output keeps token use low.

### Related actors

- **[Weibo Scraper](https://apify.com/dheerajitbhu/weibo-scraper)** — posts, comments and hot search from China's biggest microblog.
- **[Bilibili Scraper](https://apify.com/dheerajitbhu/bilibili-scraper)** — videos, comments and danmaku from China's biggest video community.
- **[Douban Scraper](https://apify.com/dheerajitbhu/douban-scraper)** — movie and book ratings, comments and reviews.
- **[AliExpress Scraper](https://apify.com/dheerajitbhu/aliexpress-scraper)** — AliExpress products, prices and variants.
- **[RedNote (Xiaohongshu) Scraper](https://apify.com/easyapi/all-in-one-rednote-xiaohongshu-scraper)** — Xiaohongshu (RedNote) posts for consumer sentiment in China.

**关键词：** 微信公众号文章采集, 公众号爬虫, 微信文章全文, WeChat scraper, WeChat article scraper, WeChat official account.

# Actor input Schema

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

What to scrape. No WeChat account, login or cookie is needed.

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

Used in 'search' mode. If left empty, the run uses 人工智能 as a sample keyword.

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

Without login, public search returns up to about 100 results per keyword.

## `fetchFullArticle` (type: `boolean`):

Off: each result is a search row ($0.002): title, summary, account, publish time, cover. On: each result is a full article ($0.005): adds the full text, images, author, account ids and the original-content flag. If one article can't be opened, it's delivered as a search row at the search price.

## `includeHtml` (type: `boolean`):

Also return the article body HTML (contentHtml). Off by default because it is large.

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

Optional. Older results are skipped and not billed. Search-side date filtering needs login, so this filter runs on the results it returns (sorted by relevance).

## `accountFilter` (type: `array`):

Optional exact account names (e.g. 澎湃新闻). Other results are skipped and not billed.

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

Used in 'article' mode: mp.weixin.qq.com/s/... links. Each is a full-article row ($0.005).

## `outputFormat` (type: `string`):

Dataset rows are always pushed and charged the same either way. 'compact' additionally writes OUTPUT_COMPACT to the run's key-value store: our lossless, token-optimized copy of the same rows, cheaper to hand to an LLM.

## `maxChargeUsd` (type: `number`):

Hard spending cap. The run stops cleanly before going over it; rows already delivered are kept.

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

Default: Apify datacenter proxy. The actor handles the site's access protections automatically and is maintained against site changes. Pick RESIDENTIAL to use residential IPs from the start.

## `requestIntervalSecs` (type: `number`):

Polite pacing between requests; 2 seconds works well.

## Actor input object example

```json
{
  "mode": "search",
  "searchQueries": [
    "人工智能"
  ],
  "maxResults": 30,
  "fetchFullArticle": false,
  "includeHtml": false,
  "outputFormat": "standard",
  "maxChargeUsd": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "requestIntervalSecs": 2
}
```

# Actor output Schema

## `results` (type: `string`):

Article rows (detail: search or full).

# 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": [
        "人工智能"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("dheerajitbhu/wechat-articles-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": ["人工智能"],
    "proxyConfiguration": { "useApifyProxy": True },
}

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dheerajitbhu/wechat-articles-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/0FjbTBvBRYM5OxsT1/builds/QCFEbDhbVcEWtuk1X/openapi.json
