一、接口概述
1. 接口功能
该接口基于微店官方开放平台(微小店 API)实现,用于获取指定微店店铺的商品列表数据,支持分页查询、按商品状态(上架 / 下架 / 售罄)筛选,可返回商品基础信息、价格、库存、图片、状态等核心字段,适用于店铺商品管理、数据同步、电商分析等合规场景。
2. 接口核心特性
- 官方合规接口:微店开放平台提供标准化 API,无需爬虫,数据稳定且合法;
- 权限前置:需先注册开发者账号、创建应用并完成店铺授权,获取
access_token(接口调用凭证); - 分页查询:支持分页获取大量商品,避免单次返回数据量过大;
- 响应格式:统一 JSON 格式,解析成本低;
- 频率限制:单应用默认调用频率限制为「100 次 / 秒」,超出会触发限流(返回 429 错误)。
3. 前置准备(必做)
使用接口前需完成以下步骤:
- 注册微店开放平台开发者账号(企业 / 个人均可);
- 创建应用,获取
app_id和app_secret; - 授权目标店铺(通过授权链接让店铺主扫码授权),获取
access_token(接口调用核心凭证)和shop_id(店铺唯一 ID); - 注意:
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:平台服务器异常(稍后重试)。
- 400:参数错误(检查
三、结语
微店商品列表 API 是官方开放的合规接口,相比爬虫方案,具有数据稳定、无法律风险、维护成本低的优势,是获取微店商品数据的首选方式。使用时需注意以下几点:
- 合规性:仅获取已授权店铺的商品数据,不得用于未授权的店铺数据爬取,遵守《微店开放平台服务协议》;
- 稳定性:
access_token有效期短,需在代码中增加「自动刷新逻辑」(建议每次调用前检查有效期,过期则刷新); - 频率控制:避免高频次连续请求,可添加
time.sleep(1)等延迟,防止触发限流; - 版本兼容:微店 API 会不定期更新,需关注开放平台公告,及时适配接口参数 / 返回格式的变化;
- 异常处理:生产环境中建议增加「失败重试机制」(如重试 3 次,每次间隔 2 秒),提升接口调用的稳定性。
若需实现更复杂的功能(如批量导出全量商品、实时监控商品价格 / 库存变化),可基于该示例扩展:循环分页查询(遍历total_page)、结合定时任务(如APScheduler)实现周期性同步,或对接数据库存储历史数据。
总结
- 微店商品列表 API 需先完成开放平台注册、应用创建、店铺授权,获取
access_token和shop_id后才能调用; - 核心请求参数为
access_token、shop_id,支持分页和商品状态筛选,返回 JSON 格式数据; - 需注意
access_token有效期和调用频率限制,代码中做好异常处理和参数校验,确保接口稳定运行。