一、接入前准备
-
注册开发者账号
- 访问淘宝开放平台,使用淘宝/支付宝账号登录,完成个人/企业实名认证(需提供身份证或营业执照)。
- 开发者等级需达到 L1 级(通过基础考试)。
-
创建应用并申请权限
- 进入控制台 → 应用管理 → 创建应用,选择应用类型(Web/移动应用)。
- 填写应用名称、简介、回调URL等信息。
- 在权限管理 中申请
taobao.image.search
接口权限,填写使用场景(如"商品比价""智能推荐"),需通过人工审核。
-
获取密钥
- 审核通过后,在应用信息中获取 App Key 和 App Secret,用于接口调用签名验证。
二、接口调用流程
1. 认证与授权
-
方式一:App Key + App Secret 直接调用
适用于无需用户授权的场景(如后台批量处理)。
签名生成规则(Python示例):scsspython import hashlib import time def generate_sign(params, app_secret): sorted_params = sorted(params.items(), key=lambda x: x[0]) param_str = app_secret + ''.join([f"{k}{v}" for k, v in sorted_params]) + app_secret return hashlib.md5(param_str.encode('utf-8')).hexdigest().upper() params = { "method": "taobao.image.search", "app_key": "YOUR_APP_KEY", "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), "format": "json", "v": "2.0", "sign_method": "md5", "image": "BASE64_ENCODED_IMAGE" # 或图片URL } params["sign"] = generate_sign(params, "YOUR_APP_SECRET")
-
方式二:OAuth2.0 授权
需用户授权的场景(如获取用户历史搜索记录):
-
引导用户访问授权页面:
inihttps://oauth.taobao.com/authorize?response_type=code&client_id=YOUR_APP_KEY&redirect_uri=YOUR_CALLBACK_URL
-
用户授权后,通过
code
换取access_token
:kotlinpython def get_access_token(code): url = "https://oauth.taobao.com/token" data = { "grant_type": "authorization_code", "client_id": "YOUR_APP_KEY", "client_secret": "YOUR_APP_SECRET", "code": code, "redirect_uri": "YOUR_CALLBACK_URL" } response = requests.post(url, data=data) return response.json()["access_token"]
-
2. 图片上传与处理
-
支持两种方式:
-
图片URL :直接使用淘宝/天猫商品图片地址(如
https://img.alicdn.com/xxx.jpg
)。 -
本地图片 :需先调用
taobao.picture.upload
接口上传图片,获取URL或ID。
示例:csharppython def upload_image(app_key, app_secret, image_path): url = "https://eco.taobao.com/router/rest" with open(image_path, "rb") as f: image_data = base64.b64encode(f.read()).decode("utf-8") params = { "method": "taobao.picture.upload", "app_key": app_key, "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), "format": "json", "v": "2.0", "sign_method": "md5", "image": image_data } params["sign"] = generate_sign(params, app_secret) response = requests.get(url, params=params) return response.json().get("picture_upload_response", {}).get("picture", {}).get("url")
-
3. 发起搜索请求
-
请求地址 :
https://eco.taobao.com/router/rest
-
请求方式:HTTP POST
-
关键参数:
参数名 类型 说明 image
String 图片URL或Base64编码数据 cat
String 商品类目ID(可选,如女装:50010788) sort
String 排序规则(如 price_desc
价格降序)page
Int 分页页码(默认1) -
完整请求示例:
perlpython def search_by_image(app_key, app_secret, image_url): url = "https://eco.taobao.com/router/rest" params = { "method": "taobao.image.search", "app_key": app_key, "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), "format": "json", "v": "2.0", "sign_method": "md5", "image": image_url, "page": 1 } params["sign"] = generate_sign(params, app_secret) response = requests.post(url, data=params) return response.json()
三、响应结果解析
-
成功响应示例:
jsonjson { "image_search_response": { "item_list": { "item": [ { "title": "2025夏季新款连衣裙", "price": "199.00", "pic_url": "https://img.alicdn.com/xxx.jpg", "detail_url": "https://item.taobao.com/item.htm?id=123456789", "match_rate": 0.95, // 相似度评分(0-1) "sales": 2560 } ] }, "total_results": 1 } }
-
关键字段说明:
字段名 类型 说明 title
String 商品标题 price
String 商品价格 pic_url
String 商品图片URL detail_url
String 商品详情页链接 match_rate
Float 相似度评分(0-1) sales
Int 销量
四、注意事项
-
调用频率限制 :免费版接口默认 QPS ≤ 5,超出会触发限流;大规模商用需购买API套餐(如10万次/月起)。
-
图片质量要求:
- 支持 JPG/PNG 格式,大小 ≤ 2MB。
- 主体商品占比需超过 60% ,避免水印、遮挡。
-
错误处理:
-
常见错误码:
40001
:参数错误。40002
:签名验证失败。40005
:接口调用频率超限。
-
建议添加重试逻辑,处理网络异常或API返回错误码。
-
-
数据更新:商品数据动态变化,需定期更新缓存。
-
隐私保护:遵守相关法律法规,确保用户上传的图片数据安全。
五、应用场景
- 电商比价:通过图像搜索实现跨平台价格监控。
- 智能推荐:结合用户历史图片生成个性化推荐。
- UGC内容变现:将用户分享的图片自动关联商品链接。
- 线下门店:通过摄像头识别用户拍摄的商品图片,提供购买建议。