淘宝商品 API 接口,开发者详解与使用指南-阿里云开发者社区

  • Home
  • 硬件智库
  • 淘宝商品 API 接口,开发者详解与使用指南-阿里云开发者社区

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