POST
/v1/call/xiaohongshu.product_search预览小红书商品搜索接口
小红书独有的接口。
小红书商品搜索 API(数据接口)按搜索词取一页小红书商城的商品:标题、现价和原价(人民币)、已售件数、图片、店铺。每次调用 12 积分(约 $0.024–$0.04),失败不扣。用 HTTP 调用,或让 AI 客户端通过 MCP 调用。最近实测:2026-10-17。
12 积分每次调用
每页最多 20 条一次调用返回一页
2026-10-17最近实测
1019 B示例返回的体积(1 条)
最近更新:
预览:这个接口还没有标为稳定,参数和返回字段之后可能调整。计费和其他调用一样,调用失败不扣积分。
请求与返回
curl https://api.socialtoai.com/v1/call/xiaohongshu.product_search \ -H "Authorization: Bearer $SOCIALTOAI_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": "防晒霜" }'import osimport requestsresponse = requests.post( "https://api.socialtoai.com/v1/call/xiaohongshu.product_search", headers={"Authorization": f"Bearer {os.environ['SOCIALTOAI_KEY']}"}, json={ "query": "防晒霜", },)print(response.json())# 已经通过 MCP 接好了?直接用大白话问。用“小红书商品搜索”接口(xiaohongshu.product_search),参数是 query: 防晒霜。# 你的 AI 会调用 call 工具,参数是:{ "query": "防晒霜"}200 OK1019 B12 积分
{ "op": "xiaohongshu.product_search", "platform": "xiaohongshu", "status": "ok", "items": [ { "platform": "xiaohongshu", "id": "…", "ref": "…", "approx": [], "type": "entry", "entry_type": "product", "title": "…", "url": null, "rank": null, "heat": null, "fields": { "description": null, "price": "17.9", "original_price": null, "currency": "…", "images": ["https://example.com/…"], "rating": null, "sold": 4027, "reviews_count": null, "shop": { "id": "…", "name": "…" } } } ], "unavailable": ["url", "fields.description", "fields.rating", "fields.reviews_count"], "page": { "has_more": true, "cursor": "cur_…", "cursor_expires_at": "2026-10-12T22:25:07.000Z" }, "cost_credits": 12}- entry_type
- product
- description
null- price
- 17.9
- original_price
null- currency
- …
- rating
null- sold
- 4027
示例里的名称和正文已去掉,数字是录制时的真实值。
示例数据录制的 19 条里的 1 条
2 个参数。
1 个必填。
用 POST 发一个 JSON 请求体。Key 放在 Authorization 请求头里,不要放进网址。
| 名称 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| query | string | 必填 | — | 搜索词 |
| cursor | string | 选填 | — | 填上一次返回的 page.cursor,取下一页。 |
items 里每一条的字段。
小红书给不了的标出来了。
| 字段 | 类型 | 含义 |
|---|---|---|
| items[].title | string | 条目的标题或名称。 |
| items[].url | string始终 null | 能打开它的链接;平台的列表不带链接时为 null。 |
| items[].rank | integer | 榜上的名次,从 1 起。 |
| items[].heat | integer | 平台给的热度值。 |
| items[].fields.description | string始终 null | 商品描述。 |
| items[].fields.price | string | 现价,十进制字符串,币种见 fields.currency。 |
| items[].fields.original_price | string | 折前价。 |
| items[].fields.currency | string | 价格的币种。 |
| items[].fields.images | string[] | 图片地址。 |
| items[].fields.rating | number始终 null | 评分。 |
| items[].fields.sold | integer | 销量。 |
| items[].fields.reviews_count | integer始终 null | 评价数。 |
| items[].fields.shop.id | string | 店铺编号。 |
| items[].fields.shop.name | string | 店铺名称。 |
null小红书给不了的字段null 的意思是“小红书没给这个值”,不要当成 0。这些字段在这个调用里始终是 null:
url能打开它的链接;平台的列表不带链接时为 null。fields.description商品描述。fields.rating评分。fields.reviews_count评价数。
每一条另有 platform、id、ref、approx、type;items 外面的部分每个调用都一样。 返回格式
会发生什么。
一次调用返回一页,最多 20 条;page.has_more 为 true 时把 page.cursor 填进 cursor 取下一页,每页 12 积分,cursor 30 分钟内有效。
正常执行但没有结果,算一次成功的调用:status 为 "empty",items 为空,扣 12 积分。
每把 Key 每秒 1 次,购买后 5 次;超出不扣费。 频率限制
失败的调用 0 积分,不会自动重试。 错误码
接好 MCP 后,这样问就会用到它。
按搜索词取一页小红书商城的商品:防晒霜
12 积分call {"op":"xiaohongshu.product_search","query":"防晒霜"}
同名的接口,换个平台。
全部平台和价格POST
/v1/call/xiaohongshu.product_search{ "query": "防晒霜" }12 积分每次调用只改路径里的 op,返回的外层结构不变。
常见问题。
简短回答。
小红书的全部接口需要小红书账号,或者申请小红书官方的 API 吗?
不需要,只要一把 SocialToAI 的 Key。返回的是小红书上公开可见的内容和账号信息,你不用登录小红书,也不用在那边申请任何东西。
“预览”是什么意思?
预览:这个接口还没有标为稳定,参数和返回字段之后可能调整。计费和其他调用一样,调用失败不扣积分。