XHS(小红书)使用指南(App V2 版)
基于 TikHub OpenAPI(
https://api.tikhub.io)整理的小红书接口文档。
本文档只收录 App V2 系列接口。
⚠️ 重要通知 · 系列迁移公告(2026-06-17 生效)
- App 系列(App V1)与 Web 系列(Web V2 / Web V3)自 2026-06-17 起已永久下线,请勿再调用。 请将全部接口统一迁移至 App V2。App V2 非常稳定,是当前唯一推荐且受支持的系列,无需再配置任何备用 / 兜底(fallback)接口。
- 各系列下线背景:Web V3 长期稳定性较差、Web V2 已进入弃用流程,因此不再保留 Web 系列;App V1 同步停止维护。如果你之前的代码还在调用这些系列,请尽快替换为下方对应的 App V2 端点。
目录
通用说明
- Base URL:
https://api.tikhub.io - 鉴权:请求头携带
Authorization: Bearer YOUR_API_KEY。 - 系列说明:App 系列(App V1)与 Web 系列(Web V2 / Web V3)已于 2026-06-17 永久下线;App V2 是当前唯一推荐且受支持的系列,最稳定、数据最完整,无需配置任何备用 / 兜底接口。
- ID 与分享链接二选一:大多数接口既支持传对象 ID(
note_id/user_id/page_id),也支持传分享链接(share_text,支持 APP / Web 端长短链)。两者都传时以 ID 为准;手上只有分享链接时,直接传share_text即可,无需先解析 ID。 - 笔记类型:图文笔记与视频笔记使用各自独立的 App V2 端点,详见第 1 节。
1. 单一笔记
小红书的笔记分为两类:图文笔记(图片笔记) 和 视频笔记。App V2 为两种类型提供了独立的端点,数据最完整。
1.1 图片笔记(图文笔记)
获取图文笔记的完整详情数据(图片地址、标题、正文、标签、互动数据等)。
- 方法:GET
- 路径:
/api/v1/xiaohongshu/app_v2/get_image_note_detail - 官方文档:docs.tikhub.io/420136391e0
- 参数:
note_id(string, 可选):笔记 ID,例如"697c0eee000000000a03c308"share_text(string, 可选):小红书分享链接(支持 APP / Web 端)- 二选一,优先使用
note_id;都传则以note_id为准
1import requests
2
3BASE_URL = "https://api.tikhub.io"
4HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
5
6url = f"{BASE_URL}/api/v1/xiaohongshu/app_v2/get_image_note_detail"
7params = {
8 "note_id": "697c0eee000000000a03c308",
9 # "share_text": "https://www.xiaohongshu.com/discovery/item/...",
10}
11r = requests.get(url, headers=HEADERS, params=params)
12print(r.json())1.2 视频笔记
获取视频笔记的完整详情数据(视频地址、封面、时长、标题、正文、互动数据等)。
- 方法:GET
- 路径:
/api/v1/xiaohongshu/app_v2/get_video_note_detail - 官方文档:docs.tikhub.io/420136392e0
- 参数:
note_id(string, 可选):例如"697c0eee000000000a03c308"share_text(string, 可选)- 二选一,优先
note_id
1url = f"{BASE_URL}/api/v1/xiaohongshu/app_v2/get_video_note_detail"
2params = {
3 "note_id": "697c0eee000000000a03c308",
4 # "share_text": "https://www.xiaohongshu.com/discovery/item/...",
5}
6r = requests.get(url, headers=HEADERS, params=params)
7print(r.json())2. 用户信息
通过 user_id 获取小红书用户的公开资料(昵称、头像、简介、粉丝数、关注数、笔记数等)。
💡 只有分享链接? App V2 接口支持
user_id/share_text二选一,直接把用户主页分享链接传给share_text即可,无需先解析user_id。
获取指定用户的详细信息,包含昵称、头像、简介、粉丝数、关注数、笔记数等。
- 方法:GET
- 路径:
/api/v1/xiaohongshu/app_v2/get_user_info - 官方文档:docs.tikhub.io/420136395e0
- 参数:
user_id(string, 可选):用户 ID,例如"61b46d790000000010008153"share_text(string, 可选):小红书用户分享链接(支持 APP / Web 端)- 二选一,优先使用
user_id;都传则以user_id为准
1import requests
2
3BASE_URL = "https://api.tikhub.io"
4HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
5
6url = f"{BASE_URL}/api/v1/xiaohongshu/app_v2/get_user_info"
7params = {
8 "user_id": "61b46d790000000010008153",
9 # "share_text": "https://www.xiaohongshu.com/user/profile/...",
10}
11r = requests.get(url, headers=HEADERS, params=params)
12print(r.json())3. 用户作品
按 user_id 拉取用户的笔记列表,所有接口都使用游标分页(cursor)。App V2 提供两个接口:用户已发布笔记列表,以及用户公开收藏的笔记列表。
💡 只有分享链接? 接口支持
user_id/share_text二选一,直接传分享链接到share_text即可。
3.1 获取用户已发布笔记列表
获取指定用户已发布的笔记列表,使用游标分页。
- 方法:GET
- 路径:
/api/v1/xiaohongshu/app_v2/get_user_posted_notes - 官方文档:docs.tikhub.io/420136396e0
- 参数:
user_id(string, 可选):用户 ID,例如"61b46d790000000010008153"share_text(string, 可选):小红书用户分享链接(支持 APP / Web 端)- 二选一,优先
user_id;都传则以user_id为准 cursor(string, 可选):分页游标,首次请求留空;翻页时取上一次响应中notes列表最后一条笔记的cursor(路径示例:$.data.data.notes[-1].cursor)
1import requests
2
3BASE_URL = "https://api.tikhub.io"
4HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
5
6url = f"{BASE_URL}/api/v1/xiaohongshu/app_v2/get_user_posted_notes"
7params = {
8 "user_id": "61b46d790000000010008153",
9 "cursor": "", # Empty for first request / 首次留空
10}
11r = requests.get(url, headers=HEADERS, params=params)
12print(r.json())3.2 获取用户公开收藏的笔记列表
获取指定用户公开收藏的笔记列表(不是用户自己发布的,而是 ta 收藏的内容),使用游标分页。
- 方法:GET
- 路径:
/api/v1/xiaohongshu/app_v2/get_user_faved_notes - 官方文档:docs.tikhub.io/420136397e0
- 参数:
user_id(string, 可选):例如"5a8cf39111be10466d285d6b"share_text(string, 可选)- 二选一,优先
user_id cursor(string, 可选):分页游标,首次留空;翻页传上一页最后一条笔记的note_id
1url = f"{BASE_URL}/api/v1/xiaohongshu/app_v2/get_user_faved_notes"
2params = {
3 "user_id": "5a8cf39111be10466d285d6b",
4 "cursor": "",
5}
6r = requests.get(url, headers=HEADERS, params=params)
7print(r.json())4. 评论
小红书的评论分为两层:一级评论(笔记下的评论列表) 和 二级评论(某条评论下的回复/子评论列表)。
4.1 一级评论(笔记下的评论列表)
- 方法:GET
- 路径:
/api/v1/xiaohongshu/app_v2/get_note_comments - 官方文档:docs.tikhub.io/420136394e0
- 参数:
note_id(string, 可选):笔记 IDshare_text(string, 可选):分享链接(与note_id二选一,优先note_id)cursor(string, 可选):分页游标,首次留空index(integer, 可选):评论索引,首次传0pageArea(string, 可选):折叠状态,UNFOLDED(默认)/FOLDEDsort_strategy(string, 可选):排序,default/latest_v2(默认) /like_count
1import requests
2
3BASE_URL = "https://api.tikhub.io"
4HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
5
6url = f"{BASE_URL}/api/v1/xiaohongshu/app_v2/get_note_comments"
7params = {
8 "note_id": "697c0eee000000000a03c308",
9 "cursor": "",
10 "index": 0,
11 "pageArea": "UNFOLDED",
12 "sort_strategy": "latest_v2",
13}
14r = requests.get(url, headers=HEADERS, params=params)
15print(r.json())4.2 二级评论(子评论 / 回复列表)
获取某条一级评论下的所有回复(子评论),使用游标分页。
- 方法:GET
- 路径:
/api/v1/xiaohongshu/app_v2/get_note_sub_comments - 官方文档:docs.tikhub.io/420748830e0
- 参数:
note_id(string, 可选)share_text(string, 可选)(与note_id二选一,优先note_id)comment_id(string, 必填):父评论 IDcursor(string, 可选):首次留空,翻页时从$.data.cursor中取index(integer, 可选):首次传1,翻页时从$.data.cursor中取
1url = f"{BASE_URL}/api/v1/xiaohongshu/app_v2/get_note_sub_comments"
2params = {
3 "note_id": "699916e6000000001d0253da",
4 "comment_id": "PARENT_COMMENT_ID",
5 "cursor": "",
6 "index": 1,
7}
8r = requests.get(url, headers=HEADERS, params=params)
9print(r.json())5. 搜索
小红书搜索分两类:搜索笔记 和 搜索用户,App V2 均提供。
翻页时记得带上首次搜索返回的
search_id/search_session_id。
5.1 搜索笔记
- 方法:GET
- 路径:
/api/v1/xiaohongshu/app_v2/search_notes - 官方文档:docs.tikhub.io/420136398e0
- 参数:
keyword(string, 必填):搜索关键词,例如"美食推荐"page(integer, 可选):页码,从1开始sort_type(string, 可选):排序,general(综合,默认)/time_descending(最新)/popularity_descending(最多点赞)/comment_descending(最多评论)/collect_descending(最多收藏)/english_preferred(英文优先)note_type(string, 可选):笔记类型,不限(默认)/视频笔记/普通笔记/直播笔记time_filter(string, 可选):发布时间,不限(默认)/一天内/一周内/半年内search_id(string, 可选):翻页时传首次响应里的值search_session_id(string, 可选):翻页时传首次响应里的值source(string, 可选):来源,默认explore_feedai_mode(integer, 可选):AI 模式,0(关闭,默认)/1(开启)
1import requests
2
3BASE_URL = "https://api.tikhub.io"
4HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
5
6url = f"{BASE_URL}/api/v1/xiaohongshu/app_v2/search_notes"
7params = {
8 "keyword": "美食推荐",
9 "page": 1,
10 "sort_type": "general",
11 "note_type": "不限",
12 "time_filter": "不限",
13 # Pass search_id and search_session_id from first response for pagination / 翻页时需要带上首次响应里的 search_id 和 search_session_id
14 # "search_id": "...",
15 # "search_session_id": "...",
16}
17r = requests.get(url, headers=HEADERS, params=params)
18print(r.json())5.2 搜索用户
每页固定返回 20 条结果,支持分页。
- 方法:GET
- 路径:
/api/v1/xiaohongshu/app_v2/search_users - 官方文档:docs.tikhub.io/420136399e0
- 参数:
keyword(string, 必填):搜索关键词,例如"美食博主"page(integer, 可选):页码,从1开始search_id(string, 可选):翻页时传首次响应里的值source(string, 可选):来源,默认explore_feed
1url = f"{BASE_URL}/api/v1/xiaohongshu/app_v2/search_users"
2params = {
3 "keyword": "美食博主",
4 "page": 1,
5 # Pass search_id from first response for pagination / 翻页时带上首次响应里的 search_id
6 # "search_id": "...",
7}
8r = requests.get(url, headers=HEADERS, params=params)
9print(r.json())6. 话题
小红书话题相关接口分两部分:话题详情 和 话题下的笔记列表。
⚠️ 所有接口都以
page_id(话题/话题标签 ID)作为唯一标识。
6.1 话题详情
获取话题详情(话题名称、浏览量、讨论数、分享信息等)。
- 方法:GET
- 路径:
/api/v1/xiaohongshu/app_v2/get_topic_info - 官方文档:docs.tikhub.io/420136407e0
- 参数:
page_id(string, 必填):话题页面 ID,例如"5c1cc866febed9000184b7c1"source(string, 可选):来源,默认normalnote_id(string, 可选):来源笔记 ID,从笔记跳转到话题时可传入
1import requests
2
3BASE_URL = "https://api.tikhub.io"
4HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
5
6url = f"{BASE_URL}/api/v1/xiaohongshu/app_v2/get_topic_info"
7params = {
8 "page_id": "5c1cc866febed9000184b7c1",
9 "source": "normal",
10 # "note_id": "...", # Optional: pass when navigating from a note / 从笔记跳转过来时可带
11}
12r = requests.get(url, headers=HEADERS, params=params)
13print(r.json())
14# Response contains page_info (name/views/discussions), tabs, share_info, etc. / 返回包含 page_info(名称/浏览量/讨论数)、tabs、share_info 等6.2 话题笔记列表(话题下的笔记)
获取某个话题/话题标签下的笔记列表,使用游标分页。
- 方法:GET
- 路径:
/api/v1/xiaohongshu/app_v2/get_topic_feed - 官方文档:docs.tikhub.io/420136408e0
- 参数:
page_id(string, 必填):话题页面 IDsort(string, 可选):trend(最热,默认)/time(最新)cursor_score(string, 可选):翻页游标分数,翻页时传上一页最后一条 item 的cursor_scorelast_note_id(string, 可选):翻页时传上一页最后一条笔记 ID(items[-1].id)last_note_ct(string, 可选):翻页时传上一页最后一条笔记创建时间(items[-1].create_time)session_id(string, 可选):会话 ID,翻页时保持一致first_load_time(string, 可选):首次加载时间戳,翻页时保持一致source(string, 可选):来源,默认normal
1url = f"{BASE_URL}/api/v1/xiaohongshu/app_v2/get_topic_feed"
2
3# First request: pass only page_id and sort / 首次请求:只传 page_id 和 sort
4params = {
5 "page_id": "5c1cc866febed9000184b7c1",
6 "sort": "trend",
7}
8r = requests.get(url, headers=HEADERS, params=params)
9data = r.json()
10print(data)
11
12# Next page: pass through the following fields from the first response / 翻页请求:从首次响应中取下列字段透传
13# items = data["data"]["items"]
14# next_params = {
15# "page_id": "5c1cc866febed9000184b7c1",
16# "sort": "trend",
17# "cursor_score": items[-1]["cursor_score"],
18# "last_note_id": items[-1]["id"],
19# "last_note_ct": items[-1]["create_time"],
20# "session_id": data["data"]["session_id"],
21# "first_load_time": data["data"]["first_load_time"],
22# }