找热销爆品工具之api系列:1688图片搜索商品item_search_img
一张图片,直接搜出 1688 上的同款与相似货源,并拿到批发价、起订量、工厂标识——这就是「拍立淘」接口 1688.item_search_img 的价值。本文从接口原理到签名、参数、返回字段、代码落地、踩坑排错一次讲透,可直接用于跨境选品、ERP 比价、供应链寻源等系统。一、为什么需要「以图搜货」?
做电商选品、跨境铺货、供应链比价的朋友几乎都遇到过同一个痛点:
手里只有一张图,没有商品 ID,也没有关键词。
看到竞品爆款,想知道 1688 上有没有同款、拿货价多少;
客户发来一张样品照片,要找能做的工厂;
批量铺货时,一张张图片手动搜、手动比价,效率极低。
传统关键词搜索做不到这一点,因为关键词匹配的是文本,而商品真正的信息在图片里。
1688.item_search_img(俗称「拍立淘」)解决的正是这个问题:它接收一张图片,通过深度学习模型提取颜色、纹理、形状等视觉特征,与 1688 商品库中的特征向量做比对,返回同款 / 相似款 + 结构化数据。
相比 C 端淘宝拍立淘,1688 的拍立淘接口额外返回 B2B 批发专属字段:起订量(MOQ)、阶梯价、工厂标识、是否支持一件代发、发货地、30 天批发销量等——这才是做生意的关键信息。
二、接口能力速览
| 项目 | 说明 |
|---|---|
| 接口标识 | 1688.item_search_img |
| 别名 | 拍立淘、以图搜货、图片搜索商品 |
| 请求方式 | GET / POST(推荐 POST,传 Base64 更稳) |
| 请求地址 | https://api.1688.com/router/rest(官方网关,HTTPS) |
| 图片传入方式 | ① 公网图片 URL ② 图片 Base64 编码 |
| 返回格式 | JSON |
| 鉴权方式 | AppKey + AppSecret 签名(MD5 / HMAC) |
| 核心输出 | 同款 / 相似款商品列表 + 相似度分数 + 批发字段 |
一个典型的调用流程如下:
裁剪主体/压缩/转格式
similarity 过滤
本地图片
图片预处理
公网 URL 或 Base64
构造公共参数
按规则生成 sign 签名
POST 请求网关
返回 JSON
同款/相似款筛选
取 num_iid 调商品详情接口
补全 SKU/阶梯价/库存
比价表 / 入库 / 铺货
三、接入前准备:图片规范决定成败
很多人接口调通了,但匹配结果很差,90% 的原因出在图片上。原图识别是「垃圾进,垃圾出」,务必先做预处理。
3.1 图片硬性规范
| 项目 | 规范 | 禁忌 |
|---|---|---|
| 格式 | JPG / JPEG、PNG | GIF、WebP、透明底 PNG、拼图、长截图 |
| 大小 | ≤ 1MB(最大不超过 4MB) | 超过 5MB 直接 413 报错 |
| 分辨率 | 最小边 ≥ 256px,推荐 720–800px | 缩略小图、模糊截图 |
| 画面 | 商品主体居中,主体占画面 > 60%,少水印少杂物 | 大面积水印、多件混拍、背景杂乱、纯文字图 |
3.2 传图二选一
方式一:公网图片 URL(推荐)
直接传图片地址,减少 Base64 编解码异常。注意:图片服务器不能有防盗链,否则 1688 服务端拉不到图;URL 中的特殊字符要做 URL 编码。方式二:图片 Base64
需要去掉data:image/jpg;base64,前缀,并清除所有换行和空格,否则会报参数错误。
3.3 图片预处理建议(提升匹配率的关键)
自动裁剪主体:用主体检测把商品从背景中抠出来,白底图识别效果最好;
去水印:水印会干扰特征提取,能用原图就别用带水印的图;
压缩:单张控制在 500KB 左右,兼顾清晰度与传输速度;
统一格式:批量任务统一转成 JPG,避免格式参差导致失败。
四、核心参数详解
4.1 公共参数(必填)
| 参数 | 是否必填 | 说明 |
|---|---|---|
| method | 是 | 固定值 1688.item_search_img |
| app_key | 是 | 开放平台应用 Key |
| timestamp | 是 | 时间戳(毫秒级),与平台服务器时间误差不能太大 |
| v | 是 | 固定 2.0 |
| format | 是 | 固定 json |
| sign_method | 是 | 固定 md5(或 HMAC-SHA256) |
| sign | 是 | 按规则生成的签名,见第五节 |
4.2 业务参数
| 参数 | 是否必填 | 说明 |
|---|---|---|
| imgid | 是 | 图片 URL 或清洗后的 Base64 字符串(二选一) |
| search_type | 否 | 1 = 优先同款(默认),0 = 相似款 |
| page | 否 | 页码,默认 1 |
| page_size | 否 | 每页条数,默认 20,最大 50 / 100(视服务商而定) |
| cat | 否 | 1688 类目 ID,有明确类目时传入,可减少无关货源 |
选品实战小技巧:先传search_type=1找同款,找不到再切0找相似替代件。
五、签名生成原理
阿里开放平台体系使用「参数排序 + 首尾包裹密钥 + MD5 大写」的经典签名规则,步骤如下:
把所有业务参数和公共参数(
sign除外)按 key 字典序 排序;依次拼接为
key1value1key2value2...;在拼接串头部和尾部各加一次
app_secret;对最终字符串做 MD5,转 大写,即为
sign。
一眼看懂:
sign = MD5( secret + "key1value1key2value2..." + secret ).upper()六、Python 完整实战
下面是一套「以图搜货 + 过滤 + 拉详情 + 导出 CSV」的完整代码,复制即可跑。
6.1 安装依赖
pip install requests pandas6.2 核心代码
import hashlib
import time
import json
import base64
import requests
import pandas as pd
# ========= 1. 配置区(替换成你自己的密钥)=========
APP_KEY = "your_app_key"
APP_SECRET = "your_app_secret"
GATEWAY = "https://api.1688.com/router/rest"
# ========= 2. 签名生成 =========
def build_sign(params: dict, secret: str) -> str:
"""按阿里开放平台规则生成签名:字典排序 -> 拼接 -> 首尾包 secret -> MD5 大写"""
sorted_keys = sorted(params.keys())
sign_str = "".join(f"{k}{params[k]}" for k in sorted_keys)
sign_str = secret + sign_str + secret
return hashlib.md5(sign_str.encode("utf-8")).hexdigest().upper()
# ========= 3. 本地图片转 Base64(可选)=========
def image_to_base64(image_path: str) -> str:
with open(image_path, "rb") as f:
b64 = base64.b64encode(f.read()).decode("utf-8")
# 注意:不要加 data:image/jpg;base64, 前缀
return b64.replace("\n", "").replace("\r", "").strip()
# ========= 4. 以图搜货主函数 =========
def search_by_image(img_url: str = None,
img_base64: str = None,
search_type: int = 1,
page: int = 1,
page_size: int = 20,
cat: str = None) -> dict:
if not img_url and not img_base64:
raise ValueError("必须提供 img_url 或 img_base64 其中之一")
params = {
"method": "1688.item_search_img",
"app_key": APP_KEY,
"timestamp": str(int(time.time() * 1000)), # 毫秒时间戳
"v": "2.0",
"format": "json",
"sign_method": "md5",
"imgid": img_url if img_url else img_base64,
"search_type": search_type,
"page": page,
"page_size": page_size,
}
if cat:
params["cat"] = cat
params["sign"] = build_sign(params, APP_SECRET)
resp = requests.post(GATEWAY, data=params, timeout=15)
resp.raise_for_status()
return resp.json()
# ========= 5. 解析结果 =========
def parse_items(data: dict, similarity_threshold: float = 0.7) -> pd.DataFrame:
items = (data.get("items") or {}).get("item") or []
rows = []
for it in items:
sim = float(it.get("similarity", 0) or 0)
rows.append({
"num_iid": it.get("num_iid"),
"title": it.get("title"),
"price": it.get("price"),
"moq": it.get("moq"),
"sales": it.get("sales"),
"similarity": sim,
"seller_name": it.get("seller_name"),
"detail_url": it.get("detail_url"),
"tag": "同款" if sim >= 0.8 else ("相似" if sim >= 0.6 else "存疑"),
})
df = pd.DataFrame(rows)
if not df.empty:
df = df[df["similarity"] >= similarity_threshold]
df = df.sort_values("similarity", ascending=False).reset_index(drop=True)
return df
# ========= 6. 主流程 =========
if __name__ == "__main__":
# 方式一:直接用公网图片 URL
result = search_by_image(
img_url="https://cbu01.alicdn.com/img/ibank/example.jpg",
search_type=1, # 1=同款,0=相似款
page=1,
page_size=20,
)
# 方式二:本地图片转 Base64(二选一即可)
# b64 = image_to_base64("./sample.jpg")
# result = search_by_image(img_base64=b64, search_type=1)
print("返回状态:", result.get("code"), result.get("msg"))
df = parse_items(result, similarity_threshold=0.7)
print(df.to_string(index=False))
# 导出比价表
if not df.empty:
df.to_csv("1688_pailitao_result.csv", index=False, encoding="utf-8-sig")
print("已导出 1688_pailitao_result.csv")6.3 结果示例(控制台)
返回状态: 200 success
num_iid title price moq sales similarity seller_name tag
0 728510689123 2025夏新款真丝连衣裙 128.00 2 327 0.92 杭州XX服饰工厂 同款
1 728510776655 真丝雪纺连衣裙批 95.50 3 189 0.85 绍兴XX纺织 同款
2 728510812345 仿真丝连衣裙 一件代发 68.00 1 56 0.73 义乌XX服饰 相似6.4 联动「商品详情接口」补全采购字段
拍立淘只返回基础信息,不包含阶梯价、样品费、交期等。拿到 num_iid 后,再调商品详情接口批量补全:
def get_item_detail(num_iid: str) -> dict:
params = {
"method": "1688.item_get", # 详情接口
"app_key": APP_KEY,
"timestamp": str(int(time.time() * 1000)),
"v": "2.0",
"format": "json",
"sign_method": "md5",
"num_iid": num_iid,
}
params["sign"] = build_sign(params, APP_SECRET)
resp = requests.post(GATEWAY, data=params, timeout=15)
return resp.json()
# 对搜到的 Top N 商品批量拉详情
for iid in df["num_iid"].head(5):
detail = get_item_detail(iid)
# detail 中可拿到:阶梯批发价、SKU、库存、重量、材质、发货时效等七、返回字段全解析
7.1 顶层结构
{
"code"
:
200
,
"msg"
:
"success"
,
"request_id"
:
"12345abcde"
,
"items"
:
{
"page"
:
"1"
,
"real_total_results"
:
670
,
"total_results"
:
670
,
"pagecount"
:
14
,
"page_size"
:
"50"
,
"item"
:
[
"..."
]
}
}| 字段 | 类型 | 说明 |
|---|---|---|
| code | Integer | 状态码,200 / 0 表示成功(以服务商文档为准) |
| msg | String | 状态描述,失败时给出错误原因 |
| request_id | String | 请求唯一标识,用于问题追踪与日志定位 |
| items.page | String | 当前页码 |
| items.real_total_results | Integer | 实际库中命中同款 + 相似款总量 |
| items.total_results | Integer | 本次可翻页总量 |
| items.pagecount | Integer | 总页数 |
| items.page_size | String | 每页条数 |
| items.item | Array | 商品数组,见下表 |
7.2 单个商品字段(item[])
| 字段 | 类型 | 示例 | 业务含义 |
|---|---|---|---|
| num_iid | String | 728510689123 | 商品数字 ID,用于调详情接口 |
| title | String | 2025夏新款真丝连衣裙 | 商品标题 |
| pic_url | String | https://cbu01.alicdn.com/... | 商品主图(1688 压缩图) |
| price | Float/String | 128.00 | 批发价 / 代发价(元) |
| price_range | Object | {"min_price":95,"max_price":135} | 多 SKU 时的价格区间 |
| unit | String | 件 | 计价单位 |
| moq | Int | 2 | 最小起订量(MOQ) |
| sales | Int | 327 | 近 30 天已售件数 |
| similarity | Float | 0.87 | 图片相似度 0~1,> 0.8 可视为同款 |
| seller_name | String | 杭州XX服饰工厂 | 店铺名称 |
| detail_url | String | https://detail.1688.com/... | 商品详情页链接 |
| delivery_place | String | 浙江 义乌 | 发货地 |
重点字段:similarity(相似度) —— 这是整个接口最核心的字段,可以据此写死筛选规则:< 0.7:丢弃,匹配偏差太大;0.7 ~ 0.8:相似款,人工复核;≥ 0.8:高度同款,自动进入成本核算流程。
八、五大落地场景
场景 1:跨境选品 / 无货源铺货
海外平台看到爆款 → 截图 → 拍立淘找 1688 同款 → 过滤贸易商、优先工厂店 → 校验是否支持一件代发 → 调详情算到手价与毛利 → 一键铺货。
场景 2:企业采购寻源 / 样品比价
采购手里只有样品照片 → 拍立淘匹配同款和相似替代件 → 组装比价表 → 高相似度直接对接工厂打样。
场景 3:商品溯源 / 侵权排查
品牌方用商品图反查 1688 上的疑似侵权货源,定位店铺与商品链接。
场景 4:ERP / 供应链 SaaS 集成
将拍立淘能力嵌入 ERP、选品系统,把「图搜 → 详情 → 比价 → 入库」串成自动化流水线。
场景 5:批量图库匹配
电商运营有一批商品图,需要批量找到对应货源,用异步队列跑拍立淘,结果落库做持续监控。
九、性能优化与踩坑排错
9.1 常见报错与原因
| 现象 | 可能原因 | 解决 |
|---|---|---|
| 413 超限 | 图片超过大小限制 | 压缩到 1MB 以内 |
| 参数错误 | Base64 带了 data:image/...;base64, 前缀 | 去掉前缀、清除换行空格 |
| 匹配结果为空/偏差大 | 图片有水印、多件混拍、背景杂乱 | 裁剪主体、去水印、换白底图 |
| 拉不到图 | 图片服务器有防盗链 | 先下载再上传到自己的图床 / OSS |
| 签名错误 | 参数未排序 / 未首尾包 secret / 未转大写 | 严格按签名规则重写 |
| 429 / 限流 | 并发过高或超出配额 | 做限流、加缓存、异步队列 |
9.2 优化建议
必须做异步任务队列:批量选品不要并发猛攻接口,否则一定触发限流;
相同图片做本地缓存:短时间内重复检索直接读缓存,节省调用额度;
图片预处理前置:自动裁剪 + 去水印 + 压缩到 500KB 左右,匹配率提升最明显;
结果去重:同一
num_iid可能在多次搜索中重复出现,入库前要去重;相似度分级:把
similarity写成可配置阈值,不同业务用不同标准。
十、合规提示
使用拍立淘接口时,请务必遵守:
遵守 1688 开放平台开发者协议及数据使用规范,不得将数据用于违法用途;
尊重知识产权,不得用于批量抓取、恶意爬取或侵犯他人商标/著作权的行为;
图片素材应确保来源合法,避免上传涉密、侵权或违规图片;
涉及个人信息或交易数据时,遵循《个人信息保护法》《数据安全法》等相关法规;
合理控制调用频率,避免对平台造成压力。
十一、总结
1688.item_search_img 把「一张图」变成「一批结构化货源」,是做选品、比价、寻源、铺货的核心能力。落地要点浓缩成四句话:
图片预处理是成败关键——裁剪、去水印、压到 500KB,白底主体图最好;
签名规则记牢——排序、拼接、首尾包 secret、MD5 大写;
相似度是灵魂字段——用 0.7 / 0.8 两级阈值做自动筛选;
拍立淘 + 详情接口组合出击——图搜拿 ID,详情补 SKU、阶梯价、库存,才能做出完整比价表。
掌握这套打法,就能把「以图搜货」真正接入到自己的选品与供应链系统里。
关于接入: 如果你没有企业资质、不想自己处理签名与限流,也可以通过第三方聚合 API 服务商快速接入,免资质、开箱即用。有代采 / 转发 / 转售需求的朋友,欢迎留言或私信交流,可提供免费测试额度.



