# Weibo Trends Scraper – Hot Search & Public Profiles (`scrapingmonkey/weibo-trends-scraper`) Actor

Track Weibo Hot Search and Hot Band rankings, capture topic heat and labels, enrich known public UIDs, and monitor new or changed trends.

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

## Pricing

from $0.65 / 1,000 trend 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Weibo Trends Scraper - Hot Search, Topic Rankings and Public Profiles

Collect current Weibo hot-search boards, ranked topic bands, public profile metadata by UID, and scheduled trend changes without a Weibo account or browser.

- Extract two complementary public Weibo trend boards
- Preserve rank, heat, labels, flags, icons, and searchable topic URLs
- Batch public profile IDs and URLs when the endpoint is available to the residential session
- Monitor current topics and emit only new or changed rows
- Keep the product honest: post search, timelines, comments, reposts, and follower lists are not advertised
- Skip blocked or unavailable targets without creating paid error records
- Use Apify Residential Proxy automatically; no cookies, account, token, browser, or proxy setup is required
- Export results to JSON, CSV, Excel, XML, or access them through the Apify API

### What can you do with this Actor?

| Mode | Input | Output | Best for |
| --- | --- | --- | --- |
| `trends` | No target required | Hot search plus hot band rows | Broad real-time trend snapshots |
| `hotSearch` | No target required | Current hot-search ranking | Newsroom and brand monitoring |
| `hotBand` | No target required | Public ranked topic band | Topic discovery and comparison |
| `profiles` | Numeric UIDs or profile URLs | Public profile metadata | Enriching known Weibo identities |
| `monitor` | A stable monitor key | Only new or changed current topics | Scheduled alerts and trend pipelines |

One run uses one selected mode. `trends` combines both boards in a single Results table. Profile inputs can be batched, but profile access is more IP-sensitive than the trend endpoints.

### Quick start

1. Open the Actor and click **Try for free**.
2. Keep the default `trends` mode.
3. Set the maximum number of rows per board if needed.
4. Click **Start**.
5. Preview the single **Results** table or download it in your preferred format.

The default run requires no target and returns current ranked topics.

### Input examples

#### Collect both trend boards

```json
{
  "mode": "trends",
  "maxItems": 100
}
```

`maxItems` applies separately to each selected board. One dataset row represents one topic on one board.

#### Collect hot search only

```json
{
  "mode": "hotSearch",
  "maxItems": 50
}
```

#### Collect the hot topic band

```json
{
  "mode": "hotBand",
  "maxItems": 100
}
```

#### Extract public profiles

```json
{
  "mode": "profiles",
  "userIds": ["1195230310"],
  "profileUrls": ["https://weibo.com/u/2803301701"],
  "maxConcurrency": 2
}
```

#### Monitor current trend changes

```json
{
  "mode": "monitor",
  "maxItems": 100,
  "monitorMode": "newAndChanged",
  "monitorKey": "daily-weibo-trends"
}
```

### Complete output examples

All trend and profile records share the same fixed set of **47 top-level fields**. Non-applicable fields are returned as `null` or empty arrays, so users never need a separate “All fields” view. `engagementTotals`, `tabs`, and optional `raw` preserve source-controlled public subfields.

#### Complete trend row - 47 top-level fields

```json
{
  "recordType": "trend",
  "sourceMode": "hotSearch",
  "sourceUrl": "https://weibo.com/ajax/side/hotSearch",
  "id": "hotSearch:人工智能",
  "word": "人工智能",
  "note": "人工智能",
  "wordScheme": "#人工智能#",
  "searchUrl": "https://s.weibo.com/weibo?q=%23%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%23",
  "rank": 1,
  "realPosition": 1,
  "heat": 968420,
  "label": "热",
  "category": "科技",
  "flag": 2,
  "topicFlag": 1,
  "isNew": false,
  "isHot": true,
  "onboardUnix": 1786586400,
  "onboardAt": "2026-08-13T02:00:00+00:00",
  "iconUrl": "https://simg.s.weibo.com/public-icon.png",
  "iconDescription": "热",
  "iconColor": "#ff8200",
  "screenName": null,
  "profileUrl": null,
  "description": null,
  "location": null,
  "gender": null,
  "verified": null,
  "verifiedType": null,
  "verifiedReason": null,
  "followersCount": null,
  "followersText": null,
  "followingCount": null,
  "statusesCount": null,
  "profileImageUrl": null,
  "avatarLargeUrl": null,
  "avatarHdUrl": null,
  "coverImageUrl": null,
  "membershipRank": null,
  "membershipType": null,
  "engagementTotals": null,
  "tabs": null,
  "monitorStatus": null,
  "changedFields": null,
  "previousCapturedAt": null,
  "capturedAt": "2026-08-13T10:20:00.000000+00:00",
  "raw": null
}
```

#### Complete profile row - 47 top-level fields

```json
{
  "recordType": "profile",
  "sourceMode": "profiles",
  "sourceUrl": "https://weibo.com/ajax/profile/info?uid=1195230310",
  "id": "1195230310",
  "word": null,
  "note": null,
  "wordScheme": null,
  "searchUrl": null,
  "rank": null,
  "realPosition": null,
  "heat": null,
  "label": null,
  "category": null,
  "flag": null,
  "topicFlag": null,
  "isNew": null,
  "isHot": null,
  "onboardUnix": null,
  "onboardAt": null,
  "iconUrl": null,
  "iconDescription": null,
  "iconColor": null,
  "screenName": "何炅",
  "profileUrl": "https://weibo.com/u/1195230310",
  "description": "",
  "location": "北京",
  "gender": "m",
  "verified": true,
  "verifiedType": 0,
  "verifiedReason": "湖南卫视主持人",
  "followersCount": 117053424,
  "followersText": "1.17亿",
  "followingCount": 940,
  "statusesCount": 9803,
  "profileImageUrl": "https://tvax.example/profile.jpg",
  "avatarLargeUrl": "https://tvax.example/avatar-large.jpg",
  "avatarHdUrl": "https://tvax.example/avatar-hd.jpg",
  "coverImageUrl": "https://wx.example/cover.jpg",
  "membershipRank": 7,
  "membershipType": 12,
  "engagementTotals": {
    "total_cnt_format": "6.96亿",
    "comment_cnt": "54,082,041",
    "repost_cnt": "44,882,458",
    "like_cnt": "596,559,592",
    "total_cnt": "695,524,091"
  },
  "tabs": [
    {
      "name": "feed",
      "tabName": "微博"
    }
  ],
  "monitorStatus": null,
  "changedFields": null,
  "previousCapturedAt": null,
  "capturedAt": "2026-08-13T10:20:00.000000+00:00",
  "raw": null
}
```

When monitoring is enabled, `monitorStatus` is `new` or `changed`, `changedFields` contains changed top-level keys, and `previousCapturedAt` contains the prior observation. `raw` is `null` unless `includeRaw` is enabled. Blocked or unavailable profile inputs do not emit error rows and are not charged; their categories appear in `RUN_SUMMARY`.

### What data can you extract?

| Category | Fields |
| --- | --- |
| Record and source | `recordType`, `sourceMode`, `sourceUrl`, `id`, `capturedAt` |
| Topic identity | `word`, `note`, `wordScheme`, `searchUrl` |
| Ranking and heat | `rank`, `realPosition`, `heat`, `label`, `category`, `flag`, `topicFlag`, `isNew`, `isHot` |
| Topic timing and icon | `onboardUnix`, `onboardAt`, `iconUrl`, `iconDescription`, `iconColor` |
| Profile identity | `screenName`, `profileUrl`, `description`, `location`, `gender` |
| Verification | `verified`, `verifiedType`, `verifiedReason` |
| Public counts | `followersCount`, `followersText`, `followingCount`, `statusesCount`, `engagementTotals` |
| Profile media and membership | `profileImageUrl`, `avatarLargeUrl`, `avatarHdUrl`, `coverImageUrl`, `membershipRank`, `membershipType`, `tabs` |
| Monitoring | `monitorStatus`, `changedFields`, `previousCapturedAt` |
| Optional source data | `raw` |

### Input parameters

| Parameter | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `mode` | string | Yes | `trends` | `trends`, `hotSearch`, `hotBand`, `profiles`, or `monitor` |
| `userIds` | string\[] | In profiles mode | - | Numeric public Weibo UIDs |
| `profileUrls` | string\[] | In profiles mode | - | Public profile URLs containing a numeric UID |
| `maxItems` | integer | No | `100` | Maximum rows per selected board, from 1 to 10,000 |
| `monitorMode` | string | No | `off` | `off`, `onlyNew`, or `newAndChanged` |
| `monitorKey` | string | No | `default` | Namespace for persistent comparison state |
| `maxConcurrency` | integer | No | `3` | Concurrent input jobs, from 1 to 10 |
| `includeRaw` | boolean | No | `false` | Include a sanitized public source object |

### Use cases

#### Newsroom and OSINT trend monitoring

Schedule combined trend snapshots and route new or changed topics to an alerting or research workflow.

#### China-market brand research

Track topic rank, heat, flags, labels, and search URLs, then aggregate changes in a spreadsheet or warehouse.

#### Public identity enrichment

Resolve known numeric UIDs into public names, verification metadata, counts, avatars, and profile URLs when the public endpoint is available.

#### Trend-board comparison

Collect `hotSearch` and `hotBand` in one run and compare overlapping phrases by `sourceMode`, rank, and heat.

### Performance and cost

The Actor uses pay-per-event billing when configured on Apify, with separate `trend-result` and `profile-result` events. Consult the Actor's **Pricing** tab for current rates.

Trend modes are lightweight because a single public JSON response produces many rows. Profile mode uses one isolated request workflow per UID and may require residential rotation, so its reliability and cost profile differ. Exact runtime depends on source latency, IP acceptance, target count, retries, and concurrency.

### API usage

Replace `YOUR_USERNAME` with the published Actor owner name.

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/YOUR_USERNAME~weibo-trends-public-profiles/runs?token=APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "trends",
    "maxItems": 100
  }'
```

Results can flow through Apify API clients, schedules, webhooks, Google Sheets, Make, Zapier, n8n, Airbyte, and data warehouses.

### Best for / not for

**Best for:** Weibo hot-search snapshots, ranked topic monitoring, China-market research, newsroom alerts, and enrichment of known public UIDs.

**Not for:** keyword post search, user timelines, post details, comments, reposts, follower/following identities, private data, or account automation.

### Limits and good to know

- One mode is selected per run; `trends` combines both supported boards.
- `maxItems` applies to each board, not to the combined run total.
- Public profile access is strongly IP-sensitive. The Actor rotates residential sessions, but Weibo can still reject every tested exit.
- A blocked profile is not treated as an empty or successful result and is never emitted as a paid error row.
- Current monitor output covers topics still present in the fetched boards; it does not emit a synthetic row for a topic that disappeared.
- Every successful row contains all 47 top-level keys; missing values use `null` or empty arrays.
- The Actor uses Apify Residential Proxy automatically and does not expose proxy configuration in the input.

### Frequently asked questions

#### What input should I provide?

Trend modes require no target. Profile mode accepts numeric UIDs such as `1195230310` or public URLs containing a numeric UID.

#### How many results can I extract?

You can request up to 10,000 rows per board, but each public Weibo board controls how many current topics it exposes.

#### Why did a profile return no dataset row?

The public profile endpoint can return a guest/IP block even while trend endpoints work. The Actor retries with new residential sessions and records the final category in `RUN_SUMMARY`; it does not charge for the failed target.

#### Why are some fields empty?

Trend and profile rows share one schema. Profile fields are `null` on trend rows, trend fields are `null` on profile rows, and Weibo may omit optional public metadata.

#### Can I process multiple profile IDs?

Yes. Add multiple values to `userIds` and `profileUrls`. Each target is isolated so one failure does not cancel successful profiles.

#### Can I schedule recurring runs?

Yes. Use Apify schedules with `monitor` mode and a stable `monitorKey`, then send new or changed rows through a webhook.

#### Do I need a Weibo account, API key, or proxy?

No account, API key, cookie, or token is required. Apify Residential Proxy is configured internally and used automatically.

### Responsible use

This Actor extracts publicly available Weibo information. Users are responsible for complying with applicable laws, privacy regulations, contractual obligations, and Weibo's terms. Weibo is a trademark of its respective owner; this Actor is not affiliated with or endorsed by Weibo.

### Support

If you encounter a problem, create an issue in the Actor's **Issues** tab. Include the run ID, selected mode, and a non-sensitive reproducible UID when relevant. Do not include cookies or account credentials.

# Actor input Schema

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

Choose whether to extract public trend boards, public profiles, or monitor trend changes.

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

Numeric public Weibo UIDs.

## `profileUrls` (type: `array`):

Public Weibo profile URLs to extract in profiles mode.

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

Maximum number of records to save from each selected trend board.

## `monitorMode` (type: `string`):

Return all records, only newly discovered records, or new and changed records.

## `monitorKey` (type: `string`):

Stable key used to keep monitoring state between scheduled runs.

## `maxConcurrency` (type: `integer`):

Maximum number of public HTTP requests processed in parallel.

## `includeRaw` (type: `boolean`):

Include sanitized source objects for advanced downstream processing.

## Actor input object example

```json
{
  "mode": "trends",
  "maxItems": 100,
  "monitorMode": "off",
  "monitorKey": "default",
  "maxConcurrency": 3,
  "includeRaw": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

All ranked trend and profile fields.

## `runSummary` (type: `string`):

Requests, transfer, failure categories, results, and charged events.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapingmonkey/weibo-trends-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("scrapingmonkey/weibo-trends-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 '{}' |
apify call scrapingmonkey/weibo-trends-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapingmonkey/weibo-trends-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/58GP5EqbkXynjsPef/builds/YlJbfuGacTlt2Irmh/openapi.json
