淘宝店铺所有商品 API 接口全解析:批量获取全店商品数据(2026 最新版)

简介: 在电商数据采集与店铺管理场景中,批量获取淘宝店铺所有商品是核心需求之一。淘宝开放平台提供了标准化 API 接口,支持按店铺、类目、时间等维度拉取商品全量数据,涵盖标题、价格、SKU、库存、销量等关键字段。本文将从接口选型、参数配置、代码实现、数据解析全流程展开讲解,适用于店铺运营、ERP 系统对接、竞品分析等场景。

在电商数据采集与店铺管理场景中,批量获取淘宝店铺所有商品是核心需求之一。淘宝开放平台提供了标准化 API 接口,支持按店铺、类目、时间等维度拉取商品全量数据,涵盖标题、价格、SKU、库存、销量等关键字段。本文将从接口选型、参数配置、代码实现、数据解析全流程展开讲解,适用于店铺运营、ERP 系统对接、竞品分析等场景。

一、核心主题与适用场景

适用场景

  • 店铺商家:批量同步商品至 ERP 系统、库存监控、商品批量上下架
  • 竞品分析:抓取竞品店铺商品、价格走势、SKU 规格对比
  • 数据聚合:多店铺商品整合、选品工具开发、市场调研
  • 开发者:淘宝开放平台 API 接入、通用商品数据接口实现

二、淘宝店铺商品核心 API 接口(官方)

淘宝开放平台提供3 类核心接口用于获取店铺商品,覆盖全量商品、列表商品、搜索商品场景,需注意接口权限差异(商家授权 / 第三方应用权限)。

表格

接口名称 接口方法名 核心能力 适用场景 权限要求
店铺商品列表(全量) taobao.shop.get.items 按店铺账号获取全量商品,支持分页 商家自有店铺商品同步、全店商品采集 商家授权(需店铺 token)
批量商品详情查询 taobao.items.list.get 批量获取商品详情(单次≤20 个 ID) 已知商品 ID 批量拉取详情、库存 / 价格监控 通用开发者权限
店铺类目商品查询 taobao.items.search 按类目 / 关键词查询店铺商品 类目商品筛选、竞品选品分析 通用开发者权限
淘宝客店铺商品 taobao.tbk.shop.recommend.get 获取店铺推荐商品(含佣金 / 优惠券) 淘宝客选品、推广商品采集 淘宝客联盟权限

重点接口详解

1. taobao.shop.get.items(商家专属全量商品接口)

核心优势:直接获取商家店铺下所有商品,无需手动提取商品 ID,支持按时间、状态筛选(在售 / 售中 / 下架),是商家批量采集的首选接口。

必填参数

  • session:店铺授权 token(商家授权获取)
  • nick:店铺账号(卖家昵称)
  • page_no:分页页码(默认 1)
  • page_size:每页条数(最大 200,推荐 100-200)
  • status:商品状态(onsale = 在售,all = 全部)

2. taobao.items.search(通用搜索接口)

核心优势:支持类目 ID、关键词、店铺 ID多维筛选,可精准获取店铺指定类目商品,适合竞品类目分析。

必填参数

  • q:关键词 / 店铺 ID(可传店铺昵称精准查询)
  • cat:类目 ID(可选,筛选指定类目)
  • page_no/page_size:分页参数
  • fields:指定返回字段(提升效率)

三、前置准备:获取 API 调用权限

1. 注册淘宝开放平台账号

  • 访问:https://open.taobao.com/,用淘宝账号登录
  • 完成实名认证(个人 / 企业),进入开发者中心

2. 创建应用并获取密钥

  • 开发者中心 → 应用管理 → 创建新应用
  • 应用类型选择电商工具 / 数据工具,填写基本信息
  • 审核通过后,获取AppKey、AppSecret(核心密钥,需保密)

3. 申请接口权限

  • 进入API 权限管理,搜索目标接口(如taobao.shop.get.items
  • 提交权限申请(注明用途:如 “店铺商品批量同步”)
  • 等待审核(1-3 个工作日)

4. 获取授权 Token(商家专属接口)

  • 商家需通过OAuth2.0 授权,将店铺账号授权给你的应用
  • 授权流程:
  1. 构造授权 URL(替换 AppKey 与回调地址)url
https://oauth.taobao.com/authorize?response_type=code&client_id=你的AppKey&redirect_uri=你的回调地址&view=web
  1. 店铺账号登录并授权,回调地址返回code
  2. code换取access_token(授权 token)
  3. access_token有效期 30 天,需定期刷新

四、Python 调用淘宝店铺商品 API(完整示例)

以下以获取店铺在售全量商品为例,提供可直接运行的 Python 代码,包含签名生成、请求发送、数据分页、JSON 解析全流程。

1. 环境准备

安装依赖库:

bash

运行

pip install requests

2. 核心代码(商家全量商品接口)

python

运行

import requests
import time
import json
import hashlib
class TaobaoShopClient:
    def __init__(self, app_key, app_secret, access_token):
        self.app_key = app_key
        self.app_secret = app_secret
        self.access_token = access_token
        self.api_url = "https://eco.taobao.com/router/rest"  # 淘宝开放平台网关
    def generate_sign(self, params):
        """生成淘宝API签名(MD5加密)"""
        # 1. 参数按key字典排序
        sorted_params = sorted(params.items())
        # 2. 拼接参数串
        param_str = "".join([f"{k}{v}" for k, v in sorted_params])
        # 3. 前后加AppSecret,MD5加密
        sign_str = f"{self.app_secret}{param_str}{self.app_secret}"
        return hashlib.md5(sign_str.encode("utf-8")).hexdigest().upper()
    def request(self, method, params):
        """通用API请求方法"""
        # 公共参数
        public_params = {
            "method": method,
            "app_key": self.app_key,
            "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"),
            "format": "json",
            "v": "2.0",
            "sign_method": "md5",
            "access_token": self.access_token
        }
        # 合并公共参数与业务参数
        all_params = {**public_params, **params}
        # 生成签名
        all_params["sign"] = self.generate_sign(all_params)
        try:
            # 发送POST请求
            resp = requests.post(self.api_url, data=all_params, timeout=15)
            resp.raise_for_status()  # 抛出HTTP错误
            return resp.json()
        except Exception as e:
            return {"error": f"请求失败:{str(e)}"}
    def get_shop_all_items(self, shop_nick, page_no=1, page_size=200, status="onsale"):
        """获取淘宝店铺所有商品(分页)"""
        params = {
            "nick": shop_nick,  # 店铺账号昵称
            "page_no": page_no,
            "page_size": page_size,
            "status": status,  # 在售商品:onsale,全部:all
            "fields": "num_iid,title,price,sku,stock,volume,category_id,pic_url,publish_time"  # 指定返回字段
        }
        return self.request("taobao.shop.get.items", params)
    def parse_shop_items(self, json_data):
        """解析店铺商品数据(结构化)"""
        try:
            # 淘宝API返回结构:第一层为接口方法名+_response
            items_response = json_data.get("taobao_shop_get_items_response", {})
            result = items_response.get("shop_item_get_response", {})
            total_results = result.get("total_results", 0)  # 商品总数
            items = result.get("items", {}).get("item", [])  # 商品列表
            # 结构化解析
            parsed_items = []
            for item in items:
                parsed_items.append({
                    "商品ID": item.get("num_iid"),
                    "商品标题": item.get("title"),
                    "售价": item.get("price"),
                    "库存": item.get("stock", 0),
                    "销量": item.get("volume", 0),
                    "类目ID": item.get("category_id"),
                    "主图": item.get("pic_url"),
                    "发布时间": item.get("publish_time"),
                    "SKU": item.get("sku", "")  # SKU详情需单独解析
                })
            return {
                "total": total_results,
                "items": parsed_items
            }
        except Exception as e:
            return {"error": f"解析失败:{str(e)}"}
# ===================== 配置信息(替换为自己的) =====================
APP_KEY = "你的淘宝开放平台AppKey"
APP_SECRET = "你的淘宝开放平台AppSecret"
ACCESS_TOKEN = "店铺授权获取的access_token"
SHOP_NICK = "目标店铺账号昵称"  # 如:xx旗舰店
# 初始化客户端
client = TaobaoShopClient(APP_KEY, APP_SECRET, ACCESS_TOKEN)
# ===================== 批量获取全店商品 =====================
if __name__ == "__main__":
    all_items = []
    total_items = 0
    page = 1
    # 循环获取所有分页数据
    while True:
        print(f"正在获取第 {page} 页商品...")
        # 获取当前页商品
        response = client.get_shop_all_items(SHOP_NICK, page_no=page, page_size=200)
        # 解析数据
        parsed_data = client.parse_shop_items(response)
        if "error" in parsed_data:
            print(f"获取失败:{parsed_data['error']}")
            break
        # 累加商品数据
        items = parsed_data["items"]
        if not items:
            break
        all_items.extend(items)
        total_items = parsed_data["total"]
        # 分页终止条件:当前页商品数 < 每页条数,或已获取全部
        if len(items) < 200:
            break
        page += 1
        time.sleep(1)  # 限流,避免触发平台风控
    # 输出结果
    print(f"共获取 {total_items} 个商品,实际解析 {len(all_items)} 个")
    # 保存至JSON文件
    with open("taobao_shop_items.json", "w", encoding="utf-8") as f:
        json.dump(all_items, f, ensure_ascii=False, indent=2)
    print("商品数据已保存至 taobao_shop_items.json")

3. 通用商品解析(第三方应用 / 非商家场景)

若无需商家授权,可通过 **taobao.items.search** 接口,按店铺关键词查询商品:

python

运行

def get_shop_items_by_search(shop_nick, page_no=1, page_size=100):
    """通过搜索接口获取店铺商品(非商家授权)"""
    params = {
        "q": shop_nick,  # 店铺昵称作为关键词
        "page_no": page_no,
        "page_size": page_size,
        "fields": "num_iid,title,price,volume,pic_url"
    }
    return client.request("taobao.items.search", params)
# 调用示例
search_response = get_shop_items_by_search("xx旗舰店")
print(search_response)

五、关键参数与字段说明

1. 核心返回字段(店铺商品)

表格

字段 含义 解析方式
num_iid 商品唯一 ID 直接取值,用于后续详情查询
title 商品标题 包含品牌、型号、规格等信息
price 商品售价 字符串类型,需转 float 计算
stock 库存数量 商家接口返回真实库存,第三方接口可能为空
volume 销量 30 天销量 / 总销量(平台规则)
sku SKU 规格信息 需单独解析,包含颜色、尺寸、内存等
pic_url 主图链接 可直接访问的商品主图
category_id 类目 ID 用于商品分类归类
publish_time 发布时间 商品上架时间

2. 分页参数

  • page_no:页码,从 1 开始
  • page_size:每页条数,淘宝 API 最大支持200 条 / 页,推荐 100-200,平衡请求效率与响应体积
  • 分页终止:当返回的商品列表为空,或商品总数 ≤ (页码 - 1)* 每页条数时,停止采集

六、限流与风控规避(重要)

淘宝 API 对接口调用频率有严格限制,需遵守以下规则避免封禁:

  1. 频率限制
  • 个人开发者:QPS≤2,日调用量≤1000
  • 企业开发者:QPS≤50,日调用量≤10000(可申请提升)
  • 商家专属接口:按店铺授权额度限制,建议1 秒 1 次
  1. 限流处理
  • 429(限流)、10003(频率超限)错误,立即停止请求,指数退避重试(1s→2s→4s→8s)
  • 批量采集时,每获取 1 页数据,休眠 1-2 秒
  1. IP 与设备风控
  • 避免单 IP 高频请求,商用场景建议使用静态代理 IP
  • 多店铺采集时,轮换不同 AppKey / 设备信息

七、常见问题与解决方案

  1. 权限不足(403 错误)
  • 原因:未申请接口权限、授权 token 失效
  • 解决:在开放平台补全接口权限,重新获取 access_token
  1. 接口返回空数据
  • 原因:店铺无在售商品、分页参数错误、店铺昵称错误
  • 解决:核对店铺账号,调整page_no/status参数
  1. SKU 数据缺失
  • 原因:未在fields中指定sku字段
  • 解决:请求时fields添加sku参数,单独解析 SKU 数组
  1. 数据量过大(超 10 万条)
  • 原因:店铺商品数过多,单脚本采集效率低
  • 解决:分布式采集(多线程 / 多进程)、分时段采集、增量更新(仅获取新增 / 修改商品)

八、扩展方向

  1. 数据存储:将解析后的商品数据存入MySQL/PostgreSQL,建立商品数据表,支持快速查询
  2. 实时监控:结合定时任务(如 APScheduler),定期采集店铺商品,实现价格、库存变动监控
  3. SKU 精细化解析:单独调用taobao.item.sku.get接口,获取 SKU 详细规格、价格、库存
  4. 跨平台整合:结合京东、拼多多 API,实现多平台店铺商品统一管理

九、合规声明

  1. 淘宝 API 数据采集需遵守淘宝开放平台用户协议,仅用于合法商业 / 学习场景,禁止批量倒卖数据、破坏平台规则
  2. 非商家授权采集竞品商品时,需控制频率,避免对平台服务器造成压力
  3. 商用场景建议联系淘宝商务,获取官方授权接口,降低合规风险
相关文章
|
5月前
|
数据采集 监控 API
合法获取淘宝商品数据:通过淘宝开放平台API的实践指南
本文介绍通过淘宝开放平台官方API合法获取商品数据的完整流程,强调禁止爬虫、遵守协议,确保合规调用商品详情、搜索等接口,规避法律与封号风险。
|
3月前
|
JSON 算法 API
调用淘宝开放平台API获取店铺所有商品列表
本文详解如何调用淘宝开放平台API(如taobao.items.list.get)批量获取店铺商品信息,涵盖接口功能、授权准备(App Key/Secret、Access Token)、签名生成、分页调用及Python实战示例,助开发者高效安全接入。
|
2月前
|
Java API 开发工具
Java获取淘宝商品价格、图片与视频:淘宝开放平台API实战指南
本文详解Java调用淘宝开放平台taobao.item.get接口获取商品详情:涵盖账号注册、权限申请、MD5签名生成、HTTP请求实现及多媒体资源处理,提供完整代码示例与SDK简化方案,助开发者高效集成商品价格、图片、视频等核心数据。(239字)
|
2月前
|
JSON 程序员 API
淘宝 API 上货 / 商品搬家 业务场景实现 + JSON 返回示例
淘宝 API 上货 / 搬家 = 自动把商品从其他平台(1688、拼多多、抖音、淘宝其他店铺)搬到淘宝店
|
2月前
|
数据采集 人工智能 API
2026 淘宝 API 接口实用指南:从资质申请到实战避坑
2026年淘宝API接入指南:详解账号资质(个人/企业/服务商权限差异)、凭证获取(新增场景核验)、高频接口实战(商品/订单/支付回调代码)、签名避坑、合规要点及工具推荐,助开发者高效安全对接。
|
1月前
|
安全 API 开发工具
淘宝 API 接口是什么?2026 最新接口文档及接入方法
淘宝API是淘宝官方开放的安全数据通道,支持商品管理、订单处理、物流同步、营销推广等200+自动化能力。本文详解2026最新接入流程、权限申请、签名规则、常用接口及Python调用示例,新手也能零基础快速上手。(239字)
|
2月前
|
数据采集 缓存 API
淘宝商品详情数据抓取全流程解析:从API调用到数据优化实战技巧
本文详解淘宝商品详情数据采集技术,涵盖官方与第三方API选型、签名认证、响应解析(标题/价格/SKU/图片等)、缓存与异常处理策略,并提供实战技巧与合规建议,助力比价系统、选品工具高效落地。
|
3月前
|
缓存 JSON API
​​​​​​​如何通过淘宝开放平台API获取指定店铺的所有商品信息
本文详解如何通过淘宝开放平台API(如taobao.shop.items.get)获取指定店铺全部商品:涵盖开发者注册、App Key/Secret申请、OAuth 2.0授权、签名生成、分页调用及错误处理,并附Python示例代码与最佳实践。(239字)
|
3月前
|
JSON 监控 小程序
淘宝商品详情 API(taobao.item.get)完整使用教程
从 0 到 1 手把手教你调用、解析、落地业务 适配场景:无货源代发、闲鱼铺货、ERP 同步、导购小程序、比价工具
|
3月前
|
监控 安全 数据挖掘
好用的电商API接口推荐(技术员实操版)
作为技术员,“好用”的电商API核心标准是:合规稳定、接入便捷、响应高效、成本可控,无需冗余功能,能精准匹配业务场景、降低开发运维成本。以下按「核心场景」分类,推荐主流、靠谱的电商API接口,涵盖官方接口和优质第三方接口,附技术层面的核心优势,可直接对照选型、对接开发。