# Weibo Hot Search Scraper (`kjames2001/weibo-hot-search`) Actor

Scrape Weibo (微博) trending hot search topics in real-time. Get trending keywords, engagement counts, labels (新/热/沸), and rankings. No login required — uses public API.

- **URL**: https://apify.com/kjames2001/weibo-hot-search.md
- **Developed by:** [James Huang](https://apify.com/kjames2001) (community)
- **Categories:** Social media, News
- **Stats:** 2 total users, 0 monthly users, 83.3% 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Hot Search Scraper | 微博热搜 & Chinese Trending Topics API

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue)](https://apify.com/store)
[![Weibo](https://img.shields.io/badge/Weibo-微博-red)](https://weibo.com)
[![Node.js 20](https://img.shields.io/badge/Node.js-20-green)](https://nodejs.org)
[![Pay Per Event](https://img.shields.io/badge/Pricing-Pay_per_Event-orange)](https://apify.com/pricing)

> Scrape **Weibo (微博) trending hot search topics** in real-time. Get the top 50 **微博热搜榜** (Weibo hot search ranking) with trending keywords, engagement counts, labels (新/热/沸/爆), categories, and direct search URLs. The most reliable **weibo scraper** for **chinese social media trends** and **china market research** — no login required.

### Features

- 🔥 **Real-time trending topics** — fetch the current Weibo hot search list (微博热搜榜) on every run
- 📊 **Rich metadata per topic** — engagement counts (`num`), labels (新/热/沸/爆), categories (综艺/体育/财经…), ranking position, and topic flags
- 🔗 **Direct search URLs** — each topic includes a clickable `s.weibo.com` search URL
- 🏷️ **Promoted topics included** — government/promoted topics (`hotgovs`) are captured separately with `isPromoted: true`
- 🚫 **No login required** — uses the public `ajax/side/hotSearch` endpoint
- ⚡ **Fast & lightweight** — single API call, no browser, no pagination needed
- 🌐 **Proxy support** — optional Apify proxy configuration for access from outside China
- 📱 **Structured JSON output** — clean, ready for dashboards, ML pipelines, or databases

### Use Cases

- **Social media monitoring** — track what's trending on China's largest microblogging platform
- **Chinese market research** — understand real-time public discourse and trending topics in China
- **News aggregation** — supplement news feeds with Weibo trending stories
- **Sentiment analysis pipelines** — feed trending keywords into downstream sentiment analysis
- **Brand monitoring** — check if your brand or product appears in Weibo hot search
- **Content discovery** — find viral topics for content creation or curation
- **Academic research** — study Chinese social media trends and public opinion dynamics
- **Competitive intelligence** — monitor trending topics in your industry on Chinese social media
- **SEO & marketing** — discover trending keywords for Chinese market campaigns
- **Crisis detection** — catch negative trending topics about your brand early

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `proxyConfiguration` | object | No | `{ useApifyProxy: true }` | Apify proxy configuration. Use residential proxies if scraping from outside China. The public API works without proxy from most locations. |

### Output Fields

Each dataset item represents one hot search topic with the following fields:

| Field | Type | Description |
|-------|------|-------------|
| `rank` | integer | Ranking position on the hot search list (0-based for realtime, appended for promoted) |
| `realpos` | integer\|null | Real position as reported by Weibo (may differ from rank for promoted topics) |
| `word` | string | Topic text / search keyword |
| `wordScheme` | string | Hashtag-formatted topic (e.g. `#话题#`) |
| `note` | string | Topic description or note text |
| `num` | integer | Engagement count (search/discussion volume) |
| `label` | string | Label tag (新=New, 热=Hot, 沸=Boiling, 爆=Explosive, etc.) |
| `iconDesc` | string | Icon description text |
| `iconDescColor` | string | Icon color (hex, e.g. `#ff3852`) |
| `category` | string | Topic category (综艺/体育/财经/社会/etc.) |
| `flag` | integer | Weibo internal flag (1=hot, 2=new, etc.) |
| `topicFlag` | integer | Weibo topic flag |
| `url` | string | Direct Weibo search URL for this topic |
| `isPromoted` | boolean | `true` if this is a promoted/government topic, `false` for organic hot search |
| `scrapedAt` | string | ISO timestamp of when the data was scraped |

### How It Works

1. **Single API call** — The actor calls Weibo's public `ajax/side/hotSearch` endpoint
2. **Parse response** — Extracts organic hot search (`data.realtime`) and promoted topics (`data.hotgovs`)
3. **Structure & enrich** — Each topic is enriched with rank position, category, label, and direct search URL
4. **JSON output** — Results saved to Apify dataset, ready for consumption

### Pricing

This Actor uses **Pay-Per-Event (PPE)** pricing:

| Event | Price | Description |
|-------|-------|-------------|
| `actor-start` | $0.005 | Charged once when the Actor starts |
| `topic-scraped` | $0.002 | Charged per hot search topic scraped |

**Typical cost:** A single run with ~50 trending topics costs approximately **$0.005 + (50 × $0.002) = $0.105**.

### Technical Details

- **API endpoint:** `https://weibo.com/ajax/side/hotSearch` (Weibo's public AJAX hot search endpoint)
- **No authentication:** The API works without login cookies or tokens
- **Headers required:** `User-Agent` (Chrome desktop), `Referer: https://weibo.com/`, `Accept: application/json`
- **Response format:** JSON with `data.realtime` (organic hot search) and `data.hotgovs` (promoted topics)
- **Runtime:** Node.js 20 on Apify platform
- **SDK:** Apify SDK v3 + Crawlee v3
- **Execution time:** Typically < 5 seconds per run

### Why Use This vs Alternatives?

| Feature | This Actor | Weibo Scraper (posts) | Weibo Hot Search Tracker | Chinese Brand Monitor |
|---|---|---|---|---|
| Hot search ranking (微博热搜) | ✅ | ❌ | ✅ | ❌ |
| 50 trending topics per run | ✅ | ❌ | ✅ | ❌ |
| Heat values & labels | ✅ | ❌ | ✅ | ❌ |
| Category classification | ✅ | ❌ | ❌ | ✅ |
| Promoted topic detection | ✅ | ❌ | ❌ | ❌ |
| No login required | ✅ | ❌ | ✅ | ✅ |
| Post/comment scraping | ❌ | ✅ | ❌ | ✅ |
| Cross-platform | ❌ | ❌ | ❌ | ✅ |
| Single API call (fast) | ✅ | ❌ | ✅ | ❌ |

### FAQ

<details>
<summary><b>How often does the Weibo hot search update?</b></summary>
Weibo's hot search list updates in real-time, typically every few minutes. Run the actor periodically (e.g., every 15-30 minutes) for continuous monitoring.
</details>

<details>
<summary><b>What do the labels (新/热/沸/爆) mean?</b></summary>
新 = New (recently trending), 热 = Hot, 沸 = Boiling (very hot), 爆 = Explosive (highest engagement). These are Weibo's official heat-level indicators.
</details>

<details>
<summary><b>What are promoted topics?</b></summary>
Weibo's hot search includes both organic trending topics and promoted/government topics. This actor captures both, with `isPromoted: true` for promoted entries so you can filter them.
</details>

<details>
<summary><b>Do I need a proxy?</b></summary>
The public API works without proxy from most locations. If you experience access issues from outside China, use residential proxies via Apify's proxy configuration.
</details>

<details>
<summary><b>Can I use this for sentiment analysis?</b></summary>
Yes. Use the `word` (topic keyword) field as input to a sentiment analysis actor, or pair with the Weibo Scraper to fetch posts about each trending topic for deeper analysis.
</details>

### Keywords

`weibo hot search` · `微博热搜` · `weibo trending` · `微博热搜榜` · `sina weibo scraper` · `chinese social media trends` · `weibo api` · `weibo data extraction` · `weibo scraper` · `sina weibo hot search` · `weibo trends api` · `weibo trending topics` · `微博趋势` · `chinese trending topics` · `weibo hot search api` · `china market research` · `weibo monitoring` · `chinese social listening` · `weibo public opinion` · `微博舆情` · `weibo rank tracker` · `weibo heat value` · `china social media monitoring` · `weibo real-time trends` · `微博实时热搜`

# Actor input Schema

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

Apify proxy configuration. Use residential proxies if scraping from outside China.

## Actor input object example

```json
{
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
````

# 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 = {
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("kjames2001/weibo-hot-search").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 = { "proxyConfiguration": { "useApifyProxy": True } }

# Run the Actor and wait for it to finish
run = client.actor("kjames2001/weibo-hot-search").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call kjames2001/weibo-hot-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=kjames2001/weibo-hot-search",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Weibo Hot Search Scraper",
        "description": "Scrape Weibo (微博) trending hot search topics in real-time. Get trending keywords, engagement counts, labels (新/热/沸), and rankings. No login required — uses public API.",
        "version": "0.1",
        "x-build-id": "evwhCtqBrchR5hHfB"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/kjames2001~weibo-hot-search/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-kjames2001-weibo-hot-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/kjames2001~weibo-hot-search/runs": {
            "post": {
                "operationId": "runs-sync-kjames2001-weibo-hot-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/kjames2001~weibo-hot-search/run-sync": {
            "post": {
                "operationId": "run-sync-kjames2001-weibo-hot-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Apify proxy configuration. Use residential proxies if scraping from outside China."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
