如何通过 item_search_img API 接口获取淘宝商品信息

注册认证 → 创建应用 → 申请权限 → 准备图片 → 构造请求 → 解析响应


第一步:注册认证 & 创建应用

操作 网址 说明
注册开发者账号 淘宝开放平台 支持个人/企业认证
实名认证 开发者中心 个人传身份证,企业传营业执照
创建应用 开发者中心 → 应用管理 填写应用名称、场景(如"电商比价工具")
获取密钥 应用创建成功后 获得 App KeyApp Secret 🔑

第二步:申请接口权限

在应用管理中申请 taobao.item.search.img(拍立淘)权限:

  • 填写使用场景:如"商品比价"、"智能推荐"、"竞品分析"
  • 审核周期:1~3 个工作日
  • 等级要求:开发者等级需达 L1级(通过基础考试)

第三步:准备图片

方式 说明 推荐度
图片URL 公网可访问的图片地址(如 https://img.alicdn.com/xxx.jpg ⭐⭐⭐⭐⭐
Base64编码 本地图片转Base64,去除前缀 data:image/jpeg;base64, ⭐⭐⭐

📸 图片要求:JPG/PNG 格式,≤2MB,分辨率 ≥800×800,商品主体占比 ≥60%,避免水印/复杂背景


第四步:构造请求(核心)

🔧 请求地址

复制代码
复制代码
`https://eco.taobao.com/router/rest    (推荐)
https://api.taobao.com/imgsearch/item_search_img.do
`

📦 请求参数

参数名 必填 类型 说明
app_key String 你的 App Key
method String 固定为 taobao.item.search.img
timestamp String yyyy-MM-dd HH:mm:ss,与服务器误差≤10分钟
format String 固定为 json
v String 固定为 2.0
sign_method String 固定为 md5
image String 图片URL 或 Base64编码
page Number 页码,默认1,最大100
page_size Number 每页数量,默认20,最大100
sort String sales/price_asc/price_desc
shop_type String tmall(天猫)/taobao(淘宝)
cat String 商品类目ID(如女装:50010788)

🔐 签名生成(最关键!)

签名规则(MD5加密):

复制代码
复制代码
`1. 收集所有参数(排除 sign 本身)
2. 按参数名 ASCII 码升序排序
3. 拼接:param1value1param2value2...
4. 首尾加上 AppSecret:AppSecret + 拼接串 + AppSecret
5. MD5 加密 → 转大写 → 即为 sign 值
`

第五步:完整代码实现(Python)

复制代码

python

复制代码
`import requests
import hashlib
import time
import base64

# ============= 配置区 =============
APP_KEY = "你的AppKey"
APP_SECRET = "你的AppSecret"
IMAGE_URL = "https://example.com/product.jpg"  # 或本地图片路径
# ==================================

def generate_sign(params, app_secret):
    """生成MD5签名"""
    sorted_params = sorted(params.items(), key=lambda x: x[0])
    param_str = ''.join([f"{k}{v}" for k, v instr = app_secret + param_str + app_secret
    return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()

def search_by_image(image_url):
    """以图搜商品 - 核心函数"""
    url = "https://eco.taobao.com/router/rest"
    timestamp = time.strftime("%Y-%m-%d %H:%M:%S")

    params = {
        "app_key": APP_KEY,
        "method": "taobao.item.search.img",
        "timestamp": timestamp,
        "format": "json",
        "v": "2.0",
        "sign_method": "md5",
        "image": image_url,       # 图片URL
        "page": 1,
        "page_size": 20,
        "sort": "sales",          # 按销量排序
    }

    # 生成签名
    params["sign"] = generate_sign(params, APP_SECRET)

    # 发送POST请求
    response = requests.post(url, data=params)

    if response.status_code == 200:
        return response.json()
    else:
        raise Exception(f"请求失败: {response.status_code}, {response.text}")

# ============= 执行调用 =============
result = search_by_image(IMAGE_URL)

# ============= 解析结果 =============
if result.get("error_response"):
    print(f"❌ 错误: {result['error_response']['msg']}")
else:
    items = result.get("item_search_img_response", {}).get("items", {}).get("item", [])
    print(f"✅ 共找到 {len(items)} 个相似商品\n")

    for i, item in enumerate(items, 1):
        print(f"--- 商品 {i} ---")
        print(f"  📦 标题: {item.get('title')}")
        print(f"  💰 价格: ¥{item.get('price')}")
        print(f"  📊 销量: {item.get('sales', 'N/A')}")
        print(f"  🎯 相似度: {item.get('match_rate', 'N/A')}")
        print(f"  🔗 链接: {item.get('detail_url')}")
        print(f"  📸 图片: {item.get('pic_url')}")
        print()
`

📤 本地图片转Base64调用

复制代码

python

复制代码
`def image_to_base64(image_path):
    with open(image_path, "rb") as f:
        return base64.b64encode(f.read()).decode("utf-8")

# 调用
img_base64 = image_to_base64("test.jpg")
result = search_by_image(img_base64)  # 传入Base64字符串
`

第六步:响应数据结构

复制代码

json

复制代码
`{
  "item_search_img_response": {
    "items": {
      "total_results": 128,
      "item": [
        {
          "title": "2025夏季新款连衣裙女法式气质收腰显瘦",
          "num_iid": "782345612345",
          "price": "199.00",
          "pic_url": "https://img.alicdn.com/bao/uploaded/xxx.jpg",
          "detail_url": "https://item.taobao.com/item.htm?id=782345612345",
          "match_rate": "0.95",
          "sales": 2560,
          "nick": "时尚女装旗舰店",
          "shop_type": "tmall"
        }
      ]
    },
    "request_id": "q6x3vcy5t84d"
  }
}
`
字段 含义
title 商品标题
num_iid 商品唯一ID
price 售价
pic_url 商品主图
detail_url 商品详情页链接
match_rate 相似度评分(0~1)
sales 月销量
nick 店铺名称
shop_type tmall/taobao

⚠️ 常见错误 & 解决方案

错误码 含义 解决方案
isp.no-permission 权限不足 检查是否已申请 item_search.img 权限
isp.limit-exceeded 调用超限 免费版约500次/天,添加指数退避重试
签名错误 签名验证失败 检查参数排序 + 时间戳(±5分钟有效)
错误码 7 图片格式不支持 转换为 JPG/PNG,≤500KB
错误码 15 图片尺寸过大 压缩至 800×800 以上即可

📊 调用配额参考

开发者等级 每日配额 QPS
免费版 ~500次/天 ≤5
L1企业认证 ~1万次/天 ≤20
L2高级认证 ~10万次/天 ≤100

💡 提示:如需更高频调用,可购买 API 套餐(10万次/月起)


🔄 第三方替代方案(无需官方权限)

如果官方权限申请困难,可使用第三方数据服务平台:

平台 接口 特点
OneBound(万邦) 1688.item_search_img 支持1688以图搜货,有免费额度
数据威 / 店侦探 拍立淘API 付费订阅,数据准确
Taobaoapi2014 淘宝拍立淘 提供API Key直接调用

✅ 快速检查清单

  • 淘宝开放平台已注册并完成实名认证
  • 应用已创建,App Key / Secret 已获取
  • item_search.img 权限已申请并审核通过
  • 图片为 JPG/PNG,≤2MB,主体清晰
  • 签名按 ASCII 升序 + MD5 规则正确生成
  • 时间戳与服务器误差 ≤10 分钟
  • 请求方式使用 POST(避免GET参数过长)

按以上流程操作,即可稳定获取淘宝商品信息!🎯

相关推荐
雨辰AI1 小时前
面试题:人大金仓事务隔离级别、MVCC 机制详解(与MySQL差异对比)
数据库·后端·mysql·面试·政务
AKA__Zas1 小时前
芝士算法(双指针篇 1.0)
java·算法·学习方法
AlbertZein1 小时前
干了三年全栈才悟到:TS + React 这套组合,真不是堆技术堆出来的
前端
化为五月1 小时前
我把 Hermes 接进了飞书,结果卡在“能发消息但就是不回”
前端
丑八怪大丑1 小时前
SQL新特性
数据库·sql
玛卡巴卡ldf1 小时前
【LeetCode 手撕算法】(栈)有效括号、最小栈、字符串解码、每日温度、柱状图最大矩形
java·数据结构·算法·leetcode·力扣
ClouGence1 小时前
豆包收费之后,我找到了更好用的 AI 工具
前端·人工智能·后端·ai·ai编程·ai写作
aircrushin1 小时前
音乐节结束前,拿手机📱搓了一个工具
前端·后端
磊 子1 小时前
cpu是如何执行程序的?
数据库·操作系统·cpu