# WeChat Official Account 公众号 Scraper - Articles & Read Counts (`clover_folktale/wechat-scraper`) Actor

Scrape WeChat and Weixin Official Accounts (微信公众号): search articles by keyword, list an account's articles, get full article text with images and account IP location, read, like and share counts, and search WeChat Channels (视频号) videos. No login or cookies needed.

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

## Pricing

from $5.00 / 1,000 results

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 extracts public data from WeChat (微信, also called Weixin) Official Accounts (公众号) and returns clean, flat JSON. You can search articles by keyword, list the articles of any account, get the full text of an article with the publishing account's public profile (avatar, IP location, bio), pull read, like and share counts, and search WeChat Channels (视频号) videos. It is made for market researchers, brand and media analysts, and data teams who follow Chinese content. No proxies, cookies, login or Chinese phone number needed.

### What is a WeChat Official Account?

WeChat (微信, Weixin) is a Chinese messaging app. Official Accounts (公众号) are publishing pages run by media outlets, brands, organisations and individuals; they post articles that followers read inside WeChat. WeChat Channels (视频号) is the short-video feature of the same app. This Actor is an independent tool and is not affiliated with WeChat.

### What data can you get?

The Actor has five modes. Each mode returns one record type, marked in the `type` field.

| Mode | Give it | You get |
|---|---|---|
| `search` | a keyword (optional: sort, time range) | articles (`type: article`): title, summary, account name, publish time, cover, link, read count |
| `account` | account IDs (`gh_...`), custom WeChat IDs, or any article link of the account | the account's published articles, newest first (`type: article`): title, link, publish time, cover, read and "looking" counts as shown in the list |
| `article` | article links | the full article (`type: articleDetail`): text, images, title, account name, account ID, WeChat ID, account bio, avatar, IP location, publish time, cover |
| `stats` | article links | reads, likes, "looking" (在看), shares, saves and comment count of each article (`type: articleStats`) |
| `videoSearch` | a keyword (optional: sort, time range) | WeChat Channels videos (`type: channelVideo`): title, author name, duration, likes, publish time, cover |

#### Article fields (`article` and `articleDetail`)

| Field | Description |
|---|---|
| `title` | Article title |
| `url` | Article link |
| `articleId` | Article ID |
| `accountName` | Name of the publishing account; empty in `account` mode when the input is an account ID or WeChat ID |
| `accountId` | Account ID (`gh_...`); not returned in search results |
| `publishedAt` | Publish time |
| `summary` | Article summary |
| `coverUrl` | Cover image link |
| `readCount` | Read count as WeChat shows it (account lists and search results; "10万+" is returned as 100000, so it is a lower bound) |
| `lookCount` | "Looking" (在看) count as shown in the account list; not returned in search results |
| `position` | Position value of the article in the list; not returned in search results |
| `text` | Full article text (`articleDetail` only) |
| `imageUrls` | Links to the images in the article (`articleDetail` only) |
| `author` | Author byline of the article (`articleDetail` only) |
| `wechatId` | Custom WeChat ID of the account, when it has one (`articleDetail` only) |
| `accountBio` | Public bio of the account (`articleDetail` only) |
| `accountAvatar` | Avatar image URL of the publishing account (`articleDetail` only) |
| `accountIpLocation` | IP location (IP属地) of the publishing account as shown on the article: province, else country (`articleDetail` only) |
| `sourceLink` | Original-source link of the article; empty when there is none (`articleDetail` only) |

#### Count fields (`articleStats`)

| Field | Description |
|---|---|
| `readCount` | Number of reads |
| `likeCount` | Number of likes |
| `lookCount` | "Looking" (在看) count |
| `shareCount` | Number of shares |
| `collectCount` | Number of saves |
| `commentCount` | Number of comments |
| `articleId` | Article ID |
| `url` | Article link |

#### WeChat Channels video fields (`channelVideo`)

| Field | Description |
|---|---|
| `title` | Video title |
| `authorName` | Name of the video author |
| `likeCount` | Number of likes |
| `durationSeconds` | Video length in seconds |
| `publishedAt` | Publish time |
| `coverUrl` | Cover image link |
| `channelVideoId` | Video ID |
| `width` | Video width |
| `height` | Video height |

### How to use WeChat Official Account Scraper

1. Open the Actor on Apify and click **Try for free** or **Start**.
2. Choose a **Mode**: search articles, an account's articles, article full text, article counts, or Channels video search.
3. Fill in the input for that mode: a keyword, account IDs, or article links. Set **Max results**.
4. Click **Start** and wait for the run to finish.
5. Open the **Output** tab and export the dataset as JSON, CSV, Excel or another format.

### Input

| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| `mode` | string | required | `search`, `account`, `article`, `stats` or `videoSearch` | `search` |
| `keyword` | string | optional | Search keyword for `search` and `videoSearch`. Chinese keywords work best, e.g. "美食". | `美食` |
| `sort` | string | optional | For `search` and `videoSearch`: `default` (relevance), `latest` (newest first) or `hot` (most liked first) | `default` |
| `publishTime` | string | optional | For `search` and `videoSearch`: only items published within `all` (any time), `day`, `week` or `half_year` | `all` |
| `accounts` | array of strings | optional | For `account`: account IDs (`gh_...`), custom WeChat IDs, or the link of any article the account published. A link costs one extra lookup per account. | none |
| `articles` | array of strings | optional | For `article` and `stats`: article links, either `https://mp.weixin.qq.com/s/...` or the long form `https://mp.weixin.qq.com/s?__biz=...&mid=...&idx=...&sn=...` | none |
| `maxResults` | integer | optional | Maximum number of items to return in total for this run (1 to 5,000). You are charged per item returned. | `20` |

An empty input `{}` searches articles for "美食" (food), so you can try the Actor in seconds.

#### Input examples

Search the newest articles of the last 7 days:

```json
{
  "mode": "search",
  "keyword": "新能源汽车",
  "sort": "latest",
  "publishTime": "week",
  "maxResults": 50
}
```

List an account's articles:

```json
{
  "mode": "account",
  "accounts": ["gh_acda8e6b88ca"],
  "maxResults": 30
}
```

Get the full text of an article:

```json
{
  "mode": "article",
  "articles": ["https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw"]
}
```

Get the counts of an article:

```json
{
  "mode": "stats",
  "articles": ["https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw"]
}
```

Search WeChat Channels videos, most liked first:

```json
{
  "mode": "videoSearch",
  "keyword": "美食",
  "sort": "hot",
  "publishTime": "half_year",
  "maxResults": 20
}
```

#### How do I find an account ID?

Every article result from `article` mode carries `accountId` (`gh_...`) and, when the account has one, its `wechatId`. You can also give `account` mode the link of any article the account published; that costs one extra lookup per account (it is billed as an additional run-start fee).

### Output example

The values below are illustrative samples.

Full article (`article` mode):

```json
{
  "type": "articleDetail",
  "articleId": "MzA5MDAwMDAwMA==_2650000001_1",
  "url": "https://mp.weixin.qq.com/s?__biz=MzA5MDAwMDAwMA==&mid=2650000001&idx=1&sn=0123456789abcdef0123456789abcdef",
  "title": "秋天必吃的5道家常菜",
  "summary": "天气转凉，这几道菜做法简单……",
  "accountName": "示例美食号",
  "accountId": "gh_0123456789ab",
  "wechatId": "sample_food",
  "accountBio": "分享家常菜做法和本地美食。",
  "accountAvatar": "http://wx.qlogo.cn/mmhead/example/0",
  "accountIpLocation": "广东",
  "author": "小编",
  "publishedAt": "2026-10-08T06:19:19Z",
  "coverUrl": "https://mmbiz.qpic.cn/mmbiz_jpg/example/0",
  "sourceLink": null,
  "text": "今天给大家推荐几道简单的家常菜……",
  "imageUrls": ["https://mmbiz.qpic.cn/mmbiz_jpg/example/640"]
}
```

Article from an account list (`account` mode, account ID input):

```json
{
  "type": "article",
  "articleId": "MzA5MDAwMDAwMA==_2650000001_1",
  "url": "https://mp.weixin.qq.com/s?__biz=MzA5MDAwMDAwMA==&mid=2650000001&idx=1&sn=0123456789abcdef0123456789abcdef",
  "title": "秋天必吃的5道家常菜",
  "summary": "天气转凉，这几道菜做法简单……",
  "accountName": null,
  "accountId": "gh_0123456789ab",
  "publishedAt": "2026-10-08T06:19:19Z",
  "position": 1,
  "coverUrl": "https://mmbiz.qpic.cn/mmbiz_jpg/example/0",
  "readCount": 12500,
  "lookCount": 86
}
```

Article counts (`stats` mode):

```json
{
  "type": "articleStats",
  "articleId": "MzA5MDAwMDAwMA==_2650000001_1",
  "url": "https://mp.weixin.qq.com/s?__biz=MzA5MDAwMDAwMA==&mid=2650000001&idx=1&sn=0123456789abcdef0123456789abcdef",
  "readCount": 12500,
  "likeCount": 340,
  "lookCount": 86,
  "shareCount": 120,
  "collectCount": 95,
  "commentCount": 42
}
```

WeChat Channels video (`videoSearch` mode):

```json
{
  "type": "channelVideo",
  "channelVideoId": "example_0123456789",
  "title": "三分钟学会番茄炒蛋",
  "authorName": "示例厨房",
  "durationSeconds": 185,
  "likeCount": 2300,
  "publishedAt": "2026-10-10T12:00:00Z",
  "coverUrl": "https://example.com/cover.jpg",
  "width": 1080,
  "height": 1920
}
```

### How much does it cost?

The Actor uses pay-per-event pricing: a small fee for each run start, a fee per article or video returned in a list, and a higher fee for each full article and each counts lookup, because each needs its own lookup.

| Event | When it is charged | Free plan | Paid plans |
|---|---|---|---|
| `run-start` | Once per run, when the first request to the data source succeeds, even if that request returns nothing. It is not charged when the data source fails from the start or rejects the IDs, or when the spending limit cannot cover it. In `account` mode, also once for each account after the first, charged before that account's first request and kept even if that account then fails or returns nothing. An article link given instead of an account ID adds one more start fee, charged when that account is reached. | $0.015 | $0.015 |
| `result` | Each article or video returned in a list (`search`, `account`, `videoSearch`) | $0.005 | $0.005 |
| `detail` | Each full article (`article` mode) | $0.02 | Bronze $0.0184, Silver $0.0166, Gold, Platinum and Diamond $0.015 |
| `stats` | Each article counts lookup (`stats` mode) | $0.02 | Bronze $0.0184, Silver $0.0166, Gold, Platinum and Diamond $0.015 |

Worked examples:

- **100 search results** on a paid plan: $0.015 + 100 × $0.005 = **$0.515**.
- **20 search results** on the free plan: $0.015 + 20 × $0.005 = $0.115.
- **100 full articles** on the Bronze plan: $0.015 + 100 × $0.0184 = $1.855. On Gold: $0.015 + 100 × $0.015 = $1.515.
- **3 accounts, 30 articles in total**: 3 × $0.015 + 30 × $0.005 = $0.195, if all three accounts are reached.

Nothing is charged once `maxResults` is reached, and you never pay for more than `maxResults` items.

On the free Apify plan, a run returns at most 20 results in total; any paid Apify plan removes the limit. On the free Apify plan each account can run this Actor up to 3 times per 24 hours and 10 times per 7 days, within a small lifetime free allowance shared across all our Actors, and all free accounts share a daily free budget. When any of these limits is reached, the run stops before fetching anything and nothing is charged.

### Use cases

- **Content and trend research**: find what Chinese media and brands publish about a topic, and how it performs.
- **Competitor and brand monitoring**: follow an account's publishing and compare reach across articles.
- **Influencer and KOL research**: rank accounts by the reads and likes of their recent articles before a partnership.
- **AI and data projects**: full-text Chinese articles with clean metadata for models, translation, summaries and dashboards.
- **Industry intelligence**: track policy, finance, technology and consumer topics where WeChat is the primary channel.
- **Short-video research**: find WeChat Channels (视频号) videos on a topic and compare their likes and duration.

### Integrations and API

You can use this Actor as a WeChat article API: start runs through the Apify API, schedule them to run daily or weekly, and send the results to other tools with Apify integrations and webhooks. Results land in an Apify dataset that you can read through the API or download as JSON, CSV or Excel.

Example with the Python `apify-client` package:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("clover_folktale/wechat-scraper").call(run_input={
    "mode": "search",
    "keyword": "新能源汽车",
    "sort": "latest",
    "publishTime": "week",
    "maxResults": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

### Tips and limits

- Search pages hold about 20-36 articles, account list pages about 10 posts (a post can carry several articles), Channels search pages about 10 videos.
- In account lists, `readCount` and `lookCount` are the numbers WeChat shows next to each article ("looking", 在看). Use `stats` mode for likes, shares and saves.
- In search results and account lists, `readCount` is read from the label WeChat shows, so "10万+" comes back as 100000 (a lower bound).
- Some accounts hide their counts; hidden counts come back as `null`.
- WeChat is slow: a single article or counts lookup can take up to 20 seconds.
- Image and cover links are WeChat CDN links and may expire; download what you need soon after the run.
- Channels videos have no public web link, so results carry the title, author, duration, likes and cover only.
- Links or IDs in the wrong format stop the run with an input error before anything is scraped. Correctly formatted links or IDs that return nothing are skipped; if too many inputs (5) return nothing, the run stops to protect your budget.
- Numbers such as reads and likes are what WeChat shows at the time of the run.
- **Empty fields:** search results have no `accountId`, `lookCount` or `position`; Weixin search doesn't return them. In `account` mode, `accountName` is empty when the input is an account ID or WeChat ID; it is filled only when the input is an article link. In `article` mode, `sourceLink` is empty when the article has no original-source link.
- **Free plan:** a run returns at most 20 results in total; any paid Apify plan removes the limit.
- **Privacy:** only public data is returned. The publishing account's public profile is included: account ID, WeChat ID, avatar, IP location and bio. Comment sections are not read. Account bios are returned as published, including any business contact info the account put there.

### FAQ

#### Do I need a WeChat account, login or cookies?

No. You don't need a login, cookies, proxies or a Chinese phone number.

#### Is it legal to scrape WeChat Official Accounts?

The Actor returns only public data: published articles, their public counts, the publishing account's public profile and public Channels video information. It does not read private data such as messages, and comment sections are not read. You are responsible for how you use the data and for following the laws that apply to you.

#### How fresh is the data?

The data is collected live during each run. Numbers such as reads and likes are what WeChat shows at the time of the run.

#### Why are some fields empty?

Some fields are not available in every mode. Search results have no `accountId`, `lookCount` or `position`. In `account` mode, `accountName` is empty when you give an account ID or WeChat ID. `sourceLink` is empty when an article has no original-source link. Some accounts hide their counts, which then come back as `null`.

#### How many results can I get?

Set `maxResults` from 1 to 5,000 items per run. On the free Apify plan a run returns at most 20 results in total; any paid Apify plan removes the limit.

#### Can I get comments?

No. Comment sections are not read. `stats` mode returns the comment count (`commentCount`) of each article.

#### Can I schedule runs and export the data?

Yes. You can schedule runs on Apify, start them through the API, and export each dataset as JSON, CSV, Excel and other formats.

### More tools from the same developer

- [WeChat Index 微信指数 Scraper - Keyword Trends & Popularity](https://apify.com/clover_folktale/wechat-index-scraper)
- [Weibo 微博 Scraper - Posts, Comments, User IDs & IP Location](https://apify.com/clover_folktale/weibo-scraper)
- [Xiaohongshu 小红书 RedNote Scraper - Notes, Comments & User IP](https://apify.com/clover_folktale/xiaohongshu-scraper)
- [Zhihu 知乎 Scraper - Answers, Articles, Comments & Users](https://apify.com/clover_folktale/zhihu-scraper)
- [Douyin 抖音 Scraper - Videos, Comments, User IDs & IP Location](https://apify.com/clover_folktale/douyin-scraper)
- [Bilibili B站 Scraper - Videos, Comments, Subtitles & User IDs](https://apify.com/clover_folktale/bilibili-scraper)

# Actor input Schema

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

What to scrape: articles by keyword, the article list of an account, the full text of articles, the read/like counts of articles, or WeChat Channels videos by keyword.

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

Search keyword. Chinese keywords work best, e.g. "美食".

## `sort` (type: `string`):

Relevance, newest first, or most liked first.

## `publishTime` (type: `string`):

Only items published within this period.

## `accounts` (type: `array`):

Account IDs (gh\_...), custom WeChat IDs, or the link of any article the account published. A link costs one extra lookup per account.

## `articles` (type: `array`):

Article links: https://mp.weixin.qq.com/s/... or the long form https://mp.weixin.qq.com/s?\_\_biz=...\&mid=...\&idx=...\&sn=...

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

Maximum number of items to return in total for this run. You are charged per item returned. On the free Apify plan a run returns at most 20 results in total; any paid Apify plan removes the limit.

## Actor input object example

```json
{
  "mode": "search",
  "keyword": "美食",
  "sort": "default",
  "publishTime": "all",
  "accounts": [
    "gh_acda8e6b88ca"
  ],
  "articles": [
    "https://mp.weixin.qq.com/s?__biz=MjM5NTE2MTY5NA==&mid=2651810289&idx=1&sn=650a1577cb36d3ad7a5c3ee85e02b0e5"
  ],
  "maxResults": 20
}
```

# Actor output Schema

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

All scraped items (JSON, CSV, Excel via the dataset API).

# 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": "美食",
    "accounts": [
        "gh_acda8e6b88ca"
    ],
    "articles": [
        "https://mp.weixin.qq.com/s?__biz=MjM5NTE2MTY5NA==&mid=2651810289&idx=1&sn=650a1577cb36d3ad7a5c3ee85e02b0e5"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("clover_folktale/wechat-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": "美食",
    "accounts": ["gh_acda8e6b88ca"],
    "articles": ["https://mp.weixin.qq.com/s?__biz=MjM5NTE2MTY5NA==&mid=2651810289&idx=1&sn=650a1577cb36d3ad7a5c3ee85e02b0e5"],
}

# Run the Actor and wait for it to finish
run = client.actor("clover_folktale/wechat-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 '{
  "keyword": "美食",
  "accounts": [
    "gh_acda8e6b88ca"
  ],
  "articles": [
    "https://mp.weixin.qq.com/s?__biz=MjM5NTE2MTY5NA==&mid=2651810289&idx=1&sn=650a1577cb36d3ad7a5c3ee85e02b0e5"
  ]
}' |
apify call clover_folktale/wechat-scraper --silent --output-dataset

```

## MCP server setup

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