API 使用文档

快速上手 Rnote API,从注册到发起第一个请求

Base URL(不同接口族前缀不同)

小红书数据(爬虫)接口:https://rnote.dev/api/v2/crawler
蒲公英博主数据接口:https://rnote.dev/api/v2/pgy

两者同域名、不同路径前缀;爬虫接口多为 GET,蒲公英接口为 POST(JSON body)。完整交互式文档见 Swagger UI

在线调试环境

我们提供基于 Apifox 的在线 API 调试环境,输入 API Key 即可直接在浏览器中测试和调用所有接口,无需编写代码。

打开在线调试环境

开始之前

  1. 1 注册账户 并完成邮箱验证
  2. 2 登录 管理后台,在「API Key 管理」中创建一个 API Key
  3. 3 在「计费」页面充值余额(仅成功请求扣费)

认证方式

所有 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);

笔记接口

GET /note/image

获取图文笔记详情,返回笔记内容、图片列表、作者信息、互动数据等

参数: note_id (必填)
GET /note/video

获取视频笔记详情,返回视频播放地址、封面图、作者信息等

参数: note_id (必填)
GET /note/mixed

获取首页推荐流笔记详情,留空 note_id 返回推荐流数据

参数: note_id (可选)
GET /note/comments

获取笔记评论列表,支持分页和多种排序方式

参数: note_id (必填) · cursor · index · sort_strategy (default / latest_v2 / like_count)
GET /note/sub_comments

获取笔记二级评论(子评论/回复),游标分页

参数: note_id (必填) · comment_id (必填) · cursor · index · num
POST /note/metrics

上报笔记指标(点赞、收藏、分享等互动数据)

Body: note_id · report_type · target_count

用户接口

GET /user/info

获取用户信息,返回用户昵称、头像、简介、粉丝数等

参数: user_id (必填)
GET /user/posted

获取用户发布的笔记列表,支持游标分页

参数: user_id (必填) · cursor · num
GET /user/faved

获取用户收藏的笔记列表,支持游标分页

参数: user_id (必填) · cursor · num

搜索接口

GET /search/notes

搜索笔记,支持排序和筛选

参数: keyword (必填) · page · sort (general / time_descending / popularity_descending) · note_type (0=全部 / 1=视频 / 2=图文)
GET /search/users

搜索用户

参数: keyword (必填) · page
GET /search/images

搜索图片

参数: keyword (必填) · page
GET /search/products

搜索商品

参数: keyword (必填) · page · sort_by · source
GET /search/groups

搜索群聊

参数: keyword (必填) · page

商品接口

GET /product/detail

获取商品详情

参数: product_id (必填)
GET /product/review/overview

获取商品评论总览

参数: product_id (必填)
GET /product/reviews

获取商品评论列表,支持游标分页

参数: product_id (必填) · cursor · sort_type
GET /product/recommendations

获取商品推荐列表

参数: product_id (必填) · cursor

话题接口

POST /topic/info

获取话题详情

Body: topic_id (必填)
GET /topic/feed

获取话题下的笔记列表,支持游标分页

参数: topic_id (必填) · cursor · sort_by

创作灵感

GET /creator/inspiration/feed

获取推荐灵感列表

参数: cursor · num
GET /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}'
POST/note/detail

笔记详情:正文、图文/视频媒体、曝光/阅读/点赞/收藏/评论

参数: note_id (必填)
POST/blogger/detail

博主详情:昵称、小红书号、地区、标签、粉丝数、图文/视频合作报价

参数: user_id (必填)
POST/blogger/notes

博主笔记明细(分页):每条含阅读/点赞/收藏、是否视频、是否商业合作

参数: user_id · page_number · page_size · note_type · order_type · advertise_switch
POST/blogger/notes-rate

笔记转化率/数据表现:曝光/阅读/互动中位数、互动率、完播率、百赞·千赞比例、同行超越率

参数: user_id · note_type · date_type · advertise_switch
POST/blogger/core-data

核心数据:逐日趋势 dailyData + 区间汇总 sumData(曝光/阅读/互动/CPM/CPE)

参数: user_id · note_type · date_type · advertise_switch
POST/blogger/data-summary

数据概览:成本/报价预估(CPM/CPUV/阅读成本)、内容形式占比、月粉丝增长

参数: user_id (必填)
POST/blogger/fans-summary

粉丝概览:粉丝量、活跃/互动/付费粉丝占比及同行超越率

参数: user_id (必填)
POST/blogger/fans-profile

粉丝画像:年龄、性别、地域、兴趣、设备分布(用于受众匹配)

参数: user_id (必填)
POST/blogger/fans-history

粉丝增长历史:区间净增、增长率、逐日粉丝数

参数: user_id · date_type
POST/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_iddebug_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 错误码,请求不会被执行。

交易记录

所有扣费记录可在管理后台「计费」页面查看,包含时间、端点、金额等详情。