一、接口概述
1688开放平台提供的item_search接口支持通过关键词检索商品数据,可获取包含商品ID、标题、价格、销量等信息的结构化数据,适用于商品比对、数据分析等场景。该接口支持多种筛选条件,包括价格区间、销量排序、分页控制等,开发者可通过灵活的参数组合实现精准搜索。
二、核心请求参数说明 参数 类型 必填 说明 q String 是 搜索关键词,如“女装”或“充电宝” start_price Float 否 价格区间下限 end_price Float 否 价格区间上限 page Int 否 分页页码(默认1) page_size Int 否 每页商品数量(默认40) sort String 否 排序方式: _sale(销量降序) price(价格升序) _bid(总价降序) filter String 否 附加过滤条件,如地区、优惠类型等 三、Python代码实现示例 python Copy Code import requests import hashlib import time
配置参数
app_key = 'YOUR_APP_KEY' # 替换为实际App Key app_secret = 'YOUR_SECRET' # 替换为实际App Secret keyword = "夏季男装" # 搜索关键词
构造基础参数
params = { 'method': 'alibaba.item.search', 'app_key': app_key, 'timestamp': str(int(time.time())), 'q': keyword, 'page': 1, 'page_size': 40, 'sort': '_sale' # 按销量降序 }
生成签名(示例逻辑,实际需参考开放平台规则)
sign_str = f"{app_secret}{''.join(sorted(params.values()))}{app_secret}" sign = hashlib.md5(sign_str.encode()).hexdigest().upper() params['sign'] = sign
发送请求
url = 'api.1688.com/router/rest' response = requests.get(url, params=params)
解析结果
if response.status_code == 200: data = response.json() items = data.get('result', {}).get('items', []) for item in items: print(f"标题: {item.get('title')}") print(f"价格: {item.get('price')}元") print(f"销量: {item.get('sold')}件\n") else: print(f"请求失败,状态码: {response.status_code}")
点击获取key和secret
四、关键功能解析
多条件筛选 通过组合start_price/end_price定义价格区间,结合filter参数可实现地区发货限制、促销活动过滤等精细化搜索。
分页机制 使用page和page_size控制数据分页,适合大数据量场景下的分批获取,避免单次请求超时。
排序优化 按销量(_sale)排序可快速定位热销商品,按价格(price)排序则便于低价商品挖掘。
五、注意事项 签名验证:所有请求需携带通过app_secret生成的签名,防止非法调用。 频率限制:高频访问可能触发平台限流,建议合理控制调用频率并缓存热点数据。 错误处理:需捕获JSONDecodeError、Timeout等异常,并实现自动重试机制。