微店商品列表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有效期和调用频率限制,代码中做好异常处理和参数校验,确保接口稳定运行。
相关推荐
百结21415 小时前
Mysql数据库操作
数据库·mysql·oracle
keep one's resolveY16 小时前
时区问题解决
数据库
Leinwin16 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
qq_4176950516 小时前
机器学习与人工智能
jvm·数据库·python
漫随流水16 小时前
旅游推荐系统(view.py)
前端·数据库·python·旅游
ego.iblacat16 小时前
MySQL 服务基础
数据库·mysql
yy我不解释17 小时前
关于comfyui的mmaudio音频生成插件时时间不一致问题(一)
python·ai作画·音视频·comfyui
Maverick0618 小时前
Oracle Redo 日志操作手册
数据库·oracle
紫丁香18 小时前
AutoGen详解一
后端·python·flask
FreakStudio18 小时前
不用费劲编译ulab了!纯Mpy矩阵micronumpy库,单片机直接跑
python·嵌入式·边缘计算·电子diy