開発者ガイド

ランキング & リーグAPI

TikTok LIVEのランキングデータをリアルタイムで。44地域の日間ランキングを取得し、リーグクラスのライブデータを照会して、クリエイターの成績をモニタリングできます。

全有料プラン ULTRA限定 - リーグ

概要

TikToolは、tik.toolsのWebサイトAPIを通じて二種類のランキングデータを提供しています。どちらのエンドポイントも、TikTok LIVEクリエイターの競争ランキングをダイヤモンド獲得数順にリアルタイムで返します。

すべての有料プラン

地域別ランキング

獲得ダイヤモンド総数による上位100人のクリエイターの日間ランキングを、地域ごとに提供します。一日を通して随時更新されます。Basic、Pro、Ultraの登録者が利用できます。

  • 地域ごとの上位100人のクリエイター
  • 順位、スコア(ダイヤモンド)、配信状況、ルームID
  • 世界44地域
  • データは常時更新
Ultra開発者プラン限定

リーグランキング

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 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上の地域一覧の表にある地域スラッグ(例: 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]' : ''}`)
}

リーグのエンドポイント

Ultraが必要です。 リーグのエンドポイントにはUltra開発者プランが必要です。BasicとProプランからのリクエストには5件のプレビュー表示が返ります。レスポンスのhasFullAccessフィールドはfalseになり、maskedCountで隠れているエントリー数が分かります。なお、Agency PASSのサブスクリプション(tik.tools/vip)はWebサイトでリーグデータを見られるもので、開発者APIのサブスクリプションではありません。

4a. 地域のリーグ一覧を取得

GEThttps://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. リーグのエントリーを取得

GEThttps://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がリーグ競争への入り口です。

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`)
}

レート制限とベストプラクティス

クライアント側でレスポンスをキャッシュ

ランキングの順位は少しずつ変わります。APIに無駄な負荷をかけないよう、再取得まで10-30秒はキャッシュしてください。

リーグデータは決まったスケジュールで更新

リーグのボードはゆっくりとしか変わらないため、リーグのエンドポイントを数分より短い間隔でポーリングしても意味はありません。

地域ごとに独立してポーリング

44地域すべてを並行してポーリングできます。複数地域のデータが必要なら、順番にではなく同時にリクエストを送ってください。

isLive + roomIdで接続

ランキングのエントリーでisLiveがtrueなら、そのクリエイターのuniqueIdと自分のAPIキーを使って、すぐにWebSocketを開けます。

セッションCookieは安全に保管

セッションCookieがあればアカウントにアクセスできます。環境変数に保存し、ソースコードや公開リポジトリには絶対に含めないでください。

エントリーを取得する前にリーグ一覧を確認

すべての地域にすべてのクラスがあるわけではありません。対象地域で使えるclassTypeの値を確認するため、必ず先に一覧のエンドポイントを呼んでください。

よくある質問

ランキングAPIを使えるのはどのプランですか?

リーグランキングのデータを使うには何が必要ですか?

ランキングデータはどのくらいの頻度で更新されますか?

利用できる地域はいくつありますか?

ランキングからクリエイターが配信中かどうか分かりますか?

自分の地域ではclassTypeの値がすべて出てきません。なぜですか?

44地域すべてを一度にポーリングできますか?