淘宝海外商品详情接口实战指南:从全球开放平台到跨境铺货的全链路方案
在跨境电商和海外代购的业务场景中,"让海外用户看到淘宝商品"是第一步,也是最关键的一步。淘宝的海外商品详情接口并非单一接口,而是分散在淘宝全球开放平台(Taobao Global)和淘宝开放平台海外环境(TOP)两套体系中。本文将从技术视角,完整梳理获取淘宝海外商品详情的全部路径、接口差异、签名逻辑和落地代码。
一、两套体系:不要用错接口
很多开发者一开始会混淆"淘宝开放平台"和"淘宝全球开放平台",导致申请了错误的权限、调了错误的地址。先明确分界线:
表格
| 维度 | 淘宝全球开放平台(Taobao Global) | 淘宝开放平台(TOP)海外环境 |
|---|---|---|
| 官方入口 | open.taobao.global | open.taobao.com |
| API 网关 | https://api.taobao.global/rest | https://gw.api.taobao.com/router/rest |
| 核心用途 | 海外分销商从淘宝/天猫采购进货 | 海外开发者查询淘宝商品数据 |
| 商品范围 | 仅限跨境供货池中的商品(可采购) | 全量淘宝/天猫商品(只读) |
| 能否下单 | ✅ 可以创建采购单 | ❌ 不能下单 |
| 详情接口 | /product/get(撞库)+ /product/details/query | taobao.item.get |
| 权限门槛 | 需入驻跨境供货平台,业务审批 | 企业开发者认证,申请 API 权限 |
| 数据视角 | 供销平台视角(含跨境价、mp_id) | 国内商品视角(公开字段) |
一句话选择:
- 如果你是海外代购/分销平台,要从淘宝进货 → 用 淘宝全球开放平台
- 如果你是比价/导购/数据服务,只需查商品信息 → 用 淘宝开放平台(TOP)
二、方案 A:淘宝全球开放平台 —— 跨境进货专用
这是阿里官方为海外分销商、代购平台、跨境 ERP搭建的进货接口体系。商品详情接口的核心目的是确认某款淘宝商品是否在跨境供货池中,以及获取可采购的详情。
2.1 接口基础信息
表格
| 项目 | 说明 |
|---|---|
| 网关地址 | https://api.taobao.global/rest |
| 协议 | HTTPS |
| 请求方式 | POST |
| 数据格式 | JSON |
| 认证方式 | AppKey + AppSecret + OAuth 2.0 Token + HMAC-SHA256 签名 |
| 权限要求 | 入驻跨境供货平台(需业务审批,1~2 个工作日) |
2.2 核心详情接口
接口 1:单品撞库 —— /product/get
用途: 输入淘宝商品 ID(num_iid),查询该商品是否在跨境供货池中。
请求示例:
http
POST /restContent-Type: application/x-www-form-urlencodedmethod=product.get
&app_key=your_app_key
×tamp=2026-09-01 10:00:00
&v=2.0
&sign=xxx
&num_iid=1234567890返回结构:
JSON
{
"product_get_response": {
"product": {
"num_iid": "1234567890",
"title": "2026新款 磁吸无线充电宝 10000mAh",
"pic_url": "https://img.alicdn.com/...",
"price": "89.00",
"mp_id": "mp_123456789", // 供销平台商品ID,采购时用
"is_available": true, // 是否在跨境供货池中
"channel_price": "95.00", // 跨境供货价(含服务费)
"original_price": "129.00",
"seller_nick": "XX数码旗舰店",
"sku_list": [
{
"sku_id": "12345",
"properties": "1627207:3232483;20518:28314",
"properties_name": "颜色:黑色;容量:10000mAh",
"price": "89.00",
"channel_price": "95.00",
"quantity": 3260
}
]
}
}}关键字段:
表格
| 字段 | 说明 |
|---|---|
mp_id | 供销平台商品 ID,后续创建采购单时必须使用,不是淘宝原始 num_iid |
channel_price | 跨境供货价,通常比淘宝零售价高(含跨境服务费和运费) |
is_available | 是否在供货池中,false 表示该商品不支持跨境采购 |
接口 2:供销平台商品详情 —— /product/details/query
用途: 通过
mp_id 查询可采购商品的完整详情。请求参数:
mp_id:供销平台商品 ID(由/product/get返回)
返回结构:
JSON
{
"product_details_query_response": {
"product": {
"mp_id": "mp_123456789",
"title": "2026新款 磁吸无线充电宝 10000mAh",
"main_image": "https://img.alicdn.com/...",
"detail_images": ["https://...", "https://..."],
"price": "89.00",
"channel_price": "95.00",
"shipping_fee": "0.00", // 是否包邮
"sku_list": [...],
"category": "3C数码配件",
"props": [
{"name": "品牌", "value": "XX"},
{"name": "容量", "value": "10000mAh"}
],
"shop_info": {
"seller_nick": "XX数码旗舰店",
"shop_score": 4.8
}
}
}}2.3 签名算法(HMAC-SHA256)
淘宝全球开放平台使用 HMAC-SHA256 签名,与淘宝 TOP 的 MD5 不同:
Python
import hmacimport hashlibimport timeimport requests
APP_KEY = 'your_app_key'APP_SECRET = 'your_app_secret'ACCESS_TOKEN = 'your_access_token'def generate_global_sign(params, app_secret):
"""淘宝全球开放平台 HMAC-SHA256 签名"""
# 过滤空值和 sign 本身
filtered = {k: v for k, v in params.items() if v is not None and k != 'sign'}
# 按 key 升序排序
sorted_params = sorted(filtered.items(), key=lambda x: x[0])
# 拼接成 key=value&key=value
sign_str = "&".join([f"{k}={v}" for k, v in sorted_params])
# HMAC-SHA256
sign = hmac.new(
app_secret.encode('utf-8'),
sign_str.encode('utf-8'),
hashlib.sha256 ).hexdigest()
return signdef get_global_product_detail(num_iid):
"""获取淘宝全球开放平台商品详情(撞库)"""
timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
params = {
"method": "product.get",
"app_key": APP_KEY,
"access_token": ACCESS_TOKEN,
"timestamp": timestamp,
"v": "2.0",
"num_iid": num_iid }
params["sign"] = generate_global_sign(params, APP_SECRET)
url = "https://api.taobao.global/rest"
response = requests.post(url, data=params, timeout=30)
return response.json()# 调用示例result = get_global_product_detail("1234567890")print(result)三、方案 B:淘宝开放平台(TOP)—— 数据查询专用
如果你不需要从淘宝采购,只是想让海外用户看到淘宝商品信息(如比价、导购、展示),应该使用淘宝开放平台(TOP)的标准接口。
3.1 接口基础信息
表格
| 项目 | 说明 |
|---|---|
| 网关地址 | https://gw.api.taobao.com/router/rest |
| 协议 | HTTPS |
| 请求方式 | POST / GET |
| 数据格式 | JSON / XML |
| 认证方式 | AppKey + AppSecret + OAuth Token + MD5 签名 |
3.2 核心详情接口:taobao.item.get
这是淘宝开放平台最基础的单品查询接口,无需店铺授权即可查询公开商品信息。
请求参数:
表格
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
method | String | 是 | 固定 taobao.item.get |
app_key | String | 是 | 应用唯一标识 |
timestamp | String | 是 | 北京时间 yyyy-MM-dd HH:mm:ss |
v | String | 是 | 固定 2.0 |
sign | String | 是 | MD5 大写签名 |
num_iid | Long | 是 | 淘宝商品 ID |
fields | String | 否 | 字段过滤,减少返回体积 |
3.3 MD5 签名算法(Python)
Python
import hashlibimport timeimport requests
APP_KEY = 'your_app_key'APP_SECRET = 'your_app_secret'def generate_top_sign(params, app_secret):
"""淘宝开放平台 MD5 签名"""
# 按 key 升序排序,排除 sign
sorted_params = sorted((k, v) for k, v in params.items() if k != 'sign')
# 拼接 key+value
param_str = ''.join([f"{k}{v}" for k, v in sorted_params])
# 首尾加 app_secret
sign_str = f"{app_secret}{param_str}{app_secret}"
# MD5 大写
return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()def get_taobao_item_detail(num_iid):
"""获取淘宝商品详情(TOP 标准接口)"""
timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
params = {
"method": "taobao.item.get",
"app_key": APP_KEY,
"timestamp": timestamp,
"v": "2.0",
"format": "json",
"num_iid": num_iid,
"fields": "num_iid,title,price,orginal_price,nick,pic_url,num,detail_url,skus,props_name"
}
params["sign"] = generate_top_sign(params, APP_SECRET)
url = "https://gw.api.taobao.com/router/rest"
response = requests.post(url, data=params, timeout=30)
return response.json()# 调用示例result = get_taobao_item_detail("1234567890")print(result)3.4 返回数据结构
JSON
{
"item_get_response": {
"item": {
"num_iid": 1234567890,
"title": "2026新款 磁吸无线充电宝 10000mAh",
"price": "89.00",
"orginal_price": "129.00",
"nick": "XX数码旗舰店",
"pic_url": "https://img.alicdn.com/...",
"num": 3260,
"detail_url": "https://item.taobao.com/item.htm?id=1234567890",
"props_name": "1627207:3232483:颜色:黑色;20518:28314:容量:10000mAh",
"skus": {
"sku": [
{
"sku_id": "12345",
"price": "89.00",
"orginal_price": "129.00",
"quantity": 1200,
"properties": "1627207:3232483;20518:28314",
"properties_name": "颜色:黑色;容量:10000mAh"
}
]
}
}
}}海外场景注意事项:
- 价格字段
price是人民币,海外展示需按实时汇率转换 - 图片 URL
pic_url有时效性,海外 CDN 建议下载转存 - 详情页
detail_url在海外访问可能受限,建议抓取详情 HTML 后本地化渲染
四、批量查询方案
4.1 淘宝全球开放平台:批量撞库
plain
POST /rest
method=batch.src.products.check
&app_key=xxx
&num_iids=123,456,789单次最多支持 50 个 num_iid 批量查询,返回每个商品是否在供货池中。
4.2 淘宝开放平台:无官方批量接口
TOP 的
taobao.item.get 仅支持单商品查询。如需批量,需:- 客户端并发请求(注意 QPS 限制,基础约 2~10 QPS)
- 或申请
taobao.items.list.get(需店铺授权,查不了他人商品)
五、五大跨境应用场景
场景 1:海外代购平台的商品展示
流程:
- 海外用户在平台搜索"充电宝"
- 后台调用
taobao.item.get获取淘宝商品列表的详情 - 价格按汇率转换为美元/欧元,展示给海外用户
- 用户下单后,通过淘宝全球开放平台创建采购单
场景 2:跨境铺货(淘宝 → 独立站/Shopee)
流程:
- 用
taobao.item.get抓取商品标题、图片、SKU、属性 - 清洗数据:翻译标题、转换价格、下载图片到自有 CDN
- 映射类目属性后,通过 Shopee/独立站 API 自动刊登
场景 3:代购比价引擎
流程:
- 同一商品在淘宝、京东、拼多多分别采集价格
- 统一货币后展示比价结果
- 用户选择淘宝渠道后,跳转代购下单流程
场景 4:供应链溯源(找淘宝货源)
流程:
- 在亚马逊发现热销款,用图片搜索淘宝同款
- 用
taobao.item.get获取淘宝卖家信息 - 通过旺旺或 1688 联系源头工厂
场景 5:价格监控与库存预警
流程:
- 定时轮询核心商品的
taobao.item.get - 监控
price和num(库存)变化 - 价格下降或库存紧张时,触发企业微信/钉钉告警
六、踩坑清单
表格
| 坑 | 现象 | 解决方案 |
|---|---|---|
| 申请错平台 | 想进货却申请了 TOP,想查询却申请了全球平台 | 明确业务场景后再申请应用 |
| 签名算法混淆 | 全球平台用 HMAC-SHA256,TOP 用 MD5 | 根据平台文档选择正确的签名方式 |
| Token 类型错误 | 用 TOP 的 Token 调全球平台接口 | 两套体系的 Token 不互通,需分别授权 |
| mp_id 与 num_iid 混淆 | 采购时传了 num_iid,返回商品不存在 | 全球平台采购必须用 mp_id,不是 num_iid |
| 图片海外访问慢 | 淘宝图片在海外加载慢或 403 | 必须下载转存到海外 CDN(如 AWS S3/CloudFront) |
| 价格不含运费 | 展示价低,用户下单后加运费觉得贵 | 明确标注"不含运费",或通过接口计算预估运费 |
| QPS 超限 | 批量查询时返回限流错误 | 本地缓存 + 分布式限流,建议 1 秒/次 |
七、总结:如何选择接口测试接口
| 你的场景 | 推荐方案 | 关键注意点 |
|---|---|---|
| 海外代购/分销,需要从淘宝采购 | 淘宝全球开放平台 | 需入驻跨境供货平台,用 mp_id 下单 |
| 海外比价/导购/展示,不需采购 | 淘宝开放平台 TOP | 申请 taobao.item.get 权限即可 |
| 批量查多商品是否在供货池 | 全球平台 batch.src.products.check | 单次最多 50 个 |
| 跨境铺货,采集商品信息 | TOP taobao.item.get | 图片需转存,价格需汇率转换 |
| 监控价格库存 | TOP taobao.item.get + 定时任务 | 注意 QPS 限制,做好缓存 |
淘宝海外商品详情接口的核心价值,在于把"中国最大的 C2C 零售市场"变成了海外用户可访问、可查询、可采购的数据接口。无论是做代购、铺货、比价还是供应链溯源,选对接口体系、做好数据清洗和本地化适配,是落地的关键。