一、核心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) :
scsspython 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
控制,示例:inipython 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
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
表示成功),处理签名错误、参数缺失等问题。 -
示例错误响应:
cssjson { "error_response": { "code": "1001", "msg": "参数缺失" } }
-
-
数据更新:商品信息可能延迟,重要场景需结合实时数据或官方推送服务。
六、替代方案
- 无淘宝客权限 :使用第三方数据服务,如万邦开放平台(需注意合法性)。
- 浏览器自动化:模拟用户行为(不推荐,违反淘宝规则)。
通过以上步骤,可高效利用淘宝API实现商品关键词搜索及数据获取。