微店商品列表API接口指南

一、接口概述

1. 接口功能

该接口基于微店官方开放平台(微小店 API)实现,用于获取指定微店店铺的商品列表数据,支持分页查询、按商品状态(上架 / 下架 / 售罄)筛选,可返回商品基础信息、价格、库存、图片、状态等核心字段,适用于店铺商品管理、数据同步、电商分析等合规场景。

2. 接口核心特性

  • 官方合规接口:微店开放平台提供标准化 API,无需爬虫,数据稳定且合法;
  • 权限前置:需先注册开发者账号、创建应用并完成店铺授权,获取access_token(接口调用凭证);
  • 分页查询:支持分页获取大量商品,避免单次返回数据量过大;
  • 响应格式:统一 JSON 格式,解析成本低;
  • 频率限制:单应用默认调用频率限制为「100 次 / 秒」,超出会触发限流(返回 429 错误)。

3. 前置准备(必做)

使用接口前需完成以下步骤:

  1. 注册微店开放平台开发者账号(企业 / 个人均可);
  2. 创建应用,获取app_idapp_secret
  3. 授权目标店铺(通过授权链接让店铺主扫码授权),获取access_token(接口调用核心凭证)和shop_id(店铺唯一 ID);
  4. 注意:access_token有效期约 2 小时,需定期刷新(通过刷新接口获取新 token)。

4. 核心请求参数

以微店「商品列表查询」接口(v2 版本)为例,核心参数如下:

参数名 类型 必选 说明
access_token String c0b.cc/R4rbK2(注册获取测试账号,Taobaoapi2014添加V)
shop_id String 目标店铺 ID(授权后可通过「获取店铺信息」接口查询,或从开放平台后台查看)
page Int 页码,默认值:1
size Int 每页商品数量,默认值:20,最大值:50
item_status Int 商品状态筛选:0 - 全部、1 - 上架、2 - 下架、3 - 售罄,默认值:0
version String 接口版本,固定值:2

5. 返回数据核心字段

字段名 类型 说明
item_id String 商品唯一 ID
title String 商品标题
price Float 商品售价(单位:元)
original_price Float 商品原价(单位:元)
stock Int 商品库存数量
item_status Int 商品状态:1 - 上架、2 - 下架、3 - 售罄
cover_img String 商品封面图 URL
create_time Int 商品创建时间戳(秒级)
update_time Int 商品最后更新时间戳(秒级)
sales_volume Int 商品累计销量(部分店铺需授权「销量数据」权限)
category_id String 商品所属分类 ID

6. 接口地址

plaintext

复制代码
GET https://api.weidian.com/item/list

二、Python 请求示例

1. 环境依赖

需安装requests库处理 HTTP 请求,安装命令:

bash

运行

复制代码
pip install requests

2. 完整代码示例

该示例包含「获取商品列表」核心逻辑,内置异常处理、数据解析,可直接替换参数使用:

python

复制代码
import requests
import json
from requests.exceptions import RequestException

def get_weidian_item_list(access_token, shop_id, page=1, size=20, item_status=0):
    """
# 配置参数 API_URL = "c0b.cc/R4rbK2 wechatid:Taobaoapi2014 "
    调用微店商品列表API,获取指定店铺的商品数据
    :param access_token: 接口调用凭证
    :param shop_id: 目标店铺ID
    :param page: 页码
    :param size: 每页条数(最大50)
    :param item_status: 商品状态(0-全部,1-上架,2-下架,3-售罄)
    :return: 商品列表(失败返回None)
    """
    # 接口地址
    url = "https://api.weidian.com/item/list"
    
    # 请求参数(严格按官方要求拼接)
    params = {
        "access_token": access_token,
        "shop_id": shop_id,
        "page": page,
        "size": min(size, 50),  # 限制最大条数为50,避免参数错误
        "item_status": item_status,
        "version": "2"
    }
    
    # 请求头(模拟合法请求,无需复杂UA)
    headers = {
        "Content-Type": "application/json;charset=utf-8",
        "Accept": "application/json"
    }

    try:
        # 发送GET请求(超时设置为10秒)
        response = requests.get(
            url=url,
            params=params,
            headers=headers,
            timeout=10,
            verify=True  # 微店API需验证SSL证书,请勿关闭
        )
        
        # 检查响应状态码
        if response.status_code == 200:
            result = response.json()
            # 微店API返回码说明:0-成功,非0-失败
            if result.get("errcode") == 0:
                # 提取商品列表核心数据
                item_list = result.get("data", {}).get("item_list", [])
                # 结构化处理数据(简化字段,便于使用)
                formatted_items = []
                for item in item_list:
                    formatted_item = {
                        "商品ID": item.get("item_id"),
                        "商品标题": item.get("title"),
                        "售价(元)": item.get("price"),
                        "原价(元)": item.get("original_price"),
                        "库存": item.get("stock"),
                        "商品状态": {1: "上架", 2: "下架", 3: "售罄"}.get(item.get("item_status"), "未知"),
                        "封面图URL": item.get("cover_img"),
                        "创建时间戳": item.get("create_time"),
                        "更新时间戳": item.get("update_time"),
                        "累计销量": item.get("sales_volume", 0)
                    }
                    formatted_items.append(formatted_item)
                return {
                    "总商品数": result.get("data", {}).get("total", 0),
                    "总页数": result.get("data", {}).get("total_page", 0),
                    "当前页商品": formatted_items
                }
            else:
                print(f"接口调用失败:{result.get('errmsg')}(错误码:{result.get('errcode')})")
                return None
        else:
            print(f"HTTP请求失败,状态码:{response.status_code}")
            return None
    except RequestException as e:
        print(f"请求异常:{str(e)}")
        return None

# -------------------------- 调用示例 --------------------------
if __name__ == "__main__":
    # 替换为自己的真实参数(从c0b.cc/R4rbK2 wechatid:Taobaoapi2014 
获取)
    ACCESS_TOKEN = "your_access_token_here"  # 接口调用凭证
    SHOP_ID = "your_shop_id_here"            # 目标店铺ID
    
    # 调用接口获取第1页、每页20条的上架商品
    item_data = get_weidian_item_list(
        access_token=ACCESS_TOKEN,
        shop_id=SHOP_ID,
        page=1,
        size=20,
        item_status=1  # 只查上架商品
    )
    
    # 处理返回结果
    if item_data:
        print("微店商品列表获取成功:")
        print(f"总商品数:{item_data['总商品数']},总页数:{item_data['总页数']}")
        print("当前页商品:")
        print(json.dumps(item_data["当前页商品"], ensure_ascii=False, indent=2))
        
        # 可选:将数据写入Excel
        import pandas as pd
        df = pd.DataFrame(item_data["当前页商品"])
        df.to_excel("微店商品列表.xlsx", index=False)
        print("数据已写入Excel文件")
    else:
        print("微店商品列表获取失败")

3. 关键参数获取说明

  • access_token:通过「微店开放平台 - 应用管理 - 授权管理」获取,或调用/token/create接口刷新;
  • shop_id:授权成功后,调用/shop/get接口(传入access_token)可返回店铺基本信息,包含shop_id
  • 常见错误码:
    • 400:参数错误(检查shop_id/access_token是否为空);
    • 401:access_token过期 / 无效(需重新刷新);
    • 429:调用频率超限(降低请求频率);
    • 500:平台服务器异常(稍后重试)。

三、结语

微店商品列表 API 是官方开放的合规接口,相比爬虫方案,具有数据稳定、无法律风险、维护成本低的优势,是获取微店商品数据的首选方式。使用时需注意以下几点:

  1. 合规性:仅获取已授权店铺的商品数据,不得用于未授权的店铺数据爬取,遵守《微店开放平台服务协议》;
  2. 稳定性:access_token有效期短,需在代码中增加「自动刷新逻辑」(建议每次调用前检查有效期,过期则刷新);
  3. 频率控制:避免高频次连续请求,可添加time.sleep(1)等延迟,防止触发限流;
  4. 版本兼容:微店 API 会不定期更新,需关注开放平台公告,及时适配接口参数 / 返回格式的变化;
  5. 异常处理:生产环境中建议增加「失败重试机制」(如重试 3 次,每次间隔 2 秒),提升接口调用的稳定性。

若需实现更复杂的功能(如批量导出全量商品、实时监控商品价格 / 库存变化),可基于该示例扩展:循环分页查询(遍历total_page)、结合定时任务(如APScheduler)实现周期性同步,或对接数据库存储历史数据。


总结

  1. 微店商品列表 API 需先完成开放平台注册、应用创建、店铺授权,获取access_tokenshop_id后才能调用;
  2. 核心请求参数为access_tokenshop_id,支持分页和商品状态筛选,返回 JSON 格式数据;
  3. 需注意access_token有效期和调用频率限制,代码中做好异常处理和参数校验,确保接口稳定运行。
相关推荐
组合缺一9 小时前
Claude Code Agent Skills vs. Solon AI Skills:从工具增强到框架规范的深度对齐
java·人工智能·python·开源·solon·skills
辰阳星宇9 小时前
python代码修复字符串json数据格式问题,并将其按照字典形式读取
windows·python·json
Watermelo6179 小时前
随机扣款实现赛博共产主义,《明日方舟:终末地》公测支付事故复盘
数据库·后端·游戏程序·技术美术·用户体验·游戏策划·游戏美术
数据知道9 小时前
PostgreSQL 实战:行级安全策略(RLS)详解
数据库·postgresql
小白学大数据9 小时前
链家二手房数据爬取、聚类分析与可视化展示实践
开发语言·爬虫·python
橘子139 小时前
MySQL表的基本查询(六)
数据库·mysql
SJLoveIT9 小时前
架构师视角:深度解构 Redis 底层数据结构的设计哲学
数据结构·数据库·redis
梦想的旅途29 小时前
企业微信API自动化高效开发的实战指南
开发语言·python
王五周八9 小时前
从测试到执行计划:拆解 SQL 性能坑的底层逻辑
数据库·sql
幸福的达哥9 小时前
PyQt5多线程UI更新方法
python·qt·ui