淘宝开放平台提供了丰富的商品 API 接口,可用于获取商品详情、搜索商品、查询商品列表等功能。以下是对淘宝商品 API 的深度解析和使用示例:
一、核心商品 API 接口
- 商品详情 API (taobao.item.get)
功能:获取单个商品的详细信息
权限:需申请
参数:
num_iid:商品 ID(必选)
fields:返回字段列表(如 title,price,pic_url 等) - 商品搜索 API (taobao.items.search)
功能:根据关键词搜索商品
权限:需申请
参数:
q:搜索关键词(必选)
page_no:页码
page_size:每页数量
sort:排序方式(price_asc,price_desc 等) - 商品列表 API (taobao.items.list)
功能:批量获取商品信息
权限:需申请
参数:
num_iids:商品 ID 列表(最多 40 个)
fields:返回字段列表
二、API 调用流程 - 认证与授权
AppKey & AppSecret:创建应用后获取
签名机制:使用 MD5 算法生成签名
OAuth2.0:部分接口需要用户授权 - 签名生成示例
python
运行
import hashlib
def generate_sign(params, app_secret):
"""生成API签名"""
# 1. 参数排序
sorted_params = sorted(params.items(), key=lambda x: x[0])
# 2. 拼接字符串
sign_str = app_secret
for k, v in sorted_params:
sign_str += f"{k}{v}"
sign_str += app_secret
# 3. MD5加密
return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()
三、完整代码示例
以下是使用 Python 实现淘宝商品 API 调用的完整示例:
python
运行
import hashlib
import time
import requests
import json
class TaobaoAPI:
def init(self, app_key, app_secret):
"""初始化淘宝API客户端"""
self.app_key = app_key
self.app_secret = app_secret
self.api_url = "https://eco.taobao.com/router/rest"
def generate_sign(self, params):
"""生成API签名"""
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 call(self, method, params=None):
"""通用API调用方法"""
if params is None:
params = {}
# 公共参数
common_params = {
"app_key": self.app_key,
"method": method,
"format": "json",
"v": "2.0",
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
"sign_method": "md5"
}
# 合并参数
all_params = {**common_params, **params}
# 生成签名
all_params["sign"] = self.generate_sign(all_params)
# 发送请求
response = requests.get(self.api_url, params=all_params)
return response.json()
class TaobaoItemAPI(TaobaoAPI):
def get_item_detail(self, item_id, fields="num_iid,title,price,pic_url,item_desc"):
"""获取商品详情"""
method = "taobao.item.get"
params = {
"num_iid": item_id,
"fields": fields
}
return self.call(method, params)
def search_items(self, keyword, page=1, page_size=20, sort="default"):
"""搜索商品"""
method = "taobao.items.search"
params = {
"q": keyword,
"page_no": page,
"page_size": page_size,
"sort": sort,
"fields": "num_iid,title,nick,price,pic_url,sell_count"
}
return self.call(method, params)
def get_items_list(self, item_ids, fields="num_iid,title,price,pic_url"):
"""批量获取商品信息"""
method = "taobao.items.list"
params = {
"num_iids": ",".join(map(str, item_ids)),
"fields": fields
}
return self.call(method, params)
使用示例
if name == "main":
# 替换为你的AppKey和AppSecret
app_key = "你的AppKey"
app_secret = "你的AppSecret"
# 初始化API客户端
api = TaobaoItemAPI(app_key, app_secret)
# 1. 获取单个商品详情
item_detail = api.get_item_detail(612345678901)
print(f"商品详情: {json.dumps(item_detail, ensure_ascii=False, indent=2)}")
# 2. 搜索商品
search_result = api.search_items("iPhone 15", page=1, page_size=10, sort="price_asc")
print(f"搜索结果: {len(search_result.get('items_search_response', {}).get('items', {}).get('item', []))}个商品")
# 3. 批量获取商品
items_list = api.get_items_list([612345678901, 623456789012])
print(f"批量获取: {len(items_list.get('items_list_response', {}).get('items', {}).get('item', []))}个商品")
四、API 响应数据结构
- 商品详情响应示例
json
{
"item_get_response": {
"item": {
"num_iid": 612345678901,
"title": "Apple iPhone 15 256GB 黑色 全网通",
"price": "7999.00",
"original_price": "8999.00",
"pic_url": "https://img.alicdn.com/item.jpg",
"item_desc": "全新Apple iPhone 15...",
"num": 100,
"seller_cids": "50011993",
"props": [
],{"name": "品牌", "value": "Apple"}, {"name": "型号", "value": "iPhone 15"}, {"name": "颜色", "value": "黑色"}, {"name": "内存容量", "value": "256GB"}
"location": "广东 深圳",
"created": "2025-01-01 12:00:00",
"modified": "2025-07-01 10:30:00"
}
}
} - 商品搜索响应示例
json
{
"items_search_response": {
"total_results": 1258,
"items": {
"item": [
]{ "num_iid": 612345678901, "title": "Apple iPhone 15 256GB 黑色 全网通", "nick": "苹果官方旗舰店", "price": "7999.00", "pic_url": "https://img.alicdn.com/item.jpg", "sell_count": "1234" }, { "num_iid": 623456789012, "title": "iPhone 15 Pro 256GB 暗紫色 全网通", "nick": "授权经销商", "price": "9999.00", "pic_url": "https://img.alicdn.com/item2.jpg", "sell_count": "876" }
}
}
}
五、关键参数与使用技巧 - 常用筛选参数
price_from/price_to:价格区间
is_tmall:是否天猫商品
has_discount:是否有折扣
location:发货地 - 分页处理
page_no:页码(默认 1)
page_size:每页数量(最大 40)
total_results:总结果数(用于计算总页数) - 性能优化
批量请求:使用items.list接口减少请求次数
缓存机制:对不经常变化的数据设置缓存
异步处理:使用 asyncio/aiohttp 实现并发请求
六、常见问题与解决方案 - 签名错误
原因:参数排序错误、时间戳偏差
解决方案:
确保参数按字典序排序
同步服务器时间(误差不超过 15 分钟) - 权限不足
原因:未申请或未通过接口权限审核
解决方案:
在开放平台申请相应权限
完善应用信息和使用场景说明 - 频率限制
默认配额:新应用 500 次 / 天
解决方案:
控制请求频率
申请提升 API 调用配额
七、应用场景
电商选品工具:分析商品价格、销量和评价
价格监控系统:跟踪特定商品价格变化
比价应用:对比不同店铺商品价格
数据采集与分析:获取市场数据用于商业决策
通过淘宝商品 API,开发者可以构建功能丰富的电商应用和工具。在实际开发中,建议根据业务需求合理选择 API 接口,注意数据处理和性能优化,并遵守淘宝开放平台的使用规范。