# Weibo Scraper — Posts, Users, Comments & Trends (`logiover/weibo-scraper`) Actor

Scrape Sina Weibo (微博) without login: hot-channel posts, user profiles, keyword & #topic# search, the hot-search board, and comments with replies. Likes, reposts, IP region, video plays, follower counts, verification. Datacenter proxy, no cookies, JSON/CSV/Excel export.

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

## Pricing

from $3.50 / 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.
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

## Weibo Scraper — Posts, Users, Comments & Hot Search (微博)

> **Independent tool.** This Actor is not affiliated with, endorsed by or sponsored by Sina Weibo (新浪微博) or Weibo Corporation. "Weibo" and "微博" are trademarks of their respective owners. The Actor only reads information Weibo shows to any signed-out visitor.

**Weibo Scraper** collects data from **Sina Weibo (微博)**, China's largest public social network, **without a Weibo account, without cookies and without a Chinese IP address**. In one run you can combine:

- 🔥 **Hot channels (热门频道)** — posts from Weibo's 55 hot feeds such as 热门 (Hot), 实时 (Real-time), 社会 (Society), 财经 (Finance), 科技 (Tech), 体育 (Sports), 明星 (Celebrities), 汽车 (Cars). This is the deepest source: **1,000+ unique posts per channel in a single run**.
- 💬 **Comments and replies** of any post — hottest and newest, each with the commenter's full profile and **IP region (IP属地)**.
- 📈 **Hot-search board (热搜榜)** — all 50 real-time trending topics with rank, heat value, label (热/新/沸/爆), category and the time each topic entered the board — optionally with the posts behind every topic.
- 👤 **User profiles** — followers, following, posts, lifetime likes/comments/reposts, verification (blue/orange V) and its reason, company, school, account creation date, credit level and Weibo's own influence labels — plus each user's newest posts.
- 🔎 **Keyword and #topic# search** — the Top (综合), Real-time (实时) and Hot (热门) tabs, de-duplicated.

Every row is clean JSON with ISO dates, real numbers (not "1.2万" strings) and stable IDs. Export to JSON, CSV, Excel, Google Sheets or straight into your pipeline with the Apify API.

***

### ✨ Why this Weibo scraper

| | |
|---|---|
| **No login, no cookies** | Uses the same anonymous visitor access a browser gets. Nothing to set up, no account to burn. |
| **No China proxy needed** | Runs on Apify's ordinary datacenter proxy. Measured on 2026-10-10: 718 of 718 requests answered in the depth test, zero blocks. |
| **Deep where Weibo is deep** | Hot channels page on and on (1,000+ posts each), viral posts give ~500 comments plus up to 100 replies per comment. |
| **Rich rows** | Up to 72 columns: engagement, IP region, images, video URL + play count, topics, mentions, reposted post, and the author's profile. |
| **Honest about limits** | Weibo shows signed-out visitors only the first page of a profile timeline or a keyword search. The Actor says so in the log instead of quietly returning less. |
| **Fails loudly** | A run that could not reach Weibo fails with the reason. It never reports success with zero rows. |

***

### 🎯 Use cases

- **China social listening & brand monitoring** — track what Weibo users say about your brand, product launch or competitor, with sentiment-ready comment text and the commenter's region.
- **KOL & influencer research** — compare followers, lifetime interactions, verification and influence labels of creators and brand accounts; find accounts with the user-search option.
- **Trend tracking** — snapshot the 热搜 hot-search board every hour with a schedule and see what rises, how hot it gets and how long it stays.
- **Market & consumer research** — read the 财经, 科技, 汽车, 美妆, 时尚 or 美食 channels to see which products and topics Chinese consumers engage with.
- **Academic & media research** — build datasets of public discourse, IP-region distribution of comments, or repost behaviour around news events.
- **Content & PR teams** — collect the comments under a campaign post (e.g. a celebrity endorsement) and measure reception.

***

### 📦 What data you get

Every row has a `type` column. Columns that do not apply to a row type are simply absent or `null`.

#### Post rows (`type = "post"`)

| Column | Meaning |
|---|---|
| `postId`, `mid`, `bid`, `url` | IDs and the canonical `https://weibo.com/{uid}/{bid}` link |
| `createdAt` | Publication time, ISO 8601 (UTC) |
| `text`, `textLength`, `isLongText` | Plain text with emoji kept as `[名称]` and line breaks; `fetchLongText` expands truncated (全文) posts |
| `source` | Client / device, when shown |
| `regionName` | IP region shown under the post (发布于 …), e.g. 北京, 广东, 美国 |
| `repostsCount`, `commentsCount`, `likesCount` | Engagement counts as numbers |
| `picsCount`, `picUrls` | Number of images and full-size image URLs |
| `videoUrl`, `videoPlayCount`, `videoDuration`, `videoTitle`, `videoCover` | Attached video (720p MP4 when available) and its view count |
| `topics`, `mentions` | `#topics#` and `@mentions` found in the text |
| `isRetweet`, `retweetedPostId`, `retweetedText`, `retweetedUserId`, `retweetedUserName` | The original post when this is a repost |
| `user*` | Author: ID, name, URL, verification + type + reason, avatar, lifetime interactions, followers, following, post count, gender, location, bio. Hot-channel feeds carry a slim author object — `enrichAuthors` (on by default) fills the profile columns there with one cached lookup per unique author |
| `sourceType`, `sourceQuery` | How the row was found (`hotChannel`, `user`, `search`, `trending`, `post`) and the channel/user/keyword |

#### Comment rows (`type = "comment"`)

`commentId`, `postId`, `postUrl`, `isReply`, `rootCommentId`, `replyToCommentId`, `replyToUserName`, `createdAt`, `text`, `likesCount`, `repliesCount`, `floorNumber`, `regionName` (IP region, 来自 …), `picsCount`, `topics`, `mentions`, and the **commenter's profile**: `userId`, `userScreenName`, `userFollowersCount`, `userFollowingCount`, `userPostsCount`, `userGender`, `userLocation`, `userDescription`, `userVerified`, `userVerifiedType`, `userVerifiedReason`, `userTotalInteractions`, `userAvatar`.

#### User rows (`type = "user"`)

All `user*` columns above plus `userCreatedAt` (account registration date), `userCompany`, `userSchool`, `userBirthday`, `userCreditLevel` (阳光信用), `userLabels` (e.g. "昨日阅读人数100万+", "V指数 文娱 93.44分"), `userTotalLikes`, `userTotalComments`, `userTotalReposts`, `userDomain`, `userWebsite`, `userIsVip`. Profiles requested under **Users** carry all of these; accounts found by **user search** carry the core columns (followers, posts, verification, bio).

#### Trend rows (`type = "trend"`)

`trendRank`, `trendWord`, `trendHotValue`, `trendLabel` (热/新/沸/爆 when shown), `trendCategory` (e.g. 民生新闻, 综艺, 体育), `trendOnboardedAt`, `trendIsNew`, `url`.

***

### 🚀 How to scrape Weibo

1. Click **Try for free** / **Start** — the form is pre-filled with a small example (hot-search board + two hot channels + one profile).
2. Pick your sources: hot channels, users, keywords, post URLs and/or the hot-search board.
3. Set the depth (posts per channel, comments per post) and a total cap (`maxItems`).
4. Run, then open the **Output** tab or export the dataset as JSON, CSV or Excel. Five ready-made table views are included: Overview, Posts, Comments, Users and Hot search.

#### Input example 1 — hot channels at scale

```json
{
  "hotChannels": ["热门", "财经", "科技", "汽车", "体育"],
  "maxPostsPerChannel": 1000,
  "fetchLongText": true,
  "enrichAuthors": true,
  "maxItems": 5000,
  "concurrency": 20
}
```

#### Input example 2 — brand monitoring with comments

```json
{
  "searchKeywords": ["华为", "小米汽车", "#iPhone 17#"],
  "includeUserSearch": true,
  "postUrls": ["https://weibo.com/1669879400/RlZog45UR"],
  "includeComments": true,
  "maxCommentsPerPost": 500,
  "commentsSort": "both",
  "includeReplies": true,
  "maxRepliesPerComment": 20,
  "maxItems": 10000
}
```

#### Input example 3 — hourly trend snapshot with the posts behind each topic

```json
{
  "includeTrending": true,
  "includeTrendingPosts": true,
  "maxPostsPerTrend": 15,
  "users": ["1669879400", "https://weibo.com/u/2656274875", "@华为终端"],
  "maxItems": 1500
}
```

***

### 📤 Output examples (real rows from a test run on 2026-10-10)

A **post** found via the post URL source:

```json
{
  "type": "post",
  "postId": "5352408760976057",
  "bid": "RlZog45UR",
  "url": "https://weibo.com/1669879400/RlZog45UR",
  "createdAt": "2026-10-10T01:52:34.000Z",
  "text": "忙碌间隙，别忘了给自己留15分钟的松弛时间\n和@阿道夫 一起，焕新头皮好状态\n\n#阿道夫天然香洗发水#\n…",
  "textLength": 276,
  "source": "微博视频号",
  "regionName": "北京",
  "repostsCount": 566935,
  "commentsCount": 379692,
  "likesCount": 1204056,
  "videoPlayCount": 13012650,
  "videoDuration": 93,
  "videoTitle": "阿道夫的微博视频",
  "topics": ["阿道夫天然香洗发水", "迪丽热巴阿道夫品牌全球代言人", "阿道夫"],
  "mentions": ["阿道夫"],
  "isRetweet": false,
  "userId": "1669879400",
  "userScreenName": "Dear-迪丽热巴",
  "userVerified": true,
  "userVerifiedType": "personal",
  "userTotalInteractions": 6199537840,
  "sourceType": "post"
}
```

A **comment** on that post (the commenter's profile comes with it):

```json
{
  "type": "comment",
  "commentId": "5352439375202658",
  "postId": "5352408760976057",
  "isReply": false,
  "createdAt": "2026-10-10T03:54:13.000Z",
  "text": "和代言人@Dear-迪丽热巴 一起焕新头皮好状态，以天然植萃养护头皮生态圈，借乌木雪松香舒展呼吸~ http://t.cn/AXlbo15N",
  "likesCount": 25054,
  "repliesCount": 2751,
  "floorNumber": 32523,
  "userScreenName": "阿道夫",
  "userVerifiedType": "organization",
  "userVerifiedReason": "广东阿道夫个人护理用品有限公司官方微博",
  "userFollowersCount": 749103,
  "userPostsCount": 7524,
  "userLocation": "广东"
}
```

A **trend** row from the hot-search board:

```json
{
  "type": "trend",
  "trendRank": 1,
  "trendWord": "泰国警方回应大概率已被转至缅甸",
  "trendHotValue": 480678,
  "trendLabel": "热",
  "trendCategory": "民生新闻",
  "trendOnboardedAt": "2026-10-10T15:44:20.000Z",
  "trendIsNew": false,
  "url": "https://s.weibo.com/weibo?q=%23泰国警方回应大概率已被转至缅甸%23"
}
```

A **user** row (profile source) adds, for example: `"userFollowersCount": 82551688`, `"userTotalLikes": 3252675664`, `"userCompany": "嘉行传媒"`, `"userSchool": "上海戏剧学院"`, `"userCreatedAt": "2010-07-02T05:19:58.000Z"`, `"userCreditLevel": "阳光信用极好"`, `"userLabels": ["演员影响力指数 5244万", "V指数 文娱 93.44分", "昨日阅读人数100万+"]`.

***

### 📊 How many results can I get?

Measured on the Apify platform on 2026-10-10:

| Source | What a signed-out visitor gets | Measured |
|---|---|---|
| Hot channel | Pages on and on | 300 posts per channel in ~2–4 min; 1,000+ unique posts per channel in standalone tests (实时 1,200, 科技 1,080, 财经 1,079 after 60 pages, still yielding new posts) |
| Comments per post | ~300 hottest + ~300 newest | 509–600 unique top-level comments on one viral post with `commentsSort: "both"` (600 = the cap we set) |
| Replies per comment | Up to 100 | 100 of 2,752 replies on a top comment |
| Hot-search board | 50 topics per snapshot | 50 |
| Trend posts | First page of each search tab per topic | 247 posts for 50 topics at `maxPostsPerTrend: 5` |
| User profile | Profile + newest ~10 posts | 1 user row + 9–10 posts |
| Keyword search | First page of Top / Real-time / Hot / #topic# | ~15–30 unique posts per keyword |

**Depth tests (Apify platform, 2026-10-10, 0 duplicates in every run, every request answered):**

- 5 hot channels + hot-search board + 20 comments per post → **4,000 rows** (1,021 posts, 2,929 comments, 50 trends) in **132 s**, 624/624 requests.
- 8 hot channels × 300 + hot-search board + one viral post's comments, long-text expansion on → **2,049 rows** in 280 s, 718/718 requests.
- 4 hot channels × 250 with `enrichAuthors` + one viral post (both comment orders + replies) + keyword & user search → **1,897 rows** in 396 s; all 1,000 feed posts carried the author's follower count.

For tens of thousands of rows, combine many channels (there are 55) with `includeComments` — 1,000 channel posts × up to ~500 comments each is a very large dataset — or schedule the Actor to run every hour.

Channels overlap (a viral post can appear in 热门 and 明星), and rows are de-duplicated across the whole run, so a channel listed later may contribute fewer posts than its cap.

***

### ⚡ Speed and cost

Measured on the Apify platform (2026-10-10, build with the faster transport), author enrichment on:

| Run | Rows | Time |
|---|---|---|
| Prefilled example (hot-search board + 2 channels + 1 profile) | 100 | **9–15 s** (platform-reported run duration) |
| 4 hot channels × 300 + hot-search board, default settings (`concurrency: 20`) | 1,250 | **36–39 s** |
| Same input with `concurrency: 5` | 1,250 | about 2 min (113–126 s) |
| Same input with `concurrency: 30` | 1,250 | 32 s |

- **Why it is fast:** connections to Weibo are kept alive and reused (a fresh proxied connection per request was measured at ~1.8 s, a reused one at ~0.5 s); the visitor handshake is a single request; each hot channel pages on its own visitor while author profiles are looked up in parallel (cached, one lookup per author); rows are saved the moment they are complete and the run stops instantly when `maxItems` is reached.
- **`concurrency`** is the number of requests in flight. **20 is the default** and the measured sweet spot: 30 was only ~7 s faster on 1,250 rows but drew three times as many Weibo rate-limit answers (all retried automatically on a fresh identity).
- **Platform cost:** the 1,250-row default run used **$0.003–0.005** of compute and storage in total (well under 1 cent per 1,000 rows). Datacenter proxy only — no residential traffic.
- `enrichAuthors` (on by default) adds one request per unique author; turn it off for the absolute fastest bulk export. `fetchLongText` adds one request per long post.

***

### 💡 Tips for best results

- **Volume:** hot channels and comments are the deep sources. Keyword search and profile timelines are limited by Weibo to the first page for signed-out visitors — use many keywords or users, or channels, for volume.
- **Brand monitoring:** combine `searchKeywords` with `includeComments` and `commentsSort: "both"`; filter comments by `regionName` for regional sentiment.
- **Trend tracking:** schedule `includeTrending: true` every 30–60 minutes and compare `trendRank` / `trendHotValue` over time.
- **KOL research:** give screen names or profile URLs under `users`; profile rows carry lifetime interactions and influence labels. For hot-channel posts, `enrichAuthors` (on by default) puts every author's followers, gender, location and bio on the post row.
- **Chinese text:** all text is UTF-8. When opening CSV in Excel, use *Data → From Text/CSV* with UTF-8, or export as Excel (XLSX) directly.
- **Optional cookie (beta):** if you have a Weibo account and need deeper profile timelines or search pages, paste the Cookie header of a signed-in m.weibo.cn session into `weiboCookie` (a secret field). This path has not yet been verified against a live signed-in account. Everything else works without it.

***

### ❓ FAQ

**Do I need a Weibo account, login or cookies?**
No. Channels, comments, replies, the hot-search board, profiles and first-page search all work signed-out. The cookie field is optional and only extends profile timelines and search beyond the first page.

**Do I need a Chinese IP address or residential proxy?**
No. The Actor runs on Apify's standard datacenter proxy. In the depth test every one of 718 requests was answered.

**Why do I get only about 10 posts for a user?**
Weibo shows signed-out visitors only the newest page of a profile (and of each search tab). Page 2 onward requires signing in, for every visitor, on every proxy type — we measured it. The Actor logs a note when this applies. Use the optional cookie for deeper timelines, or use hot channels and comments for volume.

**How many comments can I get per post?**
Weibo shows signed-out visitors about 300 comments per sort order. With `commentsSort: "both"` (default) the Actor collects the hottest and the newest sets — 509 to 600 unique comments on a viral post in our tests — plus up to 100 replies per comment with `includeReplies`.

**What is the IP region (IP属地) field?**
Since 2022 Weibo prints the IP location under every post and comment ("发布于 广东", "来自 江苏"). The Actor puts it in `regionName` without the prefix — useful for regional analysis.

**Are counts exact?**
Hot channels, comments and single posts return exact numbers. Some mobile endpoints report anything above one million reposts or comments as `1000000` ("100万+"). Follower counts written as "8255.2万" are converted to numbers.

**Is the text in Chinese? Can I translate it?**
The text is exactly what was posted (mostly Simplified Chinese), stored as UTF-8. Pipe the dataset into any translation API or LLM after the run.

**What happens if Weibo blocks a request?**
Each worker keeps its own visitor identity and IP; a refused one is replaced immediately with a fresh identity on a new IP. If Weibo refuses everything, the run fails with the reason instead of returning an empty "success".

**What happens if a user or post does not exist?**
It is skipped with a clear log message ("User not found: …, Weibo says 用户不存在"). If every requested user/post is missing and nothing else was collected, the run fails with outcome `NOT_FOUND` so automations notice.

**Can I schedule it?**
Yes — use Apify Schedules (e.g. hourly for the hot-search board, daily for brand keywords). Each run writes a `SUMMARY` record (outcome, counts per row type, request statistics) to the key-value store for monitoring.

**Can I export to Excel, Google Sheets or a database?**
Yes. Export as JSON, CSV, XLSX, XML or HTML from the dataset, or connect Google Sheets, Make, Zapier, n8n, Airbyte, webhooks or the Apify API.

**Is scraping Weibo legal?**
The Actor collects only publicly visible information that Weibo shows to anyone without an account, and does not bypass logins or paywalls. Posts and comments can contain personal data — you are responsible for using it lawfully (e.g. GDPR, PIPL) and in line with Weibo's terms.

***

### 🔌 Use the Weibo scraper via API

**JavaScript (apify-client)**

```js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('logiover/weibo-scraper').call({
    hotChannels: ['财经', '科技'],
    maxPostsPerChannel: 500,
    includeTrending: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0]);
```

**Python (apify-client)**

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("logiover/weibo-scraper").call(run_input={
    "postUrls": ["https://weibo.com/1669879400/RlZog45UR"],
    "maxCommentsPerPost": 500,
    "includeReplies": True,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row["type"], row.get("text"))
```

**cURL (run synchronously and get the rows)**

```bash
curl -X POST "https://api.apify.com/v2/acts/logiover~weibo-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"includeTrending": true, "maxItems": 50}'
```

***

### 🔗 Related scrapers

- [Bilibili Video Scraper](https://apify.com/logiover/bilibili-video-scraper) — videos, views and engagement from Bilibili (哔哩哔哩).
- [RedNote / Xiaohongshu Scraper](https://apify.com/logiover/rednote-xiaohongshu-scraper) — notes and creators from 小红书.
- [Douban Movie Scraper](https://apify.com/logiover/douban-movie-scraper) — ratings and reviews from 豆瓣.
- [Threads Scraper](https://apify.com/logiover/threads-scraper) — posts and profiles from Meta Threads.
- [Telegram Channel Scraper](https://apify.com/logiover/telegram-channel-scraper) — public channel messages and views.

***

### ⚖️ Legal & trademark

This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by Sina Weibo, Weibo Corporation or any of their subsidiaries. All trademarks mentioned are the property of their respective owners. The Actor reads only publicly available information that Weibo serves to signed-out visitors; it does not log in on your behalf (unless you choose to supply your own cookie), does not bypass paywalls and does not collect private messages. You are responsible for complying with applicable laws (including GDPR and China's PIPL) and Weibo's terms when using the data.

***

### 📝 Changelog

#### 2026-10-10 — first release

- Hot channels (55), comments + replies (hottest, newest or both), hot-search board with optional posts per topic, user profiles with Weibo's detailed profile data, keyword and #topic# search, optional long-text expansion and author-profile enrichment for feed posts.
- Anonymous visitor identities per worker on datacenter IPs; refused identities are replaced instantly.
- Global de-duplication across sources; `SUMMARY` record with outcome and counts; runs that reach nothing fail loudly; missing users/posts end with `NOT_FOUND`.

# Changelog

This Actor's version history is a separate document: https://apify.com/logiover/weibo-scraper/changelog.md

# Actor input Schema

## `hotChannels` (type: `array`):

Weibo's hot feeds, paged as deep as you ask (the deepest source: 1,000+ posts per channel per run). Use the Chinese name or an English alias: 热门 hot, 实时 realtime, 社会 society, 财经 finance, 科技 tech, 数码 gadgets, 汽车 cars, 体育 sports, 明星 celebrities, 综艺 variety, 电影 movies, 电视剧 tv, 美妆 beauty, 时尚 fashion, 美食 food, 旅游 travel, 国际 international, 军事 military, 股市 stocks, 房产 real-estate, 健康 health, 游戏 games, 动漫 anime, 教育 education, 育儿 parenting, 萌宠 pets, 搞笑 funny, 情感 relationships, 读书 books, 摄影 photography, 音乐 music, 历史 history, 艺术 art, 设计 design, 法律 law, 科普 science, 运动健身 fitness, 好物 shopping, 深度 in-depth, 榜单 rankings, 政务 government, 辟谣 fact-check, 三农 agriculture, 公益 charity — 55 channels in total.

## `users` (type: `array`):

Weibo users as numeric UID (1669879400), profile URL (https://weibo.com/u/1669879400, https://m.weibo.cn/u/1669879400, https://weibo.com/adolphag) or screen name (@华为终端). Returns one profile row with followers, total likes/comments/reposts, verification, company, school, account age and influence labels, plus the user's newest posts.

## `searchKeywords` (type: `array`):

Brands, products, people or #topics#. Each keyword is searched in the Top (综合), Real-time (实时) and Hot (热门) tabs and as a #topic#; results are de-duplicated. Weibo shows signed-out visitors the first page of each tab (about 15–30 unique posts per keyword) — use many keywords for volume, or add a cookie below for deeper pages.

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

Specific posts to fetch together with their comments — e.g. https://weibo.com/1669879400/RlZog45UR, https://m.weibo.cn/detail/5352408760976057 or just the numeric ID. Popular posts have tens of thousands of comments; the cap is 'Max comments per post'.

## `includeTrending` (type: `boolean`):

Add the 50 topics on Weibo's real-time hot-search board, with rank, heat value, label (热/新/沸/爆), category and the time each topic entered the board.

## `includeTrendingPosts` (type: `boolean`):

For every hot-search topic, also collect the posts Weibo shows for it (first page of each search tab). Up to ~750 extra posts — what people are actually saying about each trend.

## `maxPostsPerChannel` (type: `integer`):

How many posts to take from each hot channel. Measured: 1,000+ unique posts per channel are available in a single run.

## `maxPostsPerUser` (type: `integer`):

Newest posts per user. Signed-out visitors are shown about 10 per profile; with a cookie the actor pages further. 0 = profile row only.

## `includeUserProfile` (type: `boolean`):

Emit one 'user' row per requested user with the full profile (followers, following, posts, lifetime likes/comments/reposts, verification reason, company, school, account creation date, credit level, influence labels).

## `maxPostsPerKeyword` (type: `integer`):

Cap per search keyword (Top + Real-time + Hot tabs + #topic#, de-duplicated).

## `includeUserSearch` (type: `boolean`):

Run Weibo's user search for every keyword and emit up to 20 matching accounts as 'user' rows (followers, verification, description) — handy for finding brand accounts and KOLs.

## `maxPostsPerTrend` (type: `integer`):

Cap per hot-search topic when 'Also collect posts for each trending topic' is on.

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

Also collect comments for posts found via channels, users, search and trends (posts given under 'Post URLs' always get their comments). Each comment row carries the commenter's profile and IP region.

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

Top-level comments per post, 20 per request. Weibo shows signed-out visitors roughly 300 per order (about 500 with "both"). 0 = no comments.

## `commentsSort` (type: `string`):

Weibo shows signed-out visitors about 300 comments per order. "Both" collects the hottest and the newest sets (measured: 509 unique comments on one viral post vs 307 hot-only).

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

Also collect second-level replies under each comment that has any (rows with isReply = true).

## `maxRepliesPerComment` (type: `integer`):

Cap on replies collected under each comment. Weibo shows signed-out visitors up to 100 replies per comment.

## `fetchLongText` (type: `boolean`):

Weibo truncates long posts in feeds. When on, every post flagged as long gets one extra request for its full text.

## `enrichAuthors` (type: `boolean`):

Hot-channel feeds include only a slim author object (name, verification, lifetime interactions). When on, each unique author is looked up once (cached) to add followers, following, post count, gender, location, bio and verification reason to every post row. One extra request per unique author.

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

Stop after this many rows across all sources and row types. 0 = no limit.

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

Requests in flight at the same time across the whole run. 20 is fast and stable on Weibo (measured); go up to 50 for very large runs, or lower it to be gentler.

## `weiboCookie` (type: `string`):

Optional and rarely needed — channels, comments, trends, profiles and first-page search all work without it. Only if you need deeper profile timelines or search pages: paste the Cookie header of your own signed-in m.weibo.cn session. Beta: this path has not been verified against a live signed-in account yet. Stored encrypted as a secret input, used from a single IP.

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

Apify datacenter proxy works well for Weibo (measured: every request answered). Each worker keeps its own IP and visitor identity; a refused one is replaced immediately.

## Actor input object example

```json
{
  "hotChannels": [
    "热门",
    "财经"
  ],
  "users": [
    "1669879400"
  ],
  "includeTrending": true,
  "includeTrendingPosts": false,
  "maxPostsPerChannel": 20,
  "maxPostsPerUser": 10,
  "includeUserProfile": true,
  "maxPostsPerKeyword": 50,
  "includeUserSearch": false,
  "maxPostsPerTrend": 15,
  "includeComments": false,
  "maxCommentsPerPost": 100,
  "commentsSort": "both",
  "includeReplies": false,
  "maxRepliesPerComment": 10,
  "fetchLongText": false,
  "enrichAuthors": true,
  "maxItems": 100,
  "concurrency": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All rows collected in this run.

# 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 = {
    "hotChannels": [
        "热门",
        "财经"
    ],
    "users": [
        "1669879400"
    ],
    "includeTrending": true,
    "maxPostsPerChannel": 20,
    "enrichAuthors": true,
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/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 = {
    "hotChannels": [
        "热门",
        "财经",
    ],
    "users": ["1669879400"],
    "includeTrending": True,
    "maxPostsPerChannel": 20,
    "enrichAuthors": True,
    "maxItems": 100,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/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 '{
  "hotChannels": [
    "热门",
    "财经"
  ],
  "users": [
    "1669879400"
  ],
  "includeTrending": true,
  "maxPostsPerChannel": 20,
  "enrichAuthors": true,
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call logiover/weibo-scraper --silent --output-dataset

```

## MCP server setup

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