淘宝店铺所有商品 API 接口开发者示例

简介: 本文介绍了通过淘宝开放平台API获取店铺商品信息的完整实现方案,涵盖接口选择、权限申请、Python代码示例及数据解析等内容,适用于电商开发中的商品同步、分析与管理场景。

获取淘宝店铺的所有商品信息是电商开发中的常见需求,通过 API 接口可以高效地实现店铺商品的同步、分析与管理。以下是完整的接口调用示例及实现方案:
一、接口选择与权限申请

  1. 核心接口介绍
    获取店铺商品的主要接口是taobao.shop.get和taobao.items.onsale.get:
    taobao.shop.get:获取店铺基本信息(含店铺 ID)
    taobao.items.onsale.get:获取店铺在售商品列表
  2. 权限申请流程
    登录淘宝开放平台
    创建应用并完成实名认证
    申请以下权限:
    taobao.shop.get(基础权限,可直接申请)
    taobao.items.onsale.get(需提交应用场景审核)
    获取 AppKey 和 AppSecret
    二、完整代码示例(Python)
  3. 基础 API 调用类
    python
    运行
    import hashlib
    import time
    import requests
    import json
    import math

class TaobaoAPI:
def init(self, app_key, app_secret):
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签名(MD5算法)"""
    sorted_params = sorted(params.items(), key=lambda x: x[0])
    sign_str = self.app_secret
    for k, v in sorted_params:
        sign_str += f"{k}{v}"
    sign_str += self.app_secret
    return hashlib.md5(sign_str.encode()).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()
  1. 获取店铺信息及商品列表
    python
    运行
    class TaobaoShopAPI(TaobaoAPI):
    def get_shop_info(self, seller_nick):

     """根据卖家昵称获取店铺信息"""
     method = "taobao.shop.get"
     params = {
         "seller_nick": seller_nick
     }
     result = self.call(method, params)
     return result
    

    def get_shop_items(self, seller_id, page_no=1, page_size=40):

     """获取店铺在售商品列表"""
     method = "taobao.items.onsale.get"
     params = {
         "seller_id": seller_id,
         "page_no": page_no,
         "page_size": page_size,
         "fields": "num_iid,title,price,pic_url,item_desc,seller_cids"
     }
     result = self.call(method, params)
     return result
    

    def get_all_shop_items(self, seller_nick, page_size=40):

     """获取店铺所有在售商品(自动处理分页)"""
     # 1. 获取店铺ID
     shop_result = self.get_shop_info(seller_nick)
     if "error_response" in shop_result:
         print(f"获取店铺信息失败: {shop_result['error_response']['msg']}")
         return []
    
     seller_id = shop_result["shop_get_response"]["shop"]["seller_id"]
     print(f"店铺ID: {seller_id}")
    
     # 2. 获取总商品数
     first_page = self.get_shop_items(seller_id, page_no=1, page_size=1)
     if "error_response" in first_page:
         print(f"获取商品列表失败: {first_page['error_response']['msg']}")
         return []
    
     total_results = first_page["items_onsale_get_response"]["total_results"]
     if total_results == 0:
         print("该店铺没有在售商品")
         return []
    
     # 3. 计算总页数
     total_pages = math.ceil(total_results / page_size)
     print(f"店铺共有 {total_results} 个商品,共 {total_pages} 页")
    
     # 4. 分页获取所有商品
     all_items = []
     for page in range(1, total_pages + 1):
         print(f"正在获取第 {page}/{total_pages} 页...")
         page_result = self.get_shop_items(seller_id, page, page_size)
         if "items" in page_result["items_onsale_get_response"]:
             items = page_result["items_onsale_get_response"]["items"]["item"]
             all_items.extend(items)
    
         # 避免频繁调用触发限流
         time.sleep(1)
    
     print(f"成功获取 {len(all_items)} 个商品")
     return all_items
    
  2. 示例调用与结果处理
    python
    运行
    使用示例
    if name == "main":
    替换为你的AppKey和AppSecret
    app_key = "你的AppKey"
    app_secret = "你的AppSecret"

    替换为目标店铺的卖家昵称
    seller_nick = "示例店铺"

    初始化API
    api = TaobaoShopAPI(app_key, app_secret)

    获取店铺所有商品
    all_items = api.get_all_shop_items(seller_nick)

    处理结果(示例:保存到JSON文件)
    if all_items:

     with open(f"shop_{seller_nick}_items.json", "w", encoding="utf-8") as f:
         json.dump(all_items, f, ensure_ascii=False, indent=2)
     print(f"已保存商品数据到 shop_{seller_nick}_items.json")
    
     # 示例:统计商品价格分布
     prices = [float(item["price"]) for item in all_items]
     avg_price = sum(prices) / len(prices)
     max_price = max(prices)
     min_price = min(prices)
     print(f"商品价格统计 - 平均: {avg_price:.2f}元, 最高: {max_price:.2f}元, 最低: {min_price:.2f}元")
    

    三、接口响应数据解析

  3. 店铺信息响应示例
    json
    {
    "shop_get_response": {
    "shop": {
    "shop_id": 123456789,
    "seller_id": 987654321,
    "seller_nick": "示例店铺",
    "shop_name": "示例品牌官方店",
    "shop_url": "https://shop123456789.taobao.com",
    "main_image": "https://img.alicdn.com/shop.jpg",
    "create_time": "2020-01-01 12:00:00",
    "modify_time": "2025-07-01 10:00:00",
    "description": "专注于高品质商品销售...",
    "shop_score": {
     "score_item": [
       {"rate": 4.9, "type": "item"},    # 描述相符
       {"rate": 4.8, "type": "service"}, # 服务态度
       {"rate": 4.9, "type": "delivery"}  # 物流服务
     ]
    
    }
    }
    }
    }
  4. 商品列表响应示例
    json
    {
    "items_onsale_get_response": {
    "total_results": 100,
    "items": {
    "item": [
     {
       "num_iid": 112233445566,
       "title": "2025新款夏季纯棉T恤 男女同款",
       "price": "79.00",
       "original_price": "99.00",
       "pic_url": "https://img.alicdn.com/item.jpg",
       "item_desc": "优质纯棉面料...",
       "seller_cids": "16,160",  # 卖家自定义类目
       "props": [
         {"name": "颜色", "value": "白色,黑色,灰色"},
         {"name": "尺码", "value": "S,M,L,XL"}
       ],
       "sell_count": 1234,       # 30天销量
       "comment_count": 567,     # 评论数
       "is_taobao": true,        # 是否为淘宝商品(非天猫)
       "shop_id": 123456789
     },
     {
       "num_iid": 223344556677,
       "title": "真皮休闲运动鞋 透气轻便",
       "price": "199.00",
       "pic_url": "https://img.alicdn.com/item2.jpg",
       "sell_count": 890,
       "shop_id": 123456789
     }
    
    ]
    }
    }
    }
    四、关键技术要点
  5. 分页处理策略
    taobao.items.onsale.get接口默认每页返回 40 条数据
    通过total_results字段获取总商品数,计算总页数
    建议每次请求间隔 1-2 秒,避免触发频率限制
  6. 频率限制与异常处理
    新开发者默认调用限制:200 次 / 天
    常见错误码处理:
    40001:缺少必选参数 → 检查参数完整性
    40003:权限不足 → 确认权限申请状态
    41001:频率限制 → 增加请求间隔或申请更高配额
  7. 数据缓存优化
    python
    运行
    import redis
    import time

class CachedTaobaoAPI(TaobaoShopAPI):
def init(self, app_key, app_secret, redis_host="localhost", redis_port=6379):
super().init(app_key, app_secret)
self.redis_client = redis.Redis(host=redis_host, port=redis_port)

def call(self, method, params=None):
    """带缓存的API调用"""
    if params is None:
        params = {}

    # 生成缓存键
    cache_key = f"taobao_api:{method}:{json.dumps(params, sort_keys=True)}"

    # 检查缓存(有效期2小时)
    cached_result = self.redis_client.get(cache_key)
    if cached_result:
        return json.loads(cached_result)

    # 无缓存,调用API
    result = super().call(method, params)

    # 缓存结果
    self.redis_client.setex(cache_key, 7200, json.dumps(result))

    return result

五、应用场景扩展
店铺商品同步系统:
定时同步店铺商品到自有平台
监控商品价格、库存变化并预警
竞品分析工具:
批量获取竞品店铺商品数据
分析价格策略、销售情况和用户评价
选品推荐系统:
基于店铺商品数据生成选品建议
结合销售数据和市场趋势优化推荐算法
商品信息管理:
批量导出商品信息用于数据分析
自动生成商品详情页或营销素材
通过以上示例,开发者可以快速实现淘宝店铺商品的获取与管理功能。在实际应用中,建议根据业务需求增加数据清洗、异步处理和可视化展示等功能,提升系统的实用性和效率。同时,注意遵守淘宝开放平台的使用规范,确保数据使用的合法性。

相关文章
|
9天前
|
JSON 安全 API
亚马逊商品列表API秘籍!轻松获取商品列表数据
亚马逊商品列表API(SP-API)提供标准化接口,支持通过关键词、分类、价格等条件搜索商品,获取ASIN、价格、销量等信息。采用OAuth 2.0认证与AWS签名,保障安全。数据以JSON格式传输,便于开发者批量获取与分析。
|
10天前
|
JSON 缓存 算法
如何通过API获取1688商品类目数据:技术实现指南
1688开放平台提供alibaba.category.get接口,支持获取全量商品类目树。RESTful架构,返回JSON数据,含类目ID、名称、层级等信息。需注册账号、创建应用并授权。请求需签名认证,QPS限10次,建议缓存更新周期≥24小时。
107 2
|
11天前
|
JSON API 数据格式
亚马逊商品评论API接口技术指南
亚马逊商品评论API可程序化获取指定ASIN商品的用户评价,包含评分、内容、时间等结构化数据。需企业认证并遵守使用协议,日调用上限500次。支持分页与排序查询,适用于竞品分析、口碑监测等场景,结合SP-API可构建完整电商数据方案。(238字)
156 3
|
11天前
|
JSON 算法 API
1688比价API接口:实现商品价格高效比较的技术指南
本文介绍1688比价API的核心功能与实战应用,涵盖接口调用、Python代码实现及价格比较算法优化。助您快速集成商品比价功能,提升电商开发效率。
103 3
|
10天前
|
存储 供应链 API
1688获得店铺所有商品的API接口
本文介绍如何通过1688开放平台API获取指定店铺的全部商品信息,涵盖注册、认证、分页调用及Python代码实现,适用于数据同步、库存管理与电商分析,内容真实可靠,步骤清晰易行。
88 0
|
10天前
|
存储 API 数据库
按图搜索1688商品的API接口
本文介绍如何利用阿里云ImageSearch服务实现1688商品的按图搜索功能。通过提取图像特征向量并计算相似度,结合Flask搭建API接口,可快速构建基于图片的商品检索系统,提升电商用户体验。
115 0
|
10天前
|
JSON API 开发者
1688按关键词搜索商品的API接口技术指南
本文介绍如何使用1688开放平台API实现商品关键词搜索,涵盖API概述、权限申请、调用步骤、Python代码示例及注意事项,助力开发者高效集成商品搜索功能,适用于电商自动化、价格监控等场景,内容基于官方文档,确保准确可靠。
111 0
|
11天前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
15天前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
下一篇
开通oss服务