一、接口概述
1688开放平台提供alibaba.product.searchAPI接口,支持通过关键词获取商品列表。需注意:
需企业认证账号申请appKey和appSecret
数据返回格式为JSON
支持分页参数控制数据量
二、核心请求参数
{
"keywords": "手机支架", // 搜索关键词
"pageNo": 1, // 页码
"pageSize": 20, // 每页数量
"sortType": "total", // 排序方式
"priceStart": 10.0, // 价格区间
"priceEnd": 100.0
}
三、技术实现步骤
身份认证
import hashlib
import time
def generate_sign(params, app_secret):
param_str = '&'.join([f"{k}{v}" for k,v in sorted(params.items())])
return hashlib.md5((app_secret + param_str + app_secret).encode()).hexdigest().upper()
API请求示例
import requests
def search_1688_product(keyword):
base_url = "https://gw.open.1688.com/openapi/param2/2/portals.open/api.listOfferDetail/"
params = {
"keywords": keyword,
"pageNo": 1,
"pageSize": 50,
"appKey": "YOUR_APP_KEY",
"timestamp": int(time.time() * 1000)
}
params["sign"] = generate_sign(params, "YOUR_APP_SECRET")
response = requests.get(base_url, params=params)
return response.json()
四、响应数据结构解析
{
"result": {
"totalResults": 1200,
"offerList": [
{
"productId": 123456789,
"subject": "铝合金手机支架",
"price": 15.80,
"minOrder": 100,
"imageUrl": "https://img.alicdn.com/xxx.jpg",
"companyName": "某某科技"
}
]
}
}
五、技术注意事项
默认QPS≤2(每秒请求数)
单日调用上限需参照合同约定
if response.status_code != 200:
raise Exception(f"API请求失败: {response.status_code}")
if 'error' in data:
error_code = data['error']['code']
# 常见错误码处理
if error_code == 15:
print("请求频率超限")
六、最佳实践建议
使用pageSize+pageNo实现分页采集
通过priceStart/priceEnd过滤无效数据
添加延时避免触发风控:
import random
time.sleep(random.uniform(0.5, 1.2))
通过合理使用API接口,可高效获取商品基础信息、价格趋势、供应商数据等核心商业情报,为电商分析系统提供数据支持。