# Xiaohongshu Pugongying 蒲公英 KOL Scraper - Rates & Stats (`clover_folktale/pugongying-scraper`) Actor

Find Xiaohongshu (RedNote) influencers on the Pugongying (蒲公英) KOL marketplace: search bloggers by keyword, category, gender, location and followers with picture and video note rates and median reads; get blogger profiles and keyword stats. No login or cookies needed. Export JSON, CSV or Excel.

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

## Pricing

from $7.50 / 1,000 blogger rows

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

Xiaohongshu Pugongying 蒲公英 Scraper is a KOL research tool for Pugongying, the official creator marketplace of Xiaohongshu 小红书 (RedNote). Find bloggers by keyword, category, gender, location and follower range with their picture and video note quotes and performance medians, get a blogger's profile, and get keyword statistics with the typical blogger mix and price bands, all as clean, flat JSON. It is made for brands, agencies and analysts who plan influencer marketing on RedNote. No account, API keys, proxies or cookies are needed.

### What is Pugongying?

Pugongying (蒲公英) is Xiaohongshu's official creator marketplace, where brands look for bloggers and book sponsored notes. For each blogger it shows quotes for picture and video notes, typical reads and engagements, follower activity and recent notes. It also shows statistics for keywords: how many notes and bloggers cover a topic and what those bloggers charge. This Actor is an independent tool and is not affiliated with Xiaohongshu.

### What data can you get?

The Actor has three modes. Every item has a `type` field so you can tell the record types apart.

| Mode | Give it | You get | Item `type` |
|---|---|---|---|
| `search` | keyword (default 面膜), or no keyword plus at least one filter; optional category, gender, location, follower range, sort | bloggers with quotes, medians and recent notes | `blogger` |
| `blogger` | blogger user IDs or profile links | one profile per blogger with likes and saves, quotes and medians | `bloggerDetail` |
| `keyword` | keywords | one report per keyword: volumes, search index and the blogger mix | `keyword` |

Quotes are in Chinese yuan (CNY). Figures ending in `Pct` are percentages.

#### Blogger fields (search rows and profiles)

| Field | What it is |
|---|---|
| `picturePrice` | Quote in CNY for a picture note |
| `videoPrice` | Quote in CNY for a video note |
| `lowestPrice` | Lowest quote in CNY |
| `followers` | Follower count |
| `medianReads` | Median reads of regular notes |
| `medianEngagements` | Median engagements of regular notes |
| `pictureMedianReads` / `videoMedianReads` | Median reads of picture notes / video notes |
| `pictureMedianEngagements` / `videoMedianEngagements` | Median engagements of picture notes / video notes |
| `sponsoredNoteCount` | Number of sponsored notes |
| `userId` | Xiaohongshu user ID (use it as input for mode `blogger`) |
| `url` | Xiaohongshu profile link |
| `redId` | Xiaohongshu ID (小红书号) |
| `nickname` | Blogger name |
| `avatar` | Avatar image link |
| `location` | Location shown on the profile |
| `gender` | `male` or `female` |
| `categories` / `subCategories` | Content categories and sub-categories |
| `personaTags` | Persona tags (profession, family role, background) |
| `featureTags` | Content style tags |
| `industries` | Industries the blogger has worked with |
| `likesAndCollects` | Total likes and saves received (filled in profiles; `null` in search rows) |

#### Extra fields filled in search rows

These cost, rate and sponsored-note figures come with every search row, so you often do not need a separate profile request. The same keys are also present in profile records, but there they are usually `null`.

| Field | What it is |
|---|---|
| `pictureReadCost` / `videoReadCost` | Estimated cost per read of a picture / video note (CNY) |
| `estimatedVideoCpm` | Estimated cost per thousand impressions of a video note (CNY) |
| `estimatedVideoEngageCost` | Estimated cost per engagement of a video note (CNY) |
| `medianImpressions` | Median impressions of regular notes, last 30 days |
| `sponsoredMedianReads` | Median reads of sponsored notes, last 30 days |
| `sponsoredMedianEngagements` | Median engagements of sponsored notes, last 30 days |
| `sponsoredMedianImpressions` | Median impressions of sponsored notes, last 30 days |
| `videoCompletionPct` | Video completion rate |
| `thousandLikeNotePct` / `hundredLikeNotePct` | Share of notes with over 1,000 / over 100 likes |
| `followersGrowthPct30d` | Follower growth over 30 days |
| `activeFollowersPct` | Share of followers active in the last 28 days |
| `engagedFollowersPct` | Share of followers who engaged in the last 30 days |
| `inviteReplyPct48h` | Share of invitations answered within 48 hours |
| `recentNotes` | Recent notes, each with `noteId`, `url`, `imageUrl`, `featureTags` |

#### Keyword report fields

| Field | What it is |
|---|---|
| `keyword` | The keyword |
| `searchIndex` | Search index of the keyword |
| `noteCount` | Notes about the keyword |
| `bloggerCount` | Bloggers posting about the keyword |
| `impressions` / `reads` / `engagements` | Impressions, reads and engagements of notes about the keyword |
| `likes` / `favorites` / `comments` / `shares` | Likes, saves, comments and shares |
| `followsGained` | Follows gained through notes about the keyword |
| `searchIndexVs30dPct`, `noteCountVs30dPct`, `bloggerCountVs30dPct`, `impressionsVs30dPct`, `readsVs30dPct`, `engagementsVs30dPct` | Change against the 30-day benchmark, in percent, as the marketplace shows it |
| `bloggerCategories` | Categories of the bloggers posting about the keyword: `{label, sharePct}` |
| `bloggerPersonas` | Personas of those bloggers: `{label, sharePct}` |
| `bloggerFeatureTags` | Content style tags of those bloggers: `{label, sharePct}` |
| `bloggerFollowerBands` | Follower-count bands of those bloggers: `{min, max, sharePct}` |
| `bloggerPicturePriceBands` / `bloggerVideoPriceBands` | Picture / video note price bands (CNY) of those bloggers: `{min, max, sharePct}` |

In the dataset you also get three ready table views: Bloggers, Blogger profiles and Keyword statistics.

### How to use Xiaohongshu Pugongying 蒲公英 Scraper

1. Open the Actor in Apify Console.
2. Choose a **Mode**: Find bloggers (`search`), Blogger profiles (`blogger`) or Keyword statistics (`keyword`).
3. Fill in the inputs for that mode: a keyword and filters, a list of blogger IDs or profile links, or a list of keywords.
4. Set **Max results** to cap the number of items (and the cost).
5. Click **Start** and wait for the run to finish.
6. Open the dataset and export it as JSON, CSV, Excel or another format, or read it through the API.

An empty input `{}` runs in seconds and lists the top bloggers for the keyword 面膜 (face mask).

### Input

| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| `mode` | string | required | `search`, `blogger` or `keyword` | `search` |
| `keyword` | string | optional | Search term for mode `search`. Clear it and pick at least one filter (category, gender, location or follower range) to browse by filters only; with neither, the run stops before any request and costs nothing | 面膜 |
| `searchBy` | string | optional | Match the keyword against note content (`notes`) or blogger nicknames (`nickname`) | `notes` |
| `category` | string | optional | Only bloggers in this content category (list below) | `any` |
| `gender` | string | optional | `any`, `male` or `female` | `any` |
| `location` | string | optional | Province, city or district name in Chinese, e.g. 杭州 | none |
| `minFollowers` | integer | optional | Only bloggers with at least this many followers (minimum 0) | none |
| `maxFollowers` | integer | optional | Only bloggers with at most this many followers (minimum 0) | none |
| `sort` | string | optional | `relevance`, `followers`, `reads`, `engagement`, `price`, `picture-price`, `video-price` | `relevance` |
| `sortOrder` | string | optional | `desc` (highest first) or `asc` (lowest first) | `desc` |
| `bloggers` | array | optional | For mode `blogger`: user IDs (24 characters, the `userId` of a search result) or Xiaohongshu profile links | none |
| `keywords` | array | optional | For mode `keyword`: keywords up to 100 characters each. Chinese keywords work best | none |
| `maxResults` | integer | optional | Maximum items in total for the run (1 to 5,000). You are charged per item returned | 20 |

Category values: `any`, `beauty`, `skincare`, `personal-care`, `parenting` (mom and baby), `fashion`, `food`, `home`, `entertainment-news` (film, TV and entertainment news), `fitness`, `pets`, `culture-art`, `hobbies`, `lifestyle`, `education`, `workplace`, `relationships`, `photography`, `games`, `tech` (tech and gadgets), `travel`, `music`, `comedy`, `health`, `cars`, `weddings`, `finance-business`, `materials`, `other`.

`maxResults` is the total across all inputs in the run; a run stops as soon as it is reached. A search shows up to 250 pages of 20 bloggers.

#### Example: find food bloggers with 50k to 200k followers

```json
{
  "mode": "search",
  "keyword": "咖啡",
  "category": "food",
  "gender": "female",
  "minFollowers": 50000,
  "maxFollowers": 200000,
  "sort": "followers",
  "maxResults": 100
}
```

#### Example: look a blogger up by nickname

```json
{
  "mode": "search",
  "keyword": "咖啡",
  "searchBy": "nickname",
  "maxResults": 20
}
```

#### Example: cheapest picture notes in Hangzhou

```json
{
  "mode": "search",
  "location": "杭州",
  "sort": "picture-price",
  "sortOrder": "asc",
  "maxResults": 40
}
```

#### Example: blogger profiles

```json
{
  "mode": "blogger",
  "bloggers": ["59e97be5e8ac2b6168370b13"]
}
```

#### Example: keyword statistics

```json
{
  "mode": "keyword",
  "keywords": ["面膜", "防晒"]
}
```

### Output example

The values below are illustrative.

#### Search row (`"type": "blogger"`)

```json
{
  "type": "blogger",
  "userId": "5f0a1b2c3d4e5f6a7b8c9d0e",
  "url": "https://www.xiaohongshu.com/user/profile/5f0a1b2c3d4e5f6a7b8c9d0e",
  "redId": "100000001",
  "nickname": "示例咖啡博主",
  "avatar": "https://...",
  "location": "广东 深圳",
  "gender": "female",
  "followers": 120000,
  "likesAndCollects": null,
  "sponsoredNoteCount": 35,
  "categories": ["美食"],
  "subCategories": ["咖啡"],
  "personaTags": ["咖啡师"],
  "featureTags": ["教程"],
  "industries": ["食品饮料"],
  "picturePrice": 4000,
  "videoPrice": 8000,
  "lowestPrice": 4000,
  "medianReads": 2500,
  "medianEngagements": 110,
  "pictureMedianReads": 2100,
  "videoMedianReads": 3000,
  "pictureMedianEngagements": 90,
  "videoMedianEngagements": 140,
  "medianImpressions": 9000,
  "sponsoredMedianReads": 1800,
  "sponsoredMedianEngagements": 70,
  "sponsoredMedianImpressions": 7000,
  "pictureReadCost": 1.9,
  "videoReadCost": 2.67,
  "estimatedVideoCpm": 120.5,
  "estimatedVideoEngageCost": 57.1,
  "videoCompletionPct": 18.4,
  "thousandLikeNotePct": 5.0,
  "hundredLikeNotePct": 32.0,
  "followersGrowthPct30d": 1.2,
  "activeFollowersPct": 41.0,
  "engagedFollowersPct": 6.5,
  "inviteReplyPct48h": 80.0,
  "recentNotes": [
    {"noteId": "6a0000000000000000000001", "url": "https://www.xiaohongshu.com/explore/6a0000000000000000000001", "imageUrl": "https://...", "featureTags": ["咖啡"]}
  ]
}
```

#### Blogger profile (`"type": "bloggerDetail"`)

```json
{
  "type": "bloggerDetail",
  "userId": "5f0a1b2c3d4e5f6a7b8c9d0e",
  "url": "https://www.xiaohongshu.com/user/profile/5f0a1b2c3d4e5f6a7b8c9d0e",
  "redId": "100000001",
  "nickname": "示例咖啡博主",
  "avatar": "https://...",
  "location": "广东 深圳",
  "gender": "female",
  "followers": 120000,
  "likesAndCollects": 950000,
  "sponsoredNoteCount": 35,
  "categories": ["美食"],
  "subCategories": ["咖啡"],
  "personaTags": ["咖啡师"],
  "featureTags": ["教程"],
  "industries": ["食品饮料"],
  "picturePrice": 4000,
  "videoPrice": 8000,
  "lowestPrice": 4000,
  "medianReads": 2500,
  "medianEngagements": 110,
  "pictureMedianReads": 2100,
  "videoMedianReads": 3000,
  "pictureMedianEngagements": 90,
  "videoMedianEngagements": 140
}
```

Profile records also contain the search-row keys listed above (cost, sponsored and rate figures, `recentNotes`), usually as `null`; they are left out of this example for brevity.

#### Keyword report (`"type": "keyword"`)

```json
{
  "type": "keyword",
  "keyword": "面膜",
  "searchIndex": 15000,
  "noteCount": 48000,
  "bloggerCount": 12000,
  "impressions": 52000000,
  "reads": 6100000,
  "engagements": 410000,
  "likes": 260000,
  "favorites": 110000,
  "comments": 30000,
  "shares": 10000,
  "followsGained": 8000,
  "searchIndexVs30dPct": 3.2,
  "noteCountVs30dPct": -1.5,
  "bloggerCountVs30dPct": 0.8,
  "impressionsVs30dPct": 4.1,
  "readsVs30dPct": 2.7,
  "engagementsVs30dPct": -0.6,
  "bloggerCategories": [{"label": "护肤", "sharePct": 42.5}],
  "bloggerPersonas": [{"label": "学生", "sharePct": 18.0}],
  "bloggerFeatureTags": [{"label": "测评", "sharePct": 25.0}],
  "bloggerFollowerBands": [{"min": 1000, "max": 10000, "sharePct": 38.0}],
  "bloggerPicturePriceBands": [{"min": 0, "max": 1000, "sharePct": 45.0}],
  "bloggerVideoPriceBands": [{"min": 1000, "max": 5000, "sharePct": 33.0}]
}
```

### How much does it cost?

The Actor uses pay-per-event pricing. You pay only for these events:

| Event | When it is charged | Price (USD) |
|---|---|---|
| `run-start` | Once per run, charged when the first data arrives, so a run that cannot reach the data costs nothing | $0.015 |
| `result` | Each blogger returned in a search (mode `search`) | $0.01 |
| `detail` | Each blogger profile (mode `blogger`) or keyword report (mode `keyword`) | $0.05 |

Worked examples:

- 100 bloggers from a search cost $0.015 + 100 x $0.01 = **$1.015**.
- 10 blogger profiles cost $0.015 + 10 x $0.05 = **$0.515**.
- 2 keyword reports cost $0.015 + 2 x $0.05 = **$0.115**.

You never pay for more than `maxResults` items, and the run stops by itself if your spending limit is reached. Items that are not delivered are not charged.

On the free Apify plan, a run can make one data request: one page of search results, one blogger profile, or one keyword report (a search may ask a second time when the first answer comes back empty). A free-plan run returns at most 20 results in total. Any paid Apify plan removes the limit. On the free Apify plan each account can run this Actor up to 3 times per 24 hours and 10 times per 7 days, within a small lifetime free allowance shared across all our Actors, and all free accounts share a daily free budget. When any of these limits is reached, the run stops before fetching anything and nothing is charged.

### Use cases

- **Influencer sourcing**: shortlist RedNote bloggers in a category, location and follower range with their price per note.
- **Budget planning**: compare `picturePrice`, `videoPrice` and the estimated cost per read (`pictureReadCost`, `videoReadCost`) before you contact anyone.
- **Creator quality checks**: look at `activeFollowersPct`, `engagedFollowersPct`, `followersGrowthPct30d` and sponsored-note medians to see how a blogger's audience responds.
- **Outreach planning**: use `inviteReplyPct48h` to see which bloggers usually answer invitations quickly.
- **Topic research**: see how big a keyword is (`searchIndex`, `noteCount`, `bloggerCount`) and which kinds of bloggers cover it, with their follower and price bands.
- **Trend monitoring**: schedule keyword reports and track the `...Vs30dPct` change figures over time.

### Integrations and API

You can start runs through the Apify API, schedule them in Apify Console (for example a weekly keyword report), and send results to other tools with Apify integrations such as webhooks, Google Sheets, Zapier or Make. Results are stored in an Apify dataset that you can download as JSON, CSV, Excel and other formats.

Python example with `apify-client`:

```python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("clover_folktale/pugongying-scraper").call(run_input={
    "mode": "search",
    "keyword": "咖啡",
    "category": "food",
    "gender": "female",
    "minFollowers": 50000,
    "maxFollowers": 200000,
    "sort": "followers",
    "maxResults": 100
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

### Tips and limits

- `maxResults` is the total across all inputs in the run (1 to 5,000, default 20). A search shows up to 250 pages of 20 bloggers.
- Use `searchBy: "nickname"` to look a blogger up by name. The `userId` of a search row is the ID for mode `blogger`.
- The `location` filter takes a Chinese place name (province, city or district).
- Quotes are in Chinese yuan (CNY); figures ending in `Pct` are percentages.
- A forged or unknown blogger ID is skipped and not charged. If too many inputs return nothing, the run stops to protect your budget.
- Some keywords come back with an all-zero report; those are treated as no data and not charged.
- The Pugongying data source sometimes answers a search with no results at random, even for common keywords. The Actor then asks once more; if the second answer is empty too, the run ends with 0 results and you are not charged, not even the start fee. Free empty searches are limited to a number per 24 hours shared by all users; once that is used up, an empty search is charged the start fee until older ones drop out of the 24-hour window. Running the same search again a little later usually works.
- The run stops cleanly instead of failing half-way and never charges for items it did not deliver.
- **Often empty fields:** `likesAndCollects` is filled only in profiles (it is `null` in search rows). Cost, median-impression, sponsored and rate figures (`pictureReadCost`, `estimatedVideoCpm`, `sponsoredMedian...`, `...Pct`) are filled only in search rows and are usually `null` in profiles. In search rows, `personaTags` is often empty, and `industries` and `featureTags` are sometimes empty. Bloggers without picture or video notes show 0 or `null` for that format's quote and medians. `recentNotes` can be empty, and `location` is empty when the blogger hides it.
- On the free Apify plan, a run makes one data request (at most 20 results), or two when the first answer comes back empty. Any paid Apify plan removes the limit.

### FAQ

#### Do I need a Xiaohongshu or Pugongying account?

No. No account, API keys, proxies or cookies are needed.

#### Is it legal to use this data?

The Actor returns only what the marketplace itself shows about bloggers: IDs, names, avatars, location, quotes, performance figures and recent notes. No contact details, phone numbers or private messages are collected. You are responsible for how you use the data and for following the laws that apply to you.

#### How fresh is the data?

The data is requested when your run starts, so you get the figures the marketplace shows at that time. Several metrics cover the last 28 or 30 days, as noted in the field list.

#### Why are some fields empty or 0?

Some fields are filled only in search rows or only in profiles (the others are `null`), bloggers without picture or video notes have no quote or medians for that format, persona, industry and style tags are often missing in search rows, and some bloggers hide their location. See Tips and limits for the full list.

#### How many results can I get?

Up to 5,000 items per run (`maxResults`). A search shows up to 250 pages of 20 bloggers. On the free Apify plan a run returns at most 20 results.

#### Can I schedule runs and export the data?

Yes. You can schedule runs in Apify Console or start them through the API, and export each dataset as JSON, CSV, Excel and other formats.

#### Why did my search return 0 results?

Either nothing matches your keyword and filters, or the data source returned nothing twice in a row, which happens at random from time to time. Either way the run was not charged, unless the 24-hour limit of free empty searches had already been used up (see Tips and limits). Try again in a few minutes, or try a broader keyword.

#### A field or mode I need is missing. What can I do?

Open an issue from the Actor page and it will be looked at.

### More tools from the same developer

- [Xiaohongshu 小红书 RedNote Scraper - Notes, Comments & User IP](https://apify.com/clover_folktale/xiaohongshu-scraper)
- [Douyin Xingtu 巨量星图 Scraper - KOL Search & Rankings](https://apify.com/clover_folktale/xingtu-scraper)
- [Bilibili Huahuo 花火 Scraper - KOL (UP Host) Search](https://apify.com/clover_folktale/huahuo-scraper)
- [Douyin 抖音 Scraper - Videos, Comments, User IDs & IP Location](https://apify.com/clover_folktale/douyin-scraper)
- [Weibo 微博 Scraper - Posts, Comments, User IDs & IP Location](https://apify.com/clover_folktale/weibo-scraper)
- [WeChat Official Account 公众号 Scraper - Articles & Read Counts](https://apify.com/clover_folktale/wechat-scraper)

# Actor input Schema

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

What to scrape: bloggers matching a search, profiles of given bloggers, or keyword statistics.

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

Search term, in Chinese. To browse bloggers by filters only, clear it and pick at least one filter below (category, gender, location or follower range).

## `searchBy` (type: `string`):

Match the keyword against what bloggers post about, or against blogger nicknames.

## `category` (type: `string`):

Only bloggers in this content category.

## `gender` (type: `string`):

Only male or female bloggers.

## `location` (type: `string`):

Place the blogger is based in, a province, city or district name in Chinese, e.g. 杭州.

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

Only bloggers with at least this many followers.

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

Only bloggers with at most this many followers.

## `sort` (type: `string`):

Order of the results.

## `sortOrder` (type: `string`):

Highest first or lowest first.

## `bloggers` (type: `array`):

Blogger user IDs (24 characters, the userId of a search result) or Xiaohongshu profile links, e.g. https://www.xiaohongshu.com/user/profile/59e97be5e8ac2b6168370b13.

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

Keywords to report on, up to 100 characters each. Chinese keywords work best.

## `maxResults` (type: `integer`):

Maximum number of items to return in total for this run. You are charged per item returned. On the free Apify plan a run returns at most 20 results in total; any paid Apify plan removes the limit.

## Actor input object example

```json
{
  "mode": "search",
  "keyword": "面膜",
  "searchBy": "notes",
  "category": "any",
  "gender": "any",
  "sort": "relevance",
  "sortOrder": "desc",
  "bloggers": [
    "59e97be5e8ac2b6168370b13"
  ],
  "keywords": [
    "面膜"
  ],
  "maxResults": 20
}
```

# Actor output Schema

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

All scraped items (JSON, CSV, Excel via the dataset API).

# 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": "面膜",
    "bloggers": [
        "59e97be5e8ac2b6168370b13"
    ],
    "keywords": [
        "面膜"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("clover_folktale/pugongying-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": "面膜",
    "bloggers": ["59e97be5e8ac2b6168370b13"],
    "keywords": ["面膜"],
}

# Run the Actor and wait for it to finish
run = client.actor("clover_folktale/pugongying-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": "面膜",
  "bloggers": [
    "59e97be5e8ac2b6168370b13"
  ],
  "keywords": [
    "面膜"
  ]
}' |
apify call clover_folktale/pugongying-scraper --silent --output-dataset

```

## MCP server setup

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