Guia para devs

API de rankings e ligas

Dados de ranking do TikTok LIVE em tempo real. Pegue os rankings diários de 44 regiões, consulte dados das classes de liga ao vivo e acompanhe o desempenho dos criadores.

TODOS OS PLANOS PAGOS SÓ ULTRA - Ligas

Visão geral

O TikTool expõe duas categorias de dados de ranking pela API do site em tik.tools. Os dois endpoints retornam dados de classificação competitiva em tempo real dos criadores do TikTok LIVE, ordenados por diamantes ganhos.

Todos os planos pagos

Rankings regionais

Rankings diários dos top 100 criadores por total de diamantes ganhos, divididos por região geográfica. Atualizados continuamente ao longo do dia. Disponível para assinantes Basic, Pro e Ultra.

  • Top 100 criadores por região
  • Posição, pontuação (diamantes), status da live, ID da sala
  • 44 regiões no mundo todo
  • Os dados atualizam continuamente
Só no plano Ultra para devs

Classificação das ligas

Dados de classificação competitiva por classe (A1-D5) dos criadores que disputam as ligas do TikTok LIVE. Mostra quem está em cada faixa competitiva em qualquer região. Exige o plano Ultra para devs. O Agency PASS (tik.tools/vip) é uma assinatura do site - ele dá acesso aos dados de liga pela interface do site, não acesso programático pela API.

  • 18 divisões de liga: A1, A2, A3, B1, B2, B3, B4, B5, C1, C2, C3, C4, C5, D1, D2, D3, D4, D5
  • Entradas ranqueadas por classe, com status da live
  • Prévia com vidro fosco para os planos inferiores (5 entradas)
  • Os dados atualizam com frequência
Autenticação: Estes endpoints ficam em tik.tools (não em api.tik.tools) e usam autenticação por sessão. Chame do seu servidor com um cookie de sessão válido, obtido ao entrar no tik.tools com uma conta de dev paga. Todos os planos pagos para devs (Basic, Pro, Ultra) têm acesso aos endpoints de ranking regional. Os endpoints de liga exigem o plano Ultra para devs. A assinatura Agency PASS (em tik.tools/vip) é um produto separado, só do site - ela dá acesso aos dados de liga pela interface do tik.tools, não por esta API para devs.

Referência de regiões

Há 44 rankings regionais disponíveis. Use o Slug na URL do endpoint de ranking por país e o Código da região nos endpoints de liga.

SlugCódigo da regiãoDescrição
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: Ranking regional

GEThttps://tik.tools/api/leaderboards/country/:slugTodos os planos pagos

Retorna o ranking top 100 do dia atual de uma região. As entradas vêm ordenadas por score (total de diamantes ganhos hoje), do maior para o menor.

Parâmetros de caminho

ParâmetroTipoDescrição
slugstringSlug da região da tabela de Referência de regiões acima (ex.: balkans, north-america)

Schema da resposta

CampoTipoDescrição
[].ranknumberPosição no ranking (1 = quem mais ganhou)
[].uniqueIdstringUsuário do TikTok (sem @)
[].nicknamestringNome de exibição no TikTok
[].scorenumberTotal de diamantes ganhos hoje nesta região
[].isLivebooleanSe o criador está ao vivo agora
[].roomIdstring | nullID da sala da live, se estiver ao vivo; senão, null

Exemplo de resposta

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

Exemplos de código

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

Endpoints de liga

Exige Ultra. Os endpoints de liga exigem um plano Ultra para devs. Requisições dos planos Basic e Pro recebem uma prévia de 5 entradas - o campo hasFullAccess da resposta vem como false e o maskedCount indica quantas entradas estão ocultas. Observação: a assinatura Agency PASS (tik.tools/vip) dá acesso aos dados de liga pelo site, mas não é uma assinatura da API para devs.

4a. Listar as ligas de uma região

GEThttps://tik.tools/api/leaderboards/leagues/:regionSó Ultra

Lista as classes de liga disponíveis em uma região, incluindo quantos criadores há em cada classe e quando os dados foram atualizados pela última vez.

Parâmetros de caminho

ParâmetroTipoDescrição
regionstringCódigo da região (ex.: BK, BC, US+) da tabela de Referência de regiões

Schema da resposta

CampoTipoDescrição
[].classTypenumberIdentificador numérico da classe (veja a Referência de classType abaixo)
[].classLabelstringNome legível da classe (ex.: "A1", "B5")
[].countnumberNúmero de criadores nesta classe agora
[].updatedAtstringTimestamp ISO 8601 da última atualização dos dados

Exemplo de resposta

[
  { "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. Pegar as entradas de uma liga

GEThttps://tik.tools/api/leaderboards/league/:region/:classTypeSó Ultra

Retorna a lista ranqueada de criadores de uma classe de liga específica em uma região. É o endpoint principal para criar ferramentas que entendem as ligas e painéis de monitoramento de criadores.

Parâmetros de caminho

ParâmetroTipoDescrição
regionstringCódigo da região (ex.: BK, US+)
classTypenumberIdentificador numérico da classe (2000=A1, 1900=A2, 1100=B5 etc.)

Schema da resposta

CampoTipoDescrição
hasFullAccessbooleanTrue se o seu plano tem acesso completo; false = modo prévia (5 entradas)
maskedCountnumberNúmero de entradas ocultas por restrição do plano (0 se hasFullAccess)
totalCountnumberNúmero total de criadores nesta classe
entries[].ranknumberPosição dentro desta classe
entries[].userIdstringID numérico do usuário no TikTok (ID estável do backend, nunca muda)
entries[].uniqueIdstringUsuário/handle do TikTok sem @ (o usuário pode mudar)
entries[].nicknamestringNome de exibição (o usuário pode mudar)
entries[].scorenumberDiamantes ganhos no período atual da liga
entries[].isLivebooleanSe o criador está ao vivo agora

Exemplo de resposta

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

Referência de classType

As classes de liga associam valores numéricos de classType a faixas competitivas. A1 é a faixa mais alta - os criadores de elite que mais ganham diamantes. D5 é a porta de entrada na disputa das ligas.

classTypeClasseDescrição
2000A1Faixa de elite. Quem mais ganha na região. A maior concorrência e a maior exigência de diamantes para se manter.
1900A2Faixa sênior. Criadores consolidados que ganham muito e buscam subir para a A1.
1800A3Classe A consolidada. Criadores que ganham muito com consistência e seguram a vaga na faixa de elite.
1500B1Topo da faixa B. Criadores a uma promoção das divisões A.
1400B2Classe B alta. Criadores fortes disputando a B1.
1300B3Classe B média. Ganhos constantes no meio da faixa B.
1200B4Classe B baixa. Criadores avançando rumo às divisões B mais altas.
1100B5Entrada da classe B. Criadores com ganhos fortes e constantes ao longo do período da liga.
1000C1Topo da faixa C. Criadores ativos avançando rumo à classe B.
900C2Classe C alta. Ganhos moderados, disputando a promoção para a C1.
800C3Classe C média. Ganhos regulares no meio da faixa C.
700C4Classe C baixa. Criadores subindo rumo às divisões C mais altas.
600C5Entrada da classe C. Recém-promovidos da faixa D.
500D1Topo da faixa D. Criadores começando a ganhar de forma relevante na região.
400D2Classe D alta. Criadores mais novos ou com volume menor.
300D3Classe D média. Criadores se firmando na disputa das ligas.
200D4Classe D baixa. Primeiros ganhos na liga.
100D5Liga de entrada. O ponto de partida para criadores aptos às ligas.
Nem todas as 18 divisões aparecem em todas as regiões. Chame primeiro o endpoint Listar ligas para descobrir quais classes existem na região que você quer e depois busque a classe específica.

Exemplo prático: encontre todos os criadores A1 ao vivo agora nos Bálcãs

Este exemplo completo, em várias etapas, mostra o padrão recomendado: descubra as classes disponíveis, encontre a que você precisa, busque as entradas dela e depois filtre os criadores ao vivo. Funciona com qualquer combinação de região e classe.

1
Busque as ligas disponíveis na região BK (Bálcãs)
2
Encontre a entrada A1 e confirme que ela existe
3
Busque as entradas da liga A1
4
Filtre os criadores com 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`)
}

Limites de requisição e boas práticas

Faça cache das respostas no cliente

As posições no ranking mudam aos poucos. Faça cache por 10-30 segundos antes de buscar de novo, para não sobrecarregar a API à toa.

Os dados de liga atualizam em um ritmo fixo

Os rankings de liga mudam devagar, então não adianta consultar os endpoints de liga mais do que uma vez a cada poucos minutos.

Consulte as regiões de forma independente

Todas as 44 regiões podem ser consultadas em paralelo. Se você precisa de dados de várias regiões, dispare as requisições ao mesmo tempo em vez de uma depois da outra.

Use isLive + roomId para conectar

Quando isLive é true em uma entrada do ranking, você pode abrir um WebSocket para esse criador na hora, usando o uniqueId dele e sua chave de API.

Guarde os cookies de sessão com segurança

Os cookies de sessão dão acesso à sua conta. Guarde em variáveis de ambiente, nunca no código-fonte nem em repositórios públicos.

Liste as ligas antes de buscar as entradas

Nem toda classe existe em toda região. Sempre chame primeiro o endpoint de listagem para confirmar quais valores de classType estão disponíveis na região que você quer.

Perguntas frequentes

Quais planos incluem acesso à API de rankings?

O que é preciso para acessar os dados de classificação das ligas?

Com que frequência os dados do ranking atualizam?

Quantas regiões estão disponíveis?

Dá para saber pelo ranking se um criador está ao vivo agora?

Nem todos os valores de classType aparecem na minha região. Por quê?

Posso consultar todas as 44 regiões de uma vez?