Публичное API
Те же данные, что показывает сайт - бои за зоны со скорбордами, матчи арены, профили семей и игроков, рейтинги и турнирные сетки, - доступны машинам по ключу. Ключ выпускается здесь же, за минуту, без заявок и переписки.
$ curl -s \ -H "Authorization: Bearer mh_…" \ https://api.maj-hltv.ru/v1/overview { "totalFamilies": 3514, "totalPlayers": 341671, "totalCaptures": 111559, "totalArenaMatches": 2462490, "lastCapture": "2026-10-11T21:54:00Z", "servers": […] }
Быстрый старт
Три шага: войти через Discord, выпустить ключ в карточке выше, подставить его в заголовок.
$ curl -H "Authorization: Bearer ВАШ_КЛЮЧ" \ "https://api.maj-hltv.ru/v1/captures?server=RU19&limit=5"
Ответ - обычный JSON, та же форма, что уходит на страницы сайта. Ничего специально «апишного» разбирать не нужно.
Ключ в запросе
Любым из трёх способов, в этом порядке предпочтения:
Authorization: Bearer ВАШ_КЛЮЧ- основной;X-API-Key: ВАШ_КЛЮЧ- если удобнее отдельный заголовок;?key=ВАШ_КЛЮЧв адресе - для быстрой проверки в браузере. Адрес целиком попадает в журналы прокси и в историю браузера, поэтому для постоянной работы берите заголовок.
Оглавление в машинном виде - GET https://api.maj-hltv.ru/v1, оно отвечает и без ключа.
Лимиты
200 запросов в сутки на ключ. Сутки календарные по UTC: счётчик обнуляется в полночь, а не через 24 часа после первого запроса. Остаток приходит в заголовках каждого ответа.
X-RateLimit-Limit: 200 X-RateLimit-Remaining: 183 X-RateLimit-Reset: 1791849600 # время обнуления, секунды Unix
Один ключ - один адрес. Ключ рассчитан на одного потребителя: если с одного адреса приходят два разных ключа или один ключ приходит с двух адресов, второй получает 403 key_ip_conflict. Первый при этом работает как ни в чём не бывало. Ограничение ничего не запоминает и снимается само, как только прежняя пара замолкает на десять минут - то есть переезд на другой сервер или смена адреса у провайдера лечится паузой, а не обращением к нам.
Нужен лимит больше, доступ с нескольких адресов или своя схема - напишите https://t.me/gxdlxsss . Это не формальность: лимиты поднимаются по просьбе, если понятно, подо что.
Ручки
Параметры server, page, limit, sort и q работают там же и так же, как на сайте: страница списка и ответ API строятся одним и тем же кодом.
/v1/overview/v1/captures/v1/captures/{server}/{id}/v1/families/v1/families/{server}/{id}/v1/families/{server}/{id}/maps/v1/players/v1/players/{server}/{id}/v1/arena/v1/arena/{server}/{id}/v1/rating/v1/top/families/v1/top/players/v1/mansion-transfersобязательно: server/v1/servers/maps/v1/servers/buildingsобязательно: server, kind - mansions, multipurpose или zones/v1/searchобязательно: q, от двух символов/v1/tournaments/v1/tournaments/{slug}/v1/tournaments/{slug}/bracket/v1/tournaments/family/{server}/{id}/v1/tournaments/player/{server}/{id}Одно уточнение, на котором спотыкаются первым делом: идущие квалификации живут только под /tournaments/{slug}/bracket. В /tournaments турнир попадает, когда закончится, так что /tournaments/majestic-champions-cup-2 сейчас ответит 404, а его /bracket - нет.
Ошибки
Ошибка всегда приходит одним и тем же объектом, разбирать русский текст не нужно:
{
"error": {
"code": "rate_limit_exceeded",
"message": "Суточный лимит исчерпан (200 запросов)…",
"docs": "https://maj-hltv.ru/api"
}
}api_key_requiredКлюча в запросе нет вовсе.api_key_invalidТакого ключа не существует - возможно, он отозван и выпущен заново.api_key_revokedКлюч отозван владельцем.key_ip_conflictНарушено правило «один ключ - один адрес», см. раздел про лимиты.rate_limit_exceededСуточный лимит исчерпан. Когда обнулится - в заголовке X-RateLimit-Reset.not_foundТакой семьи, игрока, боя или ручки нет.bad_requestНе хватает обязательного параметра или он неверен.internal_errorОшибка на нашей стороне. Повторяется - напишите в Telegram.Правила использования
- Указывайте источник. Публикуете производные данные - ставьте ссылку на maj-hltv.ru. Первичные игровые события приходят из официального API Majestic RP.
- Кэшируйте. Бои появляются раз в несколько минут, рейтинги пересчитываются реже. Двести запросов в сутки - это много, если не опрашивать одно и то же по кругу.
- Не выдавайте сервис за официальный. Majestic Hltv не аффилирован с правообладателем Majestic RP - см. условия использования.
- Ключ личный. Передали его третьим лицам - отвечаете за их запросы вы.
Стабильность
Версия в адресе - /v1. Новые поля в ответах могут появляться в любой момент, поэтому разбирайте JSON по именам полей и не падайте на незнакомых. Удаление полей или смена их смысла - только со сменой версии; о такой смене я напишу в Discord заранее.
Данные предоставляются «как есть»: игровое API иногда задерживает или теряет события, и статистика наследует эти пробелы. Подробнее - в методологии.