Panduan Developer

Peringkat & API Liga

Data leaderboard TikTok LIVE real-time. Ambil ranking harian di 44 wilayah, query data kelas liga secara live, dan pantau performa kreator.

SEMUA PAKET BERBAYAR KHUSUS ULTRA - Liga

Ringkasan

TikTool menyediakan dua kategori data leaderboard lewat API website-nya di tik.tools. Kedua endpoint mengembalikan data ranking kompetitif real-time untuk kreator TikTok LIVE, diurutkan berdasarkan perolehan berlian.

Semua Paket Berbayar

Leaderboard per Wilayah

Ranking harian top 100 kreator berdasarkan total berlian yang diperoleh, dibagi per wilayah geografis. Diperbarui terus-menerus sepanjang hari. Tersedia untuk pelanggan Basic, Pro, dan Ultra.

  • Top 100 kreator per wilayah
  • Peringkat, skor (berlian), status live, room ID
  • 44 wilayah di seluruh dunia
  • Data diperbarui terus-menerus
Khusus Paket Developer Ultra

Ranking Liga

Data ranking kompetitif berbasis kelas (A1-D5) untuk kreator yang bertanding di liga TikTok LIVE. Menunjukkan siapa saja yang ada di setiap level kompetitif di wilayah mana pun. Butuh paket developer Ultra. Agency PASS (tik.tools/vip) adalah langganan website - memberi akses tampilan data liga di website, bukan akses API terprogram.

  • 18 divisi liga: A1, A2, A3, B1, B2, B3, B4, B5, C1, C2, C3, C4, C5, D1, D2, D3, D4, D5
  • Entri berperingkat per kelas lengkap dengan status live
  • Teaser glass-wall untuk paket yang lebih rendah (5 entri)
  • Data sering diperbarui
Autentikasi: Endpoint ini ada di tik.tools (bukan api.tik.tools) dan memakai autentikasi berbasis sesi. Panggil dari server kamu dengan cookie sesi yang valid, yang didapat dengan login ke tik.tools memakai akun developer berbayar. Semua paket developer berbayar (Basic, Pro, Ultra) punya akses ke endpoint leaderboard per wilayah. Endpoint liga butuh paket developer Ultra. Langganan Agency PASS (di tik.tools/vip) adalah produk terpisah khusus website - memberi akses data liga lewat antarmuka website tik.tools, bukan lewat API developer ini.

Referensi Wilayah

Tersedia 44 leaderboard per wilayah. Pakai Slug di URL endpoint leaderboard negara, dan Kode Wilayah di endpoint liga.

SlugKode WilayahDeskripsi
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

Endpoint: Leaderboard per Wilayah

GEThttps://tik.tools/api/leaderboards/country/:slugSemua Paket Berbayar

Mengembalikan leaderboard top-100 hari ini untuk satu wilayah. Entri diurutkan berdasarkan score (total berlian yang diperoleh hari ini) dari yang terbesar.

Parameter Path

ParameterTipeDeskripsi
slugstringSlug wilayah dari tabel Referensi Wilayah di atas (mis. balkans, north-america)

Skema Respons

FieldTipeDeskripsi
[].ranknumberPosisi di leaderboard (1 = perolehan tertinggi)
[].uniqueIdstringUsername TikTok (tanpa @)
[].nicknamestringNama tampilan di TikTok
[].scorenumberTotal berlian yang diperoleh hari ini di wilayah ini
[].isLivebooleanApakah kreator sedang live saat ini
[].roomIdstring | nullRoom ID live kalau sedang siaran, selain itu null

Contoh Respons

[
  {
    "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
  }
]

Contoh Kode

// 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]' : ''}`)
}

Endpoint Liga

Butuh Ultra. Endpoint liga butuh paket developer Ultra. Request dari paket Basic dan Pro menerima teaser 5 entri - field hasFullAccess di respons akan bernilai false dan maskedCount menunjukkan berapa entri yang disembunyikan. Catatan: langganan Agency PASS (tik.tools/vip) memberi akses data liga di website, tapi bukan langganan API developer.

4a. Daftar Liga untuk Satu Wilayah

GEThttps://tik.tools/api/leaderboards/leagues/:regionKhusus Ultra

Menampilkan kelas liga yang tersedia untuk wilayah tertentu, termasuk berapa kreator di setiap kelas dan kapan data terakhir diperbarui.

Parameter Path

ParameterTipeDeskripsi
regionstringKode wilayah (mis. BK, BC, US+) dari tabel Referensi Wilayah

Skema Respons

FieldTipeDeskripsi
[].classTypenumberIdentifier kelas berupa angka (lihat Referensi classType di bawah)
[].classLabelstringNama kelas yang mudah dibaca (mis. "A1", "B5")
[].countnumberJumlah kreator yang saat ini ada di kelas ini
[].updatedAtstringTimestamp ISO 8601 dari pembaruan data terakhir

Contoh Respons

[
  { "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. Ambil Entri Liga

GEThttps://tik.tools/api/leaderboards/league/:region/:classTypeKhusus Ultra

Mengembalikan daftar kreator berperingkat di kelas liga tertentu untuk satu wilayah. Ini endpoint utama untuk bikin tools yang paham liga dan dasbor pemantauan kreator.

Parameter Path

ParameterTipeDeskripsi
regionstringKode wilayah (mis. BK, US+)
classTypenumberIdentifier kelas berupa angka (2000=A1, 1900=A2, 1100=B5, dst.)

Skema Respons

FieldTipeDeskripsi
hasFullAccessbooleanTrue kalau paket kamu punya akses penuh; false = mode teaser (5 entri)
maskedCountnumberJumlah entri yang disembunyikan karena batasan paket (0 kalau hasFullAccess)
totalCountnumberTotal kreator di kelas ini
entries[].ranknumberPosisi di dalam kelas ini
entries[].userIdstringID pengguna TikTok berupa angka (ID backend yang tetap, tidak pernah berubah)
entries[].uniqueIdstringUsername/handle TikTok tanpa @ (bisa diubah pengguna)
entries[].nicknamestringNama tampilan (bisa diubah pengguna)
entries[].scorenumberBerlian yang diperoleh di periode liga saat ini
entries[].isLivebooleanApakah kreator sedang live saat ini

Contoh Respons

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

Referensi classType

Kelas liga memetakan nilai classType berupa angka ke level kompetitif. A1 adalah level tertinggi - kreator elite dengan perolehan berlian terbanyak. D5 adalah pintu masuk ke kompetisi liga.

classTypeKelasDeskripsi
2000A1Level elite. Perolehan tertinggi di wilayah tersebut. Persaingan paling ketat, syarat berlian tertinggi untuk masuk.
1900A2Level senior. Kreator berpenghasilan tinggi yang sudah mapan dan sedang mengejar promosi ke A1.
1800A3Kelas A yang mapan. Kreator berpenghasilan tinggi yang konsisten mempertahankan posisinya di jajaran elite.
1500B1Puncak rentang B. Kreator yang tinggal satu promosi lagi ke divisi A.
1400B2Kelas B atas. Kreator berpenghasilan kuat yang bersaing untuk B1.
1300B3Kelas B tengah. Kreator berpenghasilan stabil di tengah rentang B.
1200B4Kelas B bawah. Kreator yang sedang naik ke divisi B atas.
1100B5Pintu masuk kelas B. Kreator dengan penghasilan kuat dan konsisten sepanjang periode liga.
1000C1Puncak rentang C. Kreator aktif yang sedang naik ke rentang kelas B.
900C2Kelas C atas. Kreator berpenghasilan sedang yang bersaing untuk promosi ke C1.
800C3Kelas C tengah. Kreator berpenghasilan rutin di tengah rentang C.
700C4Kelas C bawah. Kreator yang sedang mendaki ke divisi C atas.
600C5Pintu masuk kelas C. Baru saja promosi dari rentang D.
500D1Puncak rentang D. Kreator yang mulai punya penghasilan berarti di wilayah tersebut.
400D2Kelas D atas. Kreator yang lebih baru atau dengan volume lebih rendah.
300D3Kelas D tengah. Kreator yang mulai terbiasa dengan kompetisi liga.
200D4Kelas D bawah. Kreator di awal perjalanan liga.
100D5Liga pemula. Titik awal untuk kreator yang memenuhi syarat liga.
Tidak semua 18 divisi pasti ada di setiap wilayah. Panggil endpoint Daftar Liga dulu untuk mengetahui kelas mana yang ada di wilayah target kamu, lalu ambil kelas spesifik yang kamu butuhkan.

Contoh Praktis: Cari Semua Kreator A1 yang Sedang Live di Balkan

Contoh multi-langkah lengkap ini menunjukkan pola yang disarankan: cari kelas yang tersedia, temukan yang kamu butuhkan, ambil entrinya, lalu filter kreator yang sedang live. Ini berlaku untuk kombinasi wilayah dan kelas apa pun.

1
Ambil liga yang tersedia untuk wilayah BK (Balkan)
2
Temukan entri A1 dan pastikan ada
3
Ambil entri liga A1
4
Filter kreator dengan 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`)
}

Rate Limit & Praktik Terbaik

Cache respons di sisi client

Posisi leaderboard bergeser perlahan. Cache selama 10-30 detik sebelum mengambil ulang supaya tidak membebani API tanpa perlu.

Data liga diperbarui sesuai jadwal tetap

Papan liga berubah perlahan, jadi tidak ada untungnya polling endpoint liga lebih sering dari setiap beberapa menit.

Polling wilayah secara terpisah

Semua 44 wilayah bisa di-polling secara paralel. Kalau kamu butuh data multi-wilayah, kirim request secara bersamaan, bukan berurutan.

Pakai isLive + roomId untuk menyambung

Saat isLive bernilai true di entri leaderboard, kamu bisa langsung membuka WebSocket ke kreator itu memakai uniqueId miliknya dan API key kamu.

Simpan cookie sesi dengan aman

Cookie sesi memberi akses ke akun kamu. Simpan di environment variable, jangan pernah di source code atau repository publik.

Tampilkan daftar liga sebelum mengambil entri

Tidak setiap kelas ada di setiap wilayah. Selalu panggil endpoint daftar dulu untuk memastikan nilai classType mana yang tersedia di wilayah target kamu.

Pertanyaan yang Sering Diajukan

Paket mana saja yang termasuk akses API leaderboard?

Apa yang dibutuhkan untuk mengakses data ranking liga?

Seberapa sering data leaderboard diperbarui?

Ada berapa wilayah yang tersedia?

Bisakah saya tahu dari leaderboard apakah kreator sedang live?

Tidak semua nilai classType muncul untuk wilayah saya. Kenapa?

Bisakah saya polling semua 44 wilayah sekaligus?