概要
TikToolは、tik.toolsのWebサイトAPIを通じて二種類のランキングデータを提供しています。どちらのエンドポイントも、TikTok LIVEクリエイターの競争ランキングをダイヤモンド獲得数順にリアルタイムで返します。
地域別ランキング
獲得ダイヤモンド総数による上位100人のクリエイターの日間ランキングを、地域ごとに提供します。一日を通して随時更新されます。Basic、Pro、Ultraの登録者が利用できます。
- 地域ごとの上位100人のクリエイター
- 順位、スコア(ダイヤモンド)、配信状況、ルームID
- 世界44地域
- データは常時更新
リーグランキング
TikTok LIVEのリーグで競うクリエイターの、クラス別の競争ランキングデータ(A1-D5)です。どの地域でも、各クラスに誰がいるかが分かります。Ultra開発者プランが必要です。Agency PASS(tik.tools/vip)はWebサイトのサブスクリプションで、Webサイト上でリーグデータを見られるものです。APIでのプログラム的なアクセスは含まれません。
- 18のリーグクラス: A1, A2, A3, B1, B2, B3, B4, B5, C1, C2, C3, C4, C5, D1, D2, D3, D4, D5
- クラスごとの順位付きエントリーと配信状況
- 下位プランにはプレビュー表示(5件)
- データは高頻度で更新
api.tik.toolsではなくtik.tools上にあり、セッションベースの認証を使います。有料の開発者アカウントでtik.toolsにログインして取得した有効なセッションCookieを付けて、サーバーから呼び出してください。すべての有料開発者プラン(Basic、Pro、Ultra)で地域別ランキングのエンドポイントを利用できます。リーグのエンドポイントにはUltra開発者プランが必要です。 Agency PASSのサブスクリプション(tik.tools/vip)はWebサイト専用の別商品です。tik.toolsのWebサイト画面でリーグデータを見られるもので、この開発者APIでのアクセスは含まれません。地域一覧
44の地域別ランキングを利用できます。国別ランキングのエンドポイントURLにはスラッグを、リーグのエンドポイントには地域コードを使います。
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上の地域一覧の表にある地域スラッグ(例: balkans、north-america)レスポンススキーマ
[].ranknumberランキング上の順位(1 = 最も多く獲得)[].uniqueIdstringTikTokのユーザー名(@なし)[].nicknamestringTikTokに表示される表示名[].scorenumberこの地域で今日獲得したダイヤモンドの総数[].isLivebooleanクリエイターが現在LIVE配信中かどうか[].roomIdstring | null配信中の場合はLIVEルーム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)はWebサイトでリーグデータを見られるもので、開発者APIのサブスクリプションではありません。4a. 地域のリーグ一覧を取得
https://tik.tools/api/leaderboards/leagues/:regionUltra限定指定した地域で利用できるリーグクラスの一覧を返します。各クラスのクリエイター数と、データの最終更新日時も含まれます。
パスパラメーター
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/:classTypeUltra限定指定した地域の特定のリーグクラスにいるクリエイターを順位付きで返します。リーグに対応したツールやクリエイターのモニタリングダッシュボードを作るための中心となるエンドポイントです。
パスパラメーター
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[].uniqueIdstring@なしのTikTokユーザー名/ハンドル(ユーザーが変更可能)entries[].nicknamestring表示名(ユーザーが変更可能)entries[].scorenumber現在のリーグ期間に獲得したダイヤモンドentries[].isLivebooleanクリエイターが現在LIVE配信中かどうかレスポンス例
{
"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`)
}レート制限とベストプラクティス
ランキングの順位は少しずつ変わります。APIに無駄な負荷をかけないよう、再取得まで10-30秒はキャッシュしてください。
リーグのボードはゆっくりとしか変わらないため、リーグのエンドポイントを数分より短い間隔でポーリングしても意味はありません。
44地域すべてを並行してポーリングできます。複数地域のデータが必要なら、順番にではなく同時にリクエストを送ってください。
ランキングのエントリーでisLiveがtrueなら、そのクリエイターのuniqueIdと自分のAPIキーを使って、すぐにWebSocketを開けます。
セッションCookieがあればアカウントにアクセスできます。環境変数に保存し、ソースコードや公開リポジトリには絶対に含めないでください。
すべての地域にすべてのクラスがあるわけではありません。対象地域で使えるclassTypeの値を確認するため、必ず先に一覧のエンドポイントを呼んでください。