# Weibo Search Scraper — Posts by Keyword · No Login (`gio21/weibo-search-scraper`) Actor

Search Weibo by keyword, no login needed. Returns author, full post text, timestamp, and repost/comment/like counts for every matching post. $0.005 per post.

- **URL**: https://apify.com/gio21/weibo-search-scraper.md
- **Developed by:** [Gio](https://apify.com/gio21) (community)
- **Categories:** Social media
- **Features:** Limited permissions
- **Stats:** 9 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 post scrapeds

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 Search Scraper — Posts by Keyword · No Login

Search **Weibo** (Sina Weibo), China's largest social media platform, by keyword and get structured post data back: author, full text, timestamp, repost/comment/like counts and the post URL. No login, no cookies, no app token.

### Why use this scraper

Weibo carries real-time Chinese consumer and public opinion at a scale no other platform matches for that market, but it has no public search API for third parties, and its web app renders results behind JavaScript that changes format without notice. Brands tracking how a product launch is received in China, researchers studying Chinese public discourse, and competitive intelligence teams watching a competitor's mentions all need a way to pull Weibo search results programmatically, in a language-agnostic structured format, without maintaining their own scraper against a site that reworks its front-end regularly.

This actor takes one or more keywords and returns the matching posts as clean JSON: who posted it, the full post text, when it went up, and its engagement numbers (reposts, comments, likes). That engagement data is what turns a keyword search into a signal: a spike in `attitudesCount` and `commentsCount` around a specific post is a far stronger indicator of a trending topic than the keyword match alone.

### Overview

Input is a single keyword or a list of keywords; output is one JSON record per matching post, up to `maxItems` per keyword. Results are ordered the same way Weibo's own search returns them, so the first results are Weibo's own relevance/recency ranking rather than a random sample. A typical run for one keyword and 20 posts completes in well under a minute.

### Supported inputs

- **Single keyword** — `keyword`, a plain search term such as a brand name, product name or hashtag topic.
- **Multiple keywords** — `keywords`, an array of terms searched independently in the same run, with results split per keyword so you can tell which search produced which post.
- **Result cap per keyword** — `maxItems` (1 to 200) controls how many posts are pulled for each keyword before the actor stops paginating.

### Use cases

- **Brand monitoring teams** — track how a product name or campaign hashtag is performing on Weibo day to day, without a Weibo account.
- **Market researchers** — pull consumer sentiment and discussion volume around a category (e.g. a phone model) for a China market report.
- **Competitive intelligence** — watch a competitor's brand or executive name for spikes in mentions tied to news events or launches.
- **Academic and media researchers** — collect a structured sample of Chinese-language public posts on a topic for discourse analysis.
- **Trend spotting** — compare `repostsCount` and `attitudesCount` across keywords to see which topic is actually gaining traction versus just being mentioned.
- **Crisis and PR monitoring** — catch an early spike in negative-sentiment posts mentioning a brand or product before it escalates into a full news cycle.

### How it works

The actor queries Weibo's own public search interface for the keyword and reads the same structured post data Weibo's mobile site renders for the results feed, so authors, counts and timestamps come back as clean fields instead of scraped HTML text. Multiple keywords are processed independently in the same run, each paginated up to its own `maxItems`.

### Input configuration

**Single keyword:**

```json
{
  "keyword": "iphone",
  "maxItems": 50
}
```

**Multiple keywords in one run:**

```json
{
  "keywords": ["iphone", "小米18", "华为Mate"],
  "maxItems": 30
}
```

**Small sample for a quick check:**

```json
{
  "keyword": "iPhone Air",
  "maxItems": 10
}
```

### Output sample

Real output from a live search for "iphone":

```json
[
  {
    "keyword": "iphone",
    "authorName": "老师好我叫何同学",
    "authorId": 6529876887,
    "text": "iPhone 18 Pro系列的首发体验视频来了！希望大家喜欢！#何同学##iPhone18上手评测##苹果发布会##苹果发布会有何亮点# 老师好我叫何同学的微博视频",
    "createdAt": "Wed Sep 16 20:29:16 +0800 2026",
    "repostsCount": 551,
    "commentsCount": 322,
    "attitudesCount": 4399,
    "source": "微博视频号",
    "url": "https://m.weibo.cn/detail/5343871682741457",
    "scrapedAt": "2026-10-10T09:17:25.432Z"
  },
  {
    "keyword": "iphone",
    "authorName": "钟文泽",
    "authorId": 1906286443,
    "text": "我问我妈，今年要不要给她换一台 iPhone Duo...",
    "createdAt": "Sat Oct 10 15:09:50 +0800 2026",
    "repostsCount": 11,
    "commentsCount": 209,
    "attitudesCount": 846,
    "source": "微博VLOG博主 微博2019十大影响力数码大V",
    "url": "https://m.weibo.cn/detail/5352488603749356",
    "scrapedAt": "2026-10-10T09:17:25.432Z"
  }
]
```

### Key output fields

| Field | Type | Description |
|---|---|---|
| `keyword` | string | The search term that matched this post (useful when running multiple keywords) |
| `authorName` | string | Display name of the posting account |
| `authorId` | integer | Weibo's internal numeric ID for the author |
| `text` | string | Full post text, including hashtags, as written |
| `createdAt` | string | Original post timestamp, as Weibo formats it |
| `repostsCount` | integer | Number of reposts at scrape time |
| `commentsCount` | integer | Number of comments at scrape time |
| `attitudesCount` | integer | Number of likes ("attitudes") at scrape time |
| `source` | string | Client or account label Weibo shows under the post (device, verified status label, etc.) |
| `url` | string | Direct link to the post |
| `scrapedAt` | string | ISO timestamp the actor collected this record |

### Pricing

Pay-per-event, charged only for posts actually returned:

| Event | Price |
|---|---|
| Post scraped | $0.005 per post |

1,000 posts cost $5.00. There is no separate charge for the search request itself, only for posts returned.

### What makes this richer than the competition

Weibo scraping is a crowded category on the Store. `sian.agency/weibo-scraper` is the largest at 1,863 users in the last 30 days, and `zhorex/weibo-scraper` ("Hot Search, Posts, Comments & Creator Feeds") follows with 427; both cover a broader surface (hot search boards, full comment threads, creator feed crawling) and are built for teams that need the whole Weibo surface area. This actor is deliberately narrower: pure keyword search, returning the engagement numbers needed to judge whether a topic is actually trending, with no login step and no need to configure comment-depth or feed-crawl options. For a pipeline that only needs "what is Weibo saying about X right now, and how much traction does it have," this is a faster, simpler integration than a full-surface scraper.

### Notes & limitations

- This actor scrapes Weibo's public **search** results only; it does not log in, so it cannot reach private accounts or posts restricted to followers.
- Engagement counts (`repostsCount`, `commentsCount`, `attitudesCount`) are a snapshot at scrape time; Weibo posts keep accumulating engagement after the run, so re-running later on the same post will show higher numbers.
- Result ordering follows Weibo's own search ranking (a mix of relevance and recency), not purely chronological order.
- Very broad single-character or extremely common keywords can return a wide mix of unrelated posts, since the match is on Weibo's own search index, not a strict phrase filter.
- Mixed Chinese/English keywords are supported, since the actor passes the term through to Weibo's search as-is.
- `text` is returned exactly as written by the author, including embedded hashtags (`#topic#`) and any trailing "全文" ("full text") marker Weibo itself shows for posts it has truncated in the search preview.
- There is no built-in date-range filter; if you need posts from a specific window, filter the output by `createdAt` after the run, or narrow the keyword to a more specific phrase that naturally limits results to a recent event.

### FAQ

**Do I need a Weibo account or API key?**
No. The actor reads Weibo's public search results directly; no login or app credentials are required.

**Can I search in English or does it have to be Chinese?**
Both work. Weibo's own search handles English brand/product names (like "iphone") as well as Chinese terms.

**How many posts can I pull per keyword?**
Up to 200 per keyword in a single run via `maxItems`. For more than 200, run the actor again or schedule repeated runs.

**Does it return comments on the posts, or just the posts themselves?**
Just the posts matching the keyword search, with their engagement counts. It does not expand into comment threads.

**Can I track a hashtag over time?**
Yes. Scheduling this actor daily against the same keyword and comparing `attitudesCount`/`commentsCount` growth is a common way to track a hashtag's momentum.

**What does `source` mean in the output?**
It is the label Weibo itself displays under a post, typically the posting client or an account badge (e.g. a verified-influencer label); it comes straight from Weibo, not from this actor.

### For AI Agents & LLM Apps

This actor is available over the Apify MCP server (`mcp.apify.com`) for direct use from Claude, Cursor or any MCP-compatible agent, and over the plain REST API for scripted pipelines.

Synchronous call that returns dataset items directly, no polling required:

```bash
curl "https://api.apify.com/v2/acts/gio21~weibo-search-scraper/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"keyword": "iphone", "maxItems": 20}'
```

### Disclaimer

This actor is not affiliated with, endorsed by, or sponsored by Sina Weibo Corp. "Weibo" is a trademark of its respective owner. The actor only collects data that is publicly visible on Weibo's own search results at the time of the run.

### SEO Keywords

Weibo scraper, Weibo search API, Sina Weibo data, Weibo keyword monitoring, Chinese social media scraper, Weibo post scraper.

# Actor input Schema

## `keyword` (type: `string`):

Search term to look up on Weibo, e.g. "iphone".

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

Optional: several search terms at once. Results are split across them.

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

Maximum number of posts to return per keyword (paginates as needed).

## Actor input object example

```json
{
  "keyword": "iphone",
  "maxItems": 20
}
```

# 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 = {
    "keyword": "iphone",
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("gio21/weibo-search-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 = {
    "keyword": "iphone",
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("gio21/weibo-search-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 '{
  "keyword": "iphone",
  "maxItems": 20
}' |
apify call gio21/weibo-search-scraper --silent --output-dataset

```

## MCP server setup

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