API 使用文档
快速上手 Rnote API,从注册到发起第一个请求
Base URL(不同接口族前缀不同)
https://rnote.dev/api/v2/crawlerhttps://rnote.dev/api/v2/pgy两者同域名、不同路径前缀;爬虫接口多为 GET,蒲公英接口为 POST(JSON body)。完整交互式文档见 Swagger UI。
开始之前
认证方式
所有 API 请求需要通过 X-API-Key Header 传递 API Key 进行认证。
# 在 HTTP Header 中传递 API Key
curl -X 'GET' \
'https://rnote.dev/api/v2/crawler/note/image?note_id=697c0eee000000000a03c308' \
-H 'accept: application/json' \
-H 'X-API-Key: sk-5bc4****************************e175'
第一个请求
以获取图文笔记详情为例:
curl -X 'GET' \
'https://rnote.dev/api/v2/crawler/note/image?note_id=697c0eee000000000a03c308' \
-H 'accept: application/json' \
-H 'X-API-Key: sk-5bc4****************************e175'
import requests
API_KEY = "sk-5bc4****************************e175"
BASE_URL = "https://rnote.dev/api/v2/crawler"
response = requests.get(
f"{BASE_URL}/note/image",
params={"note_id": "697c0eee000000000a03c308"},
headers={
"X-API-Key": API_KEY,
"accept": "application/json",
},
)
data = response.json()
print(data)
const API_KEY = "sk-5bc4****************************e175";
const BASE_URL = "https://rnote.dev/api/v2/crawler";
const res = await fetch(
`${BASE_URL}/note/image?note_id=697c0eee000000000a03c308`,
{
headers: {
"X-API-Key": API_KEY,
"accept": "application/json",
},
}
);
const data = await res.json();
console.log(data);
笔记接口
/note/image
获取图文笔记详情,返回笔记内容、图片列表、作者信息、互动数据等
note_id (必填)
/note/video
获取视频笔记详情,返回视频播放地址、封面图、作者信息等
note_id (必填)
/note/mixed
获取首页推荐流笔记详情,留空 note_id 返回推荐流数据
note_id (可选)
/note/comments
获取笔记评论列表,支持分页和多种排序方式
note_id (必填) · cursor · index · sort_strategy (default / latest_v2 / like_count)
/note/sub_comments
获取笔记二级评论(子评论/回复),游标分页
note_id (必填) · comment_id (必填) · cursor · index · num
/note/metrics
上报笔记指标(点赞、收藏、分享等互动数据)
note_id · report_type · target_count
用户接口
/user/info
获取用户信息,返回用户昵称、头像、简介、粉丝数等
user_id (必填)
/user/posted
获取用户发布的笔记列表,支持游标分页
user_id (必填) · cursor · num
/user/faved
获取用户收藏的笔记列表,支持游标分页
user_id (必填) · cursor · num
搜索接口
/search/notes
搜索笔记,支持排序和筛选
keyword (必填) · page · sort (general / time_descending / popularity_descending) · note_type (0=全部 / 1=视频 / 2=图文)
/search/users
搜索用户
keyword (必填) · page
/search/images
搜索图片
keyword (必填) · page
/search/products
搜索商品
keyword (必填) · page · sort_by · source
/search/groups
搜索群聊
keyword (必填) · page
商品接口
/product/detail
获取商品详情
product_id (必填)
/product/review/overview
获取商品评论总览
product_id (必填)
/product/reviews
获取商品评论列表,支持游标分页
product_id (必填) · cursor · sort_type
/product/recommendations
获取商品推荐列表
product_id (必填) · cursor
话题接口
/topic/info
获取话题详情
topic_id (必填)
/topic/feed
获取话题下的笔记列表,支持游标分页
topic_id (必填) · cursor · sort_by
创作灵感
/creator/inspiration/feed
获取推荐灵感列表
cursor · num
/creator/hot/inspiration/feed
获取热点灵感列表
cursor · num
蒲公英接口
小红书蒲公英(创作者商业合作平台)的博主与笔记商业数据:博主选号、报价、粉丝画像、笔记转化率、核心趋势等——做达人投放与竞品分析的关键数据。
Base URL:https://rnote.dev/api/v2/pgy(与爬虫接口前缀不同)
全部为 POST 请求,参数走 JSON body;同样用 X-API-Key 认证、按需计费、仅成功扣费。博主/笔记 ID 为小红书 24 位 ID。
curl -X 'POST' \
'https://rnote.dev/api/v2/pgy/blogger/notes-rate' \
-H 'X-API-Key: sk-5bc4****************************e175' \
-H 'Content-Type: application/json' \
-d '{"user_id": "5c668b3e0000000012021605", "note_type": 3, "date_type": 1}'
/note/detail笔记详情:正文、图文/视频媒体、曝光/阅读/点赞/收藏/评论
note_id (必填)/blogger/detail博主详情:昵称、小红书号、地区、标签、粉丝数、图文/视频合作报价
user_id (必填)/blogger/notes博主笔记明细(分页):每条含阅读/点赞/收藏、是否视频、是否商业合作
user_id · page_number · page_size · note_type · order_type · advertise_switch/blogger/notes-rate笔记转化率/数据表现:曝光/阅读/互动中位数、互动率、完播率、百赞·千赞比例、同行超越率
user_id · note_type · date_type · advertise_switch/blogger/core-data核心数据:逐日趋势 dailyData + 区间汇总 sumData(曝光/阅读/互动/CPM/CPE)
user_id · note_type · date_type · advertise_switch/blogger/data-summary数据概览:成本/报价预估(CPM/CPUV/阅读成本)、内容形式占比、月粉丝增长
user_id (必填)/blogger/fans-summary粉丝概览:粉丝量、活跃/互动/付费粉丝占比及同行超越率
user_id (必填)/blogger/fans-profile粉丝画像:年龄、性别、地域、兴趣、设备分布(用于受众匹配)
user_id (必填)/blogger/fans-history粉丝增长历史:区间净增、增长率、逐日粉丝数
user_id · date_type/blogger/list博主列表(选号):按品牌维度 + 粉丝量筛选候选博主,分页返回
brand_user_id (必填) · page_num · page_size · fans_number_lower · fans_number_upper参数枚举取值(如 note_type / order_type / date_type)与返回字段详见 Swagger UI 或蒲公英数据 API 介绍。
响应格式
所有数据接口(/api/v2/crawler/*、/api/v2/pgy/*)使用统一的 JSON 响应结构:
成功响应
{
"success": true,
"data": { /* 业务数据,结构因接口而异 */ },
"billed": true,
"debug_id": "a1b2c3d4",
"debug_info": "..." /* 诊断信息,反馈问题时附上即可 */
}
失败响应
{
"success": false,
"data": null,
"error": "请求过于频繁,请稍后重试",
"retry_after": 5.0,
"billed": false,
"debug_id": "a1b2c3d4",
"debug_info": "..." /* 诊断信息,反馈问题时附上即可 */
}
字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
success |
bool | 业务成败标志(与 HTTP 状态码语义一致) |
data |
object | null | 业务数据;失败时为 null |
error |
string | null | 通用错误提示文案;成功时为 null |
retry_after |
float | null | 限流/暂时不可用时的建议等待秒数;与 HTTP Retry-After 头一致 |
billed |
bool | 本次请求是否扣费(只在业务成功时扣费,任何失败不扣费) |
debug_id |
string | null | 8 字符随机关联码,反馈问题时附上以便我们定位本次请求 |
debug_info |
string | null | 诊断信息,反馈问题时一并附上即可(无需自行解读) |
关于 debug_id 和 debug_info
报告问题时,附上响应里的 debug_id(短码)或 debug_info 能显著加速我们定位本次请求。你无需自行解读它们,原样发给我们即可。
错误码
中间件层(鉴权 / 限流 / 计费)
这些状态码在请求到达业务逻辑前就会返回,与具体接口无关。
| HTTP 状态码 | 说明 | 处理方式 |
|---|---|---|
401 |
未提供或无效的 API Key | 检查 X-API-Key Header |
402 |
余额不足 | 到管理后台充值余额 |
403 |
无权访问该接口 | 检查 API Key 权限范围 |
429 |
每用户/每 IP 请求频率超限 | 降低请求频率,稍后重试 |
业务接口层(数据接口)
数据接口失败响应使用标准 4xx/5xx 状态码 + Retry-After 头。请同时检查 HTTP 状态码和 body.success。
| HTTP 状态码 | 触发场景 | 处理方式 |
|---|---|---|
400 |
请求参数不合法 | 检查参数格式(不要重试) |
404 |
接口不存在 | 检查 URL 路径 |
429 |
请求过于频繁 | 按 Retry-After 头等待后重试 |
500 |
服务器内部错误 | 稍后重试;持续失败请附上 debug_id 联系支持 |
502 |
数据源暂时拒绝或不可用 | 稍后重试(换参数通常无效) |
503 |
服务暂时繁忙 | 按 Retry-After 头等待后重试 |
504 |
请求链路超时 | 稍后重试 |
客户端错误处理示例
推荐写法 —— 同时检查 HTTP 状态码和 body.success,并在异常日志里附上 debug_id:
import requests
resp = requests.get(
"https://rnote.dev/api/v2/crawler/user/info",
headers={"X-API-Key": "sk-..."},
params={"user_id": "..."},
timeout=20,
)
body = resp.json()
# 双重判断: HTTP status 优先, body.success 兜底
if resp.status_code >= 400 or not body.get("success"):
error = body.get("error", "未知错误")
debug_id = body.get("debug_id", "n/a")
retry_after = body.get("retry_after")
print(f"请求失败 [{debug_id}]: {error}", end="")
if retry_after:
print(f" (建议 {retry_after}s 后重试)")
# 联系支持时附上 debug_id
else:
data = body["data"]
# 处理业务数据 ...
计费说明
按请求计费
仅成功请求 (HTTP 2xx) 扣费,失败请求不计费。每个 API 端点独立定价。
余额不足
当余额不足以支付当前请求的费用时,返回 HTTP 402 错误码,请求不会被执行。
交易记录
所有扣费记录可在管理后台「计费」页面查看,包含时间、端点、金额等详情。