# China Social Listening: Weibo, Douyin, RedNote, WeChat, News (`qovia/china-social-listening`) Actor

Search Chinese social media and news for any keyword in one run: Weibo, Douyin, RedNote (Xiaohongshu), Toutiao, WeChat official accounts, news, forums and video sites. Filter by date (up to 90 days), platform, sentiment and content type. Pay per result.

- **URL**: https://apify.com/qovia/china-social-listening.md
- **Developed by:** [Qovia Data](https://apify.com/qovia) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.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.

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

## China Social Listening: Weibo, Douyin, RedNote, WeChat, News

Search Chinese social media and news for any keyword in one run: Weibo, Douyin, RedNote (Xiaohongshu), Toutiao,
WeChat official accounts, news sites, forums, video sites and news apps. Filter by date, platform, sentiment and
content type, and get clean JSON. No accounts, cookies or proxies needed, and you only pay for results you get.

### What you can get

One result is a post, article, video or comment that mentions your keyword:

| Field | What it is |
|---|---|
| `platform`, `site` | where it was published (weibo, douyin, wechat, news, ...) and the site or account name |
| `title`, `text`, `summary` | the headline and the text |
| `url` | link to the original |
| `published_at` | publication time (ISO 8601, Beijing time) |
| `type` | original, repost or comment |
| `sentiment` | negative, neutral or positive |
| `author` | the publishing account |
| `metrics` | likes, comments, shares, views and saves where the platform shows them |
| `media`, `repost_of` | images and videos, and the original post for reposts |
| `input` | the keyword this result was found for |

Each keyword's total number of hits and the count per platform go to the run's key-value store as record `SUMMARY`,
free of charge: a quick way to measure how much a topic is discussed, and where, without paying for every result.

### Use cases

- Brand and crisis monitoring in China: who is talking about you, where, and how negatively.
- Competitor and product research across platforms in one run.
- Market and trend research: compare topics by volume and by platform over the last 90 days.
- Feeding sentiment dashboards or AI agents (call this Actor as a tool through Apify's MCP server).

### Input example

```json
{
  "keywords": ["新能源 汽车", "电池 自燃"],
  "platforms": ["weibo", "douyin", "xiaohongshu", "news"],
  "lastDays": 7,
  "sentiment": ["negative"],
  "maxItems": 200
}
```

Separate words with spaces to require all of them. Chinese keywords match far more content than English ones.
The window is the last N days, or a From/To date range of up to 90 days (Beijing time).

### Output example

```json
{
  "platform": "weibo",
  "site": "新浪微博",
  "title": "...",
  "text": "...",
  "url": "https://weibo.com/...",
  "published_at": "2026-10-23T18:42:10+08:00",
  "type": "original",
  "sentiment": "negative",
  "author": { "name": "..." },
  "metrics": { "likes": 312, "comments": 48, "shares": 17 },
  "input": { "keyword": "新能源 汽车" }
}
```

### Pricing

Pay per result, nothing per run: **$6.00 per 1,000 results**. The `SUMMARY` totals are free.

Set a maximum cost for a run and the Actor stops there. Searches that find nothing are not charged.
On Apify's free plan a run returns up to 10 results, enough to try the Actor; any paid Apify plan removes the limit.

### Support

Something not working, or missing a source you need? Open an issue on this Actor's **Issues** tab and we'll look
into it. When the data service is temporarily unavailable, the run says so in its status message, and failed
searches are never charged.

### FAQ

**How many results per keyword?** Up to 1,000 (the source's limit). Use date ranges and filters to split bigger
topics.

**Is this official?** No. This Actor is not affiliated with any of the platforms. It returns publicly visible
content; use it in line with the laws and rules that apply to you, especially for personal data.

# Actor input Schema

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

One search per keyword. Separate words with spaces to require all of them (人工智能 教育). Chinese keywords match far more content than English ones.

## `platforms` (type: `array`):

Only these sources; all by default.

## `lastDays` (type: `integer`):

Content published in the last N days (Beijing time), up to 90. Ignored when 'From date' is set.

## `dateFrom` (type: `string`):

Optional first day (YYYY-MM-DD, Beijing time). The window can be at most 90 days.

## `dateTo` (type: `string`):

Optional last day (YYYY-MM-DD, Beijing time); today by default.

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

The source returns up to 1,000 results per keyword (50 pages of 20).

## `sentiment` (type: `array`):

Only content with this sentiment; all by default.

## `contentTypes` (type: `array`):

Original posts, reposts and comments; all by default.

## `matchIn` (type: `array`):

Where the keywords must appear.

## `excludeWords` (type: `string`):

Leave out results that contain these words (separate with spaces).

## `author` (type: `string`):

Only content published by this account name.

## Actor input object example

```json
{
  "keywords": [
    "咖啡"
  ],
  "platforms": [
    "weibo",
    "douyin",
    "toutiao",
    "xiaohongshu",
    "short_video",
    "wechat",
    "news",
    "forum",
    "long_video",
    "app"
  ],
  "lastDays": 7,
  "maxItems": 20,
  "sentiment": [
    "negative",
    "neutral",
    "positive"
  ],
  "contentTypes": [
    "original",
    "repost",
    "comment"
  ],
  "matchIn": [
    "title",
    "content",
    "author"
  ]
}
```

# Actor output Schema

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

Posts, articles, videos and comments found for each keyword, one per row

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

Each keyword's total hits and count per platform (free)

# 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": [
        "咖啡"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("qovia/china-social-listening").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": ["咖啡"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("qovia/china-social-listening").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": [
    "咖啡"
  ],
  "maxItems": 20
}' |
apify call qovia/china-social-listening --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,qovia/china-social-listening"
        }
    }
}
```

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/2Gktz1nKS9kiU4MHU/builds/iauWo5j7ggOmVzg4w/openapi.json
