摘要:电商竞品分析经常需要持续跟踪竞品店铺的商品上新、调价、下架动作。传统网页爬虫存在 IP 封禁、页面改版、维护成本高等问题。本文介绍淘宝开放平台 taobao.items.search.shop 在售商品接口,讲解接口授权、参数、分页逻辑、JSON 样例、数据指标计算、Python 调用示例以及生产环境踩坑经验,帮助后端与数据开发人员稳定获取竞品店铺全店商品数据,搭建竞品监控体系。适合数据开发、电商技术、产品运营阅读。
一、业务背景:
竞品研究的数据痛点做电商竞品分析,需要持续获取竞品店铺在售商品清单,用于:
监控新品上架、旧品下架;
跟踪售价、SKU 变动;
统计店铺品类结构、爆款分布;分析竞品上新节奏与定价策略。
1.早期方案:网页爬虫
缺点:页面 DOM 结构一变代码失效;高频抓取极易触发风控,IP 被封;数据脏数据多,解析成本高;合规风险:逆向爬取页面存在一定风险。选型:taobao.items.search.shop 淘宝在售商品 API 该接口可拉取指定店铺下在售商品列表,返回标准化结构化 JSON 数据,字段稳定,适合长期做竞品店铺数据采集。
2.业务目标
通过店铺授权,批量拉取店铺所有在售商品;分页循环拉取,保存商品基础信息;对比历史快照,识别上新、调价、下架事件;输出竞品品类分布、价格区间、爆款清单,支撑竞品研究。二、接口基础说明接口名称:taobao.items.search.shop 作用:获取授权店铺中在售的商品列表。
3.核心请求参数表参数
| 参数 | 是否必填 | 说明 |
|---|---|---|
| method | 是 | taobao.items.search.shop(前往Taobaoapi2014体验) |
| adress url | 是 | c0b.cc/R4rbK2 |
| fields | 是 | 指定返回字段:num_iid,title,price,pic_url,list_time,delist_time 等 |
| page_no | 可选 | 页码,从 1 开始 |
| page_size | 可选 | 每页条数,参考接口配额上限 |
| cid | 可选 | 类目 ID,可按类目过滤店铺商品 |
二、请求示例 & JSON 返回样例
请求参数示例
json
{ "method": "taobao.items.onsale.get", "fields": "num_iid,title,price,pic_url,list_time,item_url", "page_no": 1, "page_size": 20}
返回 JSON 样例
json
{ "items_onsale_get_response": { "total_results": 156, "items": [ { "num_iid": "745123698521", "title": "家用多功能厨房收纳盒 抽屉分隔收纳", "price": "16.80", "pic_url": "https://gw.alicdn.com/kf/xxx.jpg", "list_time": "2026-09-01 10:20:00", "item_url": "https://item.taobao.com/item.htm?id=745123698521" }, { "num_iid": "745123698522", "title": "硅胶保鲜盖 食品级密封盖万能碗盖", "price": "9.90", "pic_url": "https://gw.alicdn.com/kf/yyy.jpg", "list_time": "2026-09-05 14:10:00", "item_url": "https://item.taobao.com/item.htm?id=745123698522" } ], "page_no": 1, "page_size": 20 }}
三、Python 简易调用示例(伪代码)
lua
import requestsimport time
def get_shop_onsale_items(page_no=1): params = { "method": "taobao.items.onsale.get", "appkey": "你的appkey", "timestamp": str(int(time.time()*1000)), "fields": "num_iid,title,price,pic_url,list_time,item_url", "page_no": page_no, "page_size": 20 } # 省略签名生成逻辑 resp = requests.get("https://gw.api.taobao.com/router/rest", params=params) return resp.json()
# 分页循环拉取整店商品page = 1while True: res = get_shop_onsale_items(page_no=page) item_list = res["items_onsale_get_response"]["items"] if not item_list: break # 入库、和历史数据对比,识别上新/调价 page += 1 time.sleep(1) # 限流休眠
四、竞品研究核心数据处理逻辑
拿到整店商品列表后,做数据对比分析:
- 上新识别:本次拉取出现数据库不存在的 num_iid,标记为新品;
- 下架识别:上次存在,本次接口不再返回,标记为下架;
- 价格监控:对比历史 price,识别涨价 / 降价;
- 品类统计:按类目分组,统计店铺主力品类;
- 爆款筛选:配合商品详情 API 拿到销量,筛选店铺爆款。
五、生产环境踩坑实录授权限制
接口必须店铺账号授权 ISV 应用,无法直接抓取未授权的竞品店铺,很多开发者初期会误解这个接口能力。方案:如果需要分析外部竞品店铺,需要业务侧提前准备授权链路,或搭配搜索接口做补充。
接口 QPS 配额 开放平台有调用额度,批量多店铺轮询采集极易触发限流。推荐使用任务队列 + 令牌桶限流,错峰执行。分页总数限制 分页不能无限制翻页,需要判断返回商品是否为空来终止循环,不要硬编码最大页码。字段判空 部分商品字段可能为空(如部分老商品 list_time 缺失),代码增加判空逻辑,避免数据库写入异常。商品状态区分该接口只返回在售商品,已下架、仓库中商品不会返回,不能用来统计历史全部上架记录,需要自建快照存储。
六、总结
taobao.items.search.shop 适合已授权店铺的全店在售商品批量拉取,是电商竞品数据分析、店铺商品资产盘点的稳定方案。
通过定时拉取 + 历史快照对比,可自动识别竞品店铺上新、下架、价格变动,为竞品研究提供持续、可靠的数据来源。