淘宝开放平台提供了丰富的商品 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 hashlibimport timeimport requestsimport 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 接口,注意数据处理和性能优化,并遵守淘宝开放平台的使用规范。