# Weibo Scraper - Hot Search, Search Posts, Comments (微博) (`improved_knot_vyk/weibo-scraper`) Actor

Returns Weibo posts with full text, likes, comments, reposts, location and author followers in every row. Keyword search with date range, newest first; hot search (微博热搜) with change tracking; trending posts, comments, user profiles and posts, Black Cat complaints. $2 per 1,000 results. No login.

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

## Pricing

Pay per event

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

## Weibo Scraper

Scrape **Weibo** (微博), China's biggest microblog: search posts by keyword with a date range, the **hot search board**
(微博热搜) and how it changes, trending posts, **comments and replies**, post details, user profiles and posts, and
**Black Cat (黑猫投诉)** consumer complaints. **$2 per 1,000 results.** No login, no browser, no API key.
Also known as 微博, Sina Weibo, Weibo crawler, Weibo API, Weibo hot search scraper.

### Why this Actor

- **Author follower counts in search rows**, at no extra charge, so a brand search shows who has reach.
- **Newest-first search that goes deep**: up to 5,000 posts per query, with a date range in Beijing time.
- **A user's latest ~10 posts without any cookie**; more with your own cookie.
- **Scheduled monitoring built in**: delta mode returns only new posts and comments, follow-up comments re-read
  threads a day later, and hot search delta reports what rose or fell on the board.
- **Free province rollup** of where the posts came from.
- **$2 per 1,000 results**, light runs (256 MB), failed and filtered rows free. 10,000 posts cost $20.

### What you get

- **Posts**: full text (long posts expanded at no extra charge), reposts, comments and likes counts, author (id, name,
  followers, verification, bio), images, video link, `#topics#`, the place it was posted from (`发布于 广东`),
  promoted-post flag, and the quoted original for reposts (`repostOf`).
- **Hot search**: rank, topic, hot value, label (热, 新, 沸), paid and pinned slots flagged. With
  `hot_search_delta`, each run reports `new`, `rising`, `falling`, `steady` or `dropped`, rank and hot-value change,
  minutes on the board and the running peak.
- **Comments and replies**: text, likes, replies, commenter id, name, followers and region.
- **Profiles**: followers, following, posts, verification, bio, location, sex, birthday (as shown), account age,
  company, sunshine credit, lifetime likes, comments and reposts.
- **Black Cat complaints**: company, title, text, what the consumer asks for, the problem, amount in dispute,
  progress (processing, replied, completed), date and link. The complainant is never included.
- **Province rollup** (free): share of posts per Chinese province or country, promoted posts and average sentiment.
- **Sentiment** (optional): lexicon-based polarity and score for Chinese and English.

### Use cases

- **Brand and campaign monitoring in China**: search your brand (Nike also searches 耐克), schedule it with Delta mode
  and get only new posts and comments each day.
- **Trend tracking**: snapshot the hot search board every hour and see what is rising.
- **Consumer research**: comments under viral posts, complaints about a company on Black Cat.
- **KOL tracking**: profiles and current engagement of the posts you follow.
- **Data for AI and analytics**: stable JSON fields from the API, Make, Zapier or n8n.

### Modes

| Mode | Input | What you get |
|---|---|---|
| `search` | `searchQuery`, `searchDateFrom`, `searchDateTo` | Posts, newest first, up to 5,000 per query |
| `hot_search` | - | The hot search board (about 50 topics) |
| `hot_search_delta` | `deltaStateKey` | The board with changes since the previous run |
| `hot_timeline` | `maxResults` | Weibo's trending posts |
| `post_comments` | `postIds` | Each post and its comments (and replies) |
| `post_details` | `postIds` | Current text and engagement of each post |
| `user_profile` | `userIds` | One profile per account |
| `user_posts` | `userIds` (+ `cookieString` for more than ~10) | Posts of each account |
| `complaints` | `complaintCompanyIds` (empty = public feed) | Black Cat complaints |

Add `includeComments`, `includeAuthorProfiles`, `geoRollup`, `sentimentAnalysis`, `adFilter` or `deltaMode` to the
post modes.

#### Scheduled monitoring

With `deltaMode` on, each run returns only posts, comments and complaints that no earlier run with the same
`deltaStateKey` delivered (already-seen rows are free). A delta search reads posts minutes after they appear, before
anyone replies, so add `followUpComments`: each post is remembered and a later run re-reads its comments once, 24
hours to 7 days after posting, and returns only the new ones (marked `isFollowUp`). For the hot search board, use the
`hot_search_delta` mode on an hourly or daily schedule.

#### Search a period

`searchDateFrom` and `searchDateTo` take `2026-09-01` or `2026-09-01T08:00:00`, in **Beijing time (+08:00)** unless
you write an offset or `Z`: the same zone as every row's `createdAtIso`. The search starts at `searchDateTo` and walks
back until it passes `searchDateFrom` or reaches `maxResults`; posts outside the window are dropped and not charged.
The log says which posts the run reached.

#### Example input

```json
{
    "mode": "search",
    "searchQuery": "Nike",
    "maxResults": 500,
    "includeComments": true,
    "maxComments": 20,
    "geoRollup": true
}
```

### Output examples

#### Post

```json
{
    "type": "post",
    "mode": "search",
    "postId": "5353685413529611",
    "bid": "RmwBneOdd",
    "postUrl": "https://weibo.com/6535035906/RmwBneOdd",
    "text": "nike还是会做鞋子的，这次鞋盒也是真的用心了#nike[超话]#",
    "isTruncated": false,
    "createdAt": "Tue Oct 13 22:25:31 +0800 2026",
    "createdAtIso": "2026-10-13T22:25:31+08:00",
    "createdAtTimestamp": 1791901531,
    "location": "江苏",
    "repostsCount": 0,
    "commentsCount": 0,
    "attitudesCount": 0,
    "authorId": "6535035906",
    "authorName": "南京小韭",
    "authorFollowers": 5,
    "authorVerified": false,
    "images": ["https://wx3.sinaimg.cn/mw2000/0078glmWgy1ii13db62izj34eo3b0e84.jpg"],
    "videoUrl": null,
    "topics": ["nike[超话]"],
    "isPromoted": false,
    "isRepost": false,
    "repostOf": null,
    "searchQuery": "Nike",
    "query": "nike",
    "position": 1
}
```

#### Comment

```json
{
    "type": "comment",
    "mode": "post_comment",
    "commentId": "5346712468327378",
    "postId": "5346708137705813",
    "parentCommentId": null,
    "text": "高反不是闹着玩，血氧37太吓人了",
    "createdAtIso": "2026-09-24T16:37:32+08:00",
    "likeCount": 59,
    "replyCount": 5,
    "authorName": "他们叫我土先生",
    "authorFollowers": 389,
    "authorRegion": "湖南",
    "authorRegionEn": "Hunan"
}
```

#### Hot search topic

```json
{
    "type": "trend",
    "mode": "hot_search",
    "rank": 1,
    "title": "79岁老干妈陶华碧用AI一年赚54亿",
    "hotValue": 1567321,
    "labelName": "热",
    "isHot": true,
    "isPromoted": false,
    "url": "https://s.weibo.com/weibo?q=%2379%E5%B2%81..."
}
```

`videoUrl` is a signed link that expires about an hour after the scrape. Values Weibo does not send are `null`.

### Pricing

| Event | Price |
|---|---|
| `post` | $2 per 1,000 posts |
| `comment` | $2 per 1,000 comments or replies |
| `trend` | $2 per 1,000 hot search topics |
| `profile` | $2 per 1,000 profiles |
| `complaint` | $2 per 1,000 complaints |
| Province rollup rows | Free |

Proxy and compute are included. You pay only for rows delivered: failed, filtered and already-seen rows are free.
Set a maximum total charge on the run to cap your spend; the Actor stops cleanly when it is reached.

### FAQ

**Do I need a Weibo account?** No, except to read more than an account's latest ~10 posts (`user_posts`): Weibo
shows deeper timelines only to signed-in sessions. For that, paste your `Cookie` request header from weibo.com into
`cookieString` (F12 → Network → any weibo.com request → Request Headers). It is used only for those requests.

**I already use another Weibo Actor. Do I need to change my input?** Usually not: the input fields use the common
names (`mode`, `searchQuery`, `maxResults`, `postIds`, `userIds`, `includeComments`, `deltaMode`...), so a saved
input or an API call often works as it is.

**Is there an official Weibo API?** Weibo's developer API needs a Chinese business license and is heavily limited.
This Actor reads the same public pages the Weibo website and app show to visitors.

**How far back can a search go?** Use `searchDateFrom`/`searchDateTo`. Weibo returns a sample of each period, not a
complete archive, and the run stops at `maxResults`, your charge limit or the run timeout, whichever comes first.

**How many comments per post?** Up to 1,000 (`maxComments`), with replies when `includeReplies` is on.

**How many Black Cat complaints?** Black Cat shows visitors the 500 most recently active complaints per company and
of the public feed.

**What personal data is included?** Only what Weibo shows publicly next to content: author and commenter public
name, id, follower count and the region Weibo displays; profiles carry what the profile page shows publicly, sex
and birthday included when the account shows them. Black Cat complainants are never included.

**Is it legal?** The Actor reads publicly available data without logging in (except `user_posts` with your own
cookie). Check your local laws and Weibo's terms before using the data.

# Actor input Schema

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

One mode per run. Only user_posts beyond each account's latest ~10 posts needs your cookie; everything else works without login.

## `searchQuery` (type: `string`):

Keyword in Chinese or English, e.g. 人工智能, 新能源汽车, iPhone. Chinese keywords give more results. Search mode.

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

Extra keywords searched in the same run, each up to Max results.

## `autoLocalize` (type: `boolean`):

A Latin brand name (Nike, Apple, Tesla...) also searches its Chinese name (耐克, 苹果, 特斯拉). Results are merged and deduplicated and share Max results.

## `searchAliases` (type: `array`):

Other spellings searched together with the query (merged, deduplicated, sharing Max results).

## `searchDateFrom` (type: `string`):

Search mode: earliest post date, YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS. Beijing time (+08:00) unless you write an offset or Z.

## `searchDateTo` (type: `string`):

Search mode: latest post date (a plain date covers the whole day). The search starts here and walks back.

## `postIds` (type: `array`):

For Post details and Comments: links like https://weibo.com/7087906569/RjB5HwkDj or https://m.weibo.cn/detail/5346708137705813, numeric ids or short codes.

## `userIds` (type: `array`):

For User profiles and Posts of users: numeric ids or links like https://weibo.com/u/2803301701.

## `complaintCompanyIds` (type: `array`):

Companies on tousu.sina.com.cn: the number after couid= in the company link, or the link itself. Empty = Black Cat's public feed of new complaints.

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

Posts per search query, posts per user, posts in the hot timeline, topics, post links or complaints per run. Up to 5,000.

## `includeComments` (type: `boolean`):

Search, hot timeline and user posts: also return the comments of each post, one row each (linked by postId).

## `maxComments` (type: `integer`):

Comments (and replies, when included) per post.

## `commentSort` (type: `string`):

Order of the comments read.

## `includeReplies` (type: `boolean`):

Also read the replies under each comment (they count toward Max comments).

## `fetchFullText` (type: `boolean`):

Weibo lists send only the first ~150 characters of long posts. This fetches the full text at no extra charge.

## `includeAuthorProfiles` (type: `boolean`):

Search, hot timeline and user posts: add one profile row per distinct post author (up to 100 per run), charged as a profile.

## `geoRollup` (type: `boolean`):

Add one row per province or country the posts were sent from (share of posts, promoted posts, average sentiment). Free. Needs at least 50 located posts.

## `adFilter` (type: `string`):

Weibo mixes paid promotion into results. Rows left out are not charged.

## `sentimentAnalysis` (type: `boolean`):

Add a lexicon-based sentiment (positive, negative or neutral, score -1 to +1) to posts, comments and complaints, for Chinese and English.

## `deltaMode` (type: `boolean`):

For scheduled runs: return only posts, comments and complaints no earlier run with the same state key delivered.

## `deltaStateKey` (type: `string`):

Name of an independent tracking stream for Delta mode and Hot search changes.

## `followUpComments` (type: `boolean`):

Search with Delta mode only. A delta search reads posts minutes after they are published, before anyone replies. With this on, each post is remembered and a later run re-reads its comments once, 24 hours to 7 days after posting (newest first, up to 300 threads per run). Only comments never delivered under this key come back, marked isFollowUp.

## `cookieString` (type: `string`):

Only for Posts of users beyond the latest ~10 per account: your Cookie request header from weibo.com. Leave empty otherwise.

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

Usually not needed. Without a proxy, the Actor switches to Apify Proxy by itself if Weibo blocks a request.

## Actor input object example

```json
{
  "mode": "search",
  "searchQuery": "人工智能",
  "autoLocalize": true,
  "userIds": [
    "2803301701"
  ],
  "maxResults": 100,
  "includeComments": false,
  "maxComments": 20,
  "commentSort": "hot",
  "includeReplies": false,
  "fetchFullText": true,
  "includeAuthorProfiles": false,
  "geoRollup": false,
  "adFilter": "all",
  "sentimentAnalysis": false,
  "deltaMode": false,
  "deltaStateKey": "default",
  "followUpComments": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Table of posts with engagement.

## `trends` (type: `string`):

Hot search topics and their changes.

## `comments` (type: `string`):

Comments and replies.

## `profiles` (type: `string`):

User and author profiles.

## `complaints` (type: `string`):

Black Cat complaints.

## `geo` (type: `string`):

Province rollup (when enabled).

## `all` (type: `string`):

Every field of every item.

# 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 = {
    "searchQuery": "人工智能",
    "userIds": [
        "2803301701"
    ]
};

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

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

```

## MCP server setup

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