淘宝关键词搜索 API 是电商开发者实现商品搜索、竞品分析、市场洞察 的核心工具,核心接口包括 taobao.tbk.item.search(淘宝客搜索)、taobao.item.seller.search(店铺商品搜索)等。其返回数据以 JSON 格式为主,结构规范且字段分层清晰,涵盖搜索结果概览、商品核心信息、营销属性等维度。本文将拆解通用返回结构、核心字段含义、多场景示例及解析要点,为开发对接提供完整参考。
一、通用返回数据结构(成功 / 失败统一规范)
淘宝开放平台搜索类 API 遵循统一响应格式,分为成功响应 和失败响应,便于开发者封装通用解析逻辑。
1. 成功响应通用格式(以 taobao.tbk.item.search 为例)
json
{
"code": 0,
"msg": "success",
"request_id": "20250520163000123456789",
"resp_data": {
"tbk_item_search_response": {
"total_results": 15600,
"page_size": 20,
"page_no": 1,
"max_page": 780,
"results": [
{
// 单商品核心数据
}
],
"request_id": "20250520163000123456789"
}
}
}
顶层关键字段说明
| 字段名 | 含义 | 核心用途 |
|---|---|---|
code |
状态码,0= 成功,非 0 = 失败 |
快速判断请求是否成功 |
request_id |
全局请求唯一标识 | 接口调用问题排查 |
resp_data.tbk_item_search_response |
业务响应体 | 接口名 + _response 固定命名 |
total_results |
搜索结果总条数 | 分页逻辑计算(总页数 = 总条数 / 页大小) |
page_size/page_no |
每页条数 / 当前页码 | 分页请求参数校验 |
results |
商品数据数组 | 核心业务数据载体 |
2. 失败响应通用格式
json
{
"code": 40,
"msg": "error",
"request_id": "20250520163000123456789",
"resp_data": {
"error_response": {
"code": 40,
"msg": "签名错误",
"sub_code": "isv.invalid-sign",
"sub_msg": "签名参数不正确,请检查参数排序和加密逻辑"
}
}
}
错误字段核心价值 :sub_code 精准定位问题类型(如 isv.api-rate-limit-exceeded 表示接口限流,isv.permission-denied 表示权限不足)。
二、核心接口返回数据解析
淘宝关键词搜索 API 分为淘宝客通用搜索 、店铺商品搜索 、高佣商品搜索等不同类型,核心字段差异集中在营销属性,以下是两类主流接口的详细数据示例。
1. 通用商品搜索接口(taobao.tbk.item.search)
适用于关键词全网商品搜索,返回数据涵盖商品基础信息、价格、佣金、销量等核心字段,是最常用的搜索接口。
单商品完整数据示例
json
{
"num_iid": "689712345678",
"title": "2025夏季纯棉宽松T恤男 透气百搭休闲短袖 抗皱不起球",
"pict_url": "https://img.alicdn.com/imgextra/i1/234567890/O1CN01abcdefghijklmnop_!!0-item_pic.jpg",
"small_images": {
"string": [
"https://img.alicdn.com/imgextra/i2/234567890/O1CN01qrstuvwxyzabcde_!!0-item_pic.jpg",
"https://img.alicdn.com/imgextra/i3/234567890/O1CN01fghijklmnopqrst_!!0-item_pic.jpg"
]
},
"reserve_price": "99.00",
"zk_final_price": "59.90",
"user_type": 1,
"provcity": "浙江杭州",
"item_url": "https://detail.tmall.com/item.htm?id=689712345678",
"sales": 12500,
"volume": 12500,
"tk_rate": "20.00",
"commission": "11.98",
"shop_title": "XX男装旗舰店",
"shop_id": "12345678",
"category": "男装",
"cid": 50010850,
"is_tmall": true,
"created_time": "2025-04-01 10:00:00",
"material_lib_type": 1
}
核心字段分类说明
| 字段分类 | 字段名 | 含义 | 数据类型 | 核心用途 |
|---|---|---|---|---|
| 商品标识 | num_iid |
商品唯一 ID | 字符串 | 关联商品详情、评论 API |
cid |
商品类目 ID | 整数 | 类目筛选、竞品分类 | |
| 基础信息 | title |
商品标题 | 字符串 | 关键词匹配度分析 |
pict_url |
商品主图链接 | 字符串 | 素材展示、图片下载 | |
small_images.string |
商品副图数组 | 数组 | 商品图文信息采集 | |
item_url |
商品详情页链接 | 字符串 | 爬虫补全数据入口 | |
| 价格信息 | reserve_price |
商品原价 | 字符串 | 优惠力度计算(原价 - 券后价) |
zk_final_price |
券后价 / 成交价 | 字符串 | 价格竞争力分析 | |
| 营销属性 | sales/volume |
商品销量 | 整数 | 爆款判断、市场热度分析 |
tk_rate |
佣金比例 | 字符串 | 淘宝客收益计算 | |
commission |
佣金金额 | 字符串 | 推广收益评估 | |
| 店铺信息 | shop_title |
店铺名称 | 字符串 | 竞品店铺定位 |
shop_id |
店铺 ID | 字符串 | 店铺商品批量搜索 | |
is_tmall |
是否天猫店铺 | 布尔值 | 区分天猫 / 淘宝店铺 | |
| 其他信息 | provcity |
发货地 | 字符串 | 物流时效评估 |
user_type |
卖家类型(1 = 天猫,0 = 淘宝) | 整数 | 与is_tmall字段联动校验 |
2. 店铺商品搜索接口(taobao.item.seller.search)
适用于指定店铺内关键词搜索,返回数据在通用字段基础上,新增店铺内商品排序、库存等专属字段。
差异化字段示例
json
{
"num_iid": "689712345678",
"title": "2025夏季纯棉宽松T恤男",
"price": "59.90",
"stock": 5000,
"seller_cids": "123,456",
"list_time": "2025-04-01 10:00:00",
"delist_time": "2026-04-01 10:00:00",
"shop_type": 1,
"sort": "sales_desc"
}
专属字段说明
| 字段名 | 含义 | 用途 |
|---|---|---|
stock |
商品库存 | 库存预警、供应链分析 |
seller_cids |
店铺内部分类 ID | 店铺商品结构分析 |
list_time/delist_time |
上架 / 下架时间 | 新品监控、商品生命周期分析 |
sort |
店铺内排序方式 | 店铺运营策略分析(如按销量排序) |
三、不同搜索场景返回数据差异
搜索 API 的返回字段会根据搜索条件 和商品类型动态调整,以下是三类典型场景的差异示例。
1. 按销量排序场景(sort=sales_desc)
返回数据中 sales 字段按降序排列,且优先展示高销量商品,部分接口会新增 sales_trend 字段(销量增长趋势)。
json
{
"num_iid": "689712345678",
"sales": 12500,
"sales_trend": "up",
"30day_sales": 5000
}
2. 按价格区间搜索场景(start_price=30&end_price=80)
返回商品的 zk_final_price 均在指定区间内,且会新增 price_rank 字段(价格排名)。
json
{
"num_iid": "689712345678",
"zk_final_price": "59.90",
"price_rank": 3
}
3. 特殊类目场景(如美妆 / 3C)
- 美妆类目 :新增
brand(品牌)、function(功效)字段; - 3C 类目 :新增
model(型号)、after_sale(售后服务)字段。
json
// 美妆类目示例
{
"num_iid": "987654321012",
"brand": "XX美妆",
"function": "保湿、控油"
}
四、数据解析实战示例(Python)
以下是基于 Python 的搜索 API 数据解析示例,包含成功 / 失败判断、核心字段提取、数据格式化三个核心步骤。
python
运行
import json
def parse_search_api_response(response_data):
"""
解析淘宝关键词搜索API返回数据
:param response_data: API返回的原始JSON字典
:return: 格式化商品列表 + 搜索元数据(总条数、页码)
"""
# 1. 判断请求是否成功
if response_data.get("code") != 0:
error_info = response_data["resp_data"]["error_response"]
raise Exception(
f"API调用失败:{error_info['msg']} "
f"(错误码:{error_info['code']},子错误码:{error_info['sub_code']})"
)
# 2. 提取搜索元数据
search_resp = response_data["resp_data"]["tbk_item_search_response"]
meta_data = {
"总条数": search_resp.get("total_results", 0),
"当前页码": search_resp.get("page_no", 1),
"每页条数": search_resp.get("page_size", 20),
"总页数": search_resp.get("max_page", 0)
}
# 3. 格式化商品数据
formatted_items = []
raw_items = search_resp.get("results", [])
for item in raw_items:
formatted = {
"商品ID": item.get("num_iid"),
"商品标题": item.get("title"),
"主图链接": item.get("pict_url"),
"券后价": float(item.get("zk_final_price", 0)),
"原价": float(item.get("reserve_price", 0)),
"销量": item.get("sales", 0),
"店铺名称": item.get("shop_title"),
"是否天猫": item.get("is_tmall", False),
"佣金比例": float(item.get("tk_rate", 0))
}
formatted_items.append(formatted)
return meta_data, formatted_items
# 模拟API成功返回数据
mock_success_response = {
"code": 0,
"msg": "success",
"request_id": "20250520163000123456789",
"resp_data": {
"tbk_item_search_response": {
"total_results": 15600,
"page_size": 20,
"page_no": 1,
"max_page": 780,
"results": [
{
"num_iid": "689712345678",
"title": "2025夏季纯棉宽松T恤男",
"pict_url": "https://xxx.jpg",
"zk_final_price": "59.90",
"reserve_price": "99.00",
"sales": 12500,
"shop_title": "XX男装旗舰店",
"is_tmall": True,
"tk_rate": "20.00"
}
]
}
}
}
# 调用解析函数
try:
meta, items = parse_search_api_response(mock_success_response)
print("搜索元数据:", json.dumps(meta, ensure_ascii=False, indent=2))
print("商品列表:", json.dumps(items, ensure_ascii=False, indent=2))
except Exception as e:
print("解析失败:", str(e))
五、数据解析与使用注意事项
- 字段类型转换 :价格(
zk_final_price)、佣金(commission)等字段为字符串格式,需转换为float类型后再进行计算,避免精度丢失。 - 空值处理 :
small_images、tk_rate等字段在非淘宝客商品中可能为空,解析时需设置默认值(如空数组、0),避免KeyError。 - 分页逻辑 :单页最大返回 100 条数据,超过总页数时接口返回空数组,需通过
total_results和page_size计算总页数,循环获取全量数据。 - 图片有效期:商品图片链接有效期为 30 天,如需长期存储,建议下载至自有服务器,并替换链接。
- 限流适配:搜索 API 有严格的 QPS 限制(普通应用 1 QPS,企业应用 5 QPS),建议将解析后的数据缓存至 Redis/MySQL,减少重复调用。
- 权限差异 :部分字段(如
stock、commission)需申请对应权限才能获取,未授权时返回null,需在开放平台确认权限状态。
六、总结
淘宝关键词搜索 API 返回数据具有结构统一、字段分层、场景适配性强 的特点,核心解析重点在于顶层状态判断 和商品核心字段提取 。开发者需重点关注 num_iid(关联其他 API)、zk_final_price(价格分析)、sales(爆款判断)等关键字段,同时做好空值处理与分页逻辑设计,才能高效利用搜索数据实现竞品分析、市场洞察、选品决策等电商业务场景。