一、引言
在跨境电商领域,速卖通(AliExpress)作为阿里巴巴旗下的全球交易平台,积累了海量商品数据。通过商品详情 API,可以获取实时获取商品标题、价格、库存、评价等核心信息,为价格监控、竞品分析、库存管理等场景提供数据支撑。本文将结合 2025 年最新 API 规范,详细讲解接入流程并提供完整代码示例。
二、准备工作:获取 API 权限
- 注册开发者账号
完成企业 / 个人开发者****认证****。 - 创建应用并获取密钥
在开发者后台创建应用,选择 “商品详情” API 权限。审核通过后,将获得App Key和App Secret,这是 API 请求的核心凭证。 - 接口文档准备
关注最新版《速卖通 API 文档》,重点关注aliexpress.item_get接口的参数定义和返回字段说明。
三、核心流程:API 调用与签名机制
速卖通 API 采用签名验证机制确保请求合法性,核心步骤如下:
-
参数构造
必须参数包括:app_key:应用唯一标识method:接口名称(固定值aliexpress.item_get)num_iid:商品 ID(可从商品详情页 URL 提取)timestamp:毫秒级时间戳version:API 版本号(当前推荐3.0)
示例参数:
params = {
'app_key': 'your_app_key',
'method': 'aliexpress.item_get',
'num_iid': '4000926586732', # 替换为目标商品ID
'timestamp': str(int(time.time() * 1000)),
'version': '3.0'
}
2.签名生成算法
按以下步骤生成sign参数:
- 将所有参数按字典序排序
- 拼接为
key1value1key2value2...格式的字符串 - 在末尾追加
App Secret - 进行 MD5 加密并转为大写
代码实现:
import hashlib
def generate_sign(params, app_secret):
sorted_params = sorted(params.items(), key=lambda x: x[0])
sign_str = ''.join(f"{k}{v}" for k, v in sorted_params) + app_secret
return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()
3.完整请求 URL 构造
最终请求 URL 格式为:
https://gw.api.alibaba.com/openapi/param2/2/aliexpress.open/api/item_get/?{参数}&sign={签名}
四、Python 代码实战
以下代码实现完整的商品详情获取流程,包含错误处理和频率控制:
import requests
import time
import hashlib
from urllib.parse import urlencode
class AliExpressAPI:
def __init__(self, app_key, app_secret):
self.app_key = app_key
self.app_secret = app_secret
self.base_url = "https://gw.api.alibaba.com/openapi/param2/2/aliexpress.open/api/item_get/"
self.last_request_time = 0 # 记录上次请求时间,用于频率控制
def generate_sign(self, params):
sorted_params = sorted(params.items(), key=lambda x: x[0])
sign_str = ''.join(f"{k}{v}" for k, v in sorted_params) + self.app_secret
return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()
def get_product_detail(self, product_id):
# 频率控制:确保间隔至少1秒(免费版QPS限制为2次/秒)
current_time = time.time()
if current_time - self.last_request_time < 1:
time.sleep(1)
self.last_request_time = current_time
params = {
'app_key': self.app_key,
'method': 'aliexpress.item_get',
'num_iid': product_id,
'timestamp': str(int(current_time * 1000)),
'version': '3.0'
}
# 生成签名
params['sign'] = self.generate_sign(params)
try:
response = requests.get(self.base_url, params=params)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
print(f"请求失败:{str(e)}")
return None
# 示例调用
if __name__ == "__main__":
app_key = "your_app_key"
app_secret = "your_app_secret"
product_id = "4000926586732" # 替换为目标商品ID
api = AliExpressAPI(app_key, app_secret)
result = api.get_product_detail(product_id)
if result:
if 'error' in result:
print(f"API错误:{result['error']}")
else:
item = result.get('item', {})
print(f"商品标题:{item.get('title')}")
print(f"当前价格:{item.get('price')}")
print(f"销量:{item.get('sale_count')}")
print(f"评价数:{item.get('rating_count')}")
五、关键字段解析
API 返回的 JSON 数据包含以下核心字段2425:
item.title:商品标题item.price:当前售价(支持多货币,如USD)item.sale_count:销量(格式如1000+)item.rating_count:评价数量item.pic_url:主图 URLitem.detail_url:商品详情页链接
六、注意事项
-
频率限制
免费版 API 默认 QPS 限制为 2 次 / 秒,建议添加time.sleep()进行流控1415。 -
数据缓存
对高频访问的商品 ID,可本地缓存结果(如 Redis),减少 API 调用次数26。 -
异常处理
需捕获以下常见错误:403 Forbidden:API 权限不足429 Too Many Requests:触发频率限制500 Internal Server Error:平台临时故障
-
签名错误排查
若返回Invalid sign错误,需检查:- 参数是否按字典序排序
App Secret是否正确- 时间戳是否与服务器时间同步
七、应用场景扩展
- 价格监控系统
定时调用 API 获取价格数据,设置阈值报警(如价格波动超过 5%)。 - 竞品分析工具
批量获取竞品的销量、评价等数据,生成可视化报表。 - 库存预警机制
当库存低于安全线时自动触发补货提醒。
八、总结
通过速卖通商品详情 API,开发者可高效获取实时商品数据,为电商运营提供数据驱动支持。本文提供的代码示例已涵盖核心逻辑,建议结合实际需求进行扩展(如添加数据库存储、异步请求优化)。在实际开发中,务必遵守平台 API 使用规范,避免因违规操作导致账号封禁。