Документация SportWire API

REST-интерфейс к спортивным данным: расписание, live, события, статистика, xG, составы, коэффициенты, таблицы, история и справочники. Базовый URL — https://api.sportwire.ru. Все ответы — JSON в UTF-8; даты — ISO-8601 (UTC).

Обзор

REST API поверх единой модели данных: эндпоинты /v1/…, ключ в заголовке X-API-Key.

Каждая сущность (матч, турнир, команда, игрок) — единая и недублированная; названия доступны на нескольких языках, включая русский (см. Локализация).

Аутентификация

API-ключ выдаётся мгновенно в личном кабинете (тариф Trial — бесплатно).

REST — заголовок:

curl https://api.sportwire.ru/v1/sports \
  -H "X-API-Key: ВАШ_КЛЮЧ"

Для встраивания картинок в <img> ключ можно передать как ?key=.

Лимиты и тарифы

ТарифЗапросов / деньЦена
Trial1 000бесплатно
Starter50 000₽4 900 / мес
Pro500 000₽19 900 / мес
Business2 000 000₽49 900 / мес

Текущий расход виден в личном кабинете. При превышении лимита — ответ 429.

Ошибки

КодЗначение
401Ключ не передан или недействителен
404Сущность не найдена
422Неверные параметры запроса
429Превышен дневной лимит тарифа

Локализация (RU)

Названия лиг, турниров, команд и стран отдаются объектом name_i18n с ключами по локали — русский лежит рядом с оригиналом:

"name_i18n": { "en": "Premier League", "ru": "Премьер-лига" }

Берите name_i18n.ru для русского интерфейса или name_i18n.en для оригинала. Где русского ещё нет — поле может отсутствовать (заполнение идёт постоянно).

Виды спорта

GET/v1/sports

Список видов спорта с идентификаторами и названиями.

{ "sports": [
  { "id": 1, "slug": "football",   "name_i18n": {"en":"Football","ru":"Футбол"} },
  { "id": 2, "slug": "basketball", "name_i18n": {"en":"Basketball","ru":"Баскетбол"} }
]}

Матчи и расписание

GET/v1/events

Матчи с фильтрами. Параметры:

ПараметрОписание
sportslug вида спорта (например football)
dateдата YYYY-MM-DD (по времени начала)
statusscheduled · live · finished
toptrue — только важные лиги (отсеивает любительские/юношеские); на фиде по дате топ-матчи идут первыми. В ответе у каждого матча есть importance (0–100)
min_importanceсвой порог важности лиги (0–100)
limit / offsetпагинация (limit до 1000)
GET /v1/events?sport=football&date=2026-06-02

{ "count": 312, "events": [{
    "id": 1662352, "scheduled_start": "2026-06-02T18:00:00Z",
    "status": "finished", "round_name": "Premier League",
    "tournament": "Premier League", "sport": "football",
    "participants": [
      {"participant_id": 4504, "name": "Liverpool", "side": "home",
       "score": 2, "image_url": "/v1/participant/4504/image"},
      {"participant_id": 4509, "name": "Arsenal", "side": "away",
       "score": 1, "image_url": "/v1/participant/4509/image"}
    ]
}]}

Live-матчи

GET/v1/events/live

Только идущие сейчас матчи (опционально ?sport=). Счёт и статус обновляются каждые ~20 секунд.

Детализация матча

GET/v1/event/{id}

Полная карточка матча со всей собранной детализацией:

{ "id": 1662352, "status": "finished", "sport": "football",
  "tournament": "Premier League", "season_label": "25/26",
  "venue": "Anfield", "venue_city": "Liverpool", "venue_capacity": 53394,
  "referee": "Michael Oliver", "attendance": 53221,
  "participants": [ … счёт по сторонам … ],
  "incidents":  [ {"minute":23,"kind":"goal","period":"1H","player_name":"…","assist_name":"…"} ],
  "statistics": [ {"period":"ALL","group_name":"Possession",
                   "stat_name":"Ball possession","home_value":58,"away_value":42} ],
  "lineups":    [ {"side":"home","player_participant_id":…,"position":"GK",
                   "shirt_number":"1","is_substitute":false,"formation":"4-3-3","stats":{…}} ],
  "player_stats":[ {"participant_id":…,"player_name":"…","side":"home","position":"M",
                    "stats":{"rating":8.1,"accuratePass":76,"keyPass":4,"totalTackle":1,
                             "expectedGoals":0.32,"expectedAssists":0.42,"touches":103}} ],
  "coaches":    [ {"side":"home","coach_name":"…","coach_name_ru":"…"} ],
  "missing_players":[ {"side":"home","player_name":"…","position":"D",
                       "type":"missing","status":"…","reason_text":"…"} ],
  "shotmap":    [ {"player":{…},"xg":0.074,"shotType":"goal","situation":"assisted"} ],
  "momentum":   { "graphPoints":[…] },
  "odds":       [ {"market_name":"Full time","choice_name":"1","fractional_value":"1.73",
                   "bookmaker":"bet365","opening_value":"1.80","movement":"down"} ],
  "best_players":[ {"side":"home","rating":"7.6","player_name":"…","position":"M"} ],
  "win_probability": { "homeWin":52, "draw":27, "awayWin":21 },
  "votes":      { "vote":{"vote1":…,"voteX":…,"vote2":…} },
  "highlights": [ {"title":"…","url":"…","thumbnail":"…"} ],
  "average_positions": { "home":[{"player_name":"…","x":51.2,"y":33.0}], "away":[…] },
  "tv_channels": { "ES":[663], "BR":[7548] },
  "points_history": [ {"tab":"Set 1","points":[…]} ],
  "fight":      { "method":"TKO", "finish_round":3 },
  "weather":    { "temperature_c":18, "conditions":"…" },
  "commentary": [ {"minute":45,"text":"Гол! …","text_en":"Goal! …","type":"goal","side":"home","player_name":"…"} ],
  "meta":       { "last_detail_at":"…", "completeness":{…} }
}

Состав полей зависит от вида спорта и наличия данных у матча. Ключевые блоки: player_stats[].stats — полная статистика по каждому игроку (рейтинг, передачи, отборы, xG/xA, касания, спорт-специфичные метрики); coaches — тренеры сторон; missing_players — травмы/дисквалификации (type + reason_text); referee, venue_city, venue_capacity, attendance — справка о матче; best_players (MVP), win_probability, votes, highlights (видео), average_positions, tv_channels, points_history (по очкам — теннис/снукер/дартс), fight (метод/раунд — ММА). Блок meta.completeness показывает, какие секции заполнены. Глубина зависит от уровня лиги.

Турнирные таблицы новое

GET/v1/tournament/{id}/standings

Таблица сезона: позиция, игры, В/Н/П, забито/пропущено, очки. type = total (по умолч.) · home · away · form; season — id сезона (иначе самый свежий).

{ "tournament":"Premier League", "season_label":"25/26", "standing_type":"total",
  "table": [ {"position":1,"participant_id":42,"name":"Arsenal","played":38,
              "wins":26,"draws":7,"losses":5,"scores_for":71,"scores_against":27,"points":85} ] }

Бомбардиры новое

GET/v1/tournament/{id}/scorers

Таблица бомбардиров сезона: ранг, игрок, команда, голы. season — id сезона (иначе самый свежий); limit ≤ 500.

{ "tournament_id":47325, "count":20,
  "scorers": [ {"rank":1,"participant_id":…,"player_name":"…","team_name":"…","goals":8} ] }

Турнирная сетка (кубки) новое

GET/v1/tournament/{id}/bracket

Сетка плей-офф для кубковых турниров: раунды → пары (команды, счёт, результат, сыграно). season — id сезона (иначе самый свежий). Доступно для футбольных/баскетбольных кубков.

{ "tournament":"FA Cup 25/26", "rounds": [
   { "name":"...", "matchups": [
      {"finished":true,"result":"1:0","home_score":"1","away_score":"0",
       "teams":[{"name":"Blackpool","code":"BLP"},{"name":"Scunthorpe United","code":"SCU"}]} ] } ] }

Рейтинги новое

GET/v1/rankings?kind={kind}

kind: fifa · uefa_clubs · uefa_countries · atp_singles · atp_doubles · atp_singles_race · atp_doubles_race · wta_singles · wta_doubles · wta_singles_race · wta_doubles_race. Каждая запись: ранг, участник, очки, movement (со знаком, где источник даёт прошлый срез).

{ "kind":"fifa", "count":211,
  "rankings": [ {"rank":1,"participant":{"id":…,"name":"Argentina","name_ru":"Аргентина",
                 "country":"ARG"},"points":1877.3,"movement":2} ] }

Трансферы beta

GET/v1/participant/{id}/transfers

История трансферов участника. Для игрока — его переходы (откуда/куда, дата, тип, сумма); для команды — входящие и исходящие. type = transfer · loan · loan_return · other. Beta — глубина и полнота зависят от лиги.

{ "participant_id":…, "type":"player", "count":3,
  "transfers": [ {"date":"2025-08-16","type":"transfer","player_name":"…",
                  "from_team":"…","to_team":"…","fee":12.5,"fee_currency":"EUR"} ] }

Глубина покрытия по лигам

Базовые данные — расписание, счёт, статус, участники — есть по всем матчам всех видов спорта. Глубина детализации (статистика, составы, шотмап/xG, предматчевая модель) зависит от уровня лиги: по топ-лигам доступно всё, по низшим дивизионам обычно только счёт и ключевые события. Это отражает наличие данных у источника, а не пробел в нашем сборе — глубокой статистики низших дивизионов и молодёжных турниров не существует ни у одного провайдера.

ДанныеТоп-лигиНац. дивизионы / кубкиНизшие / молодёжь
Live счёт + статус (~20 сек)
Live инциденты (голы, карточки, замены)
Live шотмап + xG (растут по ходу матча)футболчастично
Статистика матча~95%~12%редко
Составы (lineups) + предматч-составы (предполагаемый XI, флаг confirmed)~95%~11%редко
Травмы / дисквалификации (missing players)где есть составычастично
Карта ударов (shotmap)~30–40% (футбол)~6%
xG по игрокам (из шотмапа: xG/xGOT/удары/голы)футболчастично
Текстовый онлайн (commentary) плей-бай-плей, live, премиумтоп liveчастично
Коэффициентычастичноредко
Предматч: модель, форма, H2H, таблица*редко *
Погода на стадионеесли есть координаты

Проценты — реальное измеренное покрытие среди уже детализированных матчей (футбол): топ-лиги — ~95% статистика / ~95% составы / ~30–40% шотмап; остальные — 12% / 11% / 6%. Глубина по истории активно наполняется — для live и недавних матчей топ-лиг детализация полная, по архиву проценты растут ежедневно. Предматч-составы, травмы/дисквалификации и xG по игрокам доступны там же, где собираются составы и шотмапы. * Предматчевая модель считается автоматически, когда у обеих команд достаточно истории (≥ 4 матча на сторону) — для редких или молодёжных команд её может не быть (поле model = null).

Лиги с расширенными данными (составы / предматч-составы / травмы / статистика; для футбола ещё шотмап, xG, xG по игрокам): футбол — АПЛ, Ла Лига, Серия A, Бундеслига, Лига 1, Эредивизи, Лига Чемпионов / Европы / Конференций, Saudi Pro League, Бразилейрао, Чемпионшип, MLS и др.; баскетбол — NBA, WNBA, Евролига, Еврокубок, ABA, NCAA, NBB и др.; хоккей — NHL, КХЛ; бейсбол — MLB; плюс топ-турниры по регби, гандболу и волейболу. Точный текущий список и покрытие по каждой лиге — через GET /v1/tournaments.

Детальное покрытие по ведущим лигам

— полное покрытие (≈90%+ finished-матчей) · % — доля finished-матчей с этим типом данных · — данные этого типа у источника не существуют (напр. шотмап/xG есть только для футбола; моментум — для футбола и баскетбола). Окно — последние 365 дней; для live и недавних матчей детализация полная.

ЛигаВидТаймлайнСоставыСтатистикаШотмапМоментумxG игроков
Premier Leagueфутбол30%30%30%
LaLigaфутбол36%36%36%
Serie Aфутбол39%38%39%
Bundesligaфутбол35%35%35%
Ligue 1футбол38%
Лига Чемпионовфутбол77%16%
Лига Европыфутбол16%16%16%
Лига Конференцийфутбол55%11%11%11%
Saudi Pro Leagueфутбол39%38%39%
Championshipфутбол34%34%34%
MLSфутбол35%34%35%
Brasileirão Série Aфутбол28%28%28%
J1 Leagueфутбол38%39%38%
NBAбаскетбол41%
WNBAбаскетбол32%
Евролигабаскетбол30%
China CBAбаскетбол47%
Brazil NBBбаскетбол43%
NHLхоккей
КХЛхоккей
AHLхоккей12%
MLBбейсбол

Срез по матчам за последние 365 дней (на момент генерации). Шотмап, xG и xG по игрокам — футбольные метрики; моментум доступен для футбола и баскетбола. Для live и недавних матчей топ-лиг детализация полная; по архиву проценты растут ежедневно. Полный машиночитаемый список лиг и покрытие — через GET /v1/tournaments.

Турниры и лиги

GET/v1/tournaments

Список турниров/лиг (опционально ?sport=), с количеством матчей, страной и полом.

{ "count": 18, "tournaments": [
  { "id": 17, "name": "Premier League",
    "name_i18n": {"en":"Premier League","ru":"Премьер-лига"},
    "sport": "football", "gender": "M", "country": "EN", "events": 14023 }
]}
GET/v1/participants/search?q=…

Нечёткий поиск команд и игроков по названию (с транслитерацией). Параметры: q, sport, type (team|player), limit.

GET /v1/participants/search?q=зенит&type=team

Команда / игрок

GET/v1/participant/{id}

Профиль: тип, вид спорта, страна, пол, дата рождения (для игроков), name_i18n, image_url и дополнительные поля (стадион, амплуа, рост — где доступно).

Изображения

GET/v1/participant/{id}/image

Готовое изображение (логотип команды / фото игрока), 150×150. Можно встраивать напрямую:

<img src="https://api.sportwire.ru/v1/participant/4504/image?key=ВАШ_КЛЮЧ">

Матчи участника

GET/v1/participant/{id}/events

Матчи конкретной команды/игрока (прошедшие и будущие), с пагинацией.

Страны

GET/v1/countries

Список стран (ISO) с числом лиг и набором видов спорта. Категории вида «Amateur / Women / Youth» сведены к одной стране. Опционально ?sport=.

{ "count": 221, "countries": [
  { "iso": "BR", "name": "Brazil", "name_ru": "Бразилия",
    "leagues": 1266, "sports": ["basketball","football","volleyball"] },
  { "iso": "EN", "name": "England", "name_ru": "Англия", "leagues": 699, "sports": ["football"] }
]}

Лиги по странам

Полный справочник всех лиг и турниров в разрезе по странам и видам спорта — отдельная страница с поиском и сворачиваемыми списками, у каждой лиги указан id:

→ docs.sportwire.ru/leagues.html — более 34 000 лиг и турниров, 221 страна.

Программный доступ — через /v1/tournaments с фильтрами:

GET/v1/tournaments?country=ES&sport=football&q=liga
ПараметрОписание
countryISO-код страны (например ES, RU)
sportslug вида спорта
qпоиск по названию (EN или RU)
limit / offsetпагинация

Предматчевая аналитика новое

GET/v1/event/{id}/insights

Готовый аналитический пакет по матчу: форма и тренды обеих команд, очные встречи, турнирный контекст, математическая модель (Пуассон) с вероятностями исходов, «справедливыми коэффициентами» и value-сигналами против рынка, а также готовые трендовые ярлыки. Всё считается из исторических данных (≈2,9 млн матчей со счётом) — без чьих-либо «прогнозов».

{ "event_id": 1651128, "sport": "football",
  "tournament": { "id": 31384, "name": "Serie A", "name_ru": "Серия А" },
  "home": {
    "name": "Torino", "name_ru": "Торино",
    "form": {
      "last10": { "matches":10, "ppg":1.0, "gf_avg":1.0, "over_2_5":60.0,
                  "btts":60.0, "clean_sheet":20.0, "form":"DLWLL" },
      "home":   { "matches":10, "ppg":1.4, "gf_avg":1.3, "over_2_5":50.0 } },
    "discipline": { "matches":10, "cards_avg":2.3 },
    "standing": { "position":12, "played":38, "points":45, "goals_for":44, "goals_against":63 } },
  "away": { "name":"Juventus", "name_ru":"Ювентус", "form": { … }, "standing": { … } },
  "h2h": { "matches":3, "team_a_wins":0, "draws":2, "team_b_wins":1, "goals_avg":1.33, "btts":33.3,
           "recent":[{"date":"2025-11-09","score":"1:1"}] },
  "model": {
    "expected_goals": { "home":1.78, "away":1.51, "total":3.29 },
    "probabilities":  { "home_win":44.4, "draw":22.8, "away_win":32.8,
                        "over_2_5":63.9, "under_2_5":36.1, "btts":64.8 },
    "fair_odds":      { "home_win":2.25, "draw":4.38, "away_win":3.05, "over_2_5":1.56, "btts":1.54 },
    "likely_scorelines":[ {"score":"1:1","prob":10.0}, {"score":"2:1","prob":8.9} ] },
  "value_bets": [ {"market":"Full time","selection":"1","market_odds":2.50,"fair_odds":2.25,"edge_pct":11.1} ],
  "trends": [
    {"label":"Тотал больше 2.5","detail":"Торино: 60% из 10","side":"home"},
    {"label":"Обе забивают","detail":"Торино: 60% из 10","side":"home"} ],
  "disclaimer":"Статистические оценки на основе исторических данных. Не является ставкой, прогнозом или инвестиционной рекомендацией." }
БлокЧто внутри
formВ/Н/П, очки за матч, забито/пропущено, % тоталов (1.5/2.5/3.5), ОЗ, «на ноль», не забивает — общие и дома/в гостях, за последние 5/10 и в целом; серии
disciplineсредние карточки команды (по матчам с детализацией)
standingпозиция, очки, игры, забито/пропущено (где есть таблица)
h2hличные встречи: счёт, ОЗ, тоталы
modelмодель Пуассона: ожидаемые голы, вероятности П1/Х/П2, тоталов, ОЗ, «справедливые» кэфы, вероятные счета
value_betsисходы, где рынок платит больше модельной «справедливой» цены (edge_pct)
trendsготовые человекочитаемые ярлыки трендов

Блоки формы — form.overall / last5 / last10 / home / away

Каждый блок формы — один и тот же набор метрик на разной выборке матчей (все / последние 5 / последние 10 / только дома / только в гостях). Для предстоящего матча выборка берётся строго ДО его даты — результат самого матча в расчёт не попадает (нет «подглядывания» в будущее).

ПолеОписание
matchesчисло матчей в выборке
w / d / lпобеды / ничьи / поражения
ppgочков за матч
gf_avg / ga_avg / goals_avgзабито / пропущено / суммарно голов за матч
win_pct / draw_pct / loss_pct% исходов
over_1_5 / over_2_5 / over_3_5% матчей с тоталом больше N
btts% матчей, где забили обе команды
clean_sheet / failed_to_score% «на ноль» / % без своих голов
streakтекущая серия: {type: win|draw|loss, len}
unbeaten_run / scoring_run / cleansheet_runдлина текущих серий: без поражений / с голами / сухих
formстрока последних исходов, напр. "WWDLW" (новые слева)

Модель — model (методология)

Модель Пуассона. Для каждой команды считается сила атаки и обороны относительно среднего по лиге (отдельно для домашних и гостевых матчей); из них — ожидаемые голы (λ хозяев и гостей), а из распределения Пуассона — матрица вероятностей счёта, и уже из неё все вероятности, «справедливые» коэффициенты и наиболее вероятные счета. Доступна для футбола и хоккея.

ПолеОписание
expected_goals.home / away / totalожидаемые голы (λ)
probabilities.home_win / draw / away_winвероятности исхода, %
probabilities.over_1_5 / over_2_5 / over_3_5 / under_2_5 / bttsвероятности тоталов и ОЗ, %
fair_odds.*«справедливый» коэффициент = 1 / вероятность
likely_scorelinesтоп-5 наиболее вероятных счетов с их вероятностью

value_bets сравнивает fair_odds с реальными коэффициентами рынка и показывает исходы с положительным перевесом: edge_pct = на сколько % рынок «щедрее» модели.

Очные встречи — h2h

ПолеОписание
matchesчисло личных встреч
team_a_wins / draws / team_b_winsсчёт по встречам (team_a = команда home в карточке)
goals_avg / over_2_5 / bttsсредние голы, % тоталов >2.5, % ОЗ
recentпоследние встречи: дата и счёт
⚠️ Дисклеймер. Все значения — статистические оценки на основе исторических данных. Это не ставка, не прогноз и не инвестиционная рекомендация. Поле disclaimer присутствует в каждом ответе.
GET/v1/team/{id}/trends

Форма и тренды команды отдельно (общие / дома / в гостях / последние N), дисциплина и последние матчи.

GET/v1/tournament/{id}/trends

Профиль лиги: средние голы, доля П1/Х/П2, % тоталов и ОЗ — за последние ~2,5 года.

{ "tournament_id":31384, "name":"Serie A", "name_ru":"Серия А", "sport":"football",
  "matches":772, "avg_goals":2.52, "avg_home_goals":1.32, "avg_away_goals":1.19,
  "home_win_pct":39.4, "draw_pct":28.1, "away_win_pct":32.5,
  "over_2_5_pct":47.3, "over_3_5_pct":24.5, "btts_pct":49.5 }

Погода на стадионе новое

GET/v1/event/{id}/weather

Погода в момент матча по координатам стадиона: температура и «ощущается», осадки и их вероятность, ветер и порывы, влажность, облачность, текстовое описание. Также доступна в блоке weather карточки матча /v1/event/{id}. Собирается для предстоящих матчей (прогноз) и доступна по сыгранным (архив), где известна площадка.

{ "event_id":1651128, "available":true,
  "weather": {
    "stadium":"Stadio Olimpico Grande Torino", "city":"Turin",
    "temperature_c":28.8, "feels_like_c":29.0, "conditions":"Ясно",
    "wind_speed_ms":1.5, "wind_gusts_ms":5.8, "precipitation_mm":0.0,
    "precipitation_prob_pct":null, "humidity_pct":39, "cloud_cover_pct":6,
    "weather_code":0, "is_forecast":false, "observed_hour_utc":"2026-05-24T19:00" } }

Виджеты новое

Готовые встраиваемые виджеты — серверный рендер в <iframe>, ключ остаётся на нашей стороне (ничего не светится в браузере, CORS не нужен). Имена команд и турниров — на русском.

Турнирная таблица

<iframe src="https://sportwire.ru/widget/standings?tournament=17"
        width="100%" height="520" frameborder="0"></iframe>

Профиль / тренды лиги

<iframe src="https://sportwire.ru/widget/trends?tournament=17"
        width="100%" height="190" frameborder="0"></iframe>
ПараметрОписание
tournamentid турнира (обязательный)
themelight (по умолчанию) · dark
title0 — скрыть заголовок (для своей вёрстки)
type (standings)total · home · away · form
limit (standings)сколько строк таблицы показать (0 = все)

Демо и конструктор кода — на странице Продукты → Виджеты.

Схема данных

Модель данных SportWire — основные сущности и связи. Матч (EVENT) связан с турниром, сезоном и сторонами (со счётом) и обогащается событиями, статистикой, составами, коэффициентами, картой ударов с xG, графиком моментума и погодой. Названия — мультиязычные (name_i18n: EN/RU); сущности единые и недублированные.

erDiagram
  SPORT ||--o{ TOURNAMENT : "вид спорта"
  COUNTRY ||--o{ TOURNAMENT : "страна"
  TOURNAMENT ||--o{ TOURNAMENT_STAGE : "сезоны"
  TOURNAMENT_STAGE ||--o{ EVENT : "матчи"
  TOURNAMENT_STAGE ||--o{ STANDINGS : "таблица"
  EVENT ||--o{ EVENT_PARTICIPANT : "стороны+счёт"
  PARTICIPANT ||--o{ EVENT_PARTICIPANT : "участвует"
  EVENT ||--o{ EVENT_INCIDENT : "события"
  EVENT ||--o{ EVENT_STATISTIC : "статистика"
  EVENT ||--o{ EVENT_LINEUP : "составы"
  EVENT ||--o{ EVENT_ODDS : "коэффициенты"
  EVENT ||--o| EVENT_SHOTMAP : "удары+xG"
  EVENT ||--o| EVENT_GRAPH : "моментум"
  EVENT ||--o| EVENT_WEATHER : "погода"
  PARTICIPANT ||--o{ PARTICIPANT : "состав команды"
  EVENT {
    int id
    timestamptz scheduled_start
    string status
    string round_name
    string venue
    bool lineup_confirmed
  }
  TOURNAMENT {
    int id
    jsonb name_i18n
    int country_id
    string gender
    int tier
  }
  PARTICIPANT {
    int id
    string type
    jsonb name_i18n
    int country_id
    date birth_date
  }
  EVENT_PARTICIPANT {
    int event_id
    int participant_id
    string side
    int score
  }
  EVENT_INCIDENT {
    int event_id
    int minute
    string kind
    string side
    jsonb payload
  }
  EVENT_STATISTIC {
    int event_id
    string group_name
    string stat_name
    numeric home_value
    numeric away_value
  }
  EVENT_WEATHER {
    int event_id
    jsonb weather
  }
  

Если диаграмма не отрисовалась — связи перечислены текстом выше в описании.

Полный инвентарь данных

Что именно доступно — по каждому типу данных, до отдельного поля. Состав полей зависит от вида спорта и наличия детализации у конкретного матча; глубина и история постоянно расширяются.

Матч — event

ПолеОписание
idидентификатор матча
scheduled_startвремя начала (ISO-8601, UTC)
statusscheduled · live · finished
round_num / round_nameтур / название стадии
venueплощадка (стадион)
lineup_confirmedfalse — предварительный состав, true — официальный, null — нет
extraсчёт по периодам (period_scores), сезон, тур, время начала текстом
weatherпогода на стадионе (см. ниже)

Стороны и счёт — participants

ПолеОписание
participant_id / name / name_ruкоманда или игрок, локализованное имя
sidehome / away
scoreитоговый счёт стороны
image_urlлоготип / фото

События матча — incidents

Голы, карточки (жёлтые/красные), замены, VAR, пенальти, начало/конец таймов и др. — по всей истории.

ПолеОписание
minute / minute_plusминута (+добавленное)
periodтайм / период
kindтип события (goal, card, subst, var, penalty …)
sideсторона
player_name / assist_nameигрок и ассистент
payloadдетали (тип карточки, счёт после события, описание)

Статистика матча — statistics

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

ПолеОписание
periodALL / 1H / 2H
group_name / stat_nameгруппа и название метрики
home_value / away_valueчисловые значения сторон
home_text / away_textтекстовое представление (напр. «58%»)

Составы — lineups

ПолеОписание
side / formationсторона и схема (напр. 4-3-3)
player_participant_idигрок
position / shirt_numberамплуа, номер
is_substituteв запасе / в старте
statsиндивидуальная статистика игрока в матче (рейтинг, голы, передачи …)

Коэффициенты — odds

ПолеОписание
market_name / market_groupрынок (исход, тотал, фора …)
choice_nameисход (1 / X / 2 и т.д.)
fractional_valueтекущий коэффициент
opening_valueоткрывающий коэффициент (где известен — для анализа движения линии)
bookmakerбукмекер котировки, где источник его называет (bet365 / William Hill / Unibet); null для агрегированной рыночной цены
movementнаправление движения линии: up · down · null
winningсыграл ли исход (для сыгранных матчей)

Карта ударов + xG — shotmap

По каждому удару: игрок, минута, xg (ожидаемые голы), тип удара и ситуация, часть тела, координаты. momentum — график моментума по ходу матча (футбол, баскетбол).

Погода — weather

ПолеОписание
stadium / cityплощадка и город
temperature_c / feels_like_cтемпература и «ощущается», °C
precipitation_mm / precipitation_prob_pctосадки и вероятность
wind_speed_ms / wind_gusts_msветер и порывы, м/с
humidity_pct / cloud_cover_pctвлажность, облачность
conditions / is_forecastописание; прогноз или факт (архив)

Турниры и таблицы — tournament / standings

ПолеОписание
name_i18n / country / gender / tierназвание (EN/RU), страна, пол, уровень
сезоныseason_label, даты начала/конца, текущий ли
таблицапозиция, игры, В/Н/П, забито/пропущено, очки

Команды и игроки — participant

ПолеОписание
typeteam / player
name_i18n / country / genderимя (EN/RU), страна, пол
birth_dateдата рождения (игроки)
image_urlлоготип / фото
extraстадион, амплуа, рост и др. (где доступно)

Аналитика (вычисляемое)

Поверх данных доступны вычисляемые блоки — форма и тренды, очные встречи, профиль лиги, модель Пуассона с вероятностями и «справедливыми» кэфами, value-сигналы. См. Предматчевую аналитику и Тренды.