亚马逊作为全球最大的电商平台,其商品数据是跨境卖家、数据分析师、导购平台最核心的生产资料。但与国内平台不同,亚马逊的接口体系更为复杂——没有"一个接口包打天下"的方案,而是按使用场景拆分为联盟推广接口(PA-API)和卖家服务接口(SP-API)两大体系。本文将系统梳理亚马逊商品详情接口的全貌,并附可直接落地的代码示例。
一、亚马逊详情接口的两大体系
亚马逊的商品详情能力分散在两个完全不同的开放平台中,定位、权限、数据维度差异巨大:
| 维度 | Product Advertising API (PA-API) | Selling Partner API (SP-API) |
|---|---|---|
| 面向对象 | 亚马逊联盟会员(Affiliate) | 亚马逊卖家 / 授权开发者 |
| 核心接口 | GetItems / SearchItems | getCatalogItem / getListingsItem |
| 数据侧重 | 商品标题、价格、图片、佣金比例、推广链接 | 完整商品目录、真实库存、变体、品牌备案信息 |
| 权限要求 | 联盟账号 + 180 天内产生至少 3 笔成交 | 卖家账户 / 开发者资质审核 + IAM 角色授权 |
| 费用 | 免费,但有请求配额限制 | 免费,部分高级报告收费 |
| 适用场景 | 导购返利、比价网站、内容电商 | ERP 同步、铺货工具、竞品监控、品牌分析 关键认知: PA-API 虽然能拿到商品基础信息,但不含真实库存、FBA 库存状态、完整变体属性,且价格字段是"展示价"而非卖家后台的实时售价,不能替代 SP-API 用于供应链或卖家运营场景。 |
二、PA-API 5.0:联盟推广场景的首选
PA-API 是亚马逊为联盟会员提供的官方数据接口,适合不需要卖家权限、只做商品展示和导购的场景。
2.1 接口基础信息
| 项目 | 说明 |
|---|---|
| 接口地址 | https://webservices.amazon.com/paapi5/getitems |
| 协议 | HTTPS |
| 请求方式 | POST |
| 数据格式 | JSON |
| 认证方式 | AWS Signature Version 4 |
| 权限门槛 | 联盟账号 + 180 天内至少 3 笔联盟成交 |
2.2 核心请求参数
表格
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
ItemIds | Array | 是 | ASIN 列表,单次最多 10 个 |
ItemIdType | String | 否 | ASIN(默认)或 SKU |
Resources | Array | 是 | 指定返回字段,如 Images.Primary.Large、ItemInfo.Title、Offers.Listings.Price |
PartnerTag | String | 是 | 你的联盟追踪 ID |
PartnerType | String | 是 | 固定值 Associates |
Marketplace | String | 是 | 站点标识,如 www.amazon.com |
2.3 AWS Signature V4 签名(Python 完整示例)
PA-API 使用 AWS Signature Version 4 认证,签名逻辑较复杂,建议直接使用 AWS SDK:
Python
import json
import boto3
from botocore.config import Config
# 配置凭证
ACCESS_KEY = 'YOUR_ACCESS_KEY'
SECRET_KEY = 'YOUR_SECRET_KEY'
PARTNER_TAG = 'yourtag-20'
REGION = 'us-east-1' # PA-API 固定区域
def get_paapi_client():
config = Config(
region_name=REGION,
retries={'max_attempts': 3, 'mode': 'standard'}
)
return boto3.client(
'paapi5',
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
config=config
)
def get_items_by_asin(asin_list):
"""
根据 ASIN 列表获取商品详情
单次最多 10 个 ASIN
"""
client = get_paapi_client()
payload = {
'ItemIds': asin_list[:10], # 最多 10 个
'ItemIdType': 'ASIN',
'Resources': [
'Images.Primary.Large',
'Images.Variants.Large',
'ItemInfo.Title',
'ItemInfo.ByLineInfo',
'ItemInfo.Features',
'ItemInfo.ProductInfo',
'Offers.Listings.Price',
'Offers.Listings.SavingBasis',
'CustomerReviews.StarRating',
'BrowseNodeInfo.BrowseNodes'
],
'PartnerTag': PARTNER_TAG,
'PartnerType': 'Associates',
'Marketplace': 'www.amazon.com'
}
try:
response = client.get_items(**payload)
return response
except Exception as e:
print(f"请求失败: {e}")
return None
# 调用示例
result = get_items_by_asin(['B08N5WRWNW', 'B0BSHF7WHW'])
print(json.dumps(result, indent=2, default=str))
2.4 返回数据结构解析
PA-API 5.0 返回结构清晰,核心字段如下 :
{
"ItemsResult": {
"Items": [
{
"ASIN": "B08N5WRWNW",
"DetailPageURL": "https://www.amazon.com/dp/B08N5WRWNW...",
"ItemInfo": {
"Title": {
"DisplayValue": "Apple iPhone 15 Pro Max (256 GB) - Natural Titanium"
},
"ByLineInfo": {
"Brand": {
"DisplayValue": "Apple"
},
"Manufacturer": {
"DisplayValue": "Apple Computer"
}
},
"Features": {
"DisplayValues": [
"6.7-inch Super Retina XDR display",
"A17 Pro chip"
]
},
"ProductInfo": {
"Color": {
"DisplayValue": "Natural Titanium"
},
"Size": {
"DisplayValue": "256 GB"
}
}
},
"Images": {
"Primary": {
"Large": {
"URL": "https://m.media-amazon.com/images/...",
"Height": 500,
"Width": 500
}
},
"Variants": [...]
},
"Offers": {
"Listings": [
{
"Price": {
"DisplayAmount": "$1,199.00",
"Amount": 1199.00,
"Currency": "USD"
},
"SavingBasis": {
"Amount": 1199.00
}
}
]
},
"CustomerReviews": {
"StarRating": {
"DisplayValue": "4.7",
"Value": 4.7
},
"Count": 15234
}
}
]
}
}
关键字段说明:
表格
| 字段路径 | 说明 |
|---|---|
ItemInfo.Title.DisplayValue | 商品标题 |
Offers.Listings[].Price.Amount | 当前售价(注意:不含运费,非落地价) |
Offers.Listings[].SavingBasis.Amount | 划线价/原价 |
Images.Primary.Large.URL | 主图大图 URL |
CustomerReviews.StarRating.Value | 星级评分 |
BrowseNodeInfo.BrowseNodes | 类目节点信息 ⚠️ 重要限制: |
- 单次最多查询 10 个 ASIN
- ItemSearch 单次最多返回 100 条(10 页 × 10 条)
- 价格不含运费,如需计算"落地价",需遍历 Offers 中的每个报价,将商品价格 + 运费取最小值
- 180 天内无联盟成交的账号,API 权限会被暂停
三、SP-API Catalog Items API:卖家级全量数据
如果你的业务是亚马逊卖家运营、ERP 同步、竞品监控、品牌分析,必须使用 SP-API。这是亚马逊面向卖家的官方开发者接口,数据最全、权限最严。
3.1 接口基础信息
| 项目 | 说明 |
|---|---|
| 接口地址 | https://sellingpartnerapi-na.amazon.com/catalog/2022-04-01/items/{asin} |
| 协议 | HTTPS |
| 请求方式 | GET |
| 认证方式 | LWA (Login with Amazon) OAuth 2.0 + AWS SigV4 |
| 权限要求 | 卖家账户或授权开发者 + IAM 角色配置 |
3.2 核心请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
asin | Path | 是 | 商品 ASIN |
marketplaceIds | Query | 是 | 市场 ID,如 ATVPDKIKX0DER(美国站) |
includedData | Query | 否 | 指定返回数据类型:images,price,description,attributes,salesRanks |
locale | Query | 否 | 语言区域,如 en_US |
3.3 完整调用示例(Python)
SP-API 的认证比 PA-API 更复杂,需要 LWA Token + AWS SigV4 双重签名:
import requests
import boto3
from botocore.auth import SigV4Auth
from botocore.awsrequest import AWSRequest
import json
# 配置
LWA_CLIENT_ID = 'YOUR_LWA_CLIENT_ID'
LWA_CLIENT_SECRET = 'YOUR_LWA_CLIENT_SECRET'
REFRESH_TOKEN = 'YOUR_REFRESH_TOKEN'
AWS_ACCESS_KEY = 'YOUR_AWS_ACCESS_KEY'
AWS_SECRET_KEY = 'YOUR_AWS_SECRET_KEY'
ROLE_ARN = 'YOUR_IAM_ROLE_ARN' # 如使用 IAM Role
REGION = 'us-east-1'
MARKETPLACE_ID = 'ATVPDKIKX0DER' # 美国站
def get_lwa_access_token():
"""获取 LWA Access Token"""
url = 'https://api.amazon.com/auth/o2/token'
payload = {
'grant_type': 'refresh_token',
'refresh_token': REFRESH_TOKEN,
'client_id': LWA_CLIENT_ID,
'client_secret': LWA_CLIENT_SECRET
}
response = requests.post(url, data=payload)
return response.json()['access_token']
def get_catalog_item(asin, access_token):
"""
调用 SP-API Catalog Items API 获取商品详情
"""
endpoint = f'https://sellingpartnerapi-na.amazon.com/catalog/2022-04-01/items/{asin}'
params = {
'marketplaceIds': MARKETPLACE_ID,
'includedData': 'images,price,description,attributes,salesRanks',
'locale': 'en_US'
}
# 构建 AWS SigV4 签名请求
request = AWSRequest(method='GET', url=endpoint, params=params)
request.headers.add_header('x-amz-access-token', access_token)
request.headers.add_header('x-amz-date', boto3.utils.datetime.datetime.utcnow().strftime('%Y%m%dT%H%M%SZ'))
# 使用 boto3 的 SigV4Auth 签名
credentials = boto3.Session(
aws_access_key_id=AWS_ACCESS_KEY,
aws_secret_access_key=AWS_SECRET_KEY,
region_name=REGION
).get_credentials()
sigv4 = SigV4Auth(credentials, 'execute-api', REGION)
sigv4.add_auth(request)
# 发送请求
response = requests.get(endpoint, params=params, headers=dict(request.headers))
if response.status_code == 200:
return response.json()
else:
print(f"请求失败: {response.status_code}, {response.text}")
return None
# 调用示例
token = get_lwa_access_token()
product = get_catalog_item('B08N5WRWNW', token)
print(json.dumps(product, indent=2))
3.4 返回数据结构解析
SP-API 返回的商品数据比 PA-API 丰富得多,核心字段如下 :
{
"asin": "B08N5WRWNW",
"attributes": {
"title": [{"value": "Apple iPhone 15 Pro Max (256 GB) - Natural Titanium"}],
"brand": [{"value": "Apple"}],
"bullet_point": [
{"value": "6.7-inch Super Retina XDR display"},
{"value": "A17 Pro chip with 6-core GPU"}
],
"item_dimensions": [{
"height": {"value": 6.33, "unit": "inches"},
"width": {"value": 3.06, "unit": "inches"}
}],
"color": [{"value": "Natural Titanium"}],
"size": [{"value": "256 GB"}]
},
"images": {
"primary": {
"large": {
"url": "https://m.media-amazon.com/images/...",
"height": 500,
"width": 500
}
},
"variants": [...]
},
"dimensions": [...],
"productTypes": [...],
"salesRanks": [
{
"marketplaceId": "ATVPDKIKX0DER",
"classificationRanks": [
{
"classificationId": "7072561011",
"title": "Cell Phones",
"link": "https://www.amazon.com/...",
"rank": 3
}
]
}
],
"summaries": [...],
"relationships": {
"variations": [
{
"asin": "B0BSHF7WHW",
"color": "Blue Titanium"
}
]
}
}
关键字段说明:
| 字段路径 | 说明 |
|---|---|
attributes.title[].value | 商品标题 |
attributes.bullet_point[].value | 五点描述 |
attributes.brand[].value | 品牌名 |
images.primary.large.url | 主图大图 |
salesRanks[].classificationRanks[].rank | 类目销售排名(BSR) |
relationships.variations | 变体关系(父体/子体) |
dimensions | 包装尺寸和重量 |
四、批量查询与搜索接口
4.1 PA-API 批量查询
PA-API 的 GetItems 支持单次最多 10 个 ASIN 批量查询:
payload = {
'ItemIds': ['B08N5WRWNW', 'B0BSHF7WHW', 'B0C...'], # 最多 10 个
'Resources': [...],
'PartnerTag': PARTNER_TAG,
'PartnerType': 'Associates',
'Marketplace': 'www.amazon.com'
}
response = client.get_items(**payload)
4.2 PA-API 关键词搜索
SearchItems 支持按关键词搜索商品列表 :
payload = {
'Keywords': 'wireless earbuds',
'SearchIndex': 'Electronics',
'ItemCount': 10,
'Resources': [...],
'PartnerTag': PARTNER_TAG,
'PartnerType': 'Associates',
'Marketplace': 'www.amazon.com'
}
response = client.search_items(**payload)
注意:ItemSearch 有硬性的 100 条结果上限(10 页 × 10 条)。如需突破限制,可采用:- 遍历子类目 BrowseNode
- 按价格区间分段查询
- 按品牌分别查询
- 多排序方式去重合并
4.3 SP-API 批量查询
SP-API 的 searchCatalogItems 支持按关键词、品牌、类目等条件搜索,返回商品列表后再逐个调用 getCatalogItem 获取详情。
五、第三方数据服务商:当官方 API 不够用
亚马逊官方 API 有严格的权限门槛和频率限制,很多场景下需要借助第三方数据服务商 :
| 服务商 | 核心能力 | 数据维度 | 适用场景 |
|---|---|---|---|
| Keepa | 历史价格追踪、BSR 趋势、库存监控 | 价格历史、排名历史、Deal 历史 | 价格监控、选品分析 |
| Jungle Scout | 销量估算、竞品追踪、关键词反查 | 预估销量、评论分析、广告数据 | 选品、竞品分析 |
| Helium 10 | 关键词研究、Listing 优化、市场分析 | 搜索量、CPC、竞品关键词 | SEO、广告投放 |
| SellerApp | 全链路数据分析、利润计算 | 利润分析、广告优化、库存预警 | 卖家运营 选择建议: |
- 需要历史价格/排名数据 → Keepa
- 需要销量估算和选品 → Jungle Scout / Helium 10
- 需要评论情感分析 → 各平台基本都有
- 注意合规性:第三方服务商的数据来源必须合法,避免使用黑产数据
六、六大业务场景落地指南
场景 1:跨境选品与竞品监控
- 接口: PA-API GetItems + Keepa 历史数据
- 逻辑: 监控目标 ASIN 的价格、BSR、评论数变化,发现市场机会
- 频率: 价格/BSR 建议每日采集,评论数可每周汇总
场景 2:导购返利与内容电商
- 接口: PA-API GetItems / SearchItems
- 核心字段: DetailPageURL(含联盟追踪参数)、Offers.Listings.Price、Images
- 注意: 必须使用含 PartnerTag 的推广链接,否则无法追踪佣金
场景 3:ERP 商品中台同步
- 接口: SP-API getCatalogItem
- 核心字段: attributes、images、relationships.variations
- 逻辑: 将亚马逊商品数据标准化为内部 SKU 模型,统一供给多平台
场景 4:价格监控与预警系统
- 接口: PA-API GetItems(批量)或 Keepa API
- 逻辑: 建立价格基线,促销价低于阈值时触发告警
- 注意: PA-API 价格不含运费,如需"落地价"需额外计算
场景 5:多平台铺货(亚马逊 → 独立站 / 其他平台)
- 接口: SP-API getCatalogItem + PA-API GetItems
- 注意点:图片需下载转存自有 CDN(亚马逊图片 URL 有防盗链)属性需映射到目标平台类目五点描述(Bullet Point)需清洗格式
场景 6:品牌分析与反跟卖监控
- 接口: SP-API getCatalogItem + Reports API
- 逻辑: 监控自有品牌 ASIN 的卖家数量、价格分布、Buy Box 占比
七、踩坑清单与最佳实践
1. 权限申请是最大门槛
- PA-API: 必须完成 180 天内 3 笔联盟成交,否则 API 会被暂停
- SP-API: 必须拥有亚马逊卖家账户或通过开发者审核,IAM 角色配置复杂,建议参考官方 IAM 配置文档
2. AWS Signature V4 签名容易出错
- 时间戳必须使用 UTC 时间,格式为 YYYYMMDD'T'HHMMSS'Z'
- x-amz-date 与签名中的日期必须一致
- 建议使用 AWS SDK(boto3)自动生成签名,不要手写
3. 图片处理
- 亚马逊图片 URL 有时效性,且部分域名有防盗链
- 跨境铺货场景必须下载图片到自有对象存储(S3 / OSS / COS)
- 注意图片版权,避免侵权风险
4. 缓存与限流策略
- PA-API 有请求配额限制(免费层约每秒 1~5 次),高频场景必须做缓存
- 价格/库存建议缓存 15~30 分钟,商品基础信息可缓存 2~24 小时
- 批量查询优先用 GetItems(单次 10 个 ASIN),减少请求次数
5. 多站点适配
- 不同站点的 Marketplace 和 marketplaceIds 不同:美国站:www.amazon.com / ATVPDKIKX0DER英国站:www.amazon.co.uk / A1F83G8C2ARO7P日本站:www.amazon.co.jp / A1VC38T7YXB528
- 多站点运营时,需维护站点映射表
6. 异常处理
- ASIN 无效或商品下架时,接口返回 InvalidParameterValue 或空 Items 数组
- 必须做好降级策略:接口异常时读取缓存数据
- 429 限流时,按 Retry-After 头等待后重试
7. 合规红线
- 禁止爬虫: 亚马逊 robots.txt 明确禁止商业爬虫,且 2024 年已有"搬家软件"爬取数据被判不正当竞争的案例
- 数据缓存限制: PA-API 要求缓存数据不超过 24 小时
- 推广链接规范: 必须使用含 PartnerTag 的官方推广链接,禁止篡改或隐藏追踪参数
八、总结:如何选择适合你的接口?
| 你的场景 | 推荐方案 | 关键注意点 |
|---|---|---|
| 导购返利 / 内容电商 | PA-API 5.0 | 需联盟账号 + 180 天 3 笔成交 |
| 亚马逊卖家 ERP 同步 | SP-API Catalog Items | 需卖家账户 + IAM 角色配置 |
| 竞品价格监控 | PA-API + Keepa | PA-API 限流严,Keepa 有历史数据 |
| 跨境选品分析 | Jungle Scout / Helium 10 | 第三方工具更直观,注意数据来源合规 |
| 多平台铺货 | SP-API + 图片下载转存 | 属性映射、图片版权、详情清洗 |
| 品牌反跟卖 | SP-API + Reports API | 监控 Buy Box、卖家数量、价格分布 亚马逊的接口体系比国内平台更"分散"——没有一站式解决方案,但每个接口的设计都与其商业生态深度绑定。理解你的业务场景属于"联盟推广"还是"卖家运营",是选对接口的第一步。 如果你正在规划一个需要对接亚马逊商品数据的系统,建议先用 PA-API 做 POC 验证业务逻辑(门槛相对较低),确认模式跑通后,再以卖家身份申请 SP-API 权限,完成从"数据展示"到"深度运营"的升级。 |
如遇任何疑问或有进一步的需求,请随时与我私信或者评论联系。

