# WeChat Article Search: Official Account Articles by Keyword (`sauliusautomatesit/wechat-article-search`) Actor

Search WeChat (Weixin) official account (公众号) articles by keyword through Sogou WeChat search: title, summary, account, date, link, author and full text. Newest first, up to 100 per keyword. No login. $4 per 1,000 articles.

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

## Pricing

from $3.40 / 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 Search: WeChat official account articles by keyword

Search WeChat (微信) official account articles (公众号文章) by keyword and get the title, summary, account name, publish time, cover image and article link, newest first. Turn on **Include full text** to also get the whole article, its author and the account's WeChat id.

No WeChat account, no login, no browser. **$4 per 1,000 articles**, full text $2 per 1,000 more.

### What you can use it for

- **China market and brand monitoring**: schedule a daily run for your brand, product or competitors and see every new WeChat article about them.
- **Media and PR tracking**: which official accounts write about a topic, and when.
- **Research and AI pipelines**: full article text, ready for translation, summarising or sentiment analysis with an LLM.
- **KOL discovery**: find the official accounts that publish most on your topic, with their WeChat ids.

### Is there an API to search WeChat articles?

Not an official one. The WeChat Official Account platform API (公众号 API) gives an account access to **its own** articles only, after you log in as that account's admin. There is no official API to search articles across accounts. The public way to search them is Sogou's WeChat search (搜狗微信搜索, weixin.sogou.com), which WeChat feeds; it shows captchas to busy visitors and hands out temporary links.

This Actor reads that search, gets past the captchas by switching to a fresh IP and asking again, follows each link to the real `mp.weixin.qq.com` article, and can fetch the full text before the link expires. You get JSON from Python, JavaScript, cURL or an AI agent.

### How to use it

1. Put one keyword per line in **Search keywords** (Chinese or any language).
2. Optional: **Articles per keyword** (up to 100) and **Include full text**.
3. Run it and download the results as JSON, CSV or Excel, or read them through the API.

#### Input example

```json
{
  "searchQueries": ["新能源汽车", "人工智能", "apple"],
  "maxArticlesPerQuery": 50,
  "includeContent": true
}
```

### Output

One item per article:

```json
{
  "title": "国庆高速新能源车排队充电挤爆服务区,充至80%强制离场,增程车排队充电引争议...",
  "url": "https://mp.weixin.qq.com/s?src=11&timestamp=1791049099&ver=7004&signature=...",
  "summary": "国庆出行高峰时段,多条高速服务区出现新能源汽车充电排长队的现象...",
  "accountName": "大河报",
  "accountId": "gh_6a3942162fdd",
  "accountAvatarUrl": "https://wx.qlogo.cn/mmhead/.../0",
  "author": "祁驿",
  "isOriginal": true,
  "publishedAt": "2026-10-03T01:40:07.000Z",
  "thumbnailUrl": "https://mmbiz.qpic.cn/sz_mmbiz_jpg/.../0?wx_fmt=jpeg",
  "text": "国庆出行高峰时段，多条高速服务区出现新能源汽车充电排长队的现象，湖北枣阳北服务区率先实行充电至80%强制离场的新规...",
  "searchQuery": "新能源汽车",
  "position": 1,
  "scrapedAt": "2026-10-03T17:38:23.403Z"
}
```

- `accountId`, `accountAvatarUrl`, `author`, `isOriginal` (原创) and `text` are filled with **Include full text**.
- `url` is the link WeChat search hands out. It is a temporary link: it opens the article for a while, then stops working. Turn on **Include full text** if you need to keep the article.
- Image posts (图片消息) return their caption as `text`.

The run summary (articles and texts delivered, links not resolved, keywords without articles, failures) is saved as `OUTPUT` in the run's key-value store.

### Pricing

Pay per result, no subscription:

| Event | Price |
|---|---|
| Article | $0.004 ($4 per 1,000 articles) |
| Article full text | $0.002 per article, only with **Include full text** |
| Actor start | $0.00005 |

50 articles cost $0.20, or $0.30 with full text. Keywords that find nothing cost nothing. Bronze, Silver and Gold Apify plans get 5%, 10% and 15% off. Proxy and compute are included.

### Use it from code

#### API (cURL)

```bash
curl -X POST "https://api.apify.com/v2/acts/sauliusautomatesit~wechat-article-search/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries": ["人工智能"], "maxArticlesPerQuery": 20}'
```

#### Python

```bash
pip install apify-client
```

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")
run = client.actor("sauliusautomatesit/wechat-article-search").call(run_input={
    "searchQueries": ["新能源汽车"],
    "maxArticlesPerQuery": 20,
    "includeContent": True,
})
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item["publishedAt"], item["accountName"], item["title"], len(item.get("text") or ""), "chars")
```

`run.default_dataset_id` is for `apify-client` 3.x (the current release); on 2.x write `run["defaultDatasetId"]`. Pass `max_total_charge_usd=1` to `.call()` to cap a run at $1.

#### JavaScript

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sauliusautomatesit/wechat-article-search').call({ searchQueries: ['人工智能'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((a) => `${a.accountName}: ${a.title}`));
```

#### MCP (Claude, Cursor, any MCP client)

Add `https://mcp.apify.com/?tools=sauliusautomatesit/wechat-article-search` as a remote MCP server and your agent can search WeChat articles as a tool.

### Limits, honestly

- **Up to 100 articles per keyword** (10 pages of 10), which is as deep as WeChat search goes for visitors. Use narrower keywords for more coverage; schedule daily runs to collect new articles as they appear.
- Article links are temporary (see above). There is no permanent link without logging in to WeChat.
- No read or like counts: WeChat shows those only inside the WeChat app.
- The search service sometimes asks visitors to solve a captcha. The Actor switches to a fresh IP and asks again, so runs stay reliable but can take a little longer.

### Related Actors

- [Bilibili API](https://apify.com/sauliusautomatesit/bilibili-api): Bilibili videos, stats, tags and danmaku.
- [Telegram Channel Scraper](https://apify.com/sauliusautomatesit/telegram-channel-scraper): messages, views and reactions from public Telegram channels.
- [Google Trends API](https://apify.com/sauliusautomatesit/google-trends-api): search interest over time, by region, related and rising queries.

### FAQ

**Do I need a WeChat account?** No.

**Is this the WeChat Official Account API?** No. That API only works for your own account. This Actor searches articles from every public official account by keyword, the way Sogou WeChat search does, and needs no WeChat login.

**Can I translate or summarise the articles?** Yes. Turn on **Include full text** and pass `text` to an LLM or translation API; the Python sample above prints the length of each article's text.

**Can I get all articles of one official account?** Search by the account's name: WeChat search returns its recent articles among the results. A full back catalogue needs a logged-in WeChat account, which this Actor does not use.

**How fast is it?** About 10 to 20 articles a second per keyword without full text; with full text about 2 a second per keyword, 3 keywords in parallel by default (up to 10).

**Is it legal?** It collects publicly visible articles. You are responsible for how you use the data and for complying with the laws that apply to you.

# Actor input Schema

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

One keyword per line, in Chinese or any language: `人工智能`, `新能源汽车`, `apple`. Each keyword returns up to 100 articles, newest first.

## `maxArticlesPerQuery` (type: `integer`):

Most articles to keep for each keyword. WeChat search shows 100 at most.

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

Open every article and add its full text, author, the account's WeChat id (gh\_...) and avatar. Charged as an extra event per article with text.

## `resolveUrls` (type: `boolean`):

Add each article's mp.weixin.qq.com link. Turn off for the fastest run when titles and summaries are enough.

## `concurrency` (type: `integer`):

How many keywords run at the same time.

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

Apify Proxy is used by default and is included in the price. Change only if you know you need to.

## Actor input object example

```json
{
  "searchQueries": [
    "人工智能"
  ],
  "maxArticlesPerQuery": 20,
  "includeContent": false,
  "resolveUrls": true,
  "concurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

One item per article, newest first for each keyword. Download as JSON, CSV or Excel, or read it from this API endpoint.

## `summary` (type: `string`):

Articles and texts delivered, keywords without articles and failures.

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

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

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sauliusautomatesit/wechat-article-search"
        }
    }
}
```

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/5YeUg6bHQ1dbiW4Em/builds/hNLlOmIZfbcgfR2aJ/openapi.json
