一、核心API接口选择
接口名称 | 功能描述 | 适用场景 |
---|---|---|
taobao.items.search | 通过关键词搜索商品,支持分页、排序,返回商品列表(含标题、价格、销量、图片等) | 普通商品搜索、竞品监控、数据分析 |
taobao.tbk.item.get | 淘宝客API,返回含佣金信息的商品数据(需绑定淘宝客账号) | 推广返利类应用、佣金分析 |
taobao.item.search_shop | 通过店铺ID获取商品,支持分页(用户需求聚焦关键词,故作为补充) | 店铺商品全量获取、竞品店铺分析 |
二、调用流程详解
1. 注册与认证
- 步骤:
- 访问淘宝开放平台注册开发者账号,完成实名认证。
- 创建应用,选择类型为“自用型”或“他用型”,提交审核后获取AppKey和AppSecret。
- 在应用详情页申请接口权限(如
taobao.items.search
或taobao.tbk.item.get
)。
2. 签名生成方法
- 步骤:
- 将所有请求参数(除
sign
外)按字母升序排列。 - 拼接参数名和参数值,首尾各追加
AppSecret
。 - 对拼接字符串进行MD5加密并转为大写。
- 将所有请求参数(除
- 示例代码(Python):
python
def generate_sign(params, app_secret):
sorted_params = sorted(params.items())
sign_str = app_secret + ''.join(f"{k}{v}" for k, v in sorted_params if k != 'sign') + app_secret
return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()
3. 请求构造
必填参数:
参数名 示例值 描述 method
taobao.items.search
API接口名称 app_key
YOUR_APP_KEY
应用AppKey timestamp
2025-08-30 10:00:00
时间戳(GMT+8) format
json
响应格式 v
2.0
API协议版本 sign_method
md5
签名算法 业务参数:
参数名 示例值 描述 q
手机
搜索关键词 page_no
1
当前页码 page_size
10
每页商品数量 sort
price_asc
排序方式(价格升序)
三、返回数据解析
1. 基础字段说明
字段名 | 示例值 | 描述 |
---|---|---|
num_iid | 123456789 | 商品唯一ID |
title | 夏季新款连衣裙 | 商品标题 |
price | 199.00 | 当前售价 |
original_price | 299.00 | 原价 |
pic_url | https://img.alicdn.com/xxx.jpg | 商品主图URL |
sales | 200 | 30天销量 |
detail_url | https://item.taobao.com/item.htm?id=123456789 | 商品详情页链接 |
2. 排序与分页
- 排序:通过
sort
参数实现,支持price_asc
(价格升序)、price_desc
(价格降序)、sales
(销量)。 - 分页:通过
page_no
和page_size
控制,示例:python
for page in range(1, total_pages + 1):
data = api.search_items(keyword, page_no=page)
3. 特殊场景字段(淘宝客API)
字段名 | 示例值 | 描述 |
---|---|---|
tk_rate | 12.34 | 佣金比率(百分比) |
coupon_info | 满99减10 | 优惠券信息 |
zk_final_price | 88.00 | 折扣后价格 |
四、完整代码示例(Python)
python
import requests |
import hashlib |
import time |
class TaobaoAPI: |
def __init__(self, app_key, app_secret): |
self.app_key = app_key |
self.app_secret = app_secret |
self.api_url = "https://eco.taobao.com/router/rest" |
def generate_sign(self, params): |
sorted_params = sorted(params.items()) |
sign_str = self.app_secret + ''.join(f"{k}{v}" for k, v in sorted_params if k != 'sign') + self.app_secret |
return hashlib.md5(sign_str.encode()).hexdigest().upper() |
def search_items(self, keyword, page_no=1, page_size=40): |
params = { |
"method": "taobao.items.search", |
"app_key": self.app_key, |
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), |
"format": "json", |
"v": "2.0", |
"sign_method": "md5", |
"q": keyword, |
"page_no": page_no, |
"page_size": page_size, |
"fields": "num_iid,title,price,original_price,pic_url,sales,detail_url" |
} |
params["sign"] = self.generate_sign(params) |
response = requests.get(self.api_url, params=params) |
return response.json() |
# 使用示例 |
if __name__ == "__main__": |
api = TaobaoAPI("YOUR_APP_KEY", "YOUR_APP_SECRET") |
data = api.search_items("手机", page_no=1, page_size=10) |
print(data) |
五、注意事项
- 频率限制:普通应用每分钟≤100次,需合理设计分页逻辑,避免频繁请求。
- 数据合规:禁止爬取敏感信息(如用户隐私),需遵守淘宝开放平台协议。
- 错误处理:
- 检查返回码(如
200
表示成功),处理签名错误、参数缺失等问题。 - 示例错误响应:
json
{
"error_response": {
"code": "1001",
"msg": "参数缺失"
}
}
- 检查返回码(如
- 数据更新:商品信息可能延迟,重要场景需结合实时数据或官方推送服务。
六、替代方案
- 无淘宝客权限:使用第三方数据服务(需注意合法性)。
- 浏览器自动化:模拟用户行为(不推荐,违反淘宝规则)。
通过以上步骤,可高效利用淘宝API实现商品关键词搜索及数据获取。