📷 1688拍立淘(图片搜索商品)API接口申请流程与调用Demo(附Python源码)

简介: 1688拍立淘图片搜索(以图搜货)支持上传商品图返回相似货源,需先申请白名单权限(自用型应用+人工审核),调用时须Base64编码图片并参与MD5签名。本文详解申请流程、参数规范、Python调用Demo及常见避坑指南,助力高效选品。(239字)

1688的拍立淘图片搜索(官方多称为图片找货/以图搜货接口,如 alibaba.offer.searchByImage 或 ISV 图片搜索能力)允许上传商品图片返回相似1688供应商品。它和普通关键词搜索不同——必须先申请白名单权限,默认应用无法直接调用。

下面给你完整的申请流程 + 签名注意事项 + Python 图片上传调用 Demo。

一、 接口申请流程(关键!)

Step 1:创建「自用型应用」

• 登录 https://open.1688.com

  • 应用类型必须选「自用型应用」(ISV/第三方应用图片搜索需额外资质)
    • 记录 AppKey / AppSecret

Step 2:申请图片搜索权限

• 进入 应用详情 → 接口权限 → 申请新接口

  • 搜索关键词:图片搜索 / searchByImage / 以图搜货
    • 勾选并提交使用说明(写明:"ERP系统上传商品图片搜索1688相似货源,辅助采购选品")

• ⚠️ 此接口通常需人工审核,1~3个工作日邮件通知结果

Step 3:确认沙箱测试

• 审核通过后,在「沙箱环境」先用测试图片验证

• 生产调用与沙箱共用同一个 AppKey

💡 避坑:未申请或审核未通过直接调会返回 error_code: 403 / no permission

二、 图片搜索接口核心参数

参数 说明 注意

imageData 图片二进制 Base64编码 建议压缩至 ≤ 500KB,格式 JPG/PNG

pageNo 页码,从1开始 —

pageSize 每页条数,最大50 推荐20

categoryId 可选,限制类目提高准确度 先调类目接口获取

sortType booked(销量) / price_asc —

⚠️ 1688图片搜索走 multipart/form-data 或 Base64 参数,不同于普通 param2 GET,签名时需把 imageData(base64串) 参与签名但要控制长度,部分版本要求 imageData 不参与签名仅参与传输——以你拿到的最新文档为准,下面代码按参与签名写法(最通用)。

三、 Python调用Demo(图片→Base64→签名→搜索)

ali1688_image_search.py

import hashlib
import time
import requests
import base64
import os
from typing import Dict, List

封装好API供应商demo url=https://console.open.onebound.cn/console/?i=Lex

class Ali1688ImageSearchClient:
"""
1688 拍立淘/图片搜索(以图搜货) API Client
网关示例: https://gw.open.1688.com/openapi/param2/2/alibaba.offer.searchByImage/2.0
(具体 method 名以开放平台批准文档为准)
"""

def __init__(self, app_key: str, app_secret: str, access_token: str = None):
    self.app_key = app_key
    self.app_secret = app_secret
    self.access_token = access_token
    self.gateway = "https://gw.open.1688.com/openapi/param2/2/alibaba.offer.searchByImage/2.0"

# ────────────────────────────────────────
# 1688 标准 MD5 签名(参与签名的参数值过长时截断说明见下方)
# ────────────────────────────────────────
def _sign(self, params: Dict) -> str:
    # 注意:部分1688图片接口要求 imageData(Base64) 参与签名
    # 但签名时可用原串(不要截断),只要和请求发送的一致即可
    filtered = sorted((k, v) for k, v in params.items() if v is not None)
    qs = ''.join(f"{k}{v}" for k, v in filtered)
    raw = f"{self.app_secret}{qs}{self.app_secret}"
    return hashlib.md5(raw.encode('utf-8')).hexdigest().upper()

def search_by_image(self,
                     image_path: str,
                     page_no: int = 1,
                     page_size: int = 20,
                     category_id: int = None) -> Dict:
    """
    上传本地图片搜索相似1688商品

    Args:
        image_path:   本地图片路径 (jpg/png, 建议 ≤ 500KB)
        page_no:      页码
        page_size:    每页条数 ≤ 50
        category_id:  可选类目ID限定

    Returns:
        {offers: [...], totalResult: int}
    """

    if not os.path.exists(image_path):
        raise FileNotFoundError(f"图片文件不存在: {image_path}")

    # 1. 读取并 Base64 编码
    with open(image_path, 'rb') as f:
        img_bytes = f.read()

    # 可选:简单压缩提示
    if len(img_bytes) > 1024 * 1024:
        print("⚠️  图片 > 1MB,建议压缩以避免超时或签名异常")

    img_b64 = base64.b64encode(img_bytes).decode('utf-8')

    # 2. 组装业务参数
    biz = {
        "pageNo": page_no,
        "pageSize": min(page_size, 50),
        "imageData": img_b64,       # Base64 字符串
        "sortType": "booked"
    }
    if category_id:
        biz["categoryId"] = category_id

    # 3. 组装 API 参数
    api_params = {
        "method": "alibaba.offer.searchByImage",
        "app_key": self.app_key,
        "timestamp": str(int(time.time() * 1000)),
        "format": "json",
        "v": "2.0",
        "sign_method": "md5",
    }
    if self.access_token:
        api_params["session"] = self.access_token

    # 图片搜索接口一般用 POST(form 或 param 内嵌)
    # 这里按 param2 传 JSON 字符串(1688 部分版本要求)
    import json, urllib.parse
    api_params["param2"] = urllib.parse.quote_plus(
        json.dumps(biz, ensure_ascii=False)
    )
    api_params["sign"] = self._sign(api_params)

    # 4. 发送请求(推荐 POST)
    resp = requests.post(self.gateway, data=api_params, timeout=30)
    resp.raise_for_status()
    data = resp.json()

    if "error_response" in data:
        err = data["error_response"]
        raise Exception(
            f"1688 ImageSearch Err [{err.get('code')}]: {err.get('msg')}"
        )

    return data.get("alibaba_offer_searchbyimage_response", {})

# ────────────────────────────────────────
# 便捷:提取商品摘要
# ────────────────────────────────────────
def extract_offers(self, search_result: Dict) -> List[Dict]:
    return search_result.get("offers", []) or []

封装好API供应商demo url=https://console.open.onebound.cn/console/?i=Lex

===================================================

使用示例

===================================================

if name == "main":
client = Ali1688ImageSearchClient(
app_key="YOUR_APP_KEY",
app_secret="YOUR_APP_SECRET",
access_token=None # 图片搜索公开商品可不传;私有结果传session key
)

try:
    result = client.search_by_image(
        image_path="./test_cup.jpg",   # ← 放一张商品实拍图
        page_no=1,
        page_size=10
    )

    offers = client.extract_offers(result)
    total = result.get("totalResult", 0)
    print(f"✅ 图片搜到 {total} 个相似商品,本页 {len(offers)} 条")

    for o in offers[:3]:
        print(f"  • {o.get('subject')}  ¥{o.get('priceRange')}  offerId:{o.get('offerId')}")

except Exception as e:
    print(f"❌ 图片搜索失败: {e}")
    print("   → 请确认:1)接口权限已审批 2)图片≤1MB 3)AppKey正确")

四、 关键避坑清单

坑 现象 解决

未申请权限直接调 403 no permission / invalid method 控制台提交申请并等审核邮件

图片过大 超时 / IllegalParam imageData 压缩至 ≤ 500KB,JPG 优先

Base64 带换行/前缀 签名不匹配或解析失败 用 base64.b64encode(...).decode() 不带 data:image/... 前缀

QPS 更低 图片搜索默认 QPS 往往 ≤ 5/s TokenBucket 限速设 qps=3~4,失败后指数退避

沙箱/生产混用 沙箱返回空 审核通过后切生产网关,沙箱仅做连通性验证

五、 完整选品链路(面试叙述)

业务员手机拍照/上传商品图
│ Base64编码

图片搜索API → offerId列表(相似货源)


商品详情API(alibaba.item.get) → SKU/MOQ/批发价


匹配ERP内部SKU or 新建草稿商品 → 采购员人工确认 → 创建1688订单

如需要我可以补充 图片压缩预处理函数(Pillow自动缩到500KB) 或 与商品详情API联动的完整选品脚本。

相关文章
|
2月前
|
JSON 供应链 API
企业级实战:1688 图搜接口(item_search_img / 拍立淘) 接入方法
1688图搜API(item_search_img/拍立淘)支持以图搜货,传入图片URL或Base64,返回同款/相似B2B商品(含offerId、价格、起批量等)。含官方入口、完整参数、签名规则、Python调用示例、接入步骤及避坑指南,开箱即用。
|
4月前
|
机器学习/深度学习 JSON 供应链
1688图片搜索API(拍立淘)实操指南
1688图片搜索API(拍立淘/以图搜货)是官方图像搜品接口,支持图片URL或Base64输入,秒级返回同款/相似商品ID、标题、价格等结构化数据,精准高效,适用于反向海淘、供应链寻源、比价选品等场景。
1047 1
|
22天前
|
缓存 Prometheus 监控
💰 1688开放平台API收费标准与资源包购买攻略(2026最新版)
1688开放平台API采用「免费额度+资源包+按量付费」三层计费模型:基础接口(商品/订单/物流)免费但限QPS;高频或实时库存、分销等需购年费资源包;超量部分按次计费(约0.001元/次)。合理配置可零成本支撑中小B2B系统。
|
4月前
|
JSON 供应链 API
1688按图搜索API技术实现详解
本文详解1688官方“按图搜索商品”API的调用方法:涵盖权限申请、图片要求、接口地址、参数说明、Python调用示例及响应解析,助力开发者快速集成图像识别与商品匹配功能,适用于比价、找货、侵权检测等场景。(239字)
|
22天前
|
数据采集 供应链 API
1688开放平台API接口接入指南:从注册、认证到获取密钥全流程(附避坑点)(附python源码)
本文详解1688开放平台API接入全流程:涵盖企业账号认证、应用创建、权限申请与代码对接四大阶段,直击5大高频“坑”(如账号类型误选、签名错误、审核驳回等),并附可直接运行的Python客户端源码(含MD5签名、商品查询等核心功能),助你高效、安全打通B2B供应链。
|
存储 Java API
淘宝拍立淘图片搜索接口:轻松找到同款商品!
淘宝拍立淘图片搜索接口:轻松找到同款商品!
1019 0
|
应用服务中间件 Android开发 nginx
|
22天前
|
缓存 运维 安全
外贸独立站海外CDN全球加速技术原理与功能详解
全球访问速度是外贸独立站用户体验与SEO排名的核心指标,海外CDN加速技术是解决跨区域访问延迟、丢包、卡顿问题的关键能力。本文深度解析外贸独立站CDN全球加速的技术原理、节点调度机制、资源缓存逻辑,拆解静态资源加速、智能路由、跨区域适配、HTTPS加速等核心技术模块,结合Taoify全球化CDN部署方案,详解该功能的落地优势与外贸适配价值。
|
22天前
|
并行计算 算法 Serverless
基于MATLAB的语音信号时域特征提取实现
基于MATLAB的语音信号时域特征提取实现
69 1
|
22天前
|
存储 JSON 自然语言处理
股票诊断系统的开发
本系统是智能股票诊断平台,突破传统财报分析局限,融合价值、技术、资金、行业、风险五大维度,通过严密规则引擎与文本模板引擎,自动生成专业、易懂的纯文字诊断报告,助力投资者全面把握个股健康状况。(239字)

热门文章

最新文章