# Bilibili Huahuo Scraper 花火 \[From $4] Creator Prices & Audience (`memo23/bilibili-huahuo-creator-scraper`) Actor

\[From $4 per 1000 rows] Bilibili's creator marketplace (Huahuo 花火) as data: search creators by name or content with quoted prices per cooperation type, CPM, median plays and interaction rate; full profiles with audience demographics and growth. Creators $4, profiles $30 per 1,000.

- **URL**: https://apify.com/memo23/bilibili-huahuo-creator-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 1 total users, 1 monthly users, 85.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 creators

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

## Bilibili Huahuo Scraper: Creator Prices, Audience & Rankings

**Huahuo (花火)** is Bilibili's official creator marketplace, where brands book creators (UP主) for sponsored videos. This Actor returns what the marketplace shows an advertiser: creators with their **quoted prices** per cooperation type, CPM, median plays and interaction rate, and on request the full profile with follower and viewer demographics, follower growth, sponsored videos and similar creators. No Bilibili or advertiser account needed.

### What it does

| Input | You get | Row type |
|-------|---------|----------|
| Creator name, UID or content keyword | Matching creators with prices, CPM, median plays, interaction rate | `creator` |
| Ranking (Top tier, High value) | The marketplace's ranking, 50 creators with rank | `creator` |
| Creator UID or space link | The full marketplace profile | `creator-detail` |
| `includeDetails` | The full profile for every creator found | `creator-detail` |
| `includeFollowerTrend`, `includeCommercialVideos`, `includeSimilarCreators`, `includePerformance` | Insight blocks attached to the profile row | on `creator-detail` |
| `includeVideoRanking` | The marketplace's top-performing videos with the creator and prices | `ranked-video` |

The dataset has **Creators** and **Ranked videos** views.

### How It Works

<p align="center">
  <img src="https://api.apify.com/v2/key-value-stores/o5Rc0Pvv7TV4jrLFj/records/how-it-works-bilibili-huahuo.png" alt="How the Bilibili Huahuo scraper works" width="900" />
</p>

### Why this one

- **Real quotes.** The price each creator lists for a custom video, an embedded placement, a direct post or a repost, in RMB.
- **Value for money.** CPM and median plays next to the price, so creators can be compared on cost per view.
- **Who watches.** Gender, age, region, city tier and device splits, for followers and for actual viewers.
- **Is the growth real.** Follower growth over 7 to 365 days and the daily follower count for a year.
- **Proof of sponsored work.** The creator's sponsored videos with plays and the industries they worked with.
- **No account.** The marketplace normally needs an approved advertiser login.

### Input

| Field | Type | Description |
|-------|------|-------------|
| `searchKeywords` | `string[]` | Creator nicknames (full or partial) or UIDs. |
| `contentKeywords` | `string[]` | What the creators' videos are about. |
| `minFollowers` / `maxFollowers` | integer | Follower range. |
| `minPriceCny` / `maxPriceCny` | integer | Standard quote range in RMB. |
| `industry` | string | `general` (default), `gaming`, `beauty`, `digital`, `automotive`, `performance`, `food`, `internet`. |
| `sortBy` | string | `default`, `followers`, `medianPlays`, `interactionRate`. |
| `maxCreatorsPerSearch` | integer | Default 40, minimum 8. |
| `creators` | `string[]` | UIDs or `space.bilibili.com` links for a full profile. |
| `rankings` / `rankingCategory` | `string[]` / string | `topTier`, `highValue`; category in Chinese, empty for overall. |
| `includeVideoRanking` / `videoRankingCategory` / `maxRankedVideos` | boolean / string / integer | The video ranking. Default 30 videos. |
| `includeDetails` | boolean | Full profile for every creator from search and rankings. |
| `includeFollowerTrend`, `includeCommercialVideos`, `includeSimilarCreators`, `includePerformance` | boolean | Insight blocks on the profile row. Turning one on also returns the profile. |
| `maxItems` | integer | Cap on creators from search and rankings. Default 500. |

#### Example: food creators under a budget

```json
{
  "contentKeywords": ["咖啡"],
  "minFollowers": 100000,
  "maxPriceCny": 50000,
  "sortBy": "medianPlays",
  "maxCreatorsPerSearch": 60
}
```

#### Example: vet one creator before booking

```json
{
  "creators": ["https://space.bilibili.com/688489329"],
  "includeFollowerTrend": true,
  "includeCommercialVideos": true,
  "includePerformance": true
}
```

#### Example: the top-tier ranking with full profiles

```json
{
  "rankings": ["topTier"],
  "includeDetails": true
}
```

### Output

Creator:

```json
{
  "type": "creator",
  "uid": "688489329",
  "url": "https://space.bilibili.com/688489329",
  "nickname": "混饭达人",
  "followers": 1229433,
  "followerGrowth": 42079,
  "followerGrowthRatePct": 3.54,
  "averagePlays": 2695774,
  "medianPlays": 2446757,
  "interactionRate": 10.44,
  "tags": ["影娱杂谈", "生活Vlog"],
  "isIndependent": true,
  "prices": [
    { "cooperationType": "custom video", "cooperationTypeCn": "定制视频", "priceCny": 72000, "discountPriceCny": null },
    { "cooperationType": "embedded video", "cooperationTypeCn": "植入视频", "priceCny": 35000, "discountPriceCny": null }
  ],
  "lowestPriceCny": 35000,
  "source": "ranking",
  "ranking": "topTier",
  "rank": 1
}
```

A `creator-detail` row has the same fields plus `bio`, `totalLikes`, `videoCount`, `creatorType`, `acceptsOrders`, `respondsQuickly`, `industriesWorkedWith`, `cooperationModes`, `averageLikes`, `averageComments`, `averageSaves`, `averageDanmaku`, `followerGender`, `followerAge`, `followerRegions`, `followerCityTiers`, `followerDevices`, `followerInterests`, `viewerGender`, `viewerAge`, `viewerRegions`, `viewerFollowerSplit`, `videoLengths`, `marketplaceRank` and `topVideo`. Each split is a list of `{ "group", "percent" }`.

Insight blocks on the profile row:

- `followerTrend`: `last7Days` … `last365Days` (`followers` gained, `ratePct`) and `daily[]` (`date`, `followers`).
- `commercialVideos[]`: `bvid`, `url`, `title`, `plays`, `likes`, `comments`, `danmaku`, `interactionRatePct`, `cooperationType`, `industries`.
- `similarCreators[]`: `uid`, `url`, `nickname`, `followers`, `tags`, `lowestPriceCny`, `prices`.
- `performance`: `videos`, `commercialOrders`, `popularVideos`, comparisons with peers, and splits by category, length and traffic source.

A `ranked-video` row has `rank`, `bvid`, `url`, `title`, `plays`, `likes`, `comments`, `danmaku`, `interactionRatePct`, `industries`, `publishedAt` and the creator's `creatorUid`, `creatorNickname`, `creatorFollowers`, `creatorPrices`.

### Pricing

Pay per event. You pay for the rows you receive.

| Event | When | Price |
|-------|------|-------|
| Actor start | Once per run | $0.005 |
| Creator | Each creator from search or a ranking | $0.004 |
| Creator profile | Each full profile row | $0.03 |
| Creator insight | Each insight block the marketplace returned for a profile | $0.02 |
| Creator not listed | Each UID you gave that is not on the marketplace | $0.01 |
| Ranked video | Each row of the video ranking | $0.004 |

100 creators with prices cost $0.40. One creator vetted in full (profile and four insight blocks) costs $0.11. Set a maximum cost per run in the run options and the Actor stops there with what it has.

### FAQ

**Do I need a Bilibili account or an advertiser login?**
No.

**Are the prices real?**
They are the quotes the creator lists on the marketplace, in RMB, before any negotiation or agency fee.

**Does it return contact details?**
It returns the creator's public bio, where many list a business email. The private contact fields the marketplace keeps for logged-in advertisers are not returned.

**Why do some creators have no category, region or CPM?**
Rows from a ranking carry fewer fields than rows from search. Turn on `includeDetails` to fill them.

**Why is an insight block null?**
The marketplace has nothing for that creator, for example no sponsored videos yet. A null block is not charged.

**Are category names in Chinese?**
Yes. The marketplace is Chinese; names, tags, categories and regions are returned as it shows them. Cooperation types also come in English.

**Which creators are covered?**
Creators who joined the marketplace, which is most creators who take sponsored work. A UID that is not on it returns a small `creator-not-listed` row (`listed: false`), billed at $0.01, so a checked list is part of what you get.

### 🤖 For AI Agents & LLM Apps

**Purpose:** Bilibili creator marketplace data: creators with quoted prices and performance, full profiles with audience demographics, follower growth, sponsored videos, rankings.

**Minimal input:** `{"contentKeywords": ["咖啡"], "maxCreatorsPerSearch": 20}`

**Output:** rows with `type` = `creator` | `creator-detail` | `ranked-video` | `creator-not-listed`. Creators: uid, url, nickname, followers, medianPlays, interactionRate, prices\[], lowestPriceCny, cpmCustomCny, category, region. Profiles add demographics and the insight blocks `followerTrend`, `commercialVideos`, `similarCreators`, `performance`.

**Behaviors to know:** prices are in RMB. Keywords work best in Chinese. `maxItems` caps creators from search and rankings. Turning on any insight block also returns the profile row. Free-plan runs return up to 20 creators.

### ⚠️ Disclaimer

This Actor collects data for market research. It is not affiliated with, endorsed by, or sponsored by Bilibili. You are responsible for using the data in line with applicable laws and Bilibili's terms, including rules on personal data.

### SEO Keywords

bilibili huahuo scraper, bilibili creator marketplace, bilibili kol prices, bilibili influencer pricing, bilibili up主 报价, 花火平台 数据, bilibili kol search, bilibili influencer marketing, bilibili creator analytics, bilibili audience demographics, bilibili follower growth, china influencer marketing, bilibili sponsored videos, bilibili creator ranking

# Actor input Schema

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

Find creators by nickname (full or partial) or by Bilibili UID. A page holds 20 creators.

## `contentKeywords` (type: `array`):

Find creators by what their videos are about, for example 咖啡 or 露营.

## `minFollowers` (type: `integer`):

Only creators with at least this many followers.

## `maxFollowers` (type: `integer`):

Only creators with at most this many followers.

## `minPriceCny` (type: `integer`):

Only creators whose standard quote is at least this much, in RMB.

## `maxPriceCny` (type: `integer`):

Only creators whose standard quote is at most this much, in RMB.

## `industry` (type: `string`):

The marketplace's industry view. It changes which metrics the search ranks by.

## `sortBy` (type: `string`):

Order of the search results.

## `maxCreatorsPerSearch` (type: `integer`):

Upper limit of creators for each keyword (minimum 8).

## `creators` (type: `array`):

Bilibili UIDs or space links (https://space.bilibili.com/123). Each returns the creator's full marketplace profile.

## `rankings` (type: `array`):

The marketplace's own rankings, 50 creators each. Top tier is the leading creators; High value is the best median plays for the price.

## `rankingCategory` (type: `string`):

Content category of the creator ranking, in Chinese as the marketplace names it (for example 美食, 游戏, 知识). Empty means the overall ranking.

## `includeVideoRanking` (type: `boolean`):

Return the marketplace's ranking of top-performing videos, with the creator and their prices.

## `videoRankingCategory` (type: `string`):

Industry of the video ranking, in Chinese as the marketplace names it. Empty means all industries.

## `maxRankedVideos` (type: `integer`):

Upper limit of ranked videos (minimum 8). A page holds 15.

## `includeDetails` (type: `boolean`):

For every creator found by search or ranking, also return the full profile row: follower and viewer demographics, averages, industries worked with. Billed per profile.

## `includeFollowerTrend` (type: `boolean`):

Follower growth over 7, 30, 90, 180 and 365 days and the daily follower count for the past year.

## `includeCommercialVideos` (type: `boolean`):

The creator's representative sponsored videos with plays, likes, cooperation type and industry.

## `includeSimilarCreators` (type: `boolean`):

Creators with similar content, each with followers and prices.

## `includePerformance` (type: `boolean`):

Videos and sponsored orders in the period, how the creator compares with peers, and the split by category, length and traffic source.

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

The run stops collecting creators from search and rankings when it reaches this number.

## Actor input object example

```json
{
  "searchKeywords": [
    "美食"
  ],
  "industry": "general",
  "sortBy": "default",
  "maxCreatorsPerSearch": 40,
  "includeVideoRanking": false,
  "maxRankedVideos": 30,
  "includeDetails": false,
  "includeFollowerTrend": false,
  "includeCommercialVideos": false,
  "includeSimilarCreators": false,
  "includePerformance": false,
  "maxItems": 500
}
```

# Actor output Schema

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

Rows told apart by `type`: `creator`, `creator-detail`, `ranked-video` and `creator-not-listed`.

# 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 = {
    "searchKeywords": [
        "美食"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/bilibili-huahuo-creator-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 = { "searchKeywords": ["美食"] }

# Run the Actor and wait for it to finish
run = client.actor("memo23/bilibili-huahuo-creator-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 '{
  "searchKeywords": [
    "美食"
  ]
}' |
apify call memo23/bilibili-huahuo-creator-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/bilibili-huahuo-creator-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/j9Msidh6XZt7fyTJO/builds/jO3G7KNzJtgC1DNat/openapi.json
