開發者指南

排行榜與 聯賽 API

即時 TikTok LIVE 排行榜資料。取得 44 個地區的每日排名、查詢即時聯賽等級資料,並監控直播主表現。

所有付費方案 僅限 ULTRA - 聯賽

概覽

TikTool 透過 tik.tools 的網站 API 提供兩類排行榜資料。兩個端點都會回傳依鑽石收益排序的 TikTok LIVE 直播主即時競爭排名資料。

所有付費方案

地區排行榜

依地理區域劃分、以總鑽石收益排名的前 100 名直播主每日排行。全天持續更新。Basic、Pro 和 Ultra 訂閱者皆可使用。

  • 每個地區前 100 名直播主
  • 排名、分數(鑽石)、直播狀態、直播間 ID
  • 全球 44 個地區
  • 資料持續刷新
僅限 Ultra 開發者方案

聯賽排名

參加 TikTok LIVE 聯賽的直播主依等級劃分的競爭排名資料(A1-D5)。可以看出任何地區每個競爭等級裡有誰。需要Ultra 開發者方案。Agency PASS(tik.tools/vip)是網站訂閱,提供的是網站上的聯賽資料瀏覽權限,不是程式化 API 存取。

  • 18 個聯賽分組:A1, A2, A3, B1, B2, B3, B4, B5, C1, C2, C3, C4, C5, D1, D2, D3, D4, D5
  • 各等級的排名條目,附直播狀態
  • 較低方案可看到預覽(5 筆)
  • 資料頻繁刷新
驗證:這些端點位於 tik.tools(不是 api.tik.tools),採用工作階段驗證。請從你的伺服器呼叫,並帶上用付費開發者帳號登入 tik.tools 取得的有效工作階段 cookie。所有付費開發者方案(Basic、Pro、Ultra)都能使用地區排行榜端點。聯賽端點需要 Ultra 開發者方案。Agency PASS 訂閱(tik.tools/vip)是另一個僅限網站的產品,它提供透過 tik.tools 網站介面瀏覽聯賽資料的權限,而不是透過這個開發者 API。

地區對照表

共有 44 個地區排行榜。國家排行榜端點網址請用 Slug,聯賽端點請用 地區代碼。

Slug地區代碼說明
north-americaUS+North America
canadaCACanada
brazil-regionBRBrazil
mexicoMXMexico
latin-americaLATAMLatin America
colombia-peru-dominican-republicCO+Colombia, Peru & Dominican Republic
jamaicaJMJamaica
australia-pacificAU+Australia & Pacific
japan-regionJPJapan
south-korea-regionKRSouth Korea
taiwan-regionTWTaiwan
indonesia-regionIDIndonesia
malaysia-regionMYMalaysia
singaporeSGSingapore
philippines-regionPHPhilippines
thailand-regionTHThailand
vietnam-regionVNVietnam
nepalNPNepal
bangladesh-bhutan-maldivesBD+Bangladesh, Bhutan & Maldives
azerbaijanAZAzerbaijan
kazakhstanKZKazakhstan
kyrgyzstanKGKyrgyzstan
belarusBYBelarus
ukraineUAUkraine
central-asiaCCACentral Asia
dachDE+Germany & DACH
switzerlandCHSwitzerland
iberiaES+Iberia
central-europeHU+Central Europe
lusophonePT+Lusophone
france-regionFR+France
belgiumBEBelgium
netherlands-regionNLNetherlands
united-kingdom-regionUK+United Kingdom
ireland-baltics-maltaIE+Ireland, Baltics & Malta
italy-regionIT+Italy
swedenSESweden
scandinaviaSE+Nordics
poland-regionPLPoland
romania-regionRORomania
balkansBKBalkans
turkey-regionTRTurkey
middle-east-africaMENAMiddle East & Africa
nigeria-ghana-kenya-south-africaNG+Nigeria, Ghana, Kenya & South Africa

端點:地區排行榜

GEThttps://tik.tools/api/leaderboards/country/:slug所有付費方案

回傳某地區當天的前 100 名排行榜。條目依 score(今天累計的總鑽石收益)由高到低排序。

路徑參數

參數類型說明
slugstring上方地區對照表中的地區 slug(例如 balkans、north-america)

回應結構

欄位類型說明
[].ranknumber排行榜上的名次(1 = 收益最高)
[].uniqueIdstringTikTok 使用者名稱(不含 @)
[].nicknamestringTikTok 上顯示的名稱
[].scorenumber今天在該地區累計的總鑽石收益
[].isLiveboolean直播主目前是否正在直播
[].roomIdstring | null正在直播時為直播間 ID,否則為 null

回應範例

[
  {
    "rank": 1,
    "uniqueId": "top_creator",
    "nickname": "Top Creator",
    "score": 284500,
    "isLive": true,
    "roomId": "7384920175638291456"
  },
  {
    "rank": 2,
    "uniqueId": "second_place",
    "nickname": "Second Place",
    "score": 198200,
    "isLive": false,
    "roomId": null
  }
]

程式碼範例

// Node.js - fetch Balkans leaderboard
const response = await fetch('https://tik.tools/api/leaderboards/country/balkans', {
  headers: {
    'x-api-key': 'YOUR_ULTRA_API_KEY',
  }
})

const entries = await response.json()

for (const entry of entries) {
  console.log(`#${entry.rank} @${entry.uniqueId} - ${entry.score} diamonds${entry.isLive ? ' [LIVE]' : ''}`)
}

聯賽端點

需要 Ultra。聯賽端點需要Ultra 開發者方案。Basic 和 Pro 方案的請求只會收到 5 筆預覽:回應中的 hasFullAccess 欄位會是 false,maskedCount 會顯示有多少筆被隱藏。注意:Agency PASS 訂閱(tik.tools/vip)提供網站上的聯賽資料瀏覽權限,但不是開發者 API 訂閱。

4a. 列出某地區的聯賽

GEThttps://tik.tools/api/leaderboards/leagues/:region僅限 Ultra

列出指定地區可用的聯賽等級,包括每個等級有多少直播主,以及資料最後更新時間。

路徑參數

參數類型說明
regionstring地區對照表中的地區代碼(例如 BK、BC、US+)

回應結構

欄位類型說明
[].classTypenumber數字等級代號(見下方 classType 對照表)
[].classLabelstring易讀的等級名稱(例如 "A1"、"B5")
[].countnumber目前在此等級的直播主人數
[].updatedAtstring最後一次資料刷新的 ISO 8601 時間戳記

回應範例

[
  { "classType": 2000, "classLabel": "A1", "count": 12, "updatedAt": "2026-05-11T14:30:00.000Z" },
  { "classType": 1900, "classLabel": "A2", "count": 28, "updatedAt": "2026-05-11T14:30:00.000Z" },
  { "classType": 1100, "classLabel": "B5", "count": 55, "updatedAt": "2026-05-11T14:30:00.000Z" },
  { "classType": 1000, "classLabel": "C1", "count": 83, "updatedAt": "2026-05-11T14:30:00.000Z" }
]
// Node.js - list leagues for Balkans (BK)
const response = await fetch('https://tik.tools/api/leaderboards/leagues/BK', {
  headers: { 'x-api-key': 'YOUR_ULTRA_API_KEY' }
})

const leagues = await response.json()

for (const league of leagues) {
  console.log(`${league.classLabel} (type ${league.classType}): ${league.count} creators`)
}

4b. 取得聯賽條目

GEThttps://tik.tools/api/leaderboards/league/:region/:classType僅限 Ultra

回傳某地區特定聯賽等級中的直播主排名清單。這是打造聯賽相關工具和直播主監控儀表板的主要端點。

路徑參數

參數類型說明
regionstring地區代碼(例如 BK、US+)
classTypenumber數字等級代號(2000=A1、1900=A2、1100=B5 等)

回應結構

欄位類型說明
hasFullAccessboolean你的方案有完整權限時為 true;false = 預覽模式(5 筆)
maskedCountnumber因方案限制被隱藏的條目數(hasFullAccess 時為 0)
totalCountnumber此等級的直播主總數
entries[].ranknumber在此等級中的名次
entries[].userIdstringTikTok 數字使用者 ID(穩定的後端 ID,永遠不變)
entries[].uniqueIdstringTikTok 使用者名稱 / 帳號,不含 @(使用者可更改)
entries[].nicknamestring顯示名稱(使用者可更改)
entries[].scorenumber本期聯賽累計的鑽石收益
entries[].isLiveboolean直播主目前是否正在直播

回應範例

{
  "hasFullAccess": true,
  "maskedCount": 0,
  "totalCount": 12,
  "entries": [
    {
      "rank": 1,
      "userId": "6841523190294479361",
      "uniqueId": "league_leader",
      "nickname": "League Leader",
      "score": 1840000,
      "isLive": true
    },
    {
      "rank": 2,
      "userId": "6712309845712006148",
      "uniqueId": "second_in_a1",
      "nickname": "Second In A1",
      "score": 1620000,
      "isLive": false
    }
  ]
}
// Node.js - fetch A1 league entries for Balkans
const response = await fetch('https://tik.tools/api/leaderboards/league/BK/2000', {
  headers: { 'x-api-key': 'YOUR_ULTRA_API_KEY' }
})

const data = await response.json()

if (!data.hasFullAccess) {
  console.warn(`Teaser mode: ${data.maskedCount} entries hidden. Upgrade to Ultra for full access.`)
}

console.log(`A1 Balkans - ${data.totalCount} creators total`)

for (const entry of data.entries) {
  const liveTag = entry.isLive ? ' [LIVE]' : ''
  console.log(`#${entry.rank} @${entry.uniqueId} - ${entry.score.toLocaleString()} diamonds${liveTag}`)
}

classType 對照表

聯賽等級把數字 classType 值對應到競爭等級。A1 是最高等級,也就是鑽石收益最多的頂尖直播主。D5 是進入聯賽競爭的起點。

classType等級說明
2000A1頂尖等級。地區內收益最高的直播主。競爭最激烈,上榜所需鑽石也最多。
1900A2資深等級。已站穩的高收益直播主,正朝 A1 晉級。
1800A3穩定的 A 級。持續高收益、守住頂尖區間的直播主。
1500B1B 區間頂端。再晉級一次就進入 A 組的直播主。
1400B2B 級上段。實力堅強、競爭 B1 的直播主。
1300B3B 級中段。B 區間中收益穩定的直播主。
1200B4B 級下段。正往 B 上段分組邁進的直播主。
1100B5B 級入門。整個聯賽期間收益穩定且強勁的直播主。
1000C1C 區間頂端。正往 B 級區間邁進的活躍直播主。
900C2C 級上段。收益中等、競爭晉級 C1 的直播主。
800C3C 級中段。C 區間中收益規律的直播主。
700C4C 級下段。正往 C 上段分組爬升的直播主。
600C5C 級入門。剛從 D 區間晉級上來。
500D1D 區間頂端。開始在該地區有可觀收益的直播主。
400D2D 級上段。較新或收益量較低的直播主。
300D3D 級中段。正在適應聯賽競爭的直播主。
200D4D 級下段。剛起步的聯賽直播主。
100D5入門聯賽。符合聯賽資格直播主的起點。
不是每個地區都有全部 18 個分組。請先呼叫列出聯賽端點,找出目標地區有哪些等級,再抓取你需要的等級。

實作範例:找出巴爾幹所有正在直播的 A1 直播主

這個完整的多步驟範例示範建議的做法:找出可用的等級、找到你要的那個、抓取它的條目,再篩選出直播中的直播主。適用於任何地區和等級組合。

1
抓取地區 BK(巴爾幹)可用的聯賽
2
找到 A1 條目並確認它存在
3
抓取 A1 聯賽條目
4
篩選出 isLive === true 的直播主
// Complete example: Find all A1 creators live in Balkans right now

const BASE = 'https://tik.tools'
const REGION = 'BK'
const HEADERS = { 'x-api-key': 'YOUR_ULTRA_API_KEY' }

async function getA1LiveCreators() {
  // Step 1: Fetch available leagues for Balkans
  const leaguesRes = await fetch(`${BASE}/api/leaderboards/leagues/${REGION}`, {
    headers: HEADERS
  })
  const leagues = await leaguesRes.json()

  // Step 2: Find the A1 class (classType 2000)
  const a1 = leagues.find(l => l.classLabel === 'A1')
  if (!a1) {
    console.log('A1 class not found in Balkans')
    return []
  }

  console.log(`Found A1 class: ${a1.count} creators, last updated ${a1.updatedAt}`)

  // Step 3: Fetch A1 entries
  const entriesRes = await fetch(
    `${BASE}/api/leaderboards/league/${REGION}/${a1.classType}`,
    { headers: HEADERS }
  )
  const data = await entriesRes.json()

  if (!data.hasFullAccess) {
    console.warn(`Only showing ${data.entries.length} of ${data.totalCount} entries (teaser mode)`)
  }

  // Step 4: Filter for creators currently live
  const liveCreators = data.entries.filter(e => e.isLive)

  return liveCreators
}

const live = await getA1LiveCreators()
console.log(`\n${live.length} A1 creator(s) live in Balkans right now:\n`)

for (const creator of live) {
  console.log(`  #${creator.rank} @${creator.uniqueId} - ${creator.score.toLocaleString()} diamonds`)
}

// Connect to their streams via TikTool WebSocket
for (const creator of live) {
  console.log(`  wss://api.tik.tools?uniqueId=${creator.uniqueId}&apiKey=YOUR_API_KEY`)
}

速率限制與最佳做法

在用戶端快取回應

排行榜名次是逐漸變動的。重新抓取前先快取 10-30 秒,避免不必要地狂打 API。

聯賽資料依固定排程刷新

聯賽榜單變化緩慢,所以輪詢聯賽端點比每幾分鐘一次更頻繁並沒有好處。

各地區獨立輪詢

全部 44 個地區都可以平行輪詢。需要多地區資料時,請同時發出請求,不要依序一個一個來。

用 isLive + roomId 連線

排行榜條目的 isLive 為 true 時,你可以馬上用對方的 uniqueId 和你的 API 金鑰對該直播主開啟 WebSocket。

安全保存工作階段 cookie

工作階段 cookie 可以存取你的帳號。請存放在環境變數中,絕對不要放進原始碼或公開儲存庫。

先列出聯賽再抓條目

不是每個地區都有每個等級。一定要先呼叫列表端點,確認目標地區有哪些 classType 值可用。

常見問題

哪些方案包含排行榜 API 存取?

要存取聯賽排名資料需要什麼?

排行榜資料多久更新一次?

有多少個地區可用?

從排行榜看得出直播主現在是否在直播嗎?

為什麼我的地區沒有出現全部的 classType 值?

可以一次輪詢全部 44 個地區嗎?