Гайд для разработчиков

API рейтингов и лиг

Рейтинги TikTok LIVE в реальном времени. Дневные рейтинги по 44 регионам, данные классов лиг в реальном времени и мониторинг результатов стримеров.

ВСЕ ПЛАТНЫЕ ТАРИФЫ ТОЛЬКО ULTRA - лиги

Обзор

TikTool отдаёт две категории данных рейтингов через API сайта на tik.tools. Оба эндпоинта возвращают рейтинги стримеров TikTok LIVE в реальном времени, отсортированные по заработанным алмазам.

Все платные тарифы

Региональные рейтинги

Дневной топ-100 стримеров по сумме заработанных алмазов с разбивкой по регионам. Обновляется непрерывно в течение дня. Доступно подписчикам Basic, Pro и Ultra.

  • Топ-100 стримеров в каждом регионе
  • Место, счёт (алмазы), статус эфира, ID комнаты
  • Регионов по всему миру: 44
  • Данные обновляются непрерывно
Только тариф Ultra для разработчиков

Рейтинги лиг

Рейтинги по классам (A1-D5) для стримеров, которые соревнуются в лигах TikTok LIVE. Показывают, кто находится в каждом классе в любом регионе. Нужен тариф Ultra для разработчиков. Agency PASS (tik.tools/vip) - это подписка на сайте: она открывает данные лиг в интерфейсе сайта, но не даёт программного доступа через API.

  • Дивизионов лиг: 18 - A1, A2, A3, B1, B2, B3, B4, B5, C1, C2, C3, C4, C5, D1, D2, D3, D4, D5
  • Места внутри каждого класса со статусом эфира
  • Превью за стеклом для младших тарифов (5 записей)
  • Данные часто обновляются
Авторизация: Эти эндпоинты находятся на tik.tools (не на api.tik.tools) и используют авторизацию по сессии. Вызывайте их со своего сервера с действующей cookie сессии, полученной при входе на tik.tools с платным аккаунтом разработчика. Все платные тарифы для разработчиков (Basic, Pro, Ultra) имеют доступ к эндпоинтам региональных рейтингов. Для эндпоинтов лиг нужен тариф Ultra для разработчиков. Подписка Agency PASS (tik.tools/vip) - отдельный продукт только для сайта: она открывает данные лиг в интерфейсе tik.tools, а не через этот API для разработчиков.

Справочник регионов

Доступно региональных рейтингов: 44. Используйте Slug в URL эндпоинта рейтинга страны и Код региона в эндпоинтах лиг.

SlugКод регионаОписание
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 (сумма алмазов, заработанных сегодня) по убыванию.

Параметры пути

ПараметрТипОписание
slugstringSlug региона из справочника регионов выше (например, balkans, north-america)

Схема ответа

ПолеТипОписание
[].ranknumberМесто в рейтинге (1 = больше всех заработал)
[].uniqueIdstringНикнейм в TikTok (без @)
[].nicknamestringОтображаемое имя в TikTok
[].scorenumberСумма алмазов, заработанных сегодня в этом регионе
[].isLivebooleanИдёт ли у стримера эфир прямо сейчас
[].roomIdstring | nullID комнаты, если эфир идёт, иначе 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) открывает данные лиг на сайте, но не является подпиской на API для разработчиков.

4a. Список лиг региона

GEThttps://tik.tools/api/leaderboards/leagues/:regionТолько Ultra

Показывает доступные классы лиг для региона: сколько стримеров в каждом классе и когда данные обновлялись в последний раз.

Параметры пути

ПараметрТипОписание
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/:classTypeТолько Ultra

Возвращает рейтинг стримеров в конкретном классе лиги для региона. Это основной эндпоинт для инструментов, учитывающих лиги, и дашбордов мониторинга стримеров.

Параметры пути

ПараметрТипОписание
regionstringКод региона (например, BK, US+)
classTypenumberЧисловой идентификатор класса (2000=A1, 1900=A2, 1100=B5 и т. д.)

Схема ответа

ПолеТипОписание
hasFullAccessbooleanTrue, если у вашего тарифа полный доступ; false = режим превью (5 записей)
maskedCountnumberСколько записей скрыто из-за ограничений тарифа (0, если hasFullAccess)
totalCountnumberВсего стримеров в этом классе
entries[].ranknumberМесто внутри класса
entries[].userIdstringЧисловой ID пользователя TikTok (постоянный ID бэкенда, никогда не меняется)
entries[].uniqueIdstringНикнейм/хэндл в TikTok без @ (пользователь может сменить)
entries[].nicknamestringОтображаемое имя (пользователь может сменить)
entries[].scorenumberАлмазы, заработанные в текущем периоде лиги
entries[].isLivebooleanИдёт ли у стримера эфир прямо сейчас

Пример ответа

{
  "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. Стабильно много зарабатывают и держатся в элитном диапазоне.
1500B1Вершина диапазона B. Стримерам осталось одно повышение до дивизионов A.
1400B2Верхний класс B. Сильные стримеры, которые борются за B1.
1300B3Средний класс B. Стабильный заработок в середине диапазона B.
1200B4Нижний класс B. Стримеры, которые растут к верхним дивизионам B.
1100B5Вход в класс B. Стримеры со стабильно хорошим заработком в течение периода лиги.
1000C1Вершина диапазона C. Активные стримеры, которые растут к классу B.
900C2Верхний класс C. Средний заработок, борьба за повышение в C1.
800C3Средний класс C. Регулярный заработок в середине диапазона C.
700C4Нижний класс C. Стримеры, которые поднимаются к верхним дивизионам C.
600C5Вход в класс C. Недавно поднялись из диапазона D.
500D1Вершина диапазона D. Стримеры, которые начинают заметно зарабатывать в регионе.
400D2Верхний класс D. Новички или стримеры с небольшим объёмом.
300D3Средний класс D. Стримеры, которые осваиваются в лигах.
200D4Нижний класс D. Первые заработки в лигах.
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`)
}

Лимиты запросов и лучшие практики

Кэшируйте ответы на стороне клиента

Места в рейтинге меняются постепенно. Кэшируйте на 10-30 секунд перед повторным запросом, чтобы не нагружать API без нужды.

Данные лиг обновляются по фиксированному расписанию

Таблицы лиг меняются медленно, поэтому опрашивать эндпоинты лиг чаще, чем раз в несколько минут, бессмысленно.

Опрашивайте регионы независимо

Все регионы (всего: 44) можно опрашивать параллельно. Если нужны данные по нескольким регионам, отправляйте запросы одновременно, а не по очереди.

Подключайтесь по isLive + roomId

Когда у записи рейтинга isLive равно true, можно сразу открыть WebSocket к этому стримеру по его uniqueId и вашему API-ключу.

Храните cookie сессии надёжно

Cookie сессии дают доступ к вашему аккаунту. Храните их в переменных окружения, никогда - в исходном коде или публичных репозиториях.

Сначала список лиг, потом записи

Не в каждом регионе есть все классы. Всегда сначала вызывайте эндпоинт списка, чтобы узнать, какие значения classType доступны для нужного региона.

Частые вопросы

В какие тарифы входит доступ к API рейтингов?

Что нужно для доступа к рейтингам лиг?

Как часто обновляются данные рейтингов?

Сколько регионов доступно?

Можно ли по рейтингу понять, что стример сейчас в эфире?

Для моего региона есть не все значения classType. Почему?

Можно опрашивать все регионы (44) сразу?