淘宝商品详情 API(taobao.item.get)从 0 到 1:申请流程、核心参数与首次调用实战
一、申请流程:从注册到权限获取
1. 注册账号
2. 创建应用并提交审核
- 进入“开发者中心”→“应用管理”→“创建应用”,填写以下信息:
- 应用名称:如“商品数据分析工具”。
- 应用描述:说明用途(如“获取商品详情用于价格监控”)。
- 回调域名:若涉及OAuth授权需填写,否则可留空。
3. 申请API权限
- 应用审核通过后(通常1-3个工作日),在“API权限”模块搜索
taobao.item.get接口,点击“申请权限”。 - 审核通过后,在应用详情页获取AppKey和AppSecret(密钥需保密,泄露可能导致账号封禁)。
二、核心参数详解:构造请求的关键字段
1. 公共参数(所有接口必传)
| 参数名 | 说明 | 示例值 |
|---|---|---|
app_key | 应用唯一标识 | YOUR_APP_KEY |
method | 接口名称 | taobao.item.get |
format | 返回数据格式 | json(默认) |
v | API版本 | 2.0 |
timestamp | 请求时间戳 | 2025-10-31 13:53:17 |
sign_method | 签名算法 | md5 |
sign | 请求签名(后文详解) | 动态生成 |
2. 业务参数(接口特定参数)
| 参数名 | 说明 | 示例值 |
|---|---|---|
num_iid | 商品ID(必选) | 602344678912 |
fields | 返回字段列表(按需筛选) | num_iid,title,price,pic_url,skus |
3. 签名机制(确保请求合法性)
- 步骤:
- 将所有参数(不含
sign)按参数名ASCII码升序排序。 - 拼接为
key=value&key=value格式字符串。 - 在字符串末尾添加
&secret=YOUR_APP_SECRET。 - 对最终字符串进行MD5加密(32位小写),生成
sign值。
- 将所有参数(不含
- Python示例:
import hashlib
def generate_sign(params, app_secret):sorted_params = sorted(params.items(), key=lambda x: x[0])sign_str = "&".join([f"{k}={v}" for k, v in sorted_params]) + f"&secret={app_secret}"return hashlib.md5(sign_str.encode("utf-8")).hexdigest().lower()三、首次调用实战:Python代码示例
1. 安装依赖库
pip install requests2. 完整调用代码
import requests
import time
import hashlib# 全局配置
APP_KEY = "YOUR_APP_KEY"
APP_SECRET = "YOUR_APP_SECRET"
API_URL = "https://eco.taobao.com/router/rest"def generate_sign(params):sorted_params = sorted(params.items(), key=lambda x: x[0])sign_str = "&".join([f"{k}={v}" for k, v in sorted_params]) + f"&secret={APP_SECRET}"return hashlib.md5(sign_str.encode("utf-8")).hexdigest().lower()def get_item_detail(item_id):# 公共参数public_params = {"app_key": APP_KEY,"method": "taobao.item.get","format": "json","v": "2.0","timestamp": time.strftime("%Y-%m-%d %H:%M:%S"),"sign_method": "md5"}# 业务参数business_params = {"num_iid": item_id,"fields": "num_iid,title,price,pic_url,skus"}# 合并参数并生成签名all_params = {**public_params, **business_params}all_params["sign"] = generate_sign(all_params)# 发送请求try:response = requests.get(API_URL, params=all_params, timeout=10)response.raise_for_status()return response.json()except Exception as e:print(f"API调用失败: {str(e)}")return None# 调用示例
if __name__ == "__main__":item_id = "602344678912" # 替换为实际商品IDresult = get_item_detail(item_id)if result and result.get("taobao_item_get_response", {}).get("code") == 200:item = result["taobao_item_get_response"]["item"]print(f"商品ID: {item['num_iid']}")print(f"标题: {item['title']}")print(f"价格: {item['price']}元")print(f"主图: {item['pic_url']}")print(f"SKU信息: {item.get('skus', [])}")else:print("获取商品详情失败")3. 响应解析
- 成功响应示例:
{"taobao_item_get_response": {"code": 200,"item": {"num_iid": "602344678912","title": "示例商品标题","price": "199.00","pic_url": "https://img.alicdn.com/example.jpg","skus": [{"property": "颜色:红色", "price": "199.00", "quantity": 100},{"property": "颜色:蓝色", "price": "199.00", "quantity": 50}]}}
}- 错误处理:检查
code字段(200为成功),非200时根据msg字段排查问题(如权限不足、参数错误)。
- 结合
taobao.items.search接口实现商品搜索功能。 - 通过定时任务同步商品数据至自有系统,支持价格监控、竞品分析等场景。
