# 小红书 商品详情 API (xiaohongshu.product_detail)

- Canonical page: https://everyinfra.com/xiaohongshu-api/product_detail
- Endpoint: POST /api/v1/social with {"platform": "xiaohongshu", "action": "product_detail", "params": {...}}
- Price: $0.005556 per call ($5.56 per 1,000 requests); failed and empty results are not charged
- Returns: single object
- Mode: sync; add "mode": "async" for slow tasks

读小红书商城里的一件商品，用商品详情，按 `product_id` 取单个对象：标题、价格 `price` 和原价 `original_price`、类目 `category`、规格名 `variant_name`、主图和详情长图、商品参数 `attributes`，以及店铺的评分、累计销量和对应的小红书账号。它回答「这件商品到底怎么卖、店铺什么底子」，适合竞品拆解、核对商品页上的参数和给商品库补全。

`product_id` 是 24 位商品 ID，来自商品搜索结果行的 `id`，也可以直接给商品链接。`shop_user_id` 是店铺对应的小红书账号的用户 ID，可以拿去读主页资料和用户内容；`shop_follower_count` 是这个账号的粉丝数。

## Health

- Live health (24h percent, hourly and daily trends): https://api.everyinfra.com/api/v1/social/availability?platform=xiaohongshu&action=product_detail

## Parameters

| name | type | required | default | description |
|---|---|---|---|---|
| product_id | not declared | yes | not declared | 商品 ID（24 位，product_search 返回行的 id），或商品链接 https://www.xiaohongshu.com/goods-detail/<ID>。ID 格式不对时请求直接被拒、不扣费。 |

## Response fields (items in `results`)

| field | meaning |
|---|---|
| id | 该记录在原平台上的唯一标识。仅在同一平台内唯一，跨平台可能重复。 |
| title | 标题。平台无标题概念时（如纯文本帖）为 null。 |
| url | 该记录在小红书上的链接。search、note、profile、hashtag 返回的链接一般带访问令牌，未登录的浏览器也能打开（令牌有时效，过期后重新调用即可）；user_posts 返回的笔记链接不带令牌，在浏览器里打开需要令牌：用笔记 ID 调 note 能拿到可以打开的链接；search_users 返回的主页链接同样不带令牌，用 user_id 调 profile 拿能打开的链接。pgy_content_square 不带 keyword 时笔记链接带令牌，带 keyword 时不带（用笔记 ID 调 note 拿能打开的链接）。followers_list 返回的是粉丝的主页链接，同样不带令牌；note_location 返回的笔记链接带上了请求里的令牌（请求里没带就没有）。 |
| price | 价格数值，不含货币符号；币种见 currency。 |
| original_price | 商品原价（product_search、product_detail），人民币元；没有划线价时和 price 相同。 |
| currency | 价格币种代码（如 CNY、USD）。price 存在但 currency 为 null 时不要假定币种。 |
| in_stock | 商品当前是否有货（product_search、product_detail）。 |
| category | 商品类目（product_detail），如 防晒膏/防晒粉末。 |
| sold_count | 商品已售件数（product_search、product_detail），按商品页显示的数：搜索结果是精确数；详情页显示「7.2万+」这类约数时给换算后的下限（72000）。有的商品按斤、片等单位卖，就是这个单位的数量。页面没显示时没有这个字段。 |
| variant_name | 这个 SKU 的规格名（product_detail），如 1盒。 |
| image_urls | 商品主图（product_detail，商品页顶部轮播），按页面顺序。 |
| detail_image_urls | 商品详情图（product_detail，「商品详情」区的长图），按页面顺序。 |
| attributes | 商品参数（product_detail），每项 name、value，按商品页原文（如 化妆品备案编号）。 |
| shop_id | 店铺 ID（product_search、product_detail）。 |
| shop_name | 店铺名称（product_search、product_detail）。 |
| shop_rating | 店铺评分（product_detail），5 分制；新店还没有评分时没有这个字段。 |
| shop_sold_count | 店铺累计销量（product_detail）。 |
| shop_user_id | 店铺对应的小红书账号的 user_id（product_detail），可传给 profile、user_posts。 |
| shop_follower_count | 店铺对应的小红书账号的粉丝数（product_detail）。 |
| platform | 数据来源平台标识，与请求里的 platform 一致（如 xiaohongshu、tiktok）。 |

## Example

```bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "xiaohongshu",
  "action": "product_detail",
  "params": {
    "product_id": "6a4629ef7d09bf0001a45876"
  }
}'
```

```python
import os
import requests

response = requests.post(
    "https://api.everyinfra.com/api/v1/social",
    headers={"Authorization": f"Bearer {os.environ['EVERYINFRA_API_KEY']}"},
    json={
        "platform": "xiaohongshu",
        "action": "product_detail",
        "params": {
            "product_id": "6a4629ef7d09bf0001a45876",
        },
    },
    timeout=120,
)
print(response.status_code)
print(response.json())
```

## Response example

No real sample for these example parameters yet: structure only, every value is a placeholder (…).

```text
{
  "id": "req_…",
  "platform": "xiaohongshu",
  "action": "product_detail",
  "results": {
    "id": …,
    "title": …,
    "url": …,
    "price": …,
    "original_price": …,
    "currency": …,
    "in_stock": …,
    "category": …,
    "sold_count": …,
    "variant_name": …,
    "image_urls": …,
    "detail_image_urls": …,
    "attributes": …,
    "shop_id": …,
    "shop_name": …,
    "shop_rating": …,
    "shop_sold_count": …,
    "shop_user_id": …,
    "shop_follower_count": …,
    "platform": …
  },
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}
```

## FAQ

### `product_id` 从哪里来？

用商品搜索，结果行的 `id` 就是 24 位的 `product_id`；也可以直接传 https://www.xiaohongshu.com/goods-detail/<ID> 这样的商品链接。ID 格式不对时请求直接被拒，不扣费。

### `sold_count` 是精确销量吗？

不一定。详情页显示「7.2万+」这类约数时，`sold_count` 给换算后的下限，比如 72000；商品搜索那一页给的才是精确数。有的商品按斤、片等单位卖，数字就是这个单位的数量；页面没显示销量时没有这个字段。

### 想看店铺情况读哪些字段？

`shop_rating` 是 5 分制的店铺评分，新店还没有评分时没有这个字段；`shop_sold_count` 是店铺累计销量；`shop_user_id` 和 `shop_follower_count` 对应店铺的小红书账号。商品搜索那一页的行里只有 `shop_id` 和 `shop_name`，要评分和销量得来这一页。

## Also

- Capability catalog (no key): https://api.everyinfra.com/api/v1/social/catalog?platform=xiaohongshu
- OpenAPI: https://everyinfra.com/openapi.json · Agents guide: https://everyinfra.com/agents.md
