【干货满满】分享淘宝API接口到手价,用python脚本实现

简介: 淘宝开放平台通过API可获取商品到手价,结合商品详情与联盟接口实现优惠计算。需使用AppKey、AppSecret及会话密钥认证,调用taobao.tbk.item.info.get接口获取最终价格。代码示例展示签名生成与数据解析流程。

淘宝开放平台(Taobao Open Platform)提供了丰富的 API 接口,其中获取商品到手价(含优惠券、满减等优惠后的实际价格)需要调用商品详情相关接口。以下是基于淘宝联盟 API 和商品详情 API 的实现方案。
一、核心接口与认证机制

  1. 相关 API 接口
    获取商品到手价主要依赖两个接口:
    淘宝商品详情接口(item_get):获取商品基础价格、优惠券信息;
    淘宝联盟单品详情接口(tbk_item_info_get):获取推广佣金、优惠叠加后的实际到手价(需联盟权限)。
  2. 认证机制
    淘宝 API 采用AppKey + AppSecret + 会话密钥(session) 认证:
    开发者需在淘宝开放平台注册应用,获取AppKey和AppSecret;
    部分接口需要用户授权,通过 OAuth 2.0 获取session(会话密钥);
    所有请求需包含签名(sign),通过AppSecret对参数加密生成。
    二、Python 脚本实现
    以下脚本实现通过淘宝联盟 API 获取商品到手价,包含签名生成、接口调用和价格解析。
    import requests
    import json
    import time
    import hashlib
    import logging
    from requests.exceptions import RequestException
    from typing import Dict, Optional

配置日志

logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s"
)

class TaobaoAPI:
def init(self, app_key: str, app_secret: str, session: Optional[str] = None):
"""
初始化淘宝API客户端
:param app_key: 应用AppKey
:param app_secret: 应用AppSecret
:param session: 用户会话密钥(部分接口需要)
"""
self.app_key = app_key
self.app_secret = app_secret
self.session = session
self.base_url = "https://eco.taobao.com/router/rest" # 淘宝API网关
self.format = "json"
self.v = "2.0" # API版本

def _generate_sign(self, params: Dict[str, str]) -> str:
    """生成签名(淘宝API签名规则)"""
    # 1. 按参数名ASCII升序排序
    sorted_params = sorted(params.items(), key=lambda x: x[0])
    # 2. 拼接为keyvaluekeyvalue格式
    sign_str = "".join([f"{k}{v}" for k, v in sorted_params])
    # 3. 首尾拼接app_secret
    sign_str = self.app_secret + sign_str + self.app_secret
    # 4. MD5加密并转为大写
    return hashlib.md5(sign_str.encode("utf-8")).hexdigest().upper()

def call(self, method: str, biz_params: Optional[Dict] = None) -> Optional[Dict]:
    """
    通用API调用方法
    :param method: 接口方法名(如taobao.tbk.item.info.get)
    :param biz_params: 业务参数
    :return: 接口返回的业务数据
    """
    # 1. 构建公共参数
    common_params = {
        "app_key": self.app_key,
        "method": method,
        "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"),
        "format": self.format,
        "v": self.v,
        "sign_method": "md5"
    }
    if self.session:
        common_params["session"] = self.session

    # 2. 合并参数
    all_params = {**common_params,** (biz_params or {})}

    # 3. 生成签名
    sign = self._generate_sign(all_params)
    all_params["sign"] = sign

    # 4. 发送请求
    try:
        response = requests.get(
            self.base_url,
            params=all_params,
            timeout=15
        )
        response.raise_for_status()

        # 5. 解析响应
        result = response.json()
        logging.info(f"API调用成功:{method},响应:{json.dumps(result, ensure_ascii=False)[:200]}...")

        # 6. 处理错误(淘宝API错误在error_response节点)
        if "error_response" in result:
            error = result["error_response"]
            logging.error(f"业务错误:{error.get('msg')}(错误码:{error.get('code')})")
            return None

        # 7. 返回业务数据(格式为"方法名+_response")
        response_key = f"{method.replace('.', '_')}_response"
        return result.get(response_key, {})

    except RequestException as e:
        logging.error(f"请求异常:{str(e)},接口:{method}")
        return None
    except json.JSONDecodeError:
        logging.error(f"响应格式错误:{response.text[:200]}...,接口:{method}")
        return None

def get_item_final_price(self, num_iid: str) -> Optional[Dict]:
    """
    获取商品到手价(包含优惠券、满减等)
    :param num_iid: 商品数字ID(淘宝商品唯一标识)
    :return: 价格信息字典(含原价、到手价、优惠券等)
    """
    # 1. 调用淘宝联盟接口获取优惠后价格
    method = "taobao.tbk.item.info.get"
    biz_params = {
        "num_iids": num_iid,
        "fields": "num_iid,title,pict_url,price,zk_final_price,coupon_info"
    }
    result = self.call(method, biz_params)

    if not result:
        return None

    # 2. 解析到手价(zk_final_price为优惠后价格,coupon_info为优惠券信息)
    item = result.get("results", {}).get("n_tbk_item", [])[0] or {}
    return {
        "num_iid": item.get("num_iid"),
        "title": item.get("title"),
        "original_price": item.get("price"),  # 原价
        "final_price": item.get("zk_final_price"),  # 到手价(含优惠)
        "coupon_info": item.get("coupon_info"),  # 优惠券信息
        "pict_url": item.get("pict_url")  # 商品主图
    }

示例调用

if name == "main":

# 替换为你的实际参数(从淘宝开放平台获取)
APP_KEY = "your_app_key"
APP_SECRET = "your_app_secret"
SESSION = "your_session"  # 非必需,部分接口需要

# 初始化客户端
taobao_api = TaobaoAPI(app_key=APP_KEY, app_secret=APP_SECRET, session=SESSION)

# 获取商品到手价(替换为实际商品ID)
num_iid = "6543217890"  # 示例商品数字ID
price_info = taobao_api.get_item_final_price(num_iid)

if price_info:
    print(f"商品标题:{price_info['title']}")
    print(f"原价:{price_info['original_price']} 元")
    print(f"到手价:{price_info['final_price']} 元")
    print(f"优惠券:{price_info['coupon_info'] or '无'}")

关键说明
接口选择:
普通商品价格可通过taobao.item.get接口获取,但到手价(含优惠)需使用淘宝联盟的taobao.tbk.item.info.get接口(需申请联盟权限)。
zk_final_price字段即为优惠后的到手价,包含店铺券、满减等叠加优惠。
签名规则:
淘宝 API 签名需将参数按 ASCII 排序后拼接为keyvalue格式,首尾加AppSecret后用 MD5 加密(大写)。
参数说明:
num_iid:商品数字 ID,可从商品详情页 URL 中提取。
coupon_info:返回优惠券信息(如 “满 100 减 20”),可进一步解析优惠门槛和金额。
权限申请:
淘宝联盟接口需在淘宝联盟开发者平台单独申请权限,通过审核后才可调用。
扩展建议
若需批量获取价格,可使用taobao.tbk.item.info.get接口的num_iids参数(多个 ID 用逗号分隔)。
结合taobao.tbk.coupon.get接口可获取更详细的优惠券信息,计算最终到手价。
注意接口调用频率限制(默认 QPS=10),超限会返回429错误。
通过上述脚本,可实现淘宝商品到手价的精准获取,适用于电商比价工具、导购平台等场景。

相关文章
|
10月前
|
JSON API 数据格式
淘宝拍立淘按图搜索API系列,json数据返回
淘宝拍立淘按图搜索API系列通过图像识别技术实现商品搜索功能,调用后返回的JSON数据包含商品标题、图片链接、价格、销量、相似度评分等核心字段,支持分页和详细商品信息展示。以下是该API接口返回的JSON数据示例及详细解析:
|
10月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
10月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
10月前
|
API 开发者 数据采集
高效获取淘宝商品详情:API 开发实现链接解析的完整技术方案
2025反向海淘新机遇:依托代购系统,聚焦小众垂直品类,结合Pandabay数据选品,降本增效。系统实现智能翻译、支付风控、物流优化,助力中式养生茶等品类利润翻倍,新手也能快速入局全球市场。
高效获取淘宝商品详情:API 开发实现链接解析的完整技术方案
|
10月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
1913 1
Python API接口实战指南:从入门到精通
|
10月前
|
JSON 安全 API
淘宝天猫上货API接口技术指南
本文介绍淘宝天猫上货API,详解其RESTful接口原理、认证流程及Python调用示例。涵盖商品添加、签名生成、响应处理,并提供代码实现与最佳实践,助力开发者高效实现自动化批量上架。
1059 3
|
10月前
|
存储 缓存 算法
淘宝买家秀 API 深度开发:多模态内容解析与合规推荐技术拆解
本文详解淘宝买家秀接口(taobao.reviews.get)的合规调用、数据标准化与智能推荐全链路方案。涵盖权限申请、多模态数据清洗、情感分析、混合推荐模型及缓存优化,助力开发者提升审核效率60%、商品转化率增长28%,实现UGC数据高效变现。
|
10月前
|
JSON 缓存 API
淘宝天猫商品详情API秘籍!轻松获取SKU属性数据
淘宝商品详情API(taobao.item.get)可获取商品标题、价格、SKU、库存等全量信息,支持RESTful调用,返回JSON数据,适用于电商导购与竞品分析。需企业实名认证,申请权限后通过签名加密请求。Python示例展示如何调用接口,配合fields参数可优化性能,应对频率限制与数据延迟建议轮询+缓存策略。
|
10月前
|
供应链 监控 算法
淘宝商品详情 API:从商品数据细节中捕捉电商最新流行趋势,赋能商家决策
淘宝商品详情API是洞察电商趋势的核心工具,通过商品信息、主图视频、SKU属性等多维数据,助力商家精准捕捉消费偏好、优化产品设计、制定营销与库存策略,实现数据驱动的科学决策。
淘宝商品详情 API:从商品数据细节中捕捉电商最新流行趋势,赋能商家决策
|
10月前
|
开发者 API 机器学习/深度学习
淘宝 / 1688 / 义乌购图搜 API 实战指南:接口调用与商业场景应用
本文详解淘宝、1688、义乌购三大平台图片搜索接口的核心特点、调用流程与实战代码。涵盖跨平台对比、参数配置、响应解析及避坑指南,支持URL/Base64上传,返回商品ID、价格、销量等关键信息,助力开发者快速实现商品识别与比价功能。
淘宝 / 1688 / 义乌购图搜 API 实战指南:接口调用与商业场景应用

推荐镜像

更多