一、接口核心能力
- 数据维度:支持获取商品基础信息(标题/价格/库存)、SKU规格、促销活动、实时销量、评价摘要、物流费用、店铺信息等超50个字段。
- 特殊功能:支持多语言翻译(中/英/俄)、数据缓存控制、历史价格追踪、促销活动标记(如聚划算/秒杀)、全球购商品标识。
- 适用场景:电商比价系统、智能选品工具、竞品监控、自有平台商品同步、用户端商品详情展示。
二、完整调用流程
1. 准入与认证
- 注册淘宝开放平台账号,完成企业/个人实名认证(需提供营业执照或身份证)。
- 创建应用:登录开发者中心→“我的应用”→新建应用,选择“自用型”或“他用型”,填写应用场景描述(如“商品数据分析”)。
- 获取凭证:应用审核通过后,在“API管理”模块查看App Key和App Secret(需妥善保管,禁止泄露)。
2. 权限申请
- 在应用详情页→“接口权限”中申请“商品详情高级版(item_get_pro)”权限,需提交使用场景说明(如“用于竞品价格监控”)。
- 审核周期通常为1-3个工作日,审核通过后权限生效。
3. 请求参数构造
- 必选参数:
method
: 固定值taobao.item.get_pro
app_key
: 应用的App Keynum_iid
: 商品ID(需通过商品搜索接口或手动获取)fields
: 指定返回字段(如title,price,skus,promotions,shop_info
)timestamp
: 请求时间戳(格式YYYY-MM-DD HH:MM:SS
)sign
: 签名(通过MD5算法生成,见下文)
- 可选参数:
cache
: 是否使用缓存数据(yes
/no
,默认yes
)lang
: 翻译语言(cn
/en
/ru
)result_type
: 返回格式(json
/xml
,默认json
)is_promotion
: 是否包含促销信息(1
/0
)
4. 签名生成规则
python
import hashlib |
from urllib.parse import urlencode |
def generate_sign(params, app_secret): |
# 1. 参数按ASCII码升序排序 |
sorted_params = sorted(params.items(), key=lambda x: x[0]) |
# 2. 拼接签名字符串 |
sign_str = app_secret + ''.join([f"{k}{v}" for k, v in sorted_params]) + app_secret |
# 3. MD5加密并转大写 |
return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper() |
# 示例参数 |
params = { |
"method": "taobao.item.get_pro", |
"app_key": "YOUR_APP_KEY", |
"num_iid": "123456789", |
"timestamp": "2025-09-07 10:00:00", |
"format": "json", |
"v": "2.0" |
} |
params["sign"] = generate_sign(params, "YOUR_APP_SECRET") |
5. 请求发送与响应解析
- 请求URL:
https://eco.taobao.com/router/rest
- 响应示例:
json
{ |
"item_get_pro_response": { |
"item": { |
"id": "123456789", |
"title": "2025新款智能手表", |
"price": "1299.00", |
"skus": [ |
{"sku_id": "111", "specs": {"颜色": "黑色", "尺寸": "42mm"}, "price": "1299.00", "stock": 100} |
], |
"promotions": [{"type": "秒杀", "start_time": "2025-09-07 12:00:00", "end_time": "2025-09-07 14:00:00"}], |
"shop_info": {"name": "官方旗舰店", "credit_score": 4.8}, |
"realtime_data": {"view_count": 5000, "conversion_rate": "3.2%"} |
} |
} |
} |
三、关键注意事项
- 频率限制:默认单应用每日调用量1万次,每秒不超过50次,大促期间可申请临时提额。
- 错误处理:
- 错误码
1001
:参数错误(检查num_iid
格式) - 错误码
1002
:商品不存在(验证商品ID有效性) - 错误码
3001
:访问令牌无效(重新生成签名)
- 错误码
- 数据合规:
- 禁止缓存价格/库存等实时数据超过15分钟
- 需标注数据来源为“淘宝开放平台”
- 禁止将数据用于非法用途(如爬虫、刷单)
四、代码示例(Python)
python
import requests |
import hashlib |
import time |
class TaobaoAPI: |
def __init__(self, app_key, app_secret): |
self.app_key = app_key |
self.app_secret = app_secret |
self.api_url = "https://eco.taobao.com/router/rest" |
def generate_sign(self, params): |
sorted_params = sorted(params.items(), key=lambda x: x[0]) |
sign_str = self.app_secret + ''.join([f"{k}{v}" for k, v in sorted_params]) + self.app_secret |
return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper() |
def get_item_detail(self, item_id, fields="id,title,price,skus,promotions,shop_info"): |
params = { |
"method": "taobao.item.get_pro", |
"app_key": self.app_key, |
"num_iid": item_id, |
"fields": fields, |
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), |
"format": "json", |
"v": "2.0" |
} |
params["sign"] = self.generate_sign(params) |
response = requests.get(self.api_url, params=params) |
result = response.json() |
return result.get("item_get_pro_response", {}).get("item", {}) |
# 使用示例 |
api = TaobaoAPI("YOUR_APP_KEY", "YOUR_APP_SECRET") |
item = api.get_item_detail("123456789") |
print(f"商品标题: {item.get('title')}") |
print(f"当前价格: {item.get('price')}") |
print(f"SKU信息: {item.get('skus', [])}") |
五、最佳实践建议
- 字段筛选:通过
fields
参数仅获取必要字段,减少数据传输量。 - 异常重试:对网络超时或频率限制错误实施指数退避重试。
- 数据清洗:使用BeautifulSoup清洗HTML详情中的脚本标签,避免XSS风险。
- 监控告警:通过日志监控接口调用成功率,异常时触发告警。
通过以上步骤,可高效调用item_get_pro接口获取淘宝商品详情高级版数据,支撑电商数据分析、智能选品等场景需求。