一、接口基础信息
- 请求方式:POST
- 认证机制:需使用平台分配的
client_id和client_secret - 请求地址:
https://open-api.pinduoduo.com/api/image_search
二、请求参数说明
{
"image": "Base64编码的图片数据",
"image_url": "可选图片URL",
"size_type": 1, // 图片尺寸类型
"page": 1, // 分页页码
"page_size": 20 // 每页数量
}
⚠️ 注意:image 和 image_url 参数二选一,图片需满足:
- 格式:JPG/PNG
- 大小:≤500KB
- 分辨率:建议 800×600 以上
三、签名验证机制
请求需携带签名参数: sign = MD5(\text{client_secret} + \text{params_string} + \text{client_secret})
import hashlib
def generate_sign(params, secret):
param_str = '&'.join([f'{k}{v}' for k,v in sorted(params.items())])
return hashlib.md5((secret + param_str + secret).encode()).hexdigest()
四、返回数据结构
{
"result": {
"goods_list": [
{
"goods_id": "商品ID",
"goods_name": "商品名称",
"price": 2990, // 单位分
"image_url": "主图URL"
}
],
"total_count": 100 // 匹配商品总数
},
"error_code": 0 // 错误码
}
五、完整调用示例(Python)
import requests
import base64
API_URL = "https://open-api.pinduoduo.com/api/image_search"
CLIENT_ID = "your_client_id"
CLIENT_SECRET = "your_secret"
def search_by_image(image_path):
with open(image_path, "rb") as f:
img_base64 = base64.b64encode(f.read()).decode()
params = {
"client_id": CLIENT_ID,
"type": "image_search",
"image": img_base64,
"page": 1,
"page_size": 10,
"timestamp": int(time.time())
}
params["sign"] = generate_sign(params, CLIENT_SECRET)
response = requests.post(API_URL, json=params)
return response.json()
# 调用示例
result = search_by_image("product.jpg")
print(result["result"]["goods_list"])
六、常见问题处理
- 错误码 1001:图片格式/大小不符合要求
- 错误码 2001:签名验证失败
- 返回空列表:建议尝试不同角度商品主图
- 限流处理:需控制调用频率 ≤ 5次/秒
最佳实践提示:建议搭配商品类目过滤参数
cat_id使用,可提升搜索准确率30%以上。实时监控接口返回的X-RateLimit-Remaining头部可避免触发限流。