2025 淘寶天貓店鋪全部商品接口調(diào)用全攻略
2025 淘宝天猫店铺全部商品接口调用全攻略
-
适用场景
需要一次性或周期性地把某个店铺(包括天猫旗舰店)“出售中”或“仓库中”的全部商品信息采集到本地数据库或 BI 系统。
-
接口清单(官方命名改 2025 新版)
• taobao.items.onsale.get(出售中)
• taobao.items.inventory.get(仓库中)
二者参数完全一致,仅业务含义不同。
-
接入前准备
a. 注册成为「淘宝开放平台」开发者。
b. 创建应用并申请「电商基础 API」权限包。
c. 拿到三元组:app_key、app_secret、session_key(店铺授权后获得)。
-
请求方式
• 统一使用 HTTPS POST,Content-Type: application/x-www-form-urlencoded。
• 网关地址:https://eco.taobao.com/router/rest。
• 字符集:UTF-8。
-
公共参数(必须携带)
method 接口名,如 taobao.items.onsale.get
app_key 你的 AppKey
timestamp 当前时间(格式 yyyy-MM-dd HH:mm:ss)
format json
v 2.0
sign_method md5 或 hmac(推荐 hmac)
session 店铺授权 session_key
sign 签名(见下方算法)
-
业务参数
fields 需要返回的字段,例如:num_iid,title,price,pic_url,quantity
page_no 起始页,从 1 开始
page_size 每页条数,最大 200,建议 100
q 可选,按标题模糊搜索
order_by 可选,如 modified:desc(按修改时间倒序)
-
签名算法(HMAC_MD5)
- 将除 sign 外的所有参数按 key ASCII 升序排列;
- 用 app_secret 作为 key,做 HMAC_MD5;
- 结果转大写。
-
响应结构示例
{
"items_onsale_get_response": {
"items": {
"item": [
{
"num_iid": 123456789,
"title": "新款连衣裙",
"price": "199.00",
"pic_url": "https://img.alicdn.com/...",
"quantity": 85
}
]
},
"total_results": 215
}
}
-
常见坑
• 每页条数 page_size 越大,超时概率越高;100 条是折中值。
• 若返回 code=15(权限不足),检查 session_key 是否过期或 API 未授权。
• 天猫与淘宝店铺共用同一接口,无需区分。
-
Python 3.x 完整示例
以下脚本自动翻页、自动重试,并把结果写入 items.jsonl(每行一条 JSON)。
#!/usr/bin/env python3
# pip install requests
import time, hmac, hashlib, json, requests
from urllib.parse import urlencode
APP_KEY = '你的app_key o0b.cn/leo wechatid:xmlee2024'
APP_SECRET = '你的app_secret'
SESSION_KEY = '店铺授权session'
METHOD = 'taobao.items.onsale.get' # 如需仓库商品改为 taobao.items.inventory.get
FIELDS = 'num_iid,title,price,pic_url,quantity'
GATEWAY = 'https://eco.taobao.com/router/rest'
PAGE_SIZE = 100
def sign(params):
"""生成 HMAC_MD5 签名"""
query = urlencode(sorted(params.items()))
raw = f'{query}{APP_SECRET}'
sig = hmac.new(APP_SECRET.encode(), raw.encode(), hashlib.md5).hexdigest().upper()
return sig
def call_api(page_no=1):
"""单次请求并返回 (items, total)"""
params = {
'method': METHOD,
'app_key': APP_KEY,
'session': SESSION_KEY,
'timestamp': time.strftime('%Y-%m-%d %H:%M:%S'),
'format': 'json',
'v': '2.0',
'sign_method': 'hmac',
'fields': FIELDS,
'page_no': page_no,
'page_size': PAGE_SIZE
}
params['sign'] = sign(params)
for _ in range(3): # 最多重试 3 次
try:
r = requests.post(GATEWAY, data=params, timeout=10)
data = r.json()
if 'error_response' in data:
raise RuntimeError(data['error_response'])
key = METHOD.replace('.', '_') + '_response'
items = data[key]['items']['item']
total = int(data[key]['total_results'])
return items, total
except Exception as e:
print(f'请求失败,重试中... {e}')
time.sleep(1)
return [], 0
def fetch_all():
all_items, page = [], 1
while True:
items, total = call_api(page)
if not items:
break
all_items.extend(items)
if len(all_items) >= total:
break
page += 1
return all_items
if __name__ == '__main__':
items = fetch_all()
with open('items.jsonl', 'w', encoding='utf-8') as f:
for it in items:
f.write(json.dumps(it, ensure_ascii=False) + '\n')
print('共抓取商品数:', len(items))
使用说明
- 安装依赖:pip install requests
- 把 APP_KEY / APP_SECRET / SESSION_KEY 替换成自己的值。
- 运行脚本:python3 fetch_items.py,完成后查看 items.jsonl。
至此,你就拥有了一份可落地的「淘宝天猫店铺全部商品接口调用攻略」与完整代码。祝采集愉快!
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章