# WeChat Article Scraper 📰 (公众号 search + full text) (`tagadanar/wechat-article-scraper`) Actor

WeChat Official Account (公众号) articles by keyword from Sogou WeChat search: title, summary, account, publish time, cover, article link and the full article text with author, account ID, WeChat ID and region. Date filter and only-new monitor mode. No login, no proxy to set up.

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

## Pricing

from $1.05 / 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 Article Scraper: 公众号 articles by keyword, with full text

Search WeChat Official Account (公众号) articles by keyword and get them as clean rows: title, summary, account name, publish time, cover image, a working link to the article on mp.weixin.qq.com and, with full text on (the default), the whole article text with its author, the account's ID and WeChat ID, the publisher's IP region and the article's images. The search runs on Sogou WeChat search (weixin.sogou.com), the public index of WeChat articles, so you need no WeChat account, no login and no proxy settings.

Use it to monitor what Chinese media and brands publish on WeChat about a topic, a company or a product, to collect Chinese-language text for analysis or AI training, or to find the accounts that write about your market. Schedule it in only-new mode and each run returns just the articles that appeared since the last one.

$1.50 per 1,000 articles, plus $3.50 per 1,000 for the full text ($5.00 per 1,000 all in, Free plan; less on paid plans). Platform usage is included.

### What you get

One row per article:

| Field | Description |
| --- | --- |
| `keyword`, `rank` | The keyword that found it and its position in Sogou's results |
| `title`, `summary` | The article title and Sogou's snippet |
| `accountName` | The Official Account that published it, e.g. `中国证券报` |
| `publishedAt` | Publish time, ISO 8601 in UTC |
| `articleUrl` | The article on mp.weixin.qq.com. This is the signed link Sogou hands out: it opens the article for some hours, then expires (see the FAQ) |
| `coverImageUrl` | The cover image |
| `contentText` | The full article text, paragraphs kept as line breaks (full text on) |
| `contentLength` | Length of the text in characters |
| `author` | The author line of the article, when the account fills it in |
| `accountId` | The account's original ID (`gh_...`) |
| `accountWechatId` | The account's WeChat ID, e.g. `rmrbwx` (null when the account never set one) |
| `accountBiz` | The account's `__biz` key, the same for every article of that account |
| `accountDescription`, `accountAvatarUrl` | The account's own description and avatar |
| `articleId` | A stable ID for the article (`biz_mid_idx`) |
| `articleType` | `article`, `picture post`, `video` and so on |
| `isOriginal` | The article is marked original (原创) |
| `ipRegion` | The publisher's IP region WeChat shows under the article, e.g. `北京` |
| `imageUrls` | The images in the article |
| `contentStatus` | `ok`, `not requested`, `link not resolved`, `deleted by the publisher`, `blocked by WeChat`, `refused` or `unreadable` |
| `scrapedAt` | When the row was collected |

#### Example row (real, 2026-10-21, text shortened)

```json
{
  "keyword": "茶叶",
  "rank": 2,
  "title": "【健康】茶叶是个宝，用得好胜过冬虫夏草",
  "summary": "来源:养生中国(ID:YANGSHENG-CN) 茶叶是个宝,不喝不知道.茶叶的健康保健作用,现在就给大家科普一下!...",
  "accountName": "人民日报",
  "publishedAt": "2016-06-16T05:46:31.000Z",
  "articleUrl": "https://mp.weixin.qq.com/s?src=3&timestamp=1792587641&ver=1&signature=HLumD31p7Ox5k...",
  "coverImageUrl": "https://mmbiz.qpic.cn/mmbiz/xrFYciaHL08D8MydexymibxPvoB9loU6aPu1TCiaJ5llkrkruo2H61b1iaYdk9dYmg7LtPvejrOI44vpRh3vicylzdA/0?wx_fmt=png",
  "author": null,
  "accountId": "gh_363b924965e9",
  "accountWechatId": "rmrbwx",
  "accountBiz": "MjM5MjAxNDM4MA==",
  "accountDescription": "参与、沟通、记录时代。",
  "articleId": "MjM5MjAxNDM4MA==_2666131478_3",
  "articleType": "article",
  "isOriginal": false,
  "ipRegion": "北京",
  "contentText": "来源：养生中国（ID：YANGSHENG-CN）\n茶叶是个宝，不喝不知道。茶叶的健康保健作用，现在就给大家科普一下！\n...",
  "contentLength": 1624,
  "imageUrls": ["https://mmbiz.qpic.cn/..."],
  "contentStatus": "ok",
  "scrapedAt": "2026-10-21T13:00:47.550Z"
}
```

### Input

| Field | What it does |
| --- | --- |
| `keywords` | What you would type in WeChat's article search: a topic, brand, company, product or person. One per line; each line is its own search. Chinese keywords find far more articles than English ones |
| `maxResultsPerKeyword` | How many articles per keyword (default 20, up to 100). Sogou shows at most 100 results per keyword to a visitor who is not logged in |
| `publishedWithin` | Any time, or the last 24 hours, 7 days, 30 days or 12 months |
| `includeContent` | Full article text and the account details (default on). Off = search results only |
| `onlyNew` | Monitor mode: skip articles an earlier run already delivered to you |

#### Examples

What WeChat accounts published about electric cars and BYD in the last 7 days, with full text:

```json
{ "keywords": ["新能源汽车", "比亚迪"], "maxResultsPerKeyword": 100, "publishedWithin": "week" }
```

A daily feed of new articles mentioning your brands, search results only (cheapest):

```json
{ "keywords": ["瑞幸咖啡", "库迪咖啡", "星巴克中国"], "maxResultsPerKeyword": 50, "includeContent": false, "onlyNew": true }
```

### How it compares

| | This actor | Other WeChat article scrapers on the Store (October 2026) |
| --- | --- | --- |
| Price per 1,000 articles, search results | $1.50 | $3 to $12 (one Sogou search scraper costs less but gives no working article link) |
| Price per 1,000 articles with full text | $5.00 | $14 to $36 |
| Full text, author, account IDs, region | yes | some |
| Date filter and only-new mode | yes | some |
| Proxy to set up | none | several ask for residential proxies |

### Pricing

$1.50 per 1,000 article rows on the Free plan ($1.35 Bronze, $1.20 Silver, $1.05 Gold), plus $3.50 per 1,000 for each article whose full text was delivered ($3.15 Bronze, $2.80 Silver, $2.45 Gold), plus $0.001 per run to start. Platform usage is included. An article whose page could not be read ships without text and without the text charge. A keyword with no articles costs nothing beyond the run start. You can cap spend with Apify's maximum-charge setting: the run stops cleanly when it is reached.

### FAQ

**Do I need a WeChat account?** No. The actor reads Sogou WeChat search and the article pages the way a visitor's browser does, logged out.

**Why do article links stop working after a while?** Sogou hands out signed, temporary links to mp.weixin.qq.com, and opening a permanent article link without a WeChat session leads to a verification page. So the link in `articleUrl` opens the article for some hours after the run. Keep the full text (on by default) if you need the content later; `articleId` and `accountBiz` identify the article and the account for good.

**Why at most 100 articles per keyword?** Sogou shows 10 pages of 10 results to a visitor who is not logged in. Use several narrower keywords (a brand plus a product, a city plus a topic) to cover more ground; each keyword is its own search.

**Is "published within" applied by Sogou?** Sogou's own time filter needs a login, so the actor applies it to each result's publish time, among the up to 100 results Sogou shows for the keyword. Sogou sorts by relevance, so a "last 24 hours" search on a broad keyword may return fewer recent articles than exist on WeChat.

**Can I get read counts, likes or comments?** No. WeChat shows those only inside the WeChat app to a logged-in user.

**Can I paste article URLs or list all articles of one account?** Not in this version. Permanent article links and account history pages are behind WeChat's verification page for logged-out visitors, and this actor never solves or bypasses verification pages.

**Why do some rows have no text?** The run status names the reason, and `contentStatus` says it per row: the publisher deleted the article, WeChat blocked it, WeChat's verification check refused the request, or the link could not be resolved. Those rows are not charged for text.

**How fast is it?** About 100 articles with full text in 5 to 8 minutes. Search results only is faster: Sogou is asked about once a second.

**How does only-new mode work?** The actor keeps the IDs it has delivered in a key-value store named `wechat-article-scraper-seen` in your account. Schedule the same input daily and each run returns just the new articles. Delete the store to start over.

### Related actors

- [Telegram Channel Monitor](https://apify.com/tagadanar/telegram-channel-monitor): new posts from public Telegram channels.
- [Threads Scraper](https://apify.com/tagadanar/threads-scraper): posts, profiles and replies from Threads.

Keywords: WeChat scraper, WeChat article scraper, 公众号 scraper, 微信公众号文章, Sogou WeChat search, weixin.sogou.com, WeChat Official Account, mp.weixin.qq.com, Chinese news monitoring, China social media monitoring.

# Changelog

This Actor's version history is a separate document: https://apify.com/tagadanar/wechat-article-scraper/changelog.md

# Actor input Schema

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

What you would type in WeChat's article search (Sogou WeChat search): a topic, brand, company, product or person, for example 人工智能, 新能源汽车, 比亚迪 or ChatGPT. One per line; each line is its own search. Chinese keywords find far more articles than English ones.

## `maxResultsPerKeyword` (type: `integer`):

How many articles to collect for each keyword. Sogou shows at most 100 results per keyword to a visitor who is not logged in, so 100 is the ceiling.

## `publishedWithin` (type: `string`):

Keep only articles published in this window. It is applied to the publish date of each result, among the up to 100 results Sogou shows for the keyword.

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

Open each article on mp.weixin.qq.com and add its full text, author, account ID, WeChat ID, region and image list. Charged per article whose text was delivered. Off = search results only (title, summary, account, date, cover, article link).

## `onlyNew` (type: `boolean`):

Monitor mode: skip articles that an earlier run of yours already delivered, so a scheduled run returns only what is new for your keywords.

## Actor input object example

```json
{
  "keywords": [
    "人工智能"
  ],
  "maxResultsPerKeyword": 10,
  "publishedWithin": "any",
  "includeContent": true,
  "onlyNew": false
}
```

# Actor output Schema

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

One item per WeChat article in the default dataset.

# 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": [
        "人工智能"
    ],
    "maxResultsPerKeyword": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("tagadanar/wechat-article-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": ["人工智能"],
    "maxResultsPerKeyword": 10,
}

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tagadanar/wechat-article-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/QPrNWz6VKePO466IT/builds/6VpZDb7VkLIlvzaFT/openapi.json
