你想了解淘宝商品详情 API 请求的「全场景」(包括接口类型、请求参数、不同场景的适配),并获取可参考的 JSON 返回数据结构,我会从「官方 / 第三方 API 选型→全场景请求示例→JSON 数据参考→避坑要点」展开,覆盖个人 / 企业不同使用场景,确保你能适配各类 API 调用需求。
一、淘宝商品详情 API 选型(按场景分类)
淘宝无公开的「免费商品详情 API」,需根据自身场景选择适配方案,以下是主流选型及适用场景:
表格
| API 类型 | 适用场景 | 核心特点 | 反爬 / 权限要求 |
|---|---|---|---|
| 淘宝开放平台官方 API | 企业 / 商家(有店铺资质) | 数据权威、稳定,支持全字段获取 | 需要企业认证、申请应用、签约接口 |
| 第三方聚合 API(如聚合数据) | 个人 / 小型团队(无企业资质) | 开箱即用,无需复杂认证,仅需 AppKey | 第三方封装,有调用次数限制(免费版够用) |
| 抓包自研 API(淘宝后台接口) | 技术型团队(追求高性价比) | 免费、高效,直接调用淘宝原生接口 | 需处理 Cookie / 登录态、IP 封禁、接口变更 |
二、全场景 API 请求示例(附代码)
场景 1:第三方聚合 API(个人首选,最简)
1. 准备工作
- 关注博主,领取「淘宝商品详情 API」,获取
AppKey; - 商品 ID 提取:从淘宝商品 URL(
https://item.taobao.com/item.htm?id=698765432109)中提取698765432109。
2. 请求代码(Python)
python
运行
import requests
import json
# 配置信息
APP_KEY = "你的聚合数据AppKey"
ITEM_ID = "698765432109" # 淘宝商品ID
API_URL = "https://v.juhe.cn/taobao/item/detail"
def request_taobao_3rd_api():
"""调用第三方淘宝商品详情API(全字段请求)"""
# 1. 构造请求参数(第三方API通用参数)
params = {
"key": APP_KEY, # 必选:聚合数据AppKey
"num_iid": ITEM_ID, # 必选:淘宝商品ID
"is_promotion": "1" # 可选:是否获取促销价(1=是,0=否)
}
# 2. 构造请求头(模拟浏览器,避免拦截)
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Referer": f"https://item.taobao.com/item.htm?id={ITEM_ID}"
}
try:
# 3. 发送请求
response = requests.get(API_URL, params=params, headers=headers, timeout=10)
if response.status_code == 200:
# 4. 解析JSON数据
result = response.json()
# 格式化输出完整JSON(便于参考结构)
print("✅ 第三方API返回完整JSON:")
print(json.dumps(result, ensure_ascii=False, indent=4))
return result
else:
print(f"❌ 请求失败,状态码:{response.status_code}")
except Exception as e:
print(f"❌ 请求异常:{str(e)}")
return None
if __name__ == "__main__":
request_taobao_3rd_api()
场景 2:淘宝开放平台官方 API(企业场景)
1. 准备工作
- 注册开放平台,完成企业认证,创建应用,申请
taobao.item.get接口; - 获取
AppKey、AppSecret,生成 API 调用签名(官方提供 SDK)。
2. 请求代码(Python,基于官方 SDK)
python
运行
from top.api import ItemGetRequest
from top.api import RestApi
# 配置信息
APP_KEY = "你的开放平台AppKey"
APP_SECRET = "你的开放平台AppSecret"
SESSION_KEY = "用户授权SessionKey(可选,部分接口需要)"
ITEM_ID = "698765432109"
class TaobaoRestApi(RestApi):
def __init__(self, appkey, appsecret, sessionkey=None):
super().__init__(appkey, appsecret)
self.sessionkey = sessionkey
self.set_app_info(RestApi(appkey, appsecret))
def request_taobao_official_api():
"""调用淘宝开放平台官方API"""
# 1. 初始化API客户端
req = ItemGetRequest()
req.set_app_info(TaobaoRestApi(APP_KEY, APP_SECRET, SESSION_KEY))
# 2. 设置请求参数(官方接口参数)
req.num_iid = ITEM_ID # 必选:商品ID
req.fields = "num_iid,title,price,stock,sell_count,shop_name,item_img" # 可选:指定返回字段
req.is_promotion = "true" # 可选:是否返回促销价
try:
# 3. 发送请求并解析
result = req.getResponse()
print("✅ 官方API返回完整JSON:")
print(json.dumps(result, ensure_ascii=False, indent=4))
return result
except Exception as e:
print(f"❌ 官方API调用失败:{str(e)}")
return None
if __name__ == "__main__":
request_taobao_official_api()
场景 3:抓包自研 API(技术型场景)
1. 准备工作
- 浏览器 F12 抓包淘宝详情页 XHR 请求,提取:
- 接口 URL:如
https://h5api.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/; - 请求参数:
data={"itemNumId":"698765432109"}、appKey、t等; - 请求头:
Cookie(登录态)、MTOP-SESSION、User-Agent。
- 接口 URL:如
2. 请求代码(Python)
python
运行
import requests
import json
# 配置信息(抓包获取)
ITEM_ID = "698765432109"
API_URL = "https://h5api.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/"
COOKIE = "你的淘宝登录Cookie" # 关键:必须带登录态
def request_taobao_crawl_api():
"""调用抓包获取的淘宝原生API"""
# 1. 构造请求参数(抓包得到的参数)
params = {
"jsv": "2.7.0",
"appKey": "12574478", # 淘宝固定appKey,抓包确认
"t": "1740000000000", # 时间戳,可动态生成
"sign": "抓包得到的签名(或自研签名算法)",
"api": "mtop.taobao.detail.getdetail",
"v": "6.0",
"dataType": "json",
"data": json.dumps({"itemNumId": ITEM_ID})
}
# 2. 构造请求头(核心:Cookie和MTOP相关)
headers = {
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 TaobaoiPhoneClient/10.20.0",
"Cookie": COOKIE,
"MTOP-SESSION": "抓包得到的SESSION",
"Referer": f"https://detail.tmall.com/item.htm?id={ITEM_ID}",
"Origin": "https://detail.tmall.com"
}
try:
# 3. 发送POST请求(淘宝原生接口多为POST)
response = requests.post(
API_URL,
params=params,
headers=headers,
timeout=10
)
if response.status_code == 200:
result = response.json()
print("✅ 自研API返回完整JSON:")
print(json.dumps(result, ensure_ascii=False, indent=4))
return result
else:
print(f"❌ 请求失败,状态码:{response.status_code}")
except Exception as e:
print(f"❌ 请求异常:{str(e)}")
return None
if __name__ == "__main__":
request_taobao_crawl_api()
三、JSON 返回数据参考(全字段)
1. 第三方聚合 API JSON 参考(最简洁,新手友好)
json
{
"error_code": 0, // 通用状态码:0=成功
"reason": "success", // 状态描述
"result": { // 商品核心数据层
"num_iid": "698765432109", // 商品ID
"title": "2025新款淘宝爆款短袖T恤男纯棉宽松夏季百搭上衣", // 商品标题
"price": "59.9", // 原价(字符串)
"promotion_price": "49.9", // 促销价
"sales": "10万+", // 销量
"stock": "9999", // 库存数量
"stock_state": "有货", // 库存状态
"shop_name": "淘宝爆款男装店", // 店铺名称
"shop_id": "123456789", // 店铺ID
"brand": "无品牌", // 品牌
"category": "男装>T恤", // 分类
"pic_url": "https://img.alicdn.com/imgextra/i1/30874/xxx.jpg", // 主图
"detail_url": "https://item.taobao.com/item.htm?id=698765432109", // 详情页URL
"spec_info": [ // 规格信息
{"name": "颜色", "value": "黑色"},
{"name": "尺码", "value": "XL"}
],
"create_time": "2025-01-01", // 上架时间
"good_rate": "98%", // 好评率
"delivery_fee": "0.0", // 运费
"delivery_place": "浙江杭州" // 发货地
}
}
2. 淘宝开放平台官方 API JSON 参考(最权威,字段最全)
json
{
"item_get_response": {
"item": {
"num_iid": "698765432109",
"title": "2025新款淘宝爆款短袖T恤男纯棉宽松夏季百搭上衣",
"price": 59.9, // 官方API为数值类型
"type": "fixed", // 价格类型:fixed=一口价
"cid": "123456", // 分类ID
"seller_cids": "789", // 店铺分类ID
"props_name": "1627207:28314:颜色:黑色;1627207:28315:尺码:XL", // 规格属性
"props": [ // 详细规格
{"name": "品牌", "value": "无品牌"},
{"name": "面料", "value": "纯棉"}
],
"sales": 100000, // 销量(数值)
"stock": 9999, // 库存(数值)
"shop_name": "淘宝爆款男装店",
"nick": "淘宝卖家昵称", // 卖家昵称
"item_imgs": [ // 商品图片列表
{"url": "https://img.alicdn.com/imgextra/i1/30874/xxx.jpg"}
],
"location": "浙江杭州", // 发货地
"created": "2025-01-01 00:00:00", // 上架时间
"modified": "2025-01-10 00:00:00" // 修改时间
},
"request_id": "123456789abc" // 请求ID(排查问题用)
}
}
3. 抓包自研 API JSON 参考(最复杂,原生数据)
json
{
"ret": ["SUCCESS::调用成功"], // 调用状态
"data": {
"itemInfo": { // 商品基础信息
"price": {
"priceText": "¥59.9", // 价格文本
"promotionPrice": "49.9", // 促销价
"originalPrice": "59.9" // 原价
},
"itemBasicInfo": {
"itemId": "698765432109",
"title": "2025新款淘宝爆款短袖T恤男纯棉宽松夏季百搭上衣",
"sellCount": "10万+",
"stockCount": "9999"
},
"shopInfo": {
"shopId": "123456789",
"shopName": "淘宝爆款男装店",
"shopType": "C店" // 店铺类型:C店/天猫
}
},
"skuBase": { // 规格信息
"skuProps": [
{"propName": "颜色", "values": [{"name": "黑色", "price": "49.9"}]},
{"propName": "尺码", "values": [{"name": "XL", "price": "49.9"}]}
]
},
"rateInfo": { // 评价信息
"goodRate": "98%",
"rateCount": "10000"
}
}
}
四、全场景核心注意点(避坑)
- 状态码判断 :
- 第三方 API:优先看
error_code(0 = 成功); - 官方 API:看
ret(SUCCESS = 成功); - 自研 API:看
ret或code字段,无则看 HTTP 状态码。
- 第三方 API:优先看
- 字段兼容性 :
- 价格字段:第三方 API 多为字符串,官方 API 为数值,需按需转换;
- 销量字段:部分场景返回「10 万 +」(字符串),需解析为数值(如
100000); - 规格字段:不同 API 返回格式不同(数组 / 字符串),需统一解析逻辑。
- 反爬 / 权限 :
- 第三方 API:无需登录,但有调用次数限制(免费版约 100 次 / 天);
- 官方 API:需企业资质,按调用量收费;
- 自研 API:需维护 Cookie / 签名,IP 易被封,适合小批量采集。
- 数据完整性 :
- 未登录状态下,自研 API 只能获取基础字段(标题 / 价格),无法获取库存 / 销量;
- 促销价需指定
is_promotion=1参数才能返回。
总结
- 场景选型:个人用第三方 API,企业用官方 API,技术团队可自研;
- JSON 核心:所有 API 均包含「商品 ID、标题、价格、店铺名称」核心字段,差异在扩展字段和格式;
- 避坑关键 :第三方 API 关注
error_code,官方 API 关注签名,自研 API 关注 Cookie / 登录态; - 字段处理 :统一价格 / 销量的类型转换,用
dict.get()提取字段避免 KeyError。
以上覆盖了淘宝商品详情 API 请求的所有主流场景,JSON 数据可直接作为解析模板,代码可根据自身场景调整参数 / 请求头即可使用。