开发者指南

排行榜与 联赛 API

TikTok LIVE 实时榜单数据。获取 44 个地区的日榜,查询实时联赛级别数据,追踪主播表现。

所有付费套餐 仅限 ULTRA - 联赛

概览

TikTool 通过网站 API(tik.tools)提供两类榜单数据。两个接口都返回 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),使用基于会话的认证。请在你的服务器端调用,并带上有效的会话 Cookie(用付费开发者账号登录 tik.tools 后获取)。所有付费开发者套餐(Basic、Pro、Ultra)都能访问地区排行榜接口。联赛接口需要 Ultra 开发者套餐。 Agency PASS 订阅(tik.tools/vip)是单独的网站产品,只能通过 tik.tools 网站界面查看联赛数据,不能通过这个开发者 API 获取。

地区对照表

共有 44 个地区排行榜。国家排行榜接口 URL 中使用 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 Key 打开 WebSocket 连接。

安全保存会话 Cookie

会话 Cookie 可以访问你的账号。请把它存放在环境变量中,绝不要写进源代码或公开仓库。

先列出联赛,再获取条目

并非每个地区都有所有级别。请始终先调用列表接口,确认目标地区有哪些可用的 classType 值。

常见问题

哪些套餐包含排行榜 API 访问权限?

访问联赛排名数据需要什么条件?

排行榜数据多久更新一次?

支持多少个地区?

能从排行榜判断主播当前是否在直播吗?

我的地区没有出现所有 classType 值,为什么?

可以同时轮询全部 44 个地区吗?