速卖通商品详情接口实战指南:官方合规调用与全维度数据解析

发布时间:2026/7/29 5:51:11
速卖通商品详情接口实战指南:官方合规调用与全维度数据解析 一、前言在跨境电商领域速卖通AliExpress作为阿里巴巴旗下的全球交易平台积累了海量商品数据。通过商品详情 API可以实时获取商品标题、价格、库存、评价等核心信息为价格监控、竞品分析、库存管理等场景提供数据支撑。本文将结合 2026 年最新 API 规范详细讲解接入流程并提供完整代码示例。二、准备工作获取 API 权限2.1 注册开发者账号完成企业或个人开发者认证企业账号权限更全建议优先注册企业账号2.2 创建应用并获取密钥在开发者后台创建应用选择「商品详情」API 权限。审核通过后将获得以下核心凭证凭证说明App Key应用标识App Secret应用密钥用于签名Access Token访问令牌有效期 1 年2.3 配置服务器 IP 白名单务必配置服务器 IP 白名单未配置将返回 403 错误。2.4 接口文档准备关注最新版《速卖通 API 文档》重点关注aliexpress.item.get接口的参数定义和返回字段说明。三、核心接口参数说明接口方法名功能核心参数备注aliexpress.solution.product.detail.get商品详情product_id、language、currency返回标题、价格、库存、图片、描述等aliexpress.item.get商品详情新版item_id、language支持多语言、SKU、物流等aliexpress.item.search商品搜索keywords、page_no、page_size支持 SALE_DESC/PRICE_ASC/PRICE_DESC 排序aliexpress.solution.product.inventory.get库存查询product_id、sku_id支持单个/批量商品库存aliexpress.solution.product.price.get价格查询product_id、sku_id返回原价、折扣价、币种等四、Python 代码实战4.1 方式一使用第三方封装库推荐from aliexpress_api import AliexpressApi # 初始化 API 客户端 api AliexpressApi( app_key你的App Key, app_secret你的App Secret, access_token你的Access Token, languageen_US ) def get_product_detail(product_id: str) - dict: 查询速卖通商品详情 :param product_id: 速卖通商品ID数字串如1005005808863025 :return: 商品详情字典 try: response api.execute( methodaliexpress.solution.product.detail.get, params{ product_id: product_id, language: en, currency: USD } ) return response except Exception as e: print(f查询商品详情失败{e}) return {} # 测试调用 if __name__ __main__: test_product_id 1005005808863025 detail get_product_detail(test_product_id) if detail and detail.get(code) 200: product_info detail.get(data, {}) print(商品标题, product_info.get(product_title)) print(商品价格, product_info.get(sale_price)) print(商品主图, product_info.get(main_image_url)) print(库存数量, product_info.get(stock_quantity)) print(商品描述, product_info.get(product_description)) else: print(获取商品详情失败响应, detail)4.2 方式二原生 HTTP 请求实现无第三方库import time import hashlib import requests from urllib.parse import urlencode, quote_plus def generate_sign(params: dict, app_secret: str) - str: 生成速卖通API签名MD5 :param params: 请求参数不含sign :param app_secret: 应用Secret :return: 签名字符串 # 1. 参数按ASCII升序排序 sorted_params sorted(params.items(), keylambda x: x[0]) # 2. 拼接为keyvalue格式无分隔符 sign_str app_secret for k, v in sorted_params: if v is not None and v ! : sign_str f{k}{v} sign_str app_secret # 3. MD5加密并转大写 sign hashlib.md5(sign_str.encode(utf-8)).hexdigest().upper() return sign def ali_api_request(method: str, params: dict, app_key: str, app_secret: str, access_token: str, gateway: str) - dict: 原生发送速卖通API请求 :param method: 接口方法名 :param params: 业务参数 :param app_key: App Key :param app_secret: App Secret :param access_token: access_token :param gateway: API网关地址 :return: 接口响应 # 1. 构造公共参数 common_params { app_key: app_key, method: method, format: json, v: 2.0, timestamp: str(int(time.time() * 1000)), # 毫秒级时间戳 sign_method: md5, access_token: access_token } # 2. 合并公共参数和业务参数 all_params {**common_params, **params} # 3. 生成签名 all_params[sign] generate_sign(all_params, app_secret) # 4. 发送GET请求 try: response requests.get( urlgateway, paramsall_params, timeout15 ) response.raise_for_status() return response.json() except requests.exceptions.RequestException as e: print(f请求失败{e}) return {} # 测试原生调用商品详情 if __name__ __main__: APP_KEY 你的App Key APP_SECRET 你的App Secret ACCESS_TOKEN 你的access_token GATEWAY https://api-sg.aliexpress.com/sync # 新加坡节点国内可用 result ali_api_request( methodaliexpress.solution.product.detail.get, params{ product_id: 1005005808863025, language: en, currency: USD }, app_keyAPP_KEY, app_secretAPP_SECRET, access_tokenACCESS_TOKEN, gatewayGATEWAY ) print(原生请求响应, result)五、进阶实战跨境商品全维度解析以下代码支持完整结构化数据完美适配跨境电商选品、多站点数据采集、价格监控等真实业务场景。import requests import time import hashlib from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry # 自行替换开放平台密钥 APP_KEY 你的APP_KEY APP_SECRET 你的APP_SECRET ACCESS_TOKEN 你的ACCESS_TOKEN API_URL https://api-sg.aliexpress.com/sync # 新加坡节点国内可用 class AliExpressItemDetailApi: def __init__(self, app_key, app_secret, access_token): self.app_key app_key self.app_secret app_secret self.access_token access_token self.session self._build_session() self.last_request_time 0 # 频率控制 def _build_session(self): # 自动重试机制提升接口稳定性 retry Retry(total3, backoff_factor0.5, status_forcelist[429, 500, 503]) session requests.Session() session.mount(https://, HTTPAdapter(max_retriesretry)) return session def _make_sign(self, params): # 速卖通官方签名规则网上90%写错 sorted_items sorted(params.items(), keylambda x: x[0]) plain self.app_secret for k, v in sorted_items: if v: plain f{k}{v} plain self.app_secret return hashlib.md5(plain.encode(utf-8)).hexdigest().upper() def get_item_detail(self, item_id, languageen): # 频率控制免费版QPS2间隔至少0.5秒 current_time time.time() if current_time - self.last_request_time 0.5: time.sleep(0.5) self.last_request_time current_time timestamp str(int(time.time())) # 组装请求参数 params { method: aliexpress.item.get, app_key: self.app_key, access_token: self.access_token, timestamp: timestamp, format: json, v: 2.0, item_id: item_id, language: language, # 全字段获取覆盖跨境电商核心需求 fields: title,price,original_price,image_url,sku_property_list,logistics_info,seller_info,evaluation_info,promotion_info } # 生成签名 params[sign] self._make_sign(params) try: resp self.session.get(API_URL, paramsparams, timeout15) result resp.json() # 错误判断 if result.get(code) ! 0: return {success: False, msg: result.get(msg, 接口异常)} # 核心数据解析与清洗 data result.get(result, {}) cleaned_data { 商品ID: data.get(item_id), 多语言标题: data.get(title), 售价: data.get(price), 原价: data.get(original_price), 主图链接: data.get(image_url), SKU规格: data.get(sku_property_list, []), 物流信息: data.get(logistics_info, {}), 卖家信息: data.get(seller_info, {}), 评价统计: data.get(evaluation_info, {}), 促销信息: data.get(promotion_info, {}), 商品链接: fhttps://www.aliexpress.com/item/{item_id}.html } return {success: True, data: cleaned_data} except Exception as e: return {success: False, msg: f请求异常{str(e)}} # 调用示例 if __name__ __main__: api AliExpressItemDetailApi(APP_KEY, APP_SECRET, ACCESS_TOKEN) # 替换为真实商品ID res api.get_item_detail(1005005586923234, languageen) if res[success]: print(✅ 商品详情获取成功) print(f商品标题{res[data][多语言标题]}) print(f售价{res[data][售价]}) print(f物流信息{res[data][物流信息]}) else: print(f❌ {res[msg]})六、关键字段解析API 返回的 JSON 数据包含以下核心字段字段说明item.title商品标题item.price当前售价支持多货币如USDitem.sale_count销量格式如1000item.rating_count评价数量item.pic_url主图 URLitem.detail_url商品详情页链接sku_infosSKU 规格组合、库存、价格映射logistics_info物流方式、运费、发货时间seller_info卖家信息、店铺评分promotion_info促销标签、优惠券信息七、注意事项7.1 频率限制免费版 API 默认 QPS 限制为2 次/秒建议添加time.sleep()进行流控。7.2 签名错误排查若返回Invalid sign错误需检查参数是否按字典序排序App Secret是否正确时间戳是否与服务器时间同步7.3 常见错误码错误码含义解决方案403 ForbiddenAPI 权限不足检查 IP 白名单和接口权限429 Too Many Requests触发频率限制降低请求频率添加流控500 Internal Server Error平台临时故障稍后重试7.4 数据缓存对高频访问的商品 ID可本地缓存结果如 Redis减少 API 调用次数。八、进阶优化8.1 请求重试使用tenacity库实现失败重试from tenacity import retry, stop_after_attempt, wait_fixed retry(stopstop_after_attempt(3), waitwait_fixed(2)) def get_product_detail_with_retry(product_id: str): return get_product_detail(product_id)8.2 Token 自动刷新对接 OAuth2.0 刷新 Token 接口实现 Token 过期自动续期def refresh_access_token(refresh_token: str, app_key: str, app_secret: str) - dict: url https://api.aliexpress.com/system/oauth2/token params { grant_type: refresh_token, client_id: app_key, client_secret: app_secret, refresh_token: refresh_token } response requests.post(url, paramsparams) return response.json()九、无 API 权限的替代方案若无法申请速卖通开放平台权限可考虑速卖通联盟 API面向联盟推广者的 API可获取商品基础信息需注册联盟账号合规第三方服务商如店小秘、芒果店长等提供封装好的速卖通数据接口网页爬虫谨慎仅用于个人学习需遵守robots.txt和速卖通用户协议十、总结速卖通 API 接入的核心是凭证管理 签名生成 参数合规。优先使用第三方封装库可大幅降低开发成本生产环境需重点关注签名正确性、调用限流、Token 续期等问题。建议先在开放平台沙箱环境完成接口测试再上线生产环境。