一、接口概述
阿里巴巴国际站(Alibaba.com)开放平台提供了多个商品详情相关的API接口,其中最核心的是
alibaba.item_get 和 alibaba.product.get 接口。这些接口允许开发者通过编程方式获取商品的完整信息,包括基础信息、价格体系、SKU属性、多媒体数据、交易数据等全维度数据。1.1 接口核心能力
| 数据维度 | 具体内容 |
|---|---|
| 基础信息 | 商品标题、类目、品牌、MOQ(最小起订量) |
| 价格体系 | 阶梯价格、FOB价格、货币类型、供应商类型(金牌/Verified) |
| SKU属性 | 多规格参数、属性图、库存、定制属性 |
| 多媒体数据 | 主图、详情图、视频链接、3D展示 |
| 交易数据 | 30天交易量、买家数、复购率、评价统计 |
| 供应链信息 | 发货时间、港口、支付条款、工厂认证(ISO, BSCI) |
| SEO数据 | 关键词标签、热度指数、被搜索次数 |
1.2 接口端点
plain
官方接口地址:https://gw.api.alibaba.com/openapi/param2/2.0/aliexpress.open/api.getproductdetail二、接入准备工作
2.1 注册企业开发者账号
重要提示:阿里巴巴国际站API仅限企业账号申请,个人开发者无法获取核心接口权限。
申请流程:
- 注册企业账号
- 提交营业执照、法人身份证、企业邮箱进行实名认证
- 创建 "跨境数据应用" 类型应用
2.2 申请接口权限
在应用管理后台需要申请以下权限包:
| 权限包 | 说明 | 审批要求 |
|---|---|---|
| 商品服务包 | 包含 item_get 基础权限 | 基础审批 |
| 交易数据包 | 获取30天交易数据 | 需额外审批 |
| 原始数据包 | 返回未脱敏的HTML描述和SKU原始信息 | 需签订数据保密协议 |
2.3 获取API凭证
审批通过后,在应用控制台获取:
Python
App Key = ALI_2025_XXXXXXXX
App Secret = XXXXXXXXXXXXXXXXXXXXXXXX
Access Token = (通过OAuth2.0获取,有效期2小时)三、认证与签名机制
3.1 OAuth 2.0 认证(2025新版)
2025年阿里巴巴国际站已全面升级OAuth2.0认证,废弃旧的HMAC签名方式。
认证流程:
- 参数准备:收集所有请求参数(包括公共参数和业务参数)
- 参数排序:按参数名ASCII码升序排列所有参数
- 签名生成:
- 拼接排序后的参数为
"参数名=参数值"形式,用&连接 - 在拼接字符串前后分别加上
appsecret - 使用 HMAC-SHA1 算法计算签名值,并转为大写
- 请求发送:将签名加入请求参数,发送HTTP请求
3.2 签名生成代码示例
Python
import hashlibimport hmacimport urllib.parseimport timedef generate_signature(params: dict, app_secret: str) -> str:
"""
生成阿里巴巴API签名
"""
# 1. 添加时间戳
params['timestamp'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
# 2. 按参数名ASCII码升序排序
sorted_params = sorted(params.items())
# 3. 拼接参数
param_str = '&'.join([f"{k}={urllib.parse.quote(str(v))}" for k, v in sorted_params])
# 4. 生成签名:app_secret + 参数串 + app_secret
sign_str = f"{app_secret}{param_str}{app_secret}"
# 5. HMAC-SHA1加密并转大写
signature = hmac.new(
app_secret.encode('utf-8'),
sign_str.encode('utf-8'),
hashlib.sha1 ).hexdigest().upper()
return signature四、接口调用实战
4.1 完整Python实现
Python
import requestsimport jsonimport timefrom typing import Dict, Optionalfrom dataclasses import dataclass@dataclassclass AlibabaConfig:
"""阿里巴巴API配置"""
app_key: str
app_secret: str
access_token: str
base_url: str = "https://gw.api.alibaba.com/openapi/param2/2.0"class AlibabaProductAPI:
"""阿里巴巴国际站商品API客户端"""
def __init__(self, config: AlibabaConfig):
self.config = config
self.session = requests.Session()
def get_product_detail(
self,
product_id: str,
fields: str = None,
language: str = "en",
include_raw: bool = False
) -> Optional[Dict]:
"""
获取商品详情
Args:
product_id: 商品ID
fields: 指定返回字段,如 "subject,price_info,sku_list"
language: 语言代码,默认英文
include_raw: 是否包含原始HTML描述
Returns:
商品详情数据字典
"""
# 构建请求参数
params = {
'app_key': self.config.app_key,
'method': 'alibaba.product.get',
'product_id': product_id,
'language': language,
'format': 'json',
'v': '2.0',
'sign_method': 'hmac-sha1'
}
# 添加可选字段
if fields:
params['fields'] = fields if include_raw:
params['include_raw'] = 'true'
# 生成签名
params['sign'] = self._generate_signature(params)
params['access_token'] = self.config.access_token
try:
response = self.session.get(
f"{self.config.base_url}/aliexpress.open/api.getproductdetail",
params=params,
timeout=30
)
response.raise_for_status()
result = response.json()
# 检查API返回状态
if result.get('code') == 200:
return result.get('model', {}).get('product_detail')
else:
print(f"API错误: {result.get('message', '未知错误')}")
return None
except requests.exceptions.RequestException as e:
print(f"请求异常: {str(e)}")
return None
def _generate_signature(self, params: dict) -> str:
"""生成请求签名"""
# 移除已存在的sign参数
params = {k: v for k, v in params.items() if k != 'sign'}
# 按ASCII排序
sorted_params = sorted(params.items())
# URL编码并拼接
param_str = '&'.join([
f"{k}={urllib.parse.quote(str(v), safe='')}"
for k, v in sorted_params ])
# 生成签名
sign_str = f"{self.config.app_secret}{param_str}{self.config.app_secret}"
return hmac.new(
self.config.app_secret.encode('utf-8'),
sign_str.encode('utf-8'),
hashlib.sha1 ).hexdigest().upper()# 使用示例if __name__ == "__main__":
config = AlibabaConfig(
app_key="your_app_key",
app_secret="your_app_secret",
access_token="your_access_token"
)
api = AlibabaProductAPI(config)
# 获取商品详情
product_id = "1600590399629"
detail = api.get_product_detail(
product_id=product_id,
fields="subject,price_info,sku_list,supplier_info,trade_info",
include_raw=True
)
if detail:
print(f"商品标题: {detail.get('product_title')}")
print(f"商品价格: {detail.get('product_price')}")
print(f"SKU数量: {len(detail.get('sku_list', []))}")4.2 返回数据结构
JSON
{
"request_id": "xxxx-xxxx-xxxx-xxxx",
"code": 200,
"message": "success",
"model": {
"product_detail": {
"product_id": "123456789",
"product_title": "Premium Wireless Bluetooth Headphones",
"product_image_url": "https://example.com/image.jpg",
"product_short_description": "High-quality wireless headphones with noise cancellation",
"product_detail_description": "<p>Detailed HTML description...</p>",
"product_price": "25.00",
"original_price": "35.00",
"discount": "28%",
"currency": "USD",
"moq": 100,
"sku_list": [
{
"sku_id": "987654321",
"sku_name": "Black-Standard",
"sku_price": "25.00",
"stock_quantity": 1000,
"attributes": [
{"attribute_name": "Color", "attribute_value": "Black"},
{"attribute_name": "Version", "attribute_value": "Standard"}
]
}
],
"supplier_info": {
"supplier_name": "XXX Electronics Co., Ltd.",
"supplier_type": "Verified",
"years_in_business": 8
},
"trade_info": {
"orders_in_30_days": 150,
"buyers_in_30_days": 45,
"repeat_purchase_rate": "32%"
}
}
}}五、商品详情类型说明
根据阿里巴巴开放平台文档,当前国际站支持两种详情种类:
| 详情类型 | 说明 | API支持情况 |
|---|---|---|
| 普通编辑 | 将富文本HTML设置到 superText 字段,productDescType 设置为2 | ✅ API支持 |
| 智能编辑 | 使用阿里巴巴智能编辑器创建的详情 | ❌ API不支持 |
重要提示:API只支持普通编辑类型的商品详情。如果商品使用智能编辑,通过API获取时可能无法返回完整的详情内容。
六、实战注意事项
6.1 调用限制与优化
- 频率限制:默认QPS为10,建议批量获取时添加0.3秒间隔
- 数据缓存:商品详情数据更新频率较低,建议实现Redis缓存
- 错误重试:网络异常时实现指数退避重试机制
6.2 数据处理建议
| 注意事项 | 解决方案 |
|---|---|
| HTML标签清洗 | 使用BeautifulSoup或正则表达式过滤 |
| 价格货币转换 | 结合 currency 字段进行汇率换算 |
| SKU属性组合 | 建立属性ID与值的映射关系表 |
| 图片防盗链 | 使用代理服务器或下载到本地CDN |
6.3 安全最佳实践
- 凭证保护:
app_secret禁止硬编码在前端代码中 - 环境隔离:生产环境使用API网关转发请求
- 定期轮换:每90天轮换一次应用凭证
- 访问控制:限制服务器IP白名单
七、应用场景
- 智能选品系统:基于交易数据和SEO信息筛选潜力商品
- 价格监控平台:实时监控竞品价格变动
- 供应链分析:整合供应商认证信息评估可靠性
- 多语言站点:自动翻译商品信息搭建海外分站
- ERP集成:同步库存和订单数据到内部系统
八、相关接口推荐
| 接口名称 | 功能描述 | 使用场景 |
|---|---|---|
alibaba.icbu.product.group.get | 获取商品分组信息 | 类目管理 |
alibaba.icbu.category.attr.get | 获取类目属性 | 商品发布 |
alibaba.buyer.companyprofile.find | 买家公司信息查询 | 客户背调 |
alibaba.procurement.mysupplier.list | 获取供应商列表 | 供应商管理 |