Xiaohongshu (RedNote)xiaohongshu.pgy.creators.search
Xiaohongshu PGY creator search API
Find Xiaohongshu creators on PGY (蒲公英), the official creator marketplace, by what their notes are about or by name, filtered by followers and note type, sorted by followers, engagement, reads or rate. Each with followers, median reads and engagements of everyday notes, content categories and what an image note and a video note cost (in yuan).
GEThttps://api.okdata.online/v1/xiaohongshu/pgy/creators/search
Price
One call costs $0.04 and returns one page of about 20 creators. Collecting 1,000 creators takes about 50 calls, $2.00 in total. Each page is a separate call; failed calls are not charged.
Parameters
| Name | Type | Description |
|---|---|---|
query *required | string | Keywords, as a person would type them into the platform search box. |
search_by | stringnotesname | Match the words against what creators post (the default) or against their names. |
followers_min | integer | At least this many followers. |
followers_max | integer | At most this many followers. |
type | stringallimagevideo | Creators who mostly post image notes or video notes; both by default. |
sort | stringrelevancemost_followersmost_engagementsmost_readslowest_ratehighest_rate | Result order. |
cursor | string | Opaque cursor from page.next_cursor of the previous call. Each page is a separate call. |
view | stringcompactstandardfull | How much of each object comes back. full adds platform-specific fields under ext. |
fields | string | Comma-separated fields to keep, to save tokens. |
cursor, view and fields work the same on every endpoint: how requests work.
Returned fields
Each item is a Creator.
| Field | Type | Description |
|---|---|---|
id | string | The marketplace's creator ID; the other marketplace endpoints take it. |
url | string | The creator's page on the marketplace. |
account_id | string | null | The creator's own account ID on the platform, where the marketplace gives it. |
username | string | null | Handle on the platform, where given. |
name | string | Display name. |
avatar_url | string | null | Avatar image URL. |
location | string | null | Where the creator says they are. |
gender | string | null | The creator's gender as the marketplace lists it. |
followers | integer | null | Followers. |
categories | string[] | null | Content categories in the marketplace’s own words. |
engagement_rate | number | null | Interactions per view of recent posts, 0 to 1 (0.038 is 3.8%). |
median_views | integer | null | Median views or reads of recent everyday posts. |
median_engagements | integer | null | Median interactions (likes, comments, saves, shares) of recent everyday posts. |
rates | Rate[] | null | Published rates for sponsored work; null when the marketplace hides them. |
ext | object | Platform-specific extras. Only returned with view=full. |
Request
curl -G "https://api.okdata.online/v1/xiaohongshu/pgy/creators/search" \
-H "Authorization: Bearer $OKDATA_API_KEY" \
--data-urlencode 'query=户外'import os
import requests
resp = requests.get(
"https://api.okdata.online/v1/xiaohongshu/pgy/creators/search",
headers={"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"},
params={"query": "户外"},
timeout=60,
)
body = resp.json()
if body["code"] != "ok":
raise RuntimeError(f"{body['code']}: {body['message']} (charged: {body['charged']})")
for row in body["data"]["items"]:
print(row["name"], row["followers"], row["engagement_rate"])
print("cost: $" + body["meta"]["billing"]["amount"])const url = new URL('https://api.okdata.online/v1/xiaohongshu/pgy/creators/search');
url.searchParams.set('query', "户外");
const res = await fetch(url, {
headers: {
Authorization: `Bearer ${process.env.OKDATA_API_KEY}`,
},
});
const body = await res.json();
if (body.code !== 'ok') throw new Error(`${body.code}: ${body.message}`);
for (const row of body.data.items) {
console.log(row.name, row.followers, row.engagement_rate);
}
console.log('cost: $' + body.meta.billing.amount);{
"name": "call",
"arguments": {
"endpoint": "xiaohongshu.pgy.creators.search",
"params": {
"query": "户外"
}
}
}Or ask an agent that has the MCP server connectedUse Xiaohongshu PGY creator search and shortlist ten creators with the best engagement for the money, with their rates.
Response
{
"code": "ok",
"request_id": "0f6c2a8e-4b1d-4e0a-9a51-3c7d2b9e1f20",
"data": {
"items": [
{
"id": "5dfa1ee20000000001001cb3",
"url": "https://pgy.xiaohongshu.com/solar/pre-trade/blogger-detail/5dfa1ee20000000001001cb3",
"account_id": "5dfa1ee20000000001001cb3",
"username": "shaka521",
"name": "山野轻装",
"avatar_url": "https://cdn.example.com/avatar/creator.jpg",
"location": "江苏 苏州",
"gender": "male",
"followers": 176970,
"categories": [
"出行旅游",
"旅行"
],
"engagement_rate": null,
"median_views": 198469,
"median_engagements": 15935,
"rates": [
{
"type": "image_note",
"name": "图文笔记",
"price": 16000,
"currency": "CNY",
"available": true,
"settlement": null
}
]
}
]
},
"page": {
"next_cursor": "eyJvIjoyMH0",
"has_more": true
},
"warnings": [],
"meta": {
"capability": "xiaohongshu.pgy.creators.search",
"billing": {
"amount": "0.04",
"currency": "USD",
"balance_after": "9.96"
},
"unavailable": {},
"cached": false,
"replayed": false,
"fetched_at": "2026-11-11T08:00:00Z"
}
}Try it
This sends a real call to https://api.okdata.online and is billed as usual: at most $0.04. Failed calls are free. Your key goes only to that address and is never stored on this site.
Questions
How much does the Xiaohongshu PGY creator search API cost?
One call costs $0.04 and returns one page of about 20 creators. Collecting 1,000 creators takes about 50 calls, $2.00 in total. Each page is a separate call; failed calls are not charged.
How do I get the next page?
Pass page.next_cursor from the response back as the cursor parameter. When page.has_more is false there is nothing left. Every page is its own call at $0.04.
Do I need a Xiaohongshu (RedNote) account, cookies or a QR login?
No. You send only your okdata API key. The data is public data from Xiaohongshu (RedNote); nothing is fetched with your own Xiaohongshu (RedNote) account.
Am I charged when a call fails?
No. Every error response says charged: false, except a timeout, which says charged: null until the outcome is known. Resend with the same Idempotency-Key and you are never charged twice.
What if Xiaohongshu (RedNote) does not show a field?
The field is null, and meta.unavailable names it with the reason: platform (the platform never shows it) or capability (we cannot fetch it yet).
Answers that use this endpoint
More Xiaohongshu (RedNote) endpoints
- Xiaohongshu note searchxiaohongshu.notes.searchPost[]$0.02/call
- Xiaohongshu note detailxiaohongshu.notes.getPost$0.02/call
- Xiaohongshu note commentsxiaohongshu.notes.comments.listComment[]$0.02/call
- Xiaohongshu account profilexiaohongshu.users.getAccount$0.02/call
- Xiaohongshu account notesxiaohongshu.users.notes.listPost[]$0.02/call
- Xiaohongshu hot topicsxiaohongshu.trends.listTrend[]$0.02/call
- Xiaohongshu PGY creator detailxiaohongshu.pgy.creators.getCreator$0.04/call
- Xiaohongshu shop product searchxiaohongshu.shop.products.searchProduct[]$0.02/call
- Xiaohongshu shop product reviewsxiaohongshu.shop.products.reviews.listReview[]$0.02/call