淘宝商品详情API请求的全场景,带json数据参考

你想了解淘宝商品详情 API 请求的「全场景」(包括接口类型、请求参数、不同场景的适配),并获取可参考的 JSON 返回数据结构,我会从「官方 / 第三方 API 选型→全场景请求示例→JSON 数据参考→避坑要点」展开,覆盖个人 / 企业不同使用场景,确保你能适配各类 API 调用需求。

一、淘宝商品详情 API 选型(按场景分类)

淘宝无公开的「免费商品详情 API」,需根据自身场景选择适配方案,以下是主流选型及适用场景:

表格

API 类型 适用场景 核心特点 反爬 / 权限要求
淘宝开放平台官方 API 企业 / 商家(有店铺资质) 数据权威、稳定,支持全字段获取 需要企业认证、申请应用、签约接口
第三方聚合 API(如聚合数据) 个人 / 小型团队(无企业资质) 开箱即用,无需复杂认证,仅需 AppKey 第三方封装,有调用次数限制(免费版够用)
抓包自研 API(淘宝后台接口) 技术型团队(追求高性价比) 免费、高效,直接调用淘宝原生接口 需处理 Cookie / 登录态、IP 封禁、接口变更

二、全场景 API 请求示例(附代码)

场景 1:第三方聚合 API(个人首选,最简)
1. 准备工作
  • 关注博主,领取「淘宝商品详情 API」,获取AppKey
  • 商品 ID 提取:从淘宝商品 URL(https://item.taobao.com/item.htm?id=698765432109)中提取698765432109
2. 请求代码(Python)

python

运行

复制代码
import requests
import json

# 配置信息
APP_KEY = "你的聚合数据AppKey"
ITEM_ID = "698765432109"  # 淘宝商品ID
API_URL = "https://v.juhe.cn/taobao/item/detail"

def request_taobao_3rd_api():
    """调用第三方淘宝商品详情API(全字段请求)"""
    # 1. 构造请求参数(第三方API通用参数)
    params = {
        "key": APP_KEY,          # 必选:聚合数据AppKey
        "num_iid": ITEM_ID,      # 必选:淘宝商品ID
        "is_promotion": "1"      # 可选:是否获取促销价(1=是,0=否)
    }

    # 2. 构造请求头(模拟浏览器,避免拦截)
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
        "Referer": f"https://item.taobao.com/item.htm?id={ITEM_ID}"
    }

    try:
        # 3. 发送请求
        response = requests.get(API_URL, params=params, headers=headers, timeout=10)
        if response.status_code == 200:
            # 4. 解析JSON数据
            result = response.json()
            # 格式化输出完整JSON(便于参考结构)
            print("✅ 第三方API返回完整JSON:")
            print(json.dumps(result, ensure_ascii=False, indent=4))
            return result
        else:
            print(f"❌ 请求失败,状态码:{response.status_code}")
    except Exception as e:
        print(f"❌ 请求异常:{str(e)}")
    return None

if __name__ == "__main__":
    request_taobao_3rd_api()
场景 2:淘宝开放平台官方 API(企业场景)
1. 准备工作
  • 注册开放平台,完成企业认证,创建应用,申请taobao.item.get接口;
  • 获取AppKeyAppSecret,生成 API 调用签名(官方提供 SDK)。
2. 请求代码(Python,基于官方 SDK)

python

运行

复制代码
from top.api import ItemGetRequest
from top.api import RestApi

# 配置信息
APP_KEY = "你的开放平台AppKey"
APP_SECRET = "你的开放平台AppSecret"
SESSION_KEY = "用户授权SessionKey(可选,部分接口需要)"
ITEM_ID = "698765432109"

class TaobaoRestApi(RestApi):
    def __init__(self, appkey, appsecret, sessionkey=None):
        super().__init__(appkey, appsecret)
        self.sessionkey = sessionkey
        self.set_app_info(RestApi(appkey, appsecret))

def request_taobao_official_api():
    """调用淘宝开放平台官方API"""
    # 1. 初始化API客户端
    req = ItemGetRequest()
    req.set_app_info(TaobaoRestApi(APP_KEY, APP_SECRET, SESSION_KEY))
    
    # 2. 设置请求参数(官方接口参数)
    req.num_iid = ITEM_ID          # 必选:商品ID
    req.fields = "num_iid,title,price,stock,sell_count,shop_name,item_img"  # 可选:指定返回字段
    req.is_promotion = "true"      # 可选:是否返回促销价

    try:
        # 3. 发送请求并解析
        result = req.getResponse()
        print("✅ 官方API返回完整JSON:")
        print(json.dumps(result, ensure_ascii=False, indent=4))
        return result
    except Exception as e:
        print(f"❌ 官方API调用失败:{str(e)}")
    return None

if __name__ == "__main__":
    request_taobao_official_api()
场景 3:抓包自研 API(技术型场景)
1. 准备工作
  • 浏览器 F12 抓包淘宝详情页 XHR 请求,提取:
    • 接口 URL:如https://h5api.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/
    • 请求参数:data={"itemNumId":"698765432109"}appKeyt等;
    • 请求头:Cookie(登录态)、MTOP-SESSIONUser-Agent
2. 请求代码(Python)

python

运行

复制代码
import requests
import json

# 配置信息(抓包获取)
ITEM_ID = "698765432109"
API_URL = "https://h5api.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/"
COOKIE = "你的淘宝登录Cookie"  # 关键:必须带登录态

def request_taobao_crawl_api():
    """调用抓包获取的淘宝原生API"""
    # 1. 构造请求参数(抓包得到的参数)
    params = {
        "jsv": "2.7.0",
        "appKey": "12574478",  # 淘宝固定appKey,抓包确认
        "t": "1740000000000",  # 时间戳,可动态生成
        "sign": "抓包得到的签名(或自研签名算法)",
        "api": "mtop.taobao.detail.getdetail",
        "v": "6.0",
        "dataType": "json",
        "data": json.dumps({"itemNumId": ITEM_ID})
    }

    # 2. 构造请求头(核心:Cookie和MTOP相关)
    headers = {
        "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 TaobaoiPhoneClient/10.20.0",
        "Cookie": COOKIE,
        "MTOP-SESSION": "抓包得到的SESSION",
        "Referer": f"https://detail.tmall.com/item.htm?id={ITEM_ID}",
        "Origin": "https://detail.tmall.com"
    }

    try:
        # 3. 发送POST请求(淘宝原生接口多为POST)
        response = requests.post(
            API_URL,
            params=params,
            headers=headers,
            timeout=10
        )
        if response.status_code == 200:
            result = response.json()
            print("✅ 自研API返回完整JSON:")
            print(json.dumps(result, ensure_ascii=False, indent=4))
            return result
        else:
            print(f"❌ 请求失败,状态码:{response.status_code}")
    except Exception as e:
        print(f"❌ 请求异常:{str(e)}")
    return None

if __name__ == "__main__":
    request_taobao_crawl_api()

三、JSON 返回数据参考(全字段)

1. 第三方聚合 API JSON 参考(最简洁,新手友好)

json

复制代码
{
  "error_code": 0,          // 通用状态码:0=成功
  "reason": "success",      // 状态描述
  "result": {               // 商品核心数据层
    "num_iid": "698765432109",  // 商品ID
    "title": "2025新款淘宝爆款短袖T恤男纯棉宽松夏季百搭上衣",  // 商品标题
    "price": "59.9",         // 原价(字符串)
    "promotion_price": "49.9",  // 促销价
    "sales": "10万+",        // 销量
    "stock": "9999",         // 库存数量
    "stock_state": "有货",    // 库存状态
    "shop_name": "淘宝爆款男装店",  // 店铺名称
    "shop_id": "123456789",  // 店铺ID
    "brand": "无品牌",        // 品牌
    "category": "男装>T恤",   // 分类
    "pic_url": "https://img.alicdn.com/imgextra/i1/30874/xxx.jpg",  // 主图
    "detail_url": "https://item.taobao.com/item.htm?id=698765432109",  // 详情页URL
    "spec_info": [           // 规格信息
      {"name": "颜色", "value": "黑色"},
      {"name": "尺码", "value": "XL"}
    ],
    "create_time": "2025-01-01",  // 上架时间
    "good_rate": "98%",      // 好评率
    "delivery_fee": "0.0",   // 运费
    "delivery_place": "浙江杭州"  // 发货地
  }
}
2. 淘宝开放平台官方 API JSON 参考(最权威,字段最全)

json

复制代码
{
  "item_get_response": {
    "item": {
      "num_iid": "698765432109",
      "title": "2025新款淘宝爆款短袖T恤男纯棉宽松夏季百搭上衣",
      "price": 59.9,          // 官方API为数值类型
      "type": "fixed",        // 价格类型:fixed=一口价
      "cid": "123456",        // 分类ID
      "seller_cids": "789",   // 店铺分类ID
      "props_name": "1627207:28314:颜色:黑色;1627207:28315:尺码:XL",  // 规格属性
      "props": [              // 详细规格
        {"name": "品牌", "value": "无品牌"},
        {"name": "面料", "value": "纯棉"}
      ],
      "sales": 100000,        // 销量(数值)
      "stock": 9999,          // 库存(数值)
      "shop_name": "淘宝爆款男装店",
      "nick": "淘宝卖家昵称",   // 卖家昵称
      "item_imgs": [          // 商品图片列表
        {"url": "https://img.alicdn.com/imgextra/i1/30874/xxx.jpg"}
      ],
      "location": "浙江杭州",  // 发货地
      "created": "2025-01-01 00:00:00",  // 上架时间
      "modified": "2025-01-10 00:00:00"  // 修改时间
    },
    "request_id": "123456789abc"  // 请求ID(排查问题用)
  }
}
3. 抓包自研 API JSON 参考(最复杂,原生数据)

json

复制代码
{
  "ret": ["SUCCESS::调用成功"],  // 调用状态
  "data": {
    "itemInfo": {             // 商品基础信息
      "price": {
        "priceText": "¥59.9", // 价格文本
        "promotionPrice": "49.9",  // 促销价
        "originalPrice": "59.9"    // 原价
      },
      "itemBasicInfo": {
        "itemId": "698765432109",
        "title": "2025新款淘宝爆款短袖T恤男纯棉宽松夏季百搭上衣",
        "sellCount": "10万+",
        "stockCount": "9999"
      },
      "shopInfo": {
        "shopId": "123456789",
        "shopName": "淘宝爆款男装店",
        "shopType": "C店"     // 店铺类型:C店/天猫
      }
    },
    "skuBase": {              // 规格信息
      "skuProps": [
        {"propName": "颜色", "values": [{"name": "黑色", "price": "49.9"}]},
        {"propName": "尺码", "values": [{"name": "XL", "price": "49.9"}]}
      ]
    },
    "rateInfo": {             // 评价信息
      "goodRate": "98%",
      "rateCount": "10000"
    }
  }
}

四、全场景核心注意点(避坑)

  1. 状态码判断
    • 第三方 API:优先看error_code(0 = 成功);
    • 官方 API:看ret(SUCCESS = 成功);
    • 自研 API:看retcode字段,无则看 HTTP 状态码。
  2. 字段兼容性
    • 价格字段:第三方 API 多为字符串,官方 API 为数值,需按需转换;
    • 销量字段:部分场景返回「10 万 +」(字符串),需解析为数值(如100000);
    • 规格字段:不同 API 返回格式不同(数组 / 字符串),需统一解析逻辑。
  3. 反爬 / 权限
    • 第三方 API:无需登录,但有调用次数限制(免费版约 100 次 / 天);
    • 官方 API:需企业资质,按调用量收费;
    • 自研 API:需维护 Cookie / 签名,IP 易被封,适合小批量采集。
  4. 数据完整性
    • 未登录状态下,自研 API 只能获取基础字段(标题 / 价格),无法获取库存 / 销量;
    • 促销价需指定is_promotion=1参数才能返回。

总结

  1. 场景选型:个人用第三方 API,企业用官方 API,技术团队可自研;
  2. JSON 核心:所有 API 均包含「商品 ID、标题、价格、店铺名称」核心字段,差异在扩展字段和格式;
  3. 避坑关键 :第三方 API 关注error_code,官方 API 关注签名,自研 API 关注 Cookie / 登录态;
  4. 字段处理 :统一价格 / 销量的类型转换,用dict.get()提取字段避免 KeyError。

以上覆盖了淘宝商品详情 API 请求的所有主流场景,JSON 数据可直接作为解析模板,代码可根据自身场景调整参数 / 请求头即可使用。

相关推荐
troublea2 小时前
Laravel5.x核心特性全解析
数据库·spring boot·后端·mysql
feng68_2 小时前
Web服务基础理论
linux·运维·服务器·web服务
笨蛋不要掉眼泪2 小时前
Spring Cloud Gateway 核心篇:深入解析过滤器(Filter)机制与实战
java·服务器·网络·后端·微服务·gateway
難釋懷2 小时前
Redis消息队列-基于Stream的消息队列
数据库·redis·缓存
GDAL2 小时前
SQLite 与 MySQL 性能深度对比:场景决定最优解
数据库·mysql·sqlite
troublea2 小时前
Laravel 8.x新特性全解析
数据库·mysql·缓存
柳鲲鹏2 小时前
LINUX下载编译libosmscout
linux·运维·服务器
焦糖玛奇朵婷2 小时前
做盲盒小程序,如何少走弯路?
数据库·程序人生·小程序·开源软件·软件需求
茶杯梦轩2 小时前
从零起步学习并发编程 || 第七章:ThreadLocal深层解析及常见问题解决方案
服务器·后端·面试