一、接口基础信息
请求方式: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次/秒