# China Brand Report - Weibo & Bilibili listening in English (`datagleaner/china-brand-report`) Actor

Enter a brand and get a finished English report on what Weibo and Bilibili say about it: volume, sentiment, top posts translated, themes, accounts. $4.99 per report.

- **URL**: https://apify.com/datagleaner/china-brand-report.md
- **Developed by:** [Data Gleaner](https://apify.com/datagleaner) (community)
- **Categories:** Social media, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$4,990.00 / 1,000 reports

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 Brand Report: Weibo & Bilibili social listening and sentiment in English

**China social listening in English:** enter a brand and get a finished report on what Weibo and Bilibili say about it, with volume, sentiment, translated top posts and videos, recurring hashtags and the accounts driving the conversation. One run gives one self-contained HTML report plus a CSV of every relevant post, for $4.99. There is no dashboard to learn and no subscription.

Run it once, or put it on an Apify schedule to get the same Chinese social media monitoring report every week.

### Who it is for

Teams outside China who need to know how a brand is discussed on Chinese social media and cannot read Chinese:

- **Brand and marketing teams** checking a launch, a campaign or a competitor in the Chinese market.
- **Investors and analysts** with exposure to a Chinese consumer, auto or tech name who want a read on public sentiment before earnings or a product event.
- **PR and communications teams** who need to spot a brewing complaint or a viral post early.
- **Consultants and agencies** who need a forwardable report for a client without a dashboard subscription.

### What is in the report

`report.html` is one self-contained page (it works offline and can be forwarded as a file). From top to bottom:

1. **Summary** - a short paragraph filled in from the numbers: how many Weibo posts and Bilibili videos, how fast they arrive, the sentiment lean, and the biggest post and video.
2. **Headline numbers** - Weibo posts collected, Bilibili videos, total video views, Weibo engagement, and how many duplicate posts were counted once.
3. **Volume over time** - a bar chart of posts and videos per hour (or per day when the posts span more than two days), in Beijing time.
4. **Top Weibo posts and Bilibili videos** - five of each, ranked by engagement or views, each with an English translation, the original Chinese, the numbers, a sentiment tag and a link to the original.
5. **Sentiment split** - positive, neutral and negative shares for each platform.
6. **Recurring themes** - the most used Weibo hashtags and Bilibili tags, translated.
7. **Notable accounts** - the Weibo accounts and Bilibili channels with the most engagement.
8. **Raw data** - a button to download every relevant post as CSV.

**See a real one:** [Tesla on Chinese social media, sample report](https://api.apify.com/v2/key-value-stores/AGrmB9iDi7xNiEga1/records/tesla.html), produced by this Actor on 2026-10-09.

You also get `posts.csv` (all relevant posts) and a dataset: one summary item with the counts, sentiment, top items and the links to the report and CSV, plus one item per post for API users.

### Input

| Field | What it does |
|---|---|
| `brand` | Name shown in the report. Prefilled with Tesla. If `brand` and `keywords` are both empty, the run is a small free example: Tesla, 1 day, 50 Weibo posts, 10 Bilibili videos, never charged. |
| `keywords` | Chinese and English search terms. Chinese names find far more (特斯拉 for Tesla). If empty, the brand name is used. For about 90 well-known global brands the Chinese name is added automatically when no keyword is in Chinese. |
| `competitorBrands` | Optional. Up to 4 rival brands, English or Chinese. Each gets an equal, smaller sample (300 Weibo posts, 30 Bilibili videos) and the report dataset item gains a `shareOfVoice` table (posting rate, engagement, Bilibili views and sentiment per brand) plus a share line in the summary. No extra charge. Not used in the free example. |
| `aliases` | Optional. Extra names that count as a mention when filtering, for example 拉布布 for Labubu. Not searched. |
| `excludeTerms` | Optional. Bilibili videos containing any of these are dropped (same-named games or shows). |
| `contextTerms` | Optional. If set, a Bilibili video must contain at least one (use when the brand name is also a common word). |
| `days` | Days to cover, default 3, maximum 30. Bilibili returns the most-viewed videos published in this period, not the newest. |
| `maxWeiboPosts` | Default 1000, maximum 2,000. Shared across keywords. |
| `maxBilibiliVideos` | Default 50, maximum 500. The most-viewed videos from the period. |
| `includeCsv` | Save `posts.csv`, default on. |
| `proxyConfiguration` | Optional. Not needed from Apify's servers. |

```json
{
  "brand": "Starbucks",
  "keywords": ["星巴克", "Starbucks"],
  "days": 3,
  "maxWeiboPosts": 500
}
```

### Output

The report and the CSV are saved to the run's key-value store as `report.html` and `posts.csv`. The first dataset item points to both:

```json
{
  "type": "report",
  "brand": "Starbucks",
  "counts": {"weiboPosts": 271, "bilibiliVideos": 27, "bilibiliViews": 186300},
  "sentiment": {"weibo": {"positive": 29, "neutral": 207, "negative": 6}},
  "topWeiboPosts": [{"text": "...", "textEn": "...", "engagement": 115, "url": "https://weibo.com/..."}],
  "reportUrl": "https://api.apify.com/v2/key-value-stores/<id>/records/report.html",
  "csvUrl": "https://api.apify.com/v2/key-value-stores/<id>/records/posts.csv"
}
```

The items that follow have `"type": "post"`, one per Weibo post or Bilibili video, with `platform`, `id`, `url`, `publishedAt`, `author`, `text`, `likes`, `comments`, `reposts`, `views`, `favorites`, `tags`, `engagement`, `sentiment`, `promotional`, `isDuplicate` and `duplicateOf` (the id of the post it copies). Weibo does not expose views, favorites or tags, so those are always empty on Weibo items.

In the report item, `notableAccounts` lists Weibo accounts with `name`, `posts`, `engagement` and `verified`, and Bilibili channels with `name`, `videos` and `views`. `shareOfVoice` is an empty list unless `competitorBrands` is set.

### Pricing

**$4.99 per report**, charged once when the report is saved. Nothing else is charged: the per-post dataset items, the CSV and the translations are included. A run that finds no discussion of the brand still produces a report that says so, and is not charged.

For scale: about 940 mentions at $0.06 each on zhorex/chinese-brand-monitor cost about $56, against one $4.99 report here.

Example: monitoring one brand every week is 4 to 5 reports, about **$20 a month**.

To get the report weekly, open the Actor, choose **Schedule**, and set it to run every week with your input.

### Use with Python

```python
## pip install apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("datagleaner/china-brand-report").call(
    run_input={"brand": "Starbucks", "keywords": ["星巴克"], "days": 1,
               "maxWeiboPosts": 50, "maxBilibiliVideos": 10}
)
report = next(client.dataset(run.default_dataset_id).iterate_items())
print(report["counts"], report["sentiment"]["weibo"])
print(report["reportUrl"])
```

The first dataset item is the report summary; the items after it are the individual posts. One report costs $4.99 whatever the limits.

### Use with JavaScript / Node.js

```js
// npm install apify-client
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('datagleaner/china-brand-report').call({
    brand: 'Starbucks',
    keywords: ['星巴克'],
    days: 1,
    maxWeiboPosts: 50,
    maxBilibiliVideos: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const report = items[0];
console.log(report.counts, report.sentiment.weibo, report.reportUrl);
```

### Use it from n8n, Make, Zapier or an AI agent

Actor ID: `datagleaner/china-brand-report`

Minimal input:

```
{"brand": "Starbucks", "keywords": ["星巴克"], "days": 1}
```

Each tool below runs this Actor with your own Apify API token.

- **n8n:** add the **Apify** node (`@apify/n8n-nodes-apify`). On n8n Cloud you install it from the community node registry. Choose **Run an Actor and get dataset**, set Actor to `datagleaner/china-brand-report` and paste the input above.
- **Make:** use the Apify app's **Run an Actor** module, then **Get Dataset Items** to read the results. **Watch Actor Runs** can trigger a scenario when a run finishes.
- **Zapier:** use the Apify action **Run Actor**, then the search **Fetch dataset items**. The trigger **Finished Actor run** starts a Zap when a run ends.
- **AI agents (MCP):** connect to `https://mcp.apify.com?tools=datagleaner/china-brand-report`. In Claude Code:

  ```
    claude mcp add --transport http apify "https://mcp.apify.com?tools=datagleaner/china-brand-report"
  ```

  Then run `/mcp` to sign in to Apify in your browser. Without a token, an agent can still find the Actor with the `search-actors` tool, but running it needs your Apify account. Clients that use an `mcpServers` config can also run the server locally with `npx -y @apify/actors-mcp-server` and `APIFY_TOKEN` in `env`. Then ask in plain language, for example: "Run the China Brand Report for Luckin Coffee (瑞幸) over the last 3 days and tell me in English whether Weibo sentiment leans negative, what the top complaints are, and give me the report link."
- **LangChain (Python):**

```python
## pip install langchain-apify, then set APIFY_TOKEN in your environment
import json
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("datagleaner/china-brand-report")
result = tool.invoke({"run_input": json.loads('{"brand": "Starbucks", "keywords": ["星巴克"], "days": 1}')})
```

### Limits

- **Sentiment is keyword-based.** It counts positive and negative Chinese words, so sarcasm, mixed posts and anything without those words land in neutral. Read it as direction, not a measurement.
- **Translation is machine translation** (Google Translate's free endpoint) of only what the report shows: the top posts and videos, hashtags and tags. It is not verbatim and brand names can come out odd. If the service is unavailable, the report shows the Chinese with "\[translation unavailable]".
- **Weibo search depth is limited.** Weibo returns the newest posts first and stops near 1,000 per keyword, so a very busy brand may be covered for only a few hours even with `days` set higher. The report states the exact window it covers. Counts are posts collected, not every post on the platform.
- **Relevance is by keyword.** Off-topic results are dropped, and top lists prefer posts that are actually about the brand, but a passing mention can still appear. Use `aliases`, `excludeTerms` and `contextTerms` to tighten it.
- **Public posts only.** No login, no private accounts, no WeChat or Xiaohongshu.

### FAQ

**What is China social listening, and what does this report cover?** It is tracking what Chinese users say about a brand on Chinese platforms. This report covers public Weibo posts and Bilibili videos: volume over time, sentiment, top posts translated into English, hashtags and the most engaged accounts. It does not cover WeChat, Xiaohongshu or Douyin.

**How is Weibo sentiment measured?** By a Chinese keyword lexicon: each post is tagged positive, neutral or negative from the words it contains. It shows direction, not a precise score; see Limits.

**Can I monitor a brand with a Chinese name?** Yes. Put the Chinese name in `keywords`; it finds far more than the English one. Use `aliases`, `excludeTerms` and `contextTerms` to filter out same-named games, shows or common words.

**How do I get it every week?** Open the Actor, choose **Schedule**, and run it weekly with your input. Each report costs $4.99, and a run that finds no discussion is not charged.

**Does it call other Actors?** No. It collects the data itself, so the report price is the only charge.

### Responsible use

The Actor reads public Weibo and Bilibili pages only. Posts can contain personal data such as usernames; if you store or reuse them, compliance with the privacy rules that apply to you is your responsibility.

# Actor input Schema

## `brand` (type: `string`):

Display name shown in the report, for example Tesla, Starbucks or Pop Mart. If both this and Search keywords are empty, the run is a small free Tesla example.

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

Chinese and English terms people use for the brand. Chinese names find far more: 特斯拉 for Tesla, 星巴克 for Starbucks. If empty, the brand name is used, and for about 100 well-known global brands the Chinese name is added automatically when no keyword is in Chinese.

## `competitorBrands` (type: `array`):

Up to 4 rival brands, English or Chinese. Each gets a smaller equal-size sample (300 Weibo posts, 30 Bilibili videos) and the summary and report data gain a share-of-voice table. No extra charge.

## `aliases` (type: `array`):

Extra names that count as a mention of the brand when filtering results, for example 拉布布 or 泡泡玛特 for Labubu. They are not searched.

## `excludeTerms` (type: `array`):

Bilibili videos whose title, description or tags contain any of these are dropped. Use it for same-named games or shows, for example 原神 or 游戏.

## `contextTerms` (type: `array`):

If set, a Bilibili video must contain at least one of these in its title, description or tags. Use it when the brand name is also a common word, for example 盲盒 or 潮玩 for a toy brand.

## `days` (type: `integer`):

Only posts from the last N days are used. Bilibili returns the most-viewed videos published in this period. Weibo search returns the newest posts first and is capped, so a busy brand may be covered for a shorter window; the report and the status message state the window actually covered.

## `maxWeiboPosts` (type: `integer`):

Upper bound on Weibo posts collected, shared across keywords. Weibo ends a search near 1,000 posts per keyword, so add keywords to go further back for a busy brand.

## `maxBilibiliVideos` (type: `integer`):

How many of the most-viewed Bilibili videos from the period to collect, shared across keywords.

## `includeCsv` (type: `boolean`):

Saves posts.csv next to the report and adds a download button to it.

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

Optional. Works without a proxy from Apify datacenter IPs; enable if Weibo or Bilibili start blocking your runs.

## Actor input object example

```json
{
  "brand": "Tesla",
  "keywords": [
    "特斯拉"
  ],
  "days": 3,
  "maxWeiboPosts": 1000,
  "maxBilibiliVideos": 50,
  "includeCsv": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `report` (type: `string`):

No description

## `csv` (type: `string`):

No description

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

No description

# 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 = {
    "brand": "Tesla",
    "keywords": [
        "特斯拉"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("datagleaner/china-brand-report").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 = {
    "brand": "Tesla",
    "keywords": ["特斯拉"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("datagleaner/china-brand-report").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 '{
  "brand": "Tesla",
  "keywords": [
    "特斯拉"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call datagleaner/china-brand-report --silent --output-dataset

```

## MCP server setup

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

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/8b7CPa9mLgCqIZtOw/builds/E3bKWDGHDfjB26e5g/openapi.json
