电商 API 接口是合规获取平台数据的核心方式,相比爬虫具备稳定性高、数据维度全、法律风险低的优势。本文结合淘宝、京东、拼多多、亚马逊四大主流平台的 API,提供可落地的采集实例,并详解采集后数据的典型应用场景,覆盖商品、库存、订单、评论等核心维度。
一、前置通用准备
无论对接哪个平台的 API,需完成以下基础步骤:
- 开发者认证:注册对应平台开放平台账号,完成企业 / 个人认证(企业认证权限更全);
- 创建应用:申请应用并获取核心密钥(如 AppKey/AppSecret、AccessKey/SecretKey);
- 权限申请:申请目标接口的调用权限(部分接口需审核,免费版有调用频率限制);
- 环境配置:安装平台官方 / 第三方 SDK(Python 为主)。
二、各平台 API 数据采集实例
实例 1:淘宝开放平台(TOP)- 商品主图 + SKU + 订单数据采集
1. 接入准备
- 平台地址:淘宝开放平台
- 核心接口:
taobao.item.get(商品基础)、taobao.item.sku.get(SKU)、taobao.trades.sold.get(订单) - 安装 SDK:
pip install topapi
2. 代码实现(商品 + SKU + 订单采集)
python
运行
from topapi import TopClient
from topapi.request import ItemGetRequest, ItemSkuGetRequest, TradesSoldGetRequest
import datetime
# 初始化客户端
def init_taobao_client(appkey, appsecret):
return TopClient(appkey=appkey, appsecret=appsecret, sandbox=False)
# 1. 采集商品基础数据(主图、标题、价格)
def get_taobao_item(client, item_id):
req = ItemGetRequest()
req.num_iid = item_id # 商品ID
req.fields = "num_iid,title,pic_url,item_imgs,price,stock" # 指定返回字段
resp = client.execute(req)
if "error_response" in resp:
raise Exception(f"商品采集失败:{resp['error_response']['msg']}")
# 提取核心数据
item = resp["item_get_response"]["item"]
return {
"商品ID": item["num_iid"],
"标题": item["title"],
"主图URL": item["pic_url"],
"多图URL": [img["url"] for img in item.get("item_imgs", {}).get("item_img", [])],
"售价": item["price"],
"库存": item.get("stock", 0)
}
# 2. 采集SKU数据(属性、价格、库存)
def get_taobao_sku(client, item_id):
req = ItemSkuGetRequest()
req.num_iid = item_id
resp = client.execute(req)
if "error_response" in resp:
raise Exception(f"SKU采集失败:{resp['error_response']['msg']}")
skus = resp["item_sku_get_response"]["skus"]["sku"]
return [
{
"SKU_ID": sku["sku_id"],
"属性": sku["props_name"].replace(";", " | "),
"价格": sku["price"],
"库存": sku["stock"]
} for sku in skus
]
# 3. 采集近7天订单数据
def get_taobao_orders(client, start_date, end_date):
req = TradesSoldGetRequest()
req.start_created = start_date # 格式:2025-12-01 00:00:00
req.end_created = end_date
req.fields = "tid,title,price,num,created,status"
req.page_size = 20 # 每页条数
resp = client.execute(req)
if "error_response" in resp:
raise Exception(f"订单采集失败:{resp['error_response']['msg']}")
return resp["trades_sold_get_response"]["trades"]["trade"]
# 主执行逻辑
if __name__ == "__main__":
# 替换为自己的密钥和商品ID
APPKEY = "你的淘宝AppKey"
APPSECRET = "你的淘宝AppSecret"
ITEM_ID = "765432109876"
client = init_taobao_client(APPKEY, APPSECRET)
# 采集商品数据
item_data = get_taobao_item(client, ITEM_ID)
print("商品基础数据:\n", item_data)
# 采集SKU数据
sku_data = get_taobao_sku(client, ITEM_ID)
print("\nSKU数据:\n", sku_data)
# 采集近7天订单
end_date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
start_date = (datetime.datetime.now() - datetime.timedelta(days=7)).strftime("%Y-%m-%d %H:%M:%S")
order_data = get_taobao_orders(client, start_date, end_date)
print("\n近7天订单:\n", order_data[:2]) # 打印前2条
3. 输出示例
plaintext
商品基础数据:
{'商品ID': '765432109876', '标题': '2025新款纯棉T恤男女同款', '主图URL': 'https://img.alicdn.com/imgextra/i1/xxx.jpg', '多图URL': ['https://img.alicdn.com/imgextra/i2/xxx.jpg'], '售价': '59.9', '库存': 1200}
SKU数据:
[{'SKU_ID': '123456789', '属性': '颜色:白色 | 尺寸:M', '价格': '59.9', '库存': 300}, {'SKU_ID': '123456790', '属性': '颜色:黑色 | 尺寸:L', '价格': '59.9', '库存': 400}]
实例 2:京东开放平台 - 库存 + 价格 + 物流数据采集
1. 接入准备
- 平台地址:京东开放平台
- 核心接口:
jd.union.open.goods.promotion.info.get(商品价格)、jd.pop.stock.read.get(库存)、jd.logistics.order.trace.query(物流) - 安装 SDK:
pip install jd-open-api
2. 代码实现(库存 + 价格 + 物流)
python
运行
import requests
import time
import hashlib
import json
# 京东API签名生成(必填)
def jd_sign(params, appkey, appsecret):
params["app_key"] = appkey
params["timestamp"] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
params["format"] = "json"
params["v"] = "2.0"
params["sign_method"] = "md5"
# 按字母排序拼接参数
sorted_params = sorted(params.items(), key=lambda x: x[0])
sign_str = appsecret + "".join([f"{k}{v}" for k, v in sorted_params]) + appsecret
params["sign"] = hashlib.md5(sign_str.encode()).hexdigest().upper()
return params
# 1. 采集商品价格与基础信息
def get_jd_goods_price(appkey, appsecret, sku_id):
url = "https://router.jd.com/api"
params = {
"method": "jd.union.open.goods.promotion.info.get",
"skuIds": sku_id
}
signed_params = jd_sign(params, appkey, appsecret)
resp = requests.get(url, params=signed_params)
result = resp.json()
if result["code"] != 0:
raise Exception(f"价格采集失败:{result['msg']}")
goods = result["result"]["data"][0]
return {
"SKU_ID": goods["skuId"],
"商品标题": goods["skuName"],
"原价": goods["price"],
"促销价": goods["promotionPrice"],
"佣金比例": goods["commissionShare"]
}
# 2. 采集库存数据
def get_jd_stock(appkey, appsecret, sku_id):
url = "https://router.jd.com/api"
params = {
"method": "jd.pop.stock.read.get",
"skuId": sku_id,
"wareId": 12345 # 仓库ID,需替换为自己的仓库
}
signed_params = jd_sign(params, appkey, appsecret)
resp = requests.get(url, params=signed_params)
result = resp.json()
if result["code"] != 0:
raise Exception(f"库存采集失败:{result['msg']}")
return {
"SKU_ID": sku_id,
"可用库存": result["result"]["stockNum"],
"锁定库存": result["result"]["lockNum"],
"库存状态": result["result"]["stockState"]
}
# 主执行逻辑
if __name__ == "__main__":
JD_APPKEY = "你的京东AppKey"
JD_APPSECRET = "你的京东AppSecret"
JD_SKU_ID = "100090987654"
# 采集价格
price_data = get_jd_goods_price(JD_APPKEY, JD_APPSECRET, JD_SKU_ID)
print("京东商品价格:\n", price_data)
# 采集库存
stock_data = get_jd_stock(JD_APPKEY, JD_APPSECRET, JD_SKU_ID)
print("\n京东商品库存:\n", stock_data)
实例 3:拼多多开放平台 - 拼团数据 + 用户评价采集
1. 接入准备
- 平台地址:拼多多开发平台
- 核心接口:
pdd.goods.detail.get(商品 + 拼团)、pdd.goods.comment.list.get(评价) - 安装 SDK:
pip install pdd-open-api
2. 代码实现(拼团 + 评价)
python
运行
from pdd_open_api import PddClient
# 初始化客户端
client = PddClient(
client_id="你的拼多多ClientID",
client_secret="你的拼多多ClientSecret",
access_token="你的Access Token" # 需通过授权获取
)
# 1. 采集商品拼团数据
def get_pdd_goods_detail(goods_id):
req = {
"goods_id": goods_id,
"need_group_info": True # 开启拼团信息
}
resp = client.execute("pdd.goods.detail.get", req)
if resp["error_code"] != 0:
raise Exception(f"商品采集失败:{resp['error_msg']}")
goods = resp["goods_detail_response"]["goods_detail"]
return {
"商品ID": goods["goods_id"],
"标题": goods["goods_name"],
"拼团价": goods["min_group_price"],
"单买价": goods["min_normal_price"],
"拼团人数": goods["group_success_num"] # 已拼成功人数
}
# 2. 采集商品评价
def get_pdd_comments(goods_id, page=1):
req = {
"goods_id": goods_id,
"page": page,
"page_size": 20,
"type": 0 # 0-全部评价,1-好评,2-中评,3-差评
}
resp = client.execute("pdd.goods.comment.list.get", req)
if resp["error_code"] != 0:
raise Exception(f"评价采集失败:{resp['error_msg']}")
comments = resp["goods_comment_list_get_response"]["comments"]
return [
{
"用户ID": comment["user_id"],
"评价内容": comment["content"],
"评分": comment["score"],
"晒图数": len(comment.get("image_urls", []))
} for comment in comments
]
# 主执行
if __name__ == "__main__":
PDD_GOODS_ID = 123456789 # 拼多多商品ID
# 采集拼团数据
goods_data = get_pdd_goods_detail(PDD_GOODS_ID)
print("拼多多商品拼团数据:\n", goods_data)
# 采集评价
comment_data = get_pdd_comments(PDD_GOODS_ID)
print("\n商品评价(前2条):\n", comment_data[:2])
实例 4:亚马逊 SP-API - 跨境商品 + 评论数据采集(海外电商)
1. 接入准备
- 平台地址:亚马逊开放者平台
- 核心接口:
catalogItems(商品信息)、reviews(评论) - 安装 SDK:
pip install python-amazon-sp-api
2. 代码实现(跨境商品 + 评论)
python
运行
from sp_api.api import CatalogItems, Reviews
from sp_api.base import SellingApiAuth
# 初始化亚马逊认证
auth = SellingApiAuth(
refresh_token="你的亚马逊RefreshToken",
lwa_app_id="你的LWA App ID",
lwa_client_secret="你的LWA Client Secret",
aws_access_key_id="你的AWS Access Key",
aws_secret_access_key="你的AWS Secret Key",
region="us-east-1" # 亚马逊区域(北美/欧洲/日本等)
)
# 1. 采集亚马逊商品信息
def get_amazon_product(asin):
api = CatalogItems(auth=auth)
resp = api.get_catalog_item(asin=asin)
product = resp.payload["Items"][0]
return {
"ASIN": product["ASIN"],
"标题": product["ItemName"],
"售价": product["SalesRankings"][0]["Price"],
"类目": product["ProductGroup"],
"库存状态": product["Availability"]["AvailabilityType"]
}
# 2. 采集亚马逊商品评论
def get_amazon_reviews(asin, page=1):
api = Reviews(auth=auth)
resp = api.get_reviews(asin=asin, page=page)
reviews = resp.payload["Reviews"]
return [
{
"评论ID": review["ReviewId"],
"评分": review["StarRating"],
"评论内容": review["ReviewText"],
"发布时间": review["ReviewDate"]
} for review in reviews
]
# 主执行
if __name__ == "__main__":
AMAZON_ASIN = "B08XYZ1234" # 亚马逊商品ASIN
# 采集商品信息
amazon_product = get_amazon_product(AMAZON_ASIN)
print("亚马逊商品数据:\n", amazon_product)
# 采集评论
amazon_reviews = get_amazon_reviews(AMAZON_ASIN)
print("\n亚马逊评论(前2条):\n", amazon_reviews[:2])
三、采集数据的典型应用场景
采集后的 API 数据可直接落地到业务运营、决策、风控等环节,以下是高频应用场景:
场景 1:智能库存预警与补货
- 数据来源:淘宝 / 京东 / 拼多多的库存 API、订单 API;
- 应用逻辑:
- 实时采集各 SKU 库存数据,设置阈值(如库存 < 50 件触发预警);
- 结合订单数据计算销量增速,自动生成补货建议(如 “白色 M 码 T 恤日销 30 件,库存剩余 40 件,建议补货 200 件”);
- 价值:缺货率下降 70%,库存周转率提升 40%,避免超卖赔付。
场景 2:竞品价格监控与动态定价
- 数据来源:京东 / 淘宝的商品价格 API、SKU API;
- 应用逻辑:
- 定时采集 TOP10 竞品的售价、促销价、SKU 属性;
- 配置定价规则(如 “比最低价竞品低 2%,但不低于成本价”);
- 自动调用价格修改 API 调整售价;
- 价值:价格调整响应时间从 24 小时缩至 10 分钟,市场份额提升 3-5%。
场景 3:用户评价挖掘与产品优化
- 数据来源:拼多多 / 亚马逊的评论 API;
- 应用逻辑:
- 批量采集评论,通过 NLP(如 jieba+TextCNN)分析核心痛点(如 “面料起球”“尺寸偏小”);
- 输出产品优化报告,同步至供应链部门;
- 价值:新品迭代周期缩短 50%,差评率下降 25%。
场景 4:跨境电商订单与物流协同
- 数据来源:亚马逊 SP-API、物流商 API(如 DHL / 顺丰国际);
- 应用逻辑:
- 采集亚马逊订单后,自动调用物流 API 生成面单;
- 实时监控物流轨迹,异常(如清关延误)自动触发预警;
- 价值:跨境订单处理时效从 2 小时缩至 5 分钟,物流纠纷率下降 40%。
场景 5:多平台运营数据看板
- 数据来源:淘宝 / 京东 / 拼多多的订单、商品、库存 API;
- 应用逻辑:
- 统一采集多平台数据,清洗后存入数据仓库(如 MySQL/ClickHouse);
- 用 BI 工具(如 Tableau/Quick BI)搭建可视化看板,展示 “各平台 GMV、库存分布、爆款商品”;
- 价值:运营决策从 “经验驱动” 变为 “数据驱动”,决策效率提升 80%。
四、关键注意事项
- 合规性:
- 仅采集自有店铺数据,禁止爬取竞品非公开数据;
- 跨境电商需遵守当地数据隐私法规(如欧盟 GDPR)。
- 频率限制:
- 免费版 API 有调用次数限制(如淘宝开放平台 100 次 / 天),避免超限导致封禁;
- 批量采集时添加延时(如 1 秒 / 次),或升级付费版提升配额。
- 错误处理:
- 增加重试机制(如 requests 的 retry 库),处理接口超时、密钥过期等异常;
- 记录接口调用日志,便于排查问题。
- 数据安全:
- 密钥存储在环境变量 / 配置文件中,禁止硬编码;
- 敏感数据(如用户订单)加密存储,定期备份。
五、总结
电商 API 接口采集是数字化运营的核心基础,相比爬虫,其优势在于稳定性、合规性、数据完整性。实际应用中,需根据业务场景选择核心接口(如库存 / 价格 / 评论),优先解决 “效率瓶颈”(如多平台商品同步、库存预警),再逐步扩展至智能决策(如动态定价、用户画像)。
核心建议:
- 小步快跑:先落地 1-2 个核心场景(如库存预警),验证价值后再扩展;
- 技术选型:优先使用平台官方 SDK,减少签名、加密等底层开发工作;
- 成本控制:免费版满足中小商家需求,大商家可根据调用量选择付费版。


628

被折叠的 条评论
为什么被折叠?



