深入研究:淘宝天猫关键词搜索接口详解

132 阅读5分钟

一、接口概述

淘宝/天猫关键词搜索接口是平台开放的核心API之一,允许开发者通过关键词检索平台商品,适用于比价工具、选品系统、市场分析等多种场景。

二、主要搜索接口对比

1. 淘宝客API(适合联盟推广)

  • 接口名称:taobao.tbk.item.get / taobao.tbk.dg.material.optional
  • 特点:返回带佣金商品,适合推广场景
  • 权限要求:淘宝客开发者权限

2. 平台商品搜索API(需高级权限)

  • 接口名称:taobao.item.search / tmall.item.search
  • 特点:返回原始商品数据,信息更全面
  • 权限要求:高级API权限,需申请

3. 店铺内搜索API

  • 接口名称:taobao.items.search / tmall.items.search
  • 特点:限定特定店铺内搜索
  • 权限要求:需店铺授权

三、核心接口:taobao.tbk.dg.material.optional(淘宝客物料搜索)

请求参数详解

参数类型必选说明
qString关键词
catString类目ID,多个用逗号分隔
itemlocString发货地
sortString排序:"tk_rate_des"(佣金比率降序)等
is_tmallBoolean是否只取天猫商品
is_overseasBoolean是否海外商品
start_priceNumber价格下限(元)
end_priceNumber价格上限(元)
page_noNumber页码
page_sizeNumber页大小(1~100)
platformNumber链接形式:1-PC,2-无线
has_couponBoolean是否有优惠券
adzone_idNumber推广位ID
need_free_shipmentBoolean是否包邮
need_prepayBoolean是否加入消费者保障

排序参数选项

  • tk_rate_des:佣金比率降序
  • tk_rate_asc:佣金比率升序
  • tk_total_sales_des:总销量降序
  • tk_total_sales_asc:总销量升序
  • tk_price_des:价格降序
  • tk_price_asc:价格升序

四、高级搜索技巧

1. 精准匹配搜索

python

复制

下载

req.q = '"exact keyword"'  # 使用双引号包裹关键词

2. 排除关键词

python

复制

下载

req.q = "手机 -二手"  # 减号表示排除

3. 多条件组合

python

复制

下载

req.q = "女装 夏季"
req.cat = "16,18"  # 女装/女士精品类目
req.itemloc = "浙江"
req.start_price = "100"
req.end_price = "500"
req.has_coupon = "true"

4. 类目精准筛选

python

复制

下载

# 获取类目ID列表
req.cat = "50010788,50008900"  # 连衣裙和T恤类目

五、Python完整调用示例

python

复制

下载

from top.api import TbkDgMaterialOptionalRequest
from top import appinfo
import json

def search_taobao_items(keyword, adzone_id, page=1, page_size=20):
    req = TbkDgMaterialOptionalRequest()
    req.set_app_info(appinfo("your_app_key", "your_app_secret"))
    
    # 基础参数
    req.adzone_id = adzone_id
    req.page_size = page_size
    req.page_no = page
    req.platform = 2  # 无线端
    
    # 搜索条件
    req.q = keyword
    req.sort = "tk_rate_des"  # 按佣金降序
    req.has_coupon = True  # 只显示有优惠券商品
    
    # 高级筛选
    req.start_price = "100"
    req.end_price = "500"
    req.is_tmall = True  # 只显示天猫商品
    
    try:
        resp = req.getResponse()
        return resp.get('tbk_dg_material_optional_response', {}).get('result_list', {}).get('map_data', [])
    except Exception as e:
        print(f"搜索出错: {str(e)}")
        return []

# 使用示例
results = search_taobao_items("夏季连衣裙", "your_adzone_id")
print(json.dumps(results, indent=2, ensure_ascii=False))

六、返回数据结构解析

典型返回数据示例:

json

复制

下载

{
    "tbk_dg_material_optional_response": {
        "result_list": {
            "map_data": [
                {
                    "item_id": "123456789",
                    "title": "2023新款夏季连衣裙",
                    "pict_url": "https://img.alicdn.com/xxx.jpg",
                    "small_images": {
                        "string": ["https://img.alicdn.com/xxx1.jpg", "..."]
                    },
                    "reserve_price": "299.00",
                    "zk_final_price": "199.00",
                    "commission_rate": "15.00",
                    "coupon_info": "满199减50",
                    "coupon_remain_count": 1000,
                    "coupon_total_count": 5000,
                    "volume": 5000,
                    "shop_title": "品牌旗舰店",
                    "user_type": 1,
                    "provcity": "浙江 杭州",
                    "item_url": "https://detail.tmall.com/item.htm?id=123456789",
                    "coupon_share_url": "https://taoquan.taobao.com/xxx",
                    "shop_dsr": 48927,
                    "white_image": "https://img.alicdn.com/xxx.jpg"
                }
            ]
        },
        "total_results": 1000,
        "request_id": "abc123xyz456"
    }
}

关键字段说明:

  • zk_final_price:折后价
  • commission_rate:佣金比率(%)
  • coupon_info:优惠券信息
  • volume:30天销量
  • user_type:1-天猫,0-淘宝
  • shop_dsr:店铺DSR评分(分值*10000)

七、高级应用场景

1. 价格监控系统

python

复制

下载

# 监控特定商品价格变化
def monitor_price(item_id):
    req = TbkDgMaterialOptionalRequest()
    req.set_app_info(appinfo(app_key, app_secret))
    req.adzone_id = adzone_id
    req.q = f"nid:{item_id}"  # 按商品ID精确搜索
    
    try:
        resp = req.getResponse()
        item = resp['tbk_dg_material_optional_response']['result_list']['map_data'][0]
        return {
            'price': float(item['zk_final_price']),
            'coupon': item.get('coupon_info', '')
        }
    except:
        return None

2. 竞品分析工具

python

复制

下载

# 获取竞品列表并分析
def analyze_competitors(keyword, top_n=10):
    items = search_taobao_items(keyword, adzone_id, 1, top_n)
    
    analysis = {
        'avg_price': 0,
        'max_sales': 0,
        'tmall_ratio': 0,
        'coupon_ratio': 0
    }
    
    if not items:
        return analysis
    
    total_price = 0
    tmall_count = 0
    coupon_count = 0
    
    for item in items:
        total_price += float(item['zk_final_price'])
        analysis['max_sales'] = max(analysis['max_sales'], item.get('volume', 0))
        if item.get('user_type') == 1:
            tmall_count += 1
        if item.get('coupon_info'):
            coupon_count += 1
    
    analysis['avg_price'] = round(total_price / len(items), 2)
    analysis['tmall_ratio'] = round(tmall_count / len(items) * 100, 2)
    analysis['coupon_ratio'] = round(coupon_count / len(items) * 100, 2)
    
    return analysis

八、性能优化建议

  1. 分页策略

    • 避免深度分页(超过100页)
    • 使用page_size最大化(100条/页)
  2. 缓存机制

    python

    复制

    下载

    from cachetools import TTLCache
    
    # 创建TTL缓存(5分钟过期)
    search_cache = TTLCache(maxsize=1000, ttl=300)
    
    def cached_search(keyword, adzone_id):
        cache_key = f"{keyword}_{adzone_id}"
        if cache_key in search_cache:
            return search_cache[cache_key]
        
        result = search_taobao_items(keyword, adzone_id)
        search_cache[cache_key] = result
        return result
    
  3. 异常处理

    python

    复制

    下载

    def safe_search(keyword, retry=3):
        for i in range(retry):
            try:
                return search_taobao_items(keyword)
            except Exception as e:
                if i == retry - 1:
                    raise
                time.sleep(2 ** i)  # 指数退避
    

九、合规注意事项

  1. 展示规范

    • 必须显示"淘宝客"标识
    • 优惠券信息需完整展示
  2. 数据使用限制

    • 不得存储原始商品数据超过24小时
    • 不得用于价格对比外的其他商业用途
  3. 频率限制

    • 默认QPS限制:20次/秒
    • 每日调用上限:通常50万次/天
  4. 用户隐私

    • 不得收集用户个人信息
    • 跳转链接必须使用官方提供的URL

如需最新信息,请参考[万邦开放平台官方文档]