taobao.item.get 是淘宝开放平台获取单个商品公开 / 完整详情的核心接口,用于获取标题、价格、SKU、主图、库存、销量、属性、详情描述等结构化数据。一、接口基础信息
接口标识:
taobao.item.get(v2.0)请求地址:
o0b.cn/anzexi请求方式:POST(推荐)/ GET
返回格式:JSON(默认)/ XML
权限要求:需申请接口权限,个人 / 企业均可申请
授权类型:公开数据无需用户授权;卖家自有商品需 OAuth 授权
默认限流:2 QPS / 应用,日调用量 500–1000 次(免费版)
二、核心请求参数(必填 + 常用)
表格
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
method | String | 是 | 固定值:taobao.item.get |
app_key | String | 是 | 应用唯一标识 |
sign | String | 是 | SHA256 签名(大写) |
timestamp | String | 是 | 时间戳,格式:yyyy-MM-dd HH:mm:ss |
v | String | 是 | 固定值:2.0 |
format | String | 否 | 返回格式:json / xml,默认 json |
num_iid | Number | 是 | 商品数字 ID(必填) |
fields | String | 是 | 返回字段列表,逗号分隔 |
常用 fields 组合(按需选择)
plaintext
num_iid,title,price,pic_url,num,detail_url, seller_nick,props_name,sku,approve_status, sold_quantity,volume,item_imgs,desc
num:库存sold_quantity:累计销量volume:30 天销量sku:SKU 规格、价格、库存desc:商品详情 HTML(需单独申请权限)
三、签名生成规则(必须)
所有参数(不含
sign)按字母升序排序拼接成
key1value1key2value2…字符串末尾追加
App Secret用 SHA256 加密,结果转大写即为
sign
Python 签名示例
python
运行
import hashlibdef generate_sign(params, app_secret):
# 1. 按key升序排序
sorted_params = sorted(params.items())
# 2. 拼接参数
raw_str = ''.join([f"{k}{v}" for k, v in sorted_params])
# 3. 追加App Secret
raw_str += app_secret # 4. SHA256加密并转大写
sign = hashlib.sha256(raw_str.encode('utf-8')).hexdigest().upper()
return sign四、完整调用示例(Python)
python
运行
import requestsfrom datetime import datetimedef taobao_item_get(app_key, app_secret, num_iid, fields):
# 1. 构造公共参数
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
params = {
"method": "taobao.item.get",
"app_key": app_key,
"timestamp": timestamp,
"v": "2.0",
"format": "json",
"num_iid": num_iid,
"fields": fields }
# 2. 生成签名
sign = generate_sign(params, app_secret)
params["sign"] = sign # 3. 发送请求
url = "https://eco.taobao.com/router/rest"
response = requests.post(url, data=params)
return response.json()# 调用示例if __name__ == "__main__":
APP_KEY = "你的AppKey"
APP_SECRET = "你的AppSecret"
NUM_IID = "1234567890" # 商品ID
FIELDS = "num_iid,title,price,pic_url,sku,num"
result = taobao_item_get(APP_KEY, APP_SECRET, NUM_IID, FIELDS)
print(result)五、核心返回字段(JSON 结构)
json
{
"item_get_response": {
"item": {
"num_iid": 1234567890,
"title": "商品标题",
"price": "99.00",
"pic_url": "https://img.example.com/xxx.jpg",
"num": 100, // 库存
"sold_quantity": 5000, // 累计销量
"volume": 200, // 30天销量
"detail_url": "https://item.taobao.com/item.htm?id=1234567890",
"seller_nick": "卖家昵称",
"approve_status": "onsale", // onsale:在售, instock:仓库中
"props_name": "品牌:XX;型号:XXX;",
"sku": [
{
"sku_id": 123,
"properties_name": "颜色:红色;尺码:L",
"price": "99.00",
"quantity": 50
}
],
"item_imgs": [
{"url": "https://img.example.com/1.jpg"},
{"url": "https://img.example.com/2.jpg"}
]
},
"request_id": "xxx"
}}六、常见错误码与处理
表格
| 错误码 | 含义 | 处理方案 |
|---|---|---|
| 7 | 参数缺失 | 检查必填参数(num_iid/fields) |
| 15 | 签名错误 | 核对排序、算法、App Secret |
| 27 | 商品不存在 / 已下架 | 校验 num_iid |
| 429 | 限流 | 降低 QPS、指数退避重试、申请提额 |
| 500 | 服务端异常 | 重试(最多 3 次)、检查网络 |
| 110 | 权限不足 | 申请接口权限、检查应用审核状态 |
七、稳定性与最佳实践
严格限流:控制 QPS ≤ 2,避免触发限流
重试策略:仅对 5xx / 超时 / 429 重试,指数退避(1s→3s→5s),最多 3 次
缓存优化:热点商品缓存 1–2 小时,普通商品 6–12 小时
超时设置:请求超时 3–5s,避免阻塞
批量拆分:大批量采集拆分为小批次,间隔 1s 提交
监控告警:监控成功率、响应时间、错误率,异常及时告警
八、权限与合规
仅获取公开数据,不涉及用户隐私
数据仅限自身业务使用,禁止二次分发、售卖
遵守《淘宝开放平台开发者协议》与《反不正当竞争法》
禁止用于恶意比价、爬虫、侵权等场景