# WeChat Official Accounts 公众号 Articles Scraper (`vulnv/wechat-articles-scraper`) Actor

Scrape WeChat Official Accounts (微信公众号): keyword article search, full article text with read, like and share counts, selected comments, account profiles and an account's published articles. Export to JSON/CSV/Excel. No WeChat login, cookies or proxy needed.

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

## Pricing

from $4.00 / 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.

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 Accounts Scraper - Search 微信公众号 Articles, Stats & Comments

**Scrape WeChat Official Accounts (微信公众号) and export articles, read counts, account profiles and comments to JSON, CSV or Excel.** Search articles by keyword, pull a single article's full text with its reads, likes, shares and favorites, list every article an account has published, get an account's profile, or collect an article's selected comments - all from one Actor. Each result is one clean, flat row.

No WeChat account, no login, no cookies, no proxies and no China IP to configure - data is fetched through a fast, managed pipeline. Just pick an operation, add your input and press **Start**.

> **Unofficial notice:** This is an independent tool and is **not** affiliated with, endorsed by, or connected to WeChat, 微信 or Tencent. "WeChat", "微信", "微信公众号" and "Tencent" are trademarks of their respective owners, used here only to describe what the Actor scrapes.

### What are WeChat Official Accounts?

WeChat Official Accounts (微信公众号, "公众号") are the publishing channels inside WeChat, China's largest messaging app with over 1.3 billion monthly users. Newspapers, government bodies, brands, analysts and independent writers all publish long-form articles there, and for much of China's news, policy and industry commentary it is the primary place those articles appear. Articles live inside WeChat and are hard to search or collect from outside it. This scraper gives you programmatic access to article search, full article text and engagement stats, account profiles and comments so you can monitor media, brands and topics at scale without a WeChat account.

### Operations

Pick one **Operation** and fill in the matching field:

| Operation | Input field | What you get |
|-----------|-------------|--------------|
| **Search articles by keyword** | `keywords` | Articles matching each keyword, with title, summary, cover, account name and publish time. |
| **Article details + stats** | `articleUrls` | The full article: plain-text body, author, account, reads, likes, shares, favorites and comment count. |
| **Article comments** | `articleUrls` | The article's comments, with likes, replies, commenter name and IP region. |
| **Account profile** | `accountIds` | An account's name, IP region, original-article count and linked WeChat Channels (视频号) account. |
| **Account's published articles** | `accountIds` | Every article an account has published, newest first, paginated. |

`articleUrls` accept `mp.weixin.qq.com` short links (`https://mp.weixin.qq.com/s/...`) or long links with `__biz`, `mid` and `idx`. `accountIds` accept an account's original id (e.g. `gh_363b924965e9`) or its WeChat id / alias (e.g. `huanqiu-com`) - one per line.

### How to use it (step by step)

1. Choose an **Operation**.
2. Fill in the matching input:
   - Search articles -> add one or more **Search keywords** (Chinese, English and brand names all work).
   - Article details / Article comments -> paste **Article URLs**.
   - Account profile / Account's articles -> enter **Account IDs**.
3. Set **Maximum results per input** (default 100, or 0 for all available) for the paginated operations.
4. For search, optionally set **Sort order** (relevance, newest or most popular) and **Published within** (any time, last day, week, six months or year).
5. Press **Start**. Export the dataset as JSON, CSV, Excel, XML or via the API.

### Input

| Field | Type | Description |
|-------|------|-------------|
| `operation` | string | **Required.** `search_articles`, `article_detail`, `article_comments`, `account_profile`, or `account_articles`. |
| `keywords` | array | Search keywords (for `search_articles`). |
| `articleUrls` | array | Article URLs (for `article_detail`, `article_comments`). |
| `accountIds` | array | Account original ids or WeChat ids (for `account_profile`, `account_articles`). |
| `maxItems` | integer | Max results per keyword / account / article. `0` = all available. Default `100`. |
| `searchSort` | string | `default`, `latest`, or `hot` (search only). |
| `publishTime` | string | `all`, `day`, `week`, `half_year`, or `year` (search only). |

### Output

Every row carries a `record_type` of `article`, `account` or `comment`. Common article fields:

| Field | Description |
|-------|-------------|
| `article_id`, `article_url` | Stable article id (from WeChat's `__biz`, `mid` and `idx`) and canonical URL. |
| `title`, `digest`, `content_text` | Title, summary and full plain-text body (body on the detail operation). |
| `account_name`, `account_id`, `account_alias`, `account_biz` | The publishing account. |
| `author`, `cover_url`, `source_url` | Byline, cover image and the "read original" link. |
| `read_count`, `like_count`, `old_like_count`, `share_count`, `collect_count`, `comment_count` | Engagement metrics (detail operation). |
| `publish_time`, `update_time`, `ip_location` | Publish / update time (ISO-8601 UTC) and publisher region. |

Account (`account`) rows add `original_article_count`, `ip_location`, `channels_username` and `channels_name`. Comment (`comment`) rows add `comment_id`, `content`, `like_count`, `reply_count`, `create_time`, `author_name`, `ip_location` and `is_top`.

Search and account-list rows carry what WeChat shows in a list (title, summary, cover, time); reads, likes and the full text come from the **Article details** operation. Account-list rows carry the account id but not its display name - run **Account profile** for that.

Example article row:

```json
{
  "record_type": "article",
  "operation": "article_detail",
  "input": "https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw",
  "article_id": "MzIzNjc1NzUzMw==_2247780992_1",
  "article_url": "https://mp.weixin.qq.com/s?__biz=MzIzNjc1NzUzMw==&mid=2247780992&idx=1&sn=24a33e0bf7a46cd28911be93eff3b531",
  "title": "…",
  "account_name": "量子位",
  "account_alias": "QbitAI",
  "publish_time": "2025-03-05T04:22:09+00:00",
  "read_count": 28520,
  "like_count": 22,
  "old_like_count": 111,
  "share_count": 978,
  "collect_count": 34,
  "comment_count": 28
}
```

### Common use cases

- **Media and PR monitoring** - track what Chinese outlets and brands publish on any keyword, newest first.
- **Account research** - pull an account's full publishing history, then the reads and shares of each article.
- **Competitor and brand intelligence** - watch a competitor's Official Account and measure how each post performs.
- **Market and AI research** - build datasets of Chinese long-form articles, full text and reader comments.

### Notes on reliability

- Only author-selected (精选) comments are public on WeChat, so the comments operation returns those; articles with comments switched off return none.
- WeChat decides how many articles each page of an account's history holds, so page sizes vary by account.
- Cover image URLs are served by WeChat's CDN and can change; fetch them promptly.
- Read, like and share counts reflect what WeChat returns at scrape time.
- If an article or account is deleted, blocked or unavailable, that input is skipped and the run continues.

### FAQ

**Do I need a WeChat account, cookies or a proxy?** No. Just add your input and press Start.

**Which account id should I use?** Either the original id (`gh_...`) or the WeChat id / alias shown on the account's profile. Both work.

**Can I run several keywords, articles or accounts at once?** Yes - add multiple lines. For search and account articles, cross-input duplicate articles are removed automatically.

**Can I try it for free?** Yes. Users on the free Apify plan can fetch up to 10 results in total to try the Actor. Upgrade to a paid Apify plan to run it without that limit.

**What export formats are supported?** JSON, CSV, Excel, XML and HTML, plus the Apify API and integrations such as Google Sheets, Zapier, Make and webhooks.

### Pricing

This Actor is **pay per result**: you are charged for each record it returns (articles, article details, comments and account profiles), plus standard Apify platform usage. Different record types have different prices; see the **Pricing** tab for current rates. You are never charged for inputs that return nothing.

### Related scrapers

- **[Xiaohongshu Scraper](https://apify.com/vulnv/xiaohongshu-scraper)** - 小红书 / RedNote notes, users and comments.
- **[Bilibili Scraper](https://apify.com/vulnv/bilibili-scraper)** - 哔哩哔哩 videos, creators and comments.
- **[Douyin Scraper](https://apify.com/vulnv/douyin-search-scraper)** - 抖音 videos by keyword, with creators and downloads.

# Actor input Schema

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

What to scrape. Each operation uses a different input field below:

• Search articles → Keywords
• Article details → Article URLs
• Article comments → Article URLs
• Account profile → Account IDs
• Account's articles → Account IDs

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

For the "Search articles" operation. Add one or more keywords - Chinese, English and brand names all work. Each keyword is searched independently and cross-keyword duplicates are removed.

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

For the "Article details" and "Article comments" operations. Paste mp.weixin.qq.com article links - short links (https://mp.weixin.qq.com/s/...) or long links with \_\_biz, mid and idx - one per line.

## `accountIds` (type: `array`):

For the "Account profile" and "Account's articles" operations. Enter an Official Account's original id (e.g. gh\_363b924965e9) or its WeChat id / alias (e.g. huanqiu-com) - one per line.

## `maxItems` (type: `integer`):

Upper bound on results per keyword / account / article (for the paginated operations: search, account's articles, comments). Cost scales linearly. Set 0 to fetch all available.

## `searchSort` (type: `string`):

For "Search articles" only. How WeChat orders results.

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

For "Search articles" only. Limit results to articles published within this period.

## Actor input object example

```json
{
  "operation": "search_articles",
  "keywords": [
    "人工智能"
  ],
  "maxItems": 100,
  "searchSort": "default",
  "publishTime": "all"
}
```

# Actor output Schema

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

All scraped WeChat Official Account results in the default dataset.

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

Overview table of the scraped results.

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

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

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

```

## MCP server setup

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