# Weibo Scraper: Posts, Comments, Hot Search & Users (`cirkit/weibo-scraper`) Actor

Scrape Weibo (微博) posts by keyword, the realtime hot search board (热搜), topic board, full comment threads with replies and user profiles. Likes, reposts, IP region, images and video. No login or cookies.

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

## Pricing

$2.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

### What is Weibo Scraper?

**Weibo Scraper** lets you extract posts, comments, hot search topics and user profiles from Sina Weibo (新浪微博), China's largest public social network, helping you track what Chinese consumers say about your brand, follow trending topics as they break, and measure the reach of creators and KOLs. No Weibo account, no cookies and no login needed.

- **Monitor brand and product sentiment in China:** search any keyword or #hashtag# and get the matching posts with likes, comments, reposts, author and the province they were posted from.
- **Catch trends the moment they hit:** pull the realtime hot search board (微博热搜) with heat values and badges, the topic board (话题榜) with read and discussion counts, or the hot posts feed (热门微博).
- **Analyse the conversation, not just the post:** export the full comment thread under any post, including every reply, with likes, commenter followers and IP region.
- **Vet KOLs and influencers:** get follower counts, total posts, verification, lifetime likes, comments and reposts, plus their most recent posts.
- **Feed dashboards and models:** clean flat rows with UTC timestamps, numeric counts (万 and 亿 already converted) and stable ids, ready for CSV, Excel, BigQuery or a sentiment model.

Weibo's own web search stops logged-out visitors after one page and the official API needs an approved developer app. This actor merges Weibo's All, Latest, Hot, Video and Media search tabs plus the #topic# page, so one keyword returns up to about 100 distinct posts without any account.

### What data does Weibo Scraper extract?

**Posts**

- 📝 Full post text with line breaks, long posts expanded (`text`, `textIsComplete`)
- 🕒 Publish time in UTC (`createdAt`)
- ❤️ Likes, 💬 comments and 🔁 reposts (`likes`, `comments`, `reposts`)
- 📍 Province or country the post was published from (`region`)
- \#️⃣ Hashtags used in the post (`hashtags`)
- 🖼 Full-size image URLs and image count (`imageUrls`, `imageCount`)
- 🎬 Video MP4 link, length, play count and cover (`videoUrl`, `videoDurationSeconds`, `videoPlayCount`)
- 🔗 Post id, short code and link (`postId`, `postCode`, `url`)
- 🔄 Repost details: original post id, text and author
- 👤 Author name, id, avatar, followers, verification badge and verification text

**Comments**

- 💬 Comment text, time, likes, floor number and IP region
- ↩️ Replies with `parentCommentId`, plus reply counts on top-level comments
- 👤 Commenter name, id, followers and verification
- ⭐ Whether the post author liked the comment (`isLikedByAuthor`)

**User profiles**

- 👤 Screen name, bio, gender, location, avatar and cover
- 📈 Followers, following and total posts
- 🏆 Lifetime likes, comments, reposts and total interactions
- ✅ Verification type and text, VIP rank, custom domain, website
- 🎓 Registration date, birthday, company, school, credit level and influence labels

**Trending**

- 🔥 Hot search topic, rank, heat value, badge (沸, 热, 新, 爆), category, channel and time on board
- 📊 Topic board reads, discussions, summary and host account

### How to use Weibo Scraper

1. Open Weibo Scraper and pick what to scrape: search, trending, posts, comments or users.
2. Enter keywords, post links or profile links (Chinese or English, one per line).
3. Set how many results you want per keyword, board, post or user.
4. Click **Start** and wait a few seconds to a couple of minutes.
5. Download the results as JSON, CSV, Excel or HTML, or pull them through the API.

### Input

Search posts by keyword:

```json
{
    "mode": "search",
    "searchQueries": ["特斯拉", "iPhone 17", "#国庆#"],
    "maxResultsPerSource": 100
}
```

Read the realtime hot search board:

```json
{
    "mode": "trending",
    "trendingSource": "hotSearch"
}
```

Export every comment and reply under posts:

```json
{
    "mode": "comments",
    "postUrls": ["https://weibo.com/1560906700/RlQVh0BuW"],
    "maxCommentsPerPost": 1000,
    "includeReplies": true,
    "commentSort": "hot"
}
```

Profiles and latest posts:

```json
{
    "mode": "users",
    "userUrls": ["https://weibo.com/u/1669879400", "特斯拉"],
    "maxResultsPerSource": 10
}
```

Accepted post inputs: `weibo.com/<user>/<code>`, `m.weibo.cn/status/<id>`, `m.weibo.cn/detail/<id>`, numeric ids and short codes. Accepted user inputs: `weibo.com/u/<id>`, `weibo.com/<custom>`, `weibo.com/n/<name>`, `m.weibo.cn/u/<id>`, numeric ids and exact screen names.

### Output

One post row, trimmed:

```json
{
    "type": "post",
    "rank": 1,
    "postId": "5352083270144146",
    "postCode": "RlQVh0BuW",
    "url": "https://weibo.com/1560906700/RlQVh0BuW",
    "text": "今天到处在传，华为手机打不开懂车帝App里那条尊界刹车断裂的视频...",
    "textIsComplete": true,
    "createdAt": "2026-10-09T04:19:11Z",
    "likes": 5080,
    "comments": 275,
    "reposts": 320,
    "region": "湖北",
    "hashtags": [],
    "videoUrl": "https://f.video.weibocdn.com/o0/...mp4",
    "videoPlayCount": 894535,
    "authorName": "阑夕",
    "authorId": "1560906700",
    "authorFollowers": 3010809,
    "authorVerified": true,
    "sourceType": "search",
    "sourceInput": "华为",
    "status": "ok",
    "scrapedAt": "2026-10-09T13:40:02Z"
}
```

The dataset has four table views: **Posts**, **Comments**, **Users** and **Trending**, so each mode opens as a clean table instead of a wide blob. Every row carries `sourceType` and `sourceInput` so you can tell which keyword, board, post or user it came from.

When an input has nothing to return (a deleted post, an unknown user, a keyword with no matches), you get one row with `type: "info"` and a `status` of `no_results`, `unavailable` or `invalid_input` plus a plain-English `message`, instead of a silent empty run.

### How much does it cost to scrape Weibo?

Weibo Scraper charges a flat **$2.00 per 1,000 results**. A result is any row written to the dataset: a post, a comment, a profile or a trending topic. There is no start fee and no monthly rental.

| Results | Cost |
|---|---|
| 1,000 | $2.00 |
| 10,000 | $20.00 |
| 100,000 | $200.00 |

For comparison, other Weibo actors on the Store charge between $10 and $75 per 1,000 results depending on the data type. The whole hot search board is about 50 rows, so a snapshot costs roughly ten cents.

### Measured coverage

From 10 cloud QA runs on 2026-10-09 (686 posts, 782 comments, 77 trending rows):

| Field | Posts | Comments |
|---|---|---|
| Text, time, likes, author | 100% | 100% |
| Comments and reposts counts | 100% | n/a |
| Full text of long posts | 99% | n/a |
| Region (IP location) | 87% | 100% |
| Author followers | 82% | 100% |
| Images | 64% (posts with images) | n/a |
| Hashtags | 63% (posts with hashtags) | n/a |
| Video | 30% (video posts) | n/a |

Hot search rows always have topic and rank; heat value is missing only on the pinned and promoted entries. Every QA run finished SUCCEEDED, including invalid, deleted and zero-result inputs.

### Limits

- **Search depth:** Weibo shows logged-out visitors one page per search tab, so each keyword yields up to about 100 distinct posts. For more coverage, add related keywords and hashtags, or run on a schedule and merge.
- **User timelines:** the latest posts per user are capped at about 10 for the same reason. Profiles themselves are complete.
- **Comments:** full threads page freely. Very large threads can include comments Weibo has folded or removed, so the row count can land below the post's displayed total.
- **Reposts list, followers list and likes list** require a logged-in session on Weibo, so this actor does not offer them.
- **Video links** are signed by Weibo and expire after a few hours. Download promptly.

### FAQ

#### Is it legal to scrape Weibo?

This actor reads only public data that Weibo shows to any logged-out visitor: public posts, public comments, public profiles and the public trending boards. It uses no login and no private data. You are responsible for how you use the results, including compliance with Weibo's terms and with data protection law (such as China's PIPL and the GDPR) where personal data is involved.

#### Do I need a Weibo account or cookies?

No. Each run mints its own anonymous visitor session, exactly like a browser opening weibo.com for the first time.

#### How many posts can I get per keyword?

Up to about 100 distinct posts per keyword, merged from Weibo's All, Latest, Hot, Video and Media tabs and the #topic# page. Add more keywords to widen coverage.

#### Can I scrape Weibo hot search (微博热搜) every hour?

Yes. Use `trending` mode with `hotSearch` and schedule the actor hourly in Apify Schedules. Each snapshot is about 50 rows, roughly ten cents.

#### Can I get all comments on a Weibo post?

Yes. Use `comments` mode, raise `maxCommentsPerPost`, and turn on `includeReplies` for nested replies. Threads of several thousand comments are fine.

#### Can I use Weibo Scraper as an API?

Yes. Every Apify actor is an API. Start runs and fetch results with the [Apify API](https://docs.apify.com/api/v2), or call it from an AI agent through the Apify MCP server.

#### Can I use this in Python?

```python
from apify_client import ApifyClient
run = ApifyClient("<YOUR_TOKEN>").actor("cirkit/weibo-scraper").call(run_input={"mode": "search", "searchQueries": ["特斯拉"]})
```

#### Can I integrate Weibo Scraper with other apps?

Yes. Send results to Google Sheets, Slack, Zapier, Make, Airbyte or any webhook through Apify integrations.

#### Why did I get fewer results than expected?

Weibo caps logged-out search at one page per tab, so a narrow keyword can return 30 to 60 posts. Deleted or private posts return an `unavailable` row. Check the `message` field on any info row for the exact reason.

#### Are the numbers in 万 and 亿 converted?

Yes. Counts such as 8255.1万 followers are returned as plain integers (82551000).

#### Can I get a field that is not listed?

Open an issue on the actor page with the field and an example post, and it will be considered for the next version.

### You might also like

- [Bilibili Scraper](https://apify.com/cirkit/bilibili-scraper): Chinese video trends, danmaku and creators
- [Bluesky Scraper](https://apify.com/cirkit/bluesky-scraper): posts, profiles and followers
- [YouTube Comments Scraper](https://apify.com/cirkit/youtube-comments-scraper): comment threads at scale
- [Google Trends Scraper](https://apify.com/cirkit/google-trends-scraper): search interest over time

### Changelog

- **0.1** (2026-10-09): first release. Keyword search across five tabs, hot search, topic board, hot posts feed, post details, comments with replies, user profiles.

# Actor input Schema

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

Search posts by keyword, read a trending board, fetch posts by URL, read the comments under posts, or pull user profiles with their latest posts.

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

Keywords or hashtags to search Weibo for, in Chinese or English. Used in 'search' mode. Each keyword returns up to about 100 posts, merged from Weibo's All, Latest, Hot, Video and Media tabs plus the #topic# page.

## `trendingSource` (type: `string`):

Used in 'trending' mode. Hot search is the realtime 热搜 board of about 50 topics with heat values. Topics is the 话题榜 with read and discussion counts. Hot posts is the 热门微博 feed of the most viral posts right now.

## `postUrls` (type: `array`):

Weibo post links (weibo.com/<user>/<code>, m.weibo.cn/status/<id>, m.weibo.cn/detail/<id>), numeric post ids or base62 codes. Used in 'posts' and 'comments' modes.

## `userUrls` (type: `array`):

Weibo profile links (weibo.com/u/<id>, weibo.com/<custom>, m.weibo.cn/u/<id>), numeric user ids or exact screen names. Used in 'users' mode.

## `maxResultsPerSource` (type: `integer`):

Cap on posts per keyword, rows per trending board, or latest posts per user. Weibo shows logged-out visitors about 100 posts per keyword and the 10 most recent posts per user. Set 0 in 'users' mode to get profiles only.

## `maxCommentsPerPost` (type: `integer`):

Cap on comment rows (including replies) per post in 'comments' mode.

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

Hot puts the most liked comments first, the way Weibo shows them. Latest lists newest first.

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

Also fetch every reply under each comment, as rows with parentCommentId set. Replies count toward Max comments per post.

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

Search results and timelines cut long posts short with '全文'. When on, the full text is fetched for those posts (one extra request each).

## `includeUserDetails` (type: `boolean`):

In 'users' mode, also fetch registration date, birthday, company, school, credit level and influence labels (one extra request per user).

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

Hard cap on rows written by this run across all inputs. Leave empty for no cap.

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

Apify Proxy is required. The default datacenter pool works; no residential proxy needed.

## Actor input object example

```json
{
  "mode": "search",
  "searchQueries": [
    "特斯拉"
  ],
  "trendingSource": "hotSearch",
  "maxResultsPerSource": 100,
  "maxCommentsPerPost": 200,
  "commentSort": "hot",
  "includeReplies": false,
  "fetchFullText": true,
  "includeUserDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Post rows with text, likes, comments, reposts, author and media.

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

Comment and reply rows with likes, author and region.

## `users` (type: `string`):

Profile rows with followers, posts, verification and lifetime interactions.

## `trending` (type: `string`):

Hot search and topic board rows with heat, reads and discussions.

## `resultsCsv` (type: `string`):

Every row as a downloadable CSV file.

## `full` (type: `string`):

Every field on every row.

# 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 = {
    "mode": "search",
    "searchQueries": [
        "特斯拉"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("cirkit/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 = {
    "mode": "search",
    "searchQueries": ["特斯拉"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("cirkit/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 '{
  "mode": "search",
  "searchQueries": [
    "特斯拉"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call cirkit/weibo-scraper --silent --output-dataset

```

## MCP server setup

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