# 抖音 商品详情 API (douyin.product_detail)

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

抖音商品详情按 `product_id` 读取一件抖音商城商品：标题、店铺、展示价和当前公开优惠价、页面销量、主图与详情长图、服务保障标签、运费和发货说明、规格选项，以及是否在售。它回答「这件商品在抖音卖什么价、谁在卖、卖得怎样」，适合商家盯竞品、品牌方巡查经销商的价格，以及机构在安排达人带货前核实商品。

`price_cny` 和 `discount_price_cny` 的单位都是人民币元；`sold_count` 是整个商品的公开已售数，不是某位达人的销量。运费和发货说明保留页面原文，跨店比较前先自己解析；`variant_groups` 只有规格名、选项名和公开规格 ID，不含每个选项的价格和库存。

## Health

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

## Parameters

| name | type | required | default | description |
|---|---|---|---|---|
| product_id | not declared | yes | not declared | 抖音商城商品数字 ID；从 product_search 或 live_product_search 结果取得，不是 SKU ID、推广 ID 或商品标题。 |

## Response fields (items in `results`)

| field | meaning |
|---|---|
| product_id | 抖音商城商品稳定 ID。 |
| title | 标题。平台无标题概念时（如纯文本帖）为 null。 |
| price_cny | 商品展示价格，人民币元。 |
| discount_price_cny | 商品当前公开优惠价，人民币元；缺失时不从原价推算。 |
| sales_text | 商品详情公开销量原文。 |
| sold_count | 商品详情当前公开的已售数量；是采集时快照，不等于指定达人销量。 |
| shop_id | 抖音商城店铺 ID。 |
| shop_name | 抖音商城店铺名称。 |
| shop_avatar_url | 抖音商城店铺头像 URL。 |
| image_url | 图片链接。多图能力可能返回 image_urls 数组。 |
| main_image_urls | 商品头图/轮播图 URL 列表。 |
| detail_image_urls | 商品详情长图 URL 列表。 |
| assurances | 商品公开服务保障标签。 |
| shipping_fee_text | 商品公开运费或发货地说明原文。 |
| shipping_estimate_text | 商品公开预计发货说明原文。 |
| variant_groups | 商品规格组与可选项；只保留规格名、选项名和公开规格 ID。 |
| on_sale | 商品在采集时是否显示在售。 |
| 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": "douyin",
  "action": "product_detail",
  "params": {
    "product_id": "3836720422792070096"
  }
}'
```

```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": "douyin",
        "action": "product_detail",
        "params": {
            "product_id": "3836720422792070096",
        },
    },
    timeout=120,
)
print(response.status_code)
print(response.json())
```

## Response example

Real response to the example request above, captured 2026-11-07T14:47:42Z. `results` and `count` are real with personal information (names, handles, avatars, profile links, contact details) removed. `id`, `billing` and `quota` differ on every call, so only their shape is shown.

```text
{
  "id": "req_…",
  "platform": "douyin",
  "action": "product_detail",
  "results": {
    "product_id": "3836720422792070096",
    "title": "【呆萌熊】新品双头双效唇釉哑光镜面显白滋润持久*",
    "price_cny": 29.9,
    "discount_price_cny": 29.9,
    "sales_text": "已售 2.1万",
    "sold_count": 21000,
    "shop_id": "299794838",
    "shop_name": "云熙韩系美妆店",
    "shop_avatar_url": "https://p26-item.ecombdimg.com/img/tos-cn-i-6vegkygxbk/f8ba953ab37546efb8a919a4e9ead1a8~tplv-5mmsx3fupr-resize:74:74.webp",
    "image_url": "https://p26-item.ecombdimg.com/img/ecom-shop-material/jpeg_m_37a8f86e0effdbc561476e142b123a40_sx_459175_www800-800~tplv-5mmsx3fupr-resize_q:1080:1080:q90.webp",
    "main_image_urls": [
      "https://p26-item.ecombdimg.com/img/ecom-shop-material/jpeg_m_37a8f86e0effdbc561476e142b123a40_sx_459175_www800-800~tplv-5mmsx3fupr-resize_q:1080:1080:q90.webp",
      "https://p3-item.ecombdimg.com/img/ecom-shop-material/png_m_574f7406e9dd12bb3f18273204bf327f_sx_896309_www800-800~tplv-5mmsx3fupr-resize_q:1080:1080:q90.webp",
      "https://p26-item.ecombdimg.com/img/ecom-shop-material/jpeg_m_534c2bcde929242168bd6807ad88a191_sx_437036_www800-800~tplv-5mmsx3fupr-resize_q:1080:1080:q90.webp"
    ],
    "detail_image_urls": [
      "https://p3-item.ecombdimg.com/img/ecom-shop-material/jpeg_m_def6b7201342e9f4b6ac75d03e204a5c_sx_481255_www790-1056~tplv-5mmsx3fupr-resize:1080:0.webp",
      "https://p3-item.ecombdimg.com/img/ecom-shop-material/jpeg_m_9886a360258475ee00925b5a9002f008_sx_536482_www790-1050~tplv-5mmsx3fupr-resize:1080:0.webp",
      "https://p26-item.ecombdimg.com/img/ecom-shop-material/jpeg_m_5f7156ffb9ef5e49cf37af6be985d933_sx_487609_www790-1394~tplv-5mmsx3fupr-resize:1080:0.webp"
    ],
    "assurances": [
      "7天无理由退货"
    ],
    "shipping_fee_text": "免运费",
    "shipping_estimate_text": "预计明天发货",
    "variant_groups": [
      {
        "name": "色号",
        "options": [
          {
            "id": "•••",
            "name": "01烟熏烤奶"
          },
          {
            "id": "•••",
            "name": "02芭乐奶油"
          },
          {
            "id": "•••",
            "name": "03樱桃玫瑰"
          }
        ]
      },
      {
        "name": "第二支选择",
        "options": [
          {
            "id": "•••",
            "name": "01烟熏烤奶"
          },
          {
            "id": "•••",
            "name": "02芭乐奶油"
          },
          {
            "id": "•••",
            "name": "03樱桃玫瑰"
          }
        ]
      }
    ],
    "on_sale": true,
    "platform": "douyin"
  },
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}
```

## FAQ

### `product_id` 从哪里来？

从抖音的商品搜索或直播商品搜索结果里取，那里每件商品都带抖音商城的数字商品 ID。只传这个数字；结果里同样出现的推广 ID、SKU ID，以及商品标题，都不能代替它。

### `sold_count` 是达人带货的销量吗？

不是。它是商品详情页公开的已售数量，覆盖整个商品，不区分达人或直播间。按调用日期把它存下来，可以画出销量走势；页面上销量的原始写法保存在 `sales_text` 里。

### 为什么有的商品没有 `discount_price_cny`？

只有商品在读取时公开显示了优惠价，这个字段才有值。没有时，把 `price_cny` 当作当前展示价即可，优惠价不会根据原价推算出来。两者同时存在时可以直接相减，看出优惠幅度。

## Also

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