×

💳 淘宝API并非全免费!基础接口免费额度详解 + 增值接口收费标准曝光(附Python源码)

万邦科技Lex 万邦科技Lex 发表于2026-06-28 08:44:33 浏览22 评论0

抢沙发发表评论

💳 淘宝API并非全免费!基础接口免费额度详解 + 增值接口收费标准曝光(附Python源码)

淘宝开放平台(TOP) 把接口明确分为免费API / 基础收费API / 增值收费API三类。商品查询类大多有每日免费额度,订单同步类按量计费(聚石塔内很便宜),CRM/数据分析属增值包。下面把官方收费规则说清,并给你一个用量探测脚本判断当前应用是否触及计费线。

一、TOP API 收费分层(2026版官方规则)

类型
代表接口
是否收费
收费标准(参考)
免费API
taobao.item.get(公开字段)、taobao.items.onsale.get(部分字段)、taobao.logistics.trace.gettaobao.tbk.*(淘宝客)
免费,有日调用额度
个人≈数百~数千次/天;企业≈数万~百万次/天(视应用等级)
基础API(收费)
taobao.trades.sold.gettaobao.trade.fullinfo.gettaobao.items.inventory.gettaobao.logistics.online.send
💰 按量计费(超免费额度后)
聚石塔内:≈¥0.02/百次
聚石塔外:≈¥0.20/百次
增值API(收费)
taobao.crm.members.get(高级RFM)、数据罗盘、竞品分析、会员深度洞察
💰 按量计费(增值包)
聚石塔内:≈¥0.06/百次
聚石塔外禁止调用
淘宝客API
taobao.tbk.dg.material.optionaltaobao.tbk.item.info.get
免费调用(需备案淘宝客应用),日限约10万次(初级)~100万次(高级)
成交后阿里妈妈扣佣金,API本身不收费
中小卖家ERP做商品同步+订单回写:基础API超免费额度后才按¥0.02~0.20/百次计费,通常月费极低或为零。

二、免费额度说明

  • 免费API(商品查询等):每人/每个AppKey有日免费次数(个人偏低,企业经认证可提额),未超不扣费

  • 基础API(订单类):每天也有少量免费调用量(通常够低频同步),超出按上表计费

  • 淘宝客API:备案后免费,日限与账号等级挂钩

  • 在开放平台控制台「统计分析 → API调用量」可查看当日各接口消耗


三、Python:免费/计费接口探测 + 用量提示

# top_fee_check.py
"""
淘宝TOP API 费用探测:
 ① 调免费接口 taobao.item.get → 验证连通 + 确认免费额度未耗尽
 ② 捕获限流/日额度提示
若订单接口(需session)返回 accesscontrol.limited-by-app-access-count → 日免费基础额度用完,超量按量计费
"""
import hashlib
import time
import requests
from typing import Dict, Optional

# 封装好API供应商demo url=https://console.open.onebound.cn/console/?i=Lex
class _FeeCheckClient:
    def __init__(self, ak, ask, sandbox=False):
        self.ak, self.ask = ak, ask
        self.gw = ("https://gw.api.tbsandbox.com/router/rest" if sandbox
                    else "https://gw.api.taobao.com/router/rest")

    def _sign(self, p: Dict) -> str:
        filt = sorted((k, v) for k, v in p.items()
                       if v is not None and str(v).strip() != '' and k != 'sign')
        qs = ''.join(f"{k}{v}" for k, v in filt)
        return hashlib.md5(f"{self.ask}{qs}{self.ask}".encode()).hexdigest().upper()

    def _call(self, method, biz, session=None):
        p = {"method": method, "app_key": self.ak,
             "timestamp": str(int(time.time() * 1000)),
             "format": "json", "v": "2.0", "sign_method": "md5"}
        if session: p["session"] = session
        p.update(biz)
        p["sign"] = self._sign(p)
        r = requests.post(self.gw, data=p, timeout=15)
        r.raise_for_status()
        d = r.json()
        if "error_response" in d:
            err = d["error_response"]
            code = str(err.get("code", ""))
            sub = err.get("sub_code", "")
            msg = err.get("msg", "")
            # ── 费用/限流相关诊断 ──
            if "limited-by-app-access-count" in sub:
                print("\n🚨 【日调用额度耗尽】")
                print("   → 免费额度已用完,超量按基础API费率计费(聚石塔内≈¥0.02/百次)")
                print("   → 建议:1)减少全量翻页 2)用增量(modified)同步 3)申请提额")
            elif "FLOW_CONTROL" in code or code == "7":
                print(f"\n⚠️  【QPS超限】退避重试即可(免费上限内)")
            elif "no permission" in msg:
                print(f"\n❌ 【无权限】接口未申请或需用企业应用(订单类)")
            else:
                print(f"\n❌ TOP Err[{code}][{sub}]: {msg} {err.get('sub_msg','')}")
            raise Exception(f"TOP {code}: {msg}")
        return d.get(list(d.keys() - {"error_response"})[0], {})

    def probe_item_get(self, num_iid):
        return self._call(
            "taobao.item.get",
            {"num_iid": str(num_iid),
             "fields": "num_iid,title,price,pic_url,approve_status"}
        ).get("item", {})

    def probe_sold_list(self, session, minutes_back=30):
        """订单列表探针(需卖家AccessToken,触发基础API计费检测)"""
        from datetime import datetime, timedelta
        now = datetime.now()
        start = (now - timedelta(minutes=minutes_back)).strftime("%Y-%m-%d %H:%M:%S")
        end = now.strftime("%Y-%m-%d %H:%M:%S")
        return self._call(
            "taobao.trades.sold.get",
            {"fields": "tid,status,modified",
             "start_modified": start, "end_modified": end,
             "page_no": 1, "page_size": 1},
            session=session
        )
# 封装好API供应商demo url=https://console.open.onebound.cn/console/?i=Lex

# ======================= 运行 =======================
if __name__ == "__main__":
    AK = "YOUR_APP_KEY"
    ASK = "YOUR_APP_SECRET"

    cli = _FeeCheckClient(AK, ASK, sandbox=False)

    try:
        # ① 免费接口探测
        item = cli.probe_item_get("654321098765")   # ← 替换真实num_iid
        print(f"✅ 免费接口正常!商品: {item.get('title','N/A')}")
        print("   → 此调用消耗【免费额度】,未超不收费")

        # ② 如需检测订单接口(需传卖家AccessToken)
        # cli.probe_sold_list(session="SELLER_ACCESS_TOKEN")

        print("\n📋 费用小结:")
        print("   • taobao.item.get / tbk.*  → 免费额度内 ¥0")
        print("   • trades.sold.get/fullinfo.get → 超免费额度后 ≈¥0.02/百次(聚石塔内)")
        print("   • crm.增值分析 → 需购增值包 ≈¥0.06/百次")
        print("   • 淘宝客API本身免费,成交后阿里妈妈扣佣金")

    except Exception as e:
        # 已在内层分类打印过
        pass

四、各接口收费归类速查表

接口
分类
说明
taobao.item.get
免费API
日免费额度,超量极低价或需提包
taobao.items.onsale.get
免费API(部分字段) / 基础API(SKU库存需session)
公开字段免费
taobao.trades.sold.get/ trade.fullinfo.get
基础收费API
超免费额度按量计费
taobao.logistics.online.send/ trace.get
基础/免费
物流发送属基础API
taobao.crm.members.get(高级)
增值API
需购包,聚石塔内调用
taobao.tbk.dg.material.optional
免费API(淘宝客)
备案后免费,日限与等级挂钩

五、降本建议

  1. 增量同步订单:用 start_modified/end_modified每5~30分钟拉变更 → 大幅减少调用量

  2. fields 只取需要字段:减少扫描量,不易触发隐性限流

  3. 聚石塔内部署:ECS在聚石塔内调用基础API单价低一个数量级(¥0.02 vs ¥0.20/百次)

  4. 日额度监控:控制台设告警,接近耗尽切增量模式或申请提额


六、一句话总结(面试/方案)

淘宝TOP平台:商品查询/淘宝客API有日免费额度不收费;订单同步/发货类是基础API超免费额度后按¥0.02(聚石塔内)/¥0.20(外)每百次计费;CRM深度分析/数据罗盘属增值API需购包。中小自营ERP通常零或极低费用。
需要我补 TOP OAuth2获取卖家AccessToken完整代码订单增量同步APScheduler(带断点续跑+用量日志) 吗?


群贤毕至

访客