概览
TikTool 通过网站 API(tik.tools)提供两类榜单数据。两个接口都返回 TikTok LIVE 主播的实时竞争排名,按钻石收入排序。
地区排行榜
按地区划分,按当日钻石总收入排出前 100 名主播的日榜。全天持续更新。Basic、Pro 和 Ultra 订阅用户可用。
- 每个地区前 100 名主播
- 排名、分数(钻石)、直播状态、直播间 ID
- 全球 44 个地区
- 数据持续刷新
联赛排名
参加 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,联赛接口中使用 地区代码。
north-americaUS+North AmericacanadaCACanadabrazil-regionBRBrazilmexicoMXMexicolatin-americaLATAMLatin Americacolombia-peru-dominican-republicCO+Colombia, Peru & Dominican RepublicjamaicaJMJamaicaaustralia-pacificAU+Australia & Pacificjapan-regionJPJapansouth-korea-regionKRSouth Koreataiwan-regionTWTaiwanindonesia-regionIDIndonesiamalaysia-regionMYMalaysiasingaporeSGSingaporephilippines-regionPHPhilippinesthailand-regionTHThailandvietnam-regionVNVietnamnepalNPNepalbangladesh-bhutan-maldivesBD+Bangladesh, Bhutan & MaldivesazerbaijanAZAzerbaijankazakhstanKZKazakhstankyrgyzstanKGKyrgyzstanbelarusBYBelarusukraineUAUkrainecentral-asiaCCACentral AsiadachDE+Germany & DACHswitzerlandCHSwitzerlandiberiaES+Iberiacentral-europeHU+Central EuropelusophonePT+Lusophonefrance-regionFR+FrancebelgiumBEBelgiumnetherlands-regionNLNetherlandsunited-kingdom-regionUK+United Kingdomireland-baltics-maltaIE+Ireland, Baltics & Maltaitaly-regionIT+ItalyswedenSESwedenscandinaviaSE+Nordicspoland-regionPLPolandromania-regionRORomaniabalkansBKBalkansturkey-regionTRTurkeymiddle-east-africaMENAMiddle East & Africanigeria-ghana-kenya-south-africaNG+Nigeria, Ghana, Kenya & South Africa接口:地区排行榜
https://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]' : ''}`)
}联赛接口
hasFullAccess 字段为 false,maskedCount 表示被隐藏的条目数量。注意:Agency PASS 订阅(tik.tools/vip)提供网站端的联赛数据访问,但不是开发者 API 订阅。4a. 列出某地区的联赛
https://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. 获取联赛条目
https://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 是进入联赛竞争的起点。
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入门级别。符合联赛资格的主播的起点。实战示例:找出巴尔干地区所有正在直播的 A1 主播
这个完整的多步骤示例演示了推荐流程:先查询可用级别,找到目标级别,获取其条目,再筛选出正在直播的主播。适用于任意地区和级别组合。
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 为 true 时,你可以立即用该主播的 uniqueId 和你的 API Key 打开 WebSocket 连接。
会话 Cookie 可以访问你的账号。请把它存放在环境变量中,绝不要写进源代码或公开仓库。
并非每个地区都有所有级别。请始终先调用列表接口,确认目标地区有哪些可用的 classType 值。