Войти

История, из которой
можно считать

Завершённые матчи с разметкой по периодам, удары с координатами, составы и позиции игроков. Идентификаторы не «плавают» между выгрузками, а сама выгрузка — инкрементальная.

Получить ключ Документация
9 036 308
завершённых матчей
124 886 142
строк статистики
1 552 982
ударов с координатами
1 341 426
игроков с постоянным id

Что закрываем

Конкретные эндпоинты и объёмы. Каталог — на 4 августа 2026, глубина истории — на 5 августа 2026.

История

  • Завершённых матчей — 9 036 308, строк статистики — 124 886 142
  • События матча с минутой и игроком — 105 372 814 записи
  • Составы и индивидуальная статистика — 33 324 498 позиции
  • Самый ранний завершённый матч в базе — 25 сентября 1920; до 2000 года — 131 073 матчей, с 2016-го — 7 408 782

Детальная разметка есть у 8 552 501 матча из 9 352 486: глубина по годам и видам неодинакова, и это видно в самих данных.

Пространственные данные

  • Удары с координатами — 1 552 982 удара по 28 607 матчам, /v1/event/{id}/shotmap
  • Зоны угрозы — /v1/event/{id}/xt, /v1/team/{id}/xt
  • Средние позиции игроков — в карточке матча полем average_positions
  • Погода на стадионе — 132 267 матчей, /v1/event/{id}/weather

Моментум — 43 671 матч: только те, что мы вели в эфире. Задним числом эта величина не восстанавливается ни у кого.

Сущности и идентификаторы

  • Команды — 206 877, игроки — 1 341 426, у каждого один постоянный id
  • Карточка игрока и его статистика — /v1/participant/{id}, /v1/participant/{id}/stats
  • Матчи участника — /v1/participant/{id}/events, переходы — /transfers
  • Связать свой справочник с нашим — /v1/participants/search

Одна команда — одна запись: если прежний поставщик отдавал её двумя, у нас она будет одной.

Массовая выгрузка

  • Инкрементально по курсору — /v1/sync?since_id=…&limit=…
  • Повтор пропущенного за время обрыва — /v1/stream/replay
  • Постраничная выборка — /v1/events?limit=&offset=
  • Справочники целиком — /v1/sports, /v1/tournaments, /v1/countries

Суточных квот нет — ограничение только по частоте: 5, 20 или 100 запросов в секунду по тарифу.

Что важно для модели

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

Глубина истории

Завершённых матчей — 9 036 308. Самый ранний в базе — 25 сентября 1920, но плотность растёт к нашим дням: до 2000 года — 131 073 матчей, с 2016-го — 7 408 782.

Обучать на «всём с 1920-го» нельзя честно: у старых матчей есть счёт, но нет разметки. Смотрите на 8 552 501 матчей с деталью и режьте окно сами — данные это позволяют.

Устойчивые идентификаторы

У команды и игрока один постоянный id: 206 877 команд и 1 341 426 игроков. Он не меняется от выгрузки к выгрузке, поэтому обучающая таблица не рассыпается на следующей неделе.

Идентификаторы у нас свои. Держите пару «ваш id ↔ наш id», а не переписывайте свои: так вы сможете уйти обратно. Сопоставление делается запросом /v1/participants/search, а не руками.

Массовая выгрузка

Забирать историю удобнее курсором: /v1/sync?since_id=… отдаёт пачку изменившихся матчей и последний id, с которого продолжать. Второй проход после сбоя не даст дублей.

Суточных квот нет — упереться можно только в запросы в секунду. Медиана 79 мс на выборку из 20 матчей (замер 4 августа 2026), так что план выгрузки считается арифметикой, а не гаданием.

Настоящий ответ по настоящему матчу

Карта ударов матча «Краснодар» — «Факел Воронеж», 3:2, Российская премьер-лига, 2 августа 2026. В ответе 24 удара — ниже первые три, дословно.

GET /v1/event/11220580/shotmap
{
  "event_id": 11220580, "available": true, "count": 24,
  "shots": [
    { "is_home": true, "player": "Jubal", "minute": 4,
      "shot_type": "goal", "situation": "set-piece", "body_part": "head",
      "x": 9.9, "y": 54.9, "xg": null },
    { "is_home": true, "player": "João Batxi", "minute": 17,
      "shot_type": "save", "situation": "fast-break", "body_part": "right-foot",
      "x": 11.7, "y": 38.9, "xg": null },
    { "is_home": true, "player": "Aleksandr Chernikov", "minute": 20,
      "shot_type": "block", "situation": "assisted", "body_part": "left-foot",
      "x": 10.7, "y": 35.4, "xg": null }  ]
  // xg у отдельного удара — null: источник его не отдаёт.
  // Матчевый xG есть в statistics: 0.83 — 2.1.
}
Игрок из этого матча
/v1/participant/1754092/stats — Никита Кривцов: 15 матчей, 7 голов, 32 ударов, 13 в створ. Он же забил дважды в матче выше. Снято 5 августа 2026.
Что честно про xG
Матчевый xG приходит в statistics. Per-shot xG источник не публикует — поэтому в shotmap у каждого удара стоит null, а не подставленная оценка. Своё значение вы посчитаете по координатам, ситуации и части тела.
Выход модели
Считается в момент запроса и в базе не хранится, поэтому чисел здесь нет — есть схема: markets.match_result.prob_home / prob_draw / prob_away, fair_odds, over_under_2_5, btts, confidence.
Выгрузка по курсору
GET /v1/sync?since_id=0&limit=500 — пачка матчей с деталью и id, с которого продолжать. Дальше — тот же запрос с новым since_id.

Чего мы для этого не делаем

Дешевле прочитать сейчас, чем узнать на третьей неделе интеграции.

Проверьте глубину на своих лигах

Тестовый ключ — 500 запросов в месяц, без карты и без договора. Хватает, чтобы посмотреть, сколько сезонов и какой разметки есть именно там, где вам нужно.