淘宝关键词搜索 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(爆款判断)等关键字段,同时做好空值处理与分页逻辑设计,才能高效利用搜索数据实现竞品分析、市场洞察、选品决策等电商业务场景。