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.
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
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
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.
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 AfricaEndpoint: Leaderboard per Wilayah
https://tik.tools/api/leaderboards/country/:slugSemua Paket BerbayarMengembalikan leaderboard top-100 hari ini untuk satu wilayah. Entri diurutkan berdasarkan score (total berlian yang diperoleh hari ini) dari yang terbesar.
Parameter Path
slugstringSlug wilayah dari tabel Referensi Wilayah di atas (mis. balkans, north-america)Skema Respons
[].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 nullContoh 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
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
https://tik.tools/api/leaderboards/leagues/:regionKhusus UltraMenampilkan kelas liga yang tersedia untuk wilayah tertentu, termasuk berapa kreator di setiap kelas dan kapan data terakhir diperbarui.
Parameter Path
regionstringKode wilayah (mis. BK, BC, US+) dari tabel Referensi WilayahSkema Respons
[].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 terakhirContoh 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
https://tik.tools/api/leaderboards/league/:region/:classTypeKhusus UltraMengembalikan 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
regionstringKode wilayah (mis. BK, US+)classTypenumberIdentifier kelas berupa angka (2000=A1, 1900=A2, 1100=B5, dst.)Skema Respons
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 inientries[].ranknumberPosisi di dalam kelas inientries[].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 inientries[].isLivebooleanApakah kreator sedang live saat iniContoh 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.
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.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.
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
Posisi leaderboard bergeser perlahan. Cache selama 10-30 detik sebelum mengambil ulang supaya tidak membebani API tanpa perlu.
Papan liga berubah perlahan, jadi tidak ada untungnya polling endpoint liga lebih sering dari setiap beberapa menit.
Semua 44 wilayah bisa di-polling secara paralel. Kalau kamu butuh data multi-wilayah, kirim request secara bersamaan, bukan berurutan.
Saat isLive bernilai true di entri leaderboard, kamu bisa langsung membuka WebSocket ke kreator itu memakai uniqueId miliknya dan API key kamu.
Cookie sesi memberi akses ke akun kamu. Simpan di environment variable, jangan pernah di source code atau repository publik.
Tidak setiap kelas ada di setiap wilayah. Selalu panggil endpoint daftar dulu untuk memastikan nilai classType mana yang tersedia di wilayah target kamu.