SportAPI Документация
RU
S Документация продуктаSport Line API
v1
Услуга и цены ↗ Получить доступ ↗
Sport Line API / EVENTS — список матчей

Метод events — список матчей

Для чего нужен метод

Метод events возвращает список матчей выбранного вида спорта. При необходимости список можно ограничить одним турниром.

Ответ содержит:

  • информацию о турнире;
  • основные данные матчей;
  • команды или участников;
  • время начала;
  • текущий счёт и период для Live;
  • краткий набор групп ставок и коэффициентов;
  • доступные Live-статистику, видео и ID трекера.

Для получения полного набора ставок одного матча используется метод event.

Полное описание всех полей собрано отдельно: «Единый справочник полей Sport Line API».

Перед запросом

Для запроса нужен sportId. Его можно получить через метод menu или sports.

Если нужны матчи конкретного турнира, также потребуется tournamentId. Его можно получить из menu или tournaments.

Не используйте статически записанные sportId и tournamentId без проверки текущей навигации. Эти ID должны присутствовать в актуальном menu либо быть получены по цепочке sports → countries → tournaments для того же типа live или line.

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

Даже при tournamentId=0 значение sportId нужно брать из актуального ответа API.

Запрос

GET https://YOUR_API_DOMAIN/v1/events/{sportId}/{tournamentId}/{format}/{count}/{type}/{lang}

API-ключ необходимо передавать в HTTP-заголовке:

Package: YOUR_API_KEY

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

ПараметрТипОбязательныйОписание
sportIdnumberдаID вида спорта
tournamentIdnumberдаID турнира. Передайте 0, чтобы получить все матчи всех доступных турниров выбранного спорта
formatstringдаДля списка матчей events используется только sub. Он группирует матчи по турнирам
countnumberдаИзначально задавал количество возвращаемых данных. Ограничение отменено: передавайте 50, API всё равно вернёт все доступные матчи выбранной выборки
typestringдаТип спортивной линии: live или line
langstringдаЯзык названий. Язык должен поддерживаться API и входить в тариф клиента

Значения параметра type:

ЗначениеКакие матчи возвращаются
liveМатчи, проходящие в реальном времени
lineПредстоящие Prematch-матчи

Параметр format

Для списка матчей events используется только формат sub. Он группирует матчи по турнирам:

body
└── турнир
    └── events_list
        └── матчи

Параметр count

Параметр создавался для ограничения количества возвращаемых данных, но это ограничение было отменено. Сегмент остался обязательной частью URL для совместимости.

Всегда передавайте 50. Независимо от этого значения API возвращает все доступные матчи выбранного спорта или турнира. Параметр нельзя использовать для пагинации или ограничения размера ответа.

Необязательный query-параметр

ПараметрТипЗначение по умолчаниюОписание
cybersportbooleanfalseПереключает метод на матчи киберспорта

Пример:

GET https://YOUR_API_DOMAIN/v1/events/{sportId}/0/sub/50/live/ru?cybersport=true

Сохранённые в этой документации полные ответы получены без query-параметров, то есть при cybersport=false.

Пример запроса Live

В примере запрашиваются все Live-матчи всех доступных футбольных турниров:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/events/1/0/sub/50/live/ru' \
  --header 'Package: YOUR_API_KEY'

Пример запроса Prematch

В примере запрашиваются все Prematch-матчи всех доступных футбольных турниров:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/events/1/0/sub/50/line/ru' \
  --header 'Package: YOUR_API_KEY'

Чтобы получить матчи только одного турнира, замените 0 на его tournamentId:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/events/1/2916716/sub/50/live/ru' \
  --header 'Package: YOUR_API_KEY'

Сокращённый пример ответа Live

Ниже показан фрагмент реального ответа. Для компактности оставлены один матч, одна группа ставок, три исхода и одна строка статистики.

{
  "status": 1,
  "page": "/v1/events",
  "body": [
    {
      "tournament_id": 2916716,
      "tournament_name": "Чемпионат России. Молодежное первенство. Дивизион А",
      "events_list": [
        {
          "sgame_id": "6a5a35d05e99bd05c64f543a",
          "stat_id": "69a27d775e99bd05c6eec890",
          "game_id": 746049368,
          "game_start": 1787313600,
          "country_id": 1,
          "country_name": "Россия",
          "tournament_id": 2916716,
          "tournament_name": "Чемпионат России. Молодежное первенство. Дивизион А",
          "opp_1_name": "Акрон-Академия Коноплева (мол)",
          "opp_2_name": "Зенит (мол)",
          "game_oc_counter": 425,
          "game_oc_list": [
            {
              "group_id": 1,
              "group_name": "1X2",
              "columns": 3,
              "oc_list": [
                {
                  "oc_group_name": "1X2",
                  "oc_name": "П2",
                  "oc_rate": 2.505,
                  "oc_size": 0,
                  "oc_pointer": "746049368|1|3|0",
                  "oc_block": false,
                  "op_id": null
                },
                {
                  "oc_group_name": "1X2",
                  "oc_name": "П1",
                  "oc_rate": 2.605,
                  "oc_size": 0,
                  "oc_pointer": "746049368|1|1|0",
                  "oc_block": false,
                  "op_id": null
                },
                {
                  "oc_group_name": "1X2",
                  "oc_name": "Ничья",
                  "oc_rate": 3.49,
                  "oc_size": 0,
                  "oc_pointer": "746049368|1|2|0",
                  "oc_block": false,
                  "op_id": null
                }
              ]
            }
          ],
          "sport_id": 1,
          "sport_name": "Футбол",
          "timer": 2192,
          "score_full": "1:0",
          "score_period": "1:0",
          "stat_list": [
            {
              "id": 45,
              "name": "Атаки",
              "opp1": "29",
              "opp2": "30"
            }
          ],
          "period_name": "1-й тайм",
          "vi": "20064614",
          "zp": null
        }
      ]
    }
  ]
}

Это сокращённый фрагмент, а не полный объект матча. Полные ответы доступны в конце документа.

Структура ответа

Верхний уровень

ПолеТипОписание
statusnumberСтатус выполнения запроса. В успешном ответе возвращается 1
pagestringНазвание метода. Для events возвращается /v1/events
bodyarrayМассив турниров с матчами

Объект турнира

ПолеТипОписание
tournament_idnumberID турнира
tournament_namestringНазвание турнира на выбранном языке
events_listarrayМассив матчей этого турнира

Основные поля матча

ПолеТипОписание
game_idnumberID матча. Используется для запроса подробного метода event
sgame_idstringЗарезервированное тестовое поле для статистики матча, команд и игроков. Пока не используется в API
stat_idstringЗарезервированное тестовое поле для подробной статистики. Пока не используется в API
game_midnumber или nullID основного матча. У субматча свой game_id, а game_mid указывает на главную игру
game_numnumberСтарое неиспользуемое поле. Планируется к удалению из API
game_startnumberВремя начала матча в формате Unix Timestamp, в секундах
sport_idnumberID вида спорта
sport_namestringНазвание вида спорта
country_idnumberID страны
country_namestringНазвание страны
tournament_idnumberID турнира
tournament_namestringНазвание турнира
game_dop_namestringНазвание типа субматча. Например, Угловые, Жёлтые карточки или 1-й тайм
game_deskstringТип игрового отрезка: например, Тайм, Сет или Четверть

game_id Prematch-матча не сохраняется при переходе в Live. Для Live формируется новый game_id, поэтому нельзя связывать Prematch- и Live-матчи по этому полю.

Не используйте поля sgame_id, stat_id, game_num, stat_list_extra и game_plan как обязательную часть интеграции. Они являются старыми, тестовыми или зарезервированными. game_num планируется удалить из API.

Команды или участники

ПолеТипОписание
opp_1_namestringНазвание первой команды или участника
opp_2_namestringНазвание второй команды или участника
opp_1_idnumberОсновной ID первой команды или участника
opp_2_idnumberОсновной ID второй команды или участника
opp_1_idsarray of numberID участников первой стороны, если она состоит из нескольких игроков или команд
opp_2_idsarray of numberID участников второй стороны, если она состоит из нескольких игроков или команд
opp_1_iconstringИмя файла иконки первой команды или участника
opp_2_iconstringИмя файла иконки второй команды или участника

Массивы opp_1_ids и opp_2_ids нужны, когда одна сторона матча состоит из нескольких участников. Например, это могут быть теннисные пары или групповой матч, в котором на каждой стороне участвует несколько игроков или команд.

Готовые иконки команд и участников

Для команд и участников можно использовать стандартные иконки SportAPI:

https://cdn.sportapi.net/opp/v1/color/{iconName}.webp

Значение iconName берётся из opp_1_icon или opp_2_icon. В реальных ответах имя может приходить с расширением .png. Перед созданием CDN-ссылки исходное расширение нужно убрать, после чего добавить .webp через шаблон URL.

Например:

opp_1_icon: 8bd073a686a067e6732d8d1688a517c0.png
iconName:    8bd073a686a067e6732d8d1688a517c0

Готовая ссылка:

https://cdn.sportapi.net/opp/v1/color/8bd073a686a067e6732d8d1688a517c0.webp

Для opp_2_icon используется то же правило.

Счёт, период и Live-данные

ПолеТипОписание
timernumberТекущее значение таймера матча в секундах. Для получения минут разделите на 60. В Prematch обычно 0
score_fullstringТекущий общий счёт
score_periodstringСчёт текущего периода. Может быть пустой строкой
score_extrastringСчёт гейма в теннисе, например 0:15. В основном используется в теннисе и может встречаться в близких форматах, включая кибертеннис
period_namestringНазвание текущего периода. В Prematch обычно пустая строка
extra_timestringКоличество добавленных минут. Например, +10
finaleboolean или nullПоказывает, что матч закончился. Поле доступно не для всех матчей
pitchstringID участника, выполняющего подачу, для соответствующих видов спорта. Может быть пустой строкой
stat_listarrayТекущая статистика матча
stat_list_extraarrayЗарезервированное тестовое поле для дополнительного описания матча. Пока не используется
sub_gamesarrayВ методе events не используется и возвращается как []. Список субматчей доступен только в ответе конкретного event
event_planarrayВ методе events не используется и возвращается как []. Состав отдельных матчей доступен только в конкретном event
game_planлюбое JSON-значение или nullЗарезервированное тестовое поле для описания матча, например стадии турнира или типа корта. Пока не используется

В Prematch многие Live-поля возвращаются со стандартными значениями: 0, пустой строкой, пустым массивом или null. Клиент должен корректно обрабатывать все эти варианты.

Объект в stat_list

ПолеТипОписание
idnumberID показателя статистики
namestringНазвание показателя
opp1stringЗначение первой команды или участника
opp2stringЗначение второй команды или участника

Объект в sub_games

ПолеТипОписание
game_idnumber или nullID субсобытия
game_numnumber или nullНомер субсобытия
game_namestring или nullНазвание субсобытия

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

В списке матчей events поле возвращается как пустой массив:

"sub_games": []

Метод events не использует sub_games: здесь поле возвращается только как []. Список субматчей доступен при запросе конкретного матча через event. Каждый элемент содержит ID субматча, но не его коэффициенты. Для коэффициентов нужно выполнить отдельный запрос event по game_id выбранного субматча.

Метод events не использует event_plan: в списке матчей поле возвращается как []. Заполненный состав доступен только при запросе конкретного матча через event.

Ставки и коэффициенты

Поле матчаТипОписание
game_oc_counternumberОбщий счётчик доступных ставок или исходов матча
game_oc_listarrayКраткий список основных групп и лучших коэффициентов, включённый в список матчей

Значение game_oc_counter может быть значительно больше количества элементов, фактически находящихся в game_oc_list. Для полного набора ставок выбранного матча используйте метод event.

Краткий список зависит от вида спорта

Нельзя рассчитывать, что game_oc_list у всех видов спорта содержит одинаковые группы, названия и количество исходов.

Например:

  • в футболе краткий список может содержать группу 1X2 с победой первой команды, ничьёй и победой второй команды;
  • в баскетболе вместо 1X2 часто возвращаются исходы победы первой и победы второй команды;
  • в теннисе нет исхода на ничью.

При интеграции необходимо обрабатывать массив динамически:

  1. Не привязывать интерфейс только к группе 1X2.
  2. Не ожидать обязательного наличия ничьей.
  3. Читать фактические group_name, columns и oc_list из ответа.
  4. Не полагаться на одинаковый порядок групп и исходов у разных видов спорта.
  5. Для открытия всех доступных исходов выполнять запрос event по game_id выбранного матча.

Группа ставок в game_oc_list

ПолеТипОписание
group_idnumberID группы ставок
group_namestringНазвание группы
columnsnumberРекомендуемое количество колонок для отображения
oc_listarrayИсходы и коэффициенты внутри группы

Исход в oc_list

ПолеТипОписание
oc_group_namestringНазвание группы ставки
oc_namestringНазвание исхода
oc_ratenumberТекущий коэффициент
oc_sizestring или numberЗначение форы, тотала или другого параметра. В реальных ответах встречаются оба типа
oc_pointerstringУникальный код ставки или исхода. Используется при передаче выбранной ставки в отдельную систему приёма и расчёта ставок
oc_blockbooleantrue — исход заблокирован и недоступен; false — доступен
op_idnumber или nullID игрока или участника для персональных ставок, если он применим

Коэффициенты и состояние oc_block могут измениться при каждом обновлении ответа.

Видео и Live 3D Tracker

ПолеТипОписание
vistring или nullID видеотрансляции Live-матча. null означает, что ID не предоставлен
zpnumber или nullID Live 3D Tracker. Значение передаётся в трекер как gameid
vanumber или null1 — для матча есть видеотрансляция; null — видеотрансляции нет. Значение 0 не используется

Если zp равно null, Live 3D Tracker для этого матча недоступен. Сам трекер работает только для Live-матчей и поддерживаемых видов спорта.

Подробнее:

Отличия Live и Prematch

Структура объекта матча одинаковая, но заполнение полей отличается:

  • в Live обновляются таймер, счёт, период и статистика;
  • в Prematch эти поля обычно содержат начальные или пустые значения;
  • vi и zp относятся к дополнительным возможностям Live и могут быть null;
  • коэффициенты и блокировка исходов обновляются независимо для Live и Prematch;
  • при переходе матча из Prematch в Live создаётся новый game_id.

Live и Prematch необходимо запрашивать и хранить отдельно.

Снимок сохранённых ответов

Для Live и Prematch использованы футбол (sportId=1) и tournamentId=0, поэтому каждый файл содержит все матчи всех доступных футбольных турниров. Формат — sub, техническое значение count50.

Тип линииТурниры в ответеМатчи в ответе
Live3339
Prematch (line)4272638

Это статистика конкретных ответов от 21 августа 2026 года, а не постоянный состав API.

Полные ответы без сокращений:

Файлы содержат только тело ответа API. API-ключ в них не сохраняется.

Частота обновления

Рекомендуется запрашивать events:

  • Live — не чаще одного раза в 7 секунд;
  • Prematch (line) — не чаще одного раза в 30 секунд.

Подробнее: «Рекомендации по обновлению данных».

Ошибки ключа, тарифа и параметров описаны в документе «Обработка ошибок».