如何通过1688开放平台API获取指定店铺所有商品
场景需求在开发电商ERP、数据采集工具或竞品分析系统时经常需要获取1688平台上某个店铺的全部商品信息如标题、价格、SKU、库存等。本文将介绍如何通过1688开放平台提供的官方API实现这一功能。一、核心接口alibaba.product.getSellerProductList这是1688开放平台提供的用于获取卖家商品列表的API。通过合理配置请求参数和分页处理即可获取全量商品数据。接口地址https://api.1688.com/router/rest请求方式POST数据格式application/x-www-form-urlencoded二、关键实现步骤1. 准备环境注册1688开放平台账号创建应用并获取appKey和appSecret。引导卖家完成授权获取店铺的access_token需seller_view权限。2. 基础请求参数base_params { method: alibaba.product.getSellerProductList, app_key: YOUR_APP_KEY, access_token: SELLER_ACCESS_TOKEN, timestamp: str(int(time.time() * 1000)), # 毫秒时间戳 format: json, v: 2.0, sign_method: md5 }3. 分页控制参数page_no: 当前页码从1开始page_size: 每页条数建议不超过50# 示例请求第2页每页30条 page_params { page_no: 2, page_size: 30 }4. 签名生成所有参数需按字母序排序后拼接加上appSecret进行MD5签名def generate_sign(params, app_secret): param_str .join([f{k}{v} for k, v in sorted(params.items())]) full_str f{app_secret}{param_str}{app_secret} return hashlib.md5(full_str.encode()).hexdigest().upper()三、完整请求示例Pythonimport requests import time import hashlib def fetch_all_products(app_key, app_secret, access_token, max_page50): all_products [] page_no 1 while page_no max_page: # 1. 构造基础参数 params { method: alibaba.product.getSellerProductList, app_key: app_key, access_token: access_token, timestamp: str(int(time.time() * 1000)), format: json, v: 2.0, sign_method: md5, page_no: page_no, page_size: 50 } # 2. 生成签名 params[sign] generate_sign(params, app_secret) # 3. 发送请求 resp requests.post(https://api.1688.com/router/rest, dataparams) data resp.json() # 4. 处理异常 if error in data: print(fError: {data[error][msg]} (Code: {data[error][code]})) break # 5. 存储当前页商品 products data[result][productInfos][productInfo] all_products.extend(products) # 6. 分页终止判断 if len(products) params[page_size]: break page_no 1 time.sleep(0.5) # 避免请求过频 return all_products四、响应数据结构解析成功响应示例{ result: { productInfos: { productInfo: [ { productId: 1234567890, subject: 商品标题, price: 99.00, unit: 件, status: published }, // ... 其他商品 ] }, totalCount: 120 // 店铺商品总数 } }五、注意事项频率限制单个应用默认每秒10次请求需根据totalCount控制分页节奏。字段覆盖若需获取详情如描述、SKU需二次调用alibaba.product.get接口。授权有效期access_token有效期通常为30天需实现刷新机制。错误码处理isv.missing-parameter: 参数缺失isv.invalid-access-token: 令牌失效isp.api-qps-limit: 请求超频六、优化建议异步抓取使用生产者-消费者模型提升采集效率。本地缓存存储productId避免重复获取详情。增量同步通过modify_stamp参数仅拉取变更商品。通过上述实现可稳定获取店铺商品数据。建议详细阅读1688API文档根据业务需求扩展字段处理逻辑。