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 即可直接在浏览器中测试和调用所有接口,无需编写代码。

打开在线调试环境

用哪个调试?

两个都能在浏览器里直接发真实请求、都用你自己的 API Key、都按实际调用计费,区别在文档的来源

在线调试环境 Apifox
  • · 人工维护的中文文档,带参数说明与示例值
  • · 可一键生成多种语言的请求代码
  • · 请求可保存、可分享给同事
docs.rnote.dev
Swagger UI OpenAPI 自动生成
  • · 由线上服务实时生成,不会和真实接口不一致
  • · 完整的字段类型、取值范围与响应结构
  • · 右上角 Authorize 填一次 X-API-Key,浏览器记住
打开 Swagger UI

推荐:第一次上手用在线调试环境,说明最全、还能直接抄代码。真正接入时如果发现文档和实际返回对不上,或者想确认某个参数线上到底支不支持,以 Swagger UI 为准 —— 它是从正在跑的服务上直接生成的,不存在漏同步。

开始之前

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

账号接口

https://rnote.dev/api/v1/account

用同一把 API Key 查自己的账号数据,不必登录后台 —— 适合在脚本里做成本核算与余额告警。

全部免费:不扣余额、不计费,余额为 0 也能正常调用

全部为只读 GET,且只返回你自己的数据。出于安全考虑,这组接口不能创建、修改或删除 API Key,也不会返回任何 Key 的明文 —— 这样即使一把 Key 泄露,也不会升级成账号被接管。

限流 30 次/分钟。若你给 Key 设了 scope 限制,需要把 /api/v1/account 加进去才能调用。

示例:查询余额
curl 'https://rnote.dev/api/v1/account/balance' \
  -H 'X-API-Key: sk-5bc4****************************e175'

余额与消费

GET /balance

账户余额、累计充值与累计消费

返回: balance · total_deposited · total_charged · overdraft_limit。金额均为 6 位小数字符串,请勿按浮点解析。

我的价格

GET /pricing

接口价目表,并附上你实际会被扣的单价

每条含 effective_price(牌价)与 your_price(你的实付单价)。经销商为折后价;企业账号为合同价(此时 enterprise_pricing 为 true、discount_rate 为 0,因为企业不叠加经销商折扣)。公开的 /api/public/pricing 只有牌价。

账号信息

GET /me

当前账号信息:角色、邮箱验证状态、经销商折扣、企业结算方式、限流额度

邮箱按 a***@gmail.com 脱敏返回。

当前 Key

GET /key

你当次请求所用的那一把 Key 的信息:备注名、状态、限流额度、scope

不返回明文,也不会列出你的其他 Key。

小红书数据接口

https://rnote.dev/api/v2/crawler

小红书站内的公开内容数据:笔记、用户、搜索、商品、话题、创作灵感。多为 GET 请求,参数走 query string。

笔记接口

GET /note/image

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

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

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

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

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

参数: note_id (必填) · cursor · index · sort_strategy (default / latest_v2 / like_count)
翻页: 响应里的 $.data.cursor 是一段 JSON 串 {"cursor":"...","index":3,"pageArea":"ALL"}, 可以拆成 cursor / index / pageArea 分别传回, 也可以整段直接塞进 cursor(服务端自动拆开,以 JSON 内的值为准)
GET /note/sub_comments

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

参数: note_id (必填) · comment_id (必填) · cursor · index · num

用户接口

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/recommend

搜索推荐词(联想词):输入关键词,返回小红书搜索框的推荐 / 联想搜索词,用于自动补全与相关词推荐

参数: keyword (必填)
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

蒲公英数据接口

https://rnote.dev/api/v2/pgy

小红书蒲公英(创作者商业合作平台)的商业数据:博主选号与报价、粉丝画像、笔记转化率、内容广场榜单、关键词搜索指数——做达人投放与竞品分析的关键数据。

全部为 POST 请求,参数走 JSON body;同样用 X-API-Key 认证、按需计费、仅成功扣费。博主/笔记 ID 为小红书 24 位 ID。

page_size 的上限锁定为蒲公英官方网页的取值(各接口不同,已在下方标注),传更大不会返回更多。

示例:获取博主笔记转化率
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}'

博主基础数据

按博主 ID 取商业档案与受众数据,投放前评估用。

POST/blogger/detail

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

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

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

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

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

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

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

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

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

参数: user_id (必填) · increase_type · date_type
POST/blogger/core-data

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

参数: user_id (必填) · business · note_type · date_type · advertise_switch
POST/blogger/notes-rate

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

参数: user_id (必填) · business · note_type · date_type · advertise_switch

笔记案例

博主发过的笔记明细。两个接口字段结构不同,不可混用

POST/blogger/notes

博主笔记明细(分页):每条含阅读/点赞/收藏、是否视频、是否商业合作。原生 KOL 接口,对跨域博主会返回空列表

参数: user_id (必填) · page_number · page_size · note_type · order_type · advertise_switch · feature_tag · content_tag · is_third_platform
POST/blogger/notes_v2

笔记案例 v2:覆盖跨域博主。上面那个返回空时改用这个,返回字段结构与之不同

参数: user_id (必填) · page_number · page_size (1-8) · note_type · order_type

博主发现 / 选号

从全站找候选博主,而不是已知 ID 查详情。

POST/blogger/list

找博主:结构化筛选 + 排序,分页返回候选博主。筛选条件用 blogger/fans/note/coop/live/flags 等分组对象传

参数: page_num · page_size · brand_user_id · keyword · search_type · column · sort · goal · blogger · fans · note · coop · live · flags
POST/blogger/filter-options

找博主的全部可用筛选项(枚举字典)。用它动态构建上面 /blogger/list 的筛选条件,避免把枚举值写死

参数: 无参数
POST/blogger/similar

相似博主推荐:给定一个博主,返回风格/受众相近的候选,用于扩量

参数: user_id (必填) · page_num · page_size (1-4)
POST/live-blogger/list

直播博主广场(直播带货选号):按合作品类、买手人设、电商转化力、直播表现力等筛选

参数: page_num · page_size (1-20) · seed · nick_name · category · buyer · ecom · live · fans · flags

笔记维度

按笔记 ID 取商业数据。

POST/note/detail

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

参数: note_id (必填)
POST/note/comments

笔记精选评论:蒲公英笔记详情页「精选评论」区块的评论列表

参数: note_id (必填)
POST/note/components

笔记组件:笔记上挂载的商品、表单等组件信息

参数: note_id (必填)

内容广场

跨博主的热门内容榜单,用于找选题、看爆款。

POST/content/square

内容广场:8 个榜单(小红书热门 / 产品种草 / 电商推广 / 蒲公英合作 / 客资收集 / 电商热门 / 种草直达 / 应用推广)+ 多维筛选。每榜固定 100 条

参数: biz_type (必填) · page_num · page_size (1-34) · search_word · order_by · date_range · category · industry · note_type · content_type · theme · placement

关键词分析

看某个词的搜索热度与人群,用于选题和投放定向。

POST/keyword/stat

关键词概览:搜索指数 + 搜索该词的用户画像 / 相关博主分布

参数: search_word (必填)
POST/keyword/daily

关键词逐日搜索指数:给出时间序列,可看趋势与节假日波动

参数: search_word (必填)
POST/keyword/related

关键词关联词(选题扩词):由一个词扩展出相关搜索词

参数: search_word (必填)

参数枚举取值(如 note_type / order_type / date_type / biz_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 错误码,请求不会被执行。

交易记录

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

私有化部署

本页所有接口都由托管服务提供,按次计费。如果调用量大、或者数据不能经过第三方,也可以买下服务端源码部署在自己的机器上。

包含什么

小红书 App 端、Web 端与蒲公英三套服务端源码,含请求签名、设备注册、验证码自动识别,以及注册登录 / 发布笔记 / 评论私信 / 账号批量管理等自动化能力,国内版与海外版均支持。容器化交付,可自行编译。

与托管 API 的区别

托管 API 开箱即用、成功才扣费,不用管设备与代理;私有化部署一次性买断、调用不计次,但账号、代理与运维都由你自己负责。

使用范围

源码仅作为学习资料提供,用于协议分析与算法研究;不含账号与平台数据。