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

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

Обзор

Современный REST-интерфейс поверх единой модели данных:

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

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

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

REST — заголовок X-API-Key:

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",
  "referee": "Michael Oliver", "attendance": 53291, "venue_city": "Liverpool",
  "participants": [ … счёт по сторонам … ],
  "incidents":  [ {"minute":23,"kind":"goal","period":"1H",
                   "payload":{"player":"…","assist":"…","home":1,"away":0}} ],
  "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"} ],
  "coaches":    [ {"side":"home","name":"…","name_ru":"…"} ],
  "player_stats":   [ {"side":"home","participant_id":…,"player_name":"…",
                   "stats":{"rating":7.4,"goalAssist":1,"totalShots":3,"accuratePass":54,"touches":72}} ],
  "missing_players":[ {"side":"away","player_name":"…","status":"injured",
                   "reason_text":"Травма колена","type":"missing","position":"D"} ],
  "odds":       [ {"market_name":"Full time","choice_name":"1","fractional_value":"1.73",
                   "bookmaker":"bet365","opening_value":"1.80","movement":"down"} ],
  "shotmap":    [ {"player":{…},"xg":0.074,"shotType":"goal",
                   "situation":"assisted","bodyPart":"head"} ],
  "momentum":   { "graphPoints":[…] },
  "best_players":[ {"side":"home","player_name":"…","rating":8.3,"position":"M"} ],
  "win_probability":{ "homeWin":71, "draw":18, "awayWin":11 },
  "commentary": [ {"minute":45,"text":"Гол! …","text_en":"Goal! …","type":"goal","side":"home","player_name":"…"} ],
  "meta": { "last_detail_at":"2026-06-02T20:05:11Z",
            "completeness":{ "statistics":true,"lineups":true,"shotmap":true,
                             "player_stats":true,"momentum":true,"commentary":true } }
}

Состав полей зависит от вида спорта и доступности данных у конкретного матча (например, xG и карта ударов — для футбола топ-уровня). Запрос по идентификатору из любого формата возвращает единую обогащённую карточку. Блок meta.completeness в каждом ответе показывает, какие секции заполнены (true/false), а meta.last_detail_at — когда деталь матча обновлялась последний раз. Помимо показанных, для матчей с данными доступны: votes (голосование болельщиков), average_positions (средние позиции игроков), highlights (видео), tv_channels, team_streaks, для единоборств — fight_result, для тенниса — points_history. xg_graph — устаревший алиас momentum (данные — это моментум, не xG).

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

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

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

Проценты — реальное измеренное покрытие среди finished-матчей за последние 365 дней (футбол): топ-лиги — ~95% статистика / ~95% составы / ~30–40% шотмап; остальные — ~12% / ~11% / ~5%. Глубина по истории активно наполняется — для 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

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

Трансферы beta

GET/v1/participant/{id}/transfers

История трансферов участника. Для игрока — его переходы (откуда/куда, дата, тип, сумма); для команды — входящие и исходящие. Параметр limit (до 200). Глубина зависит от лиги (beta).

{ "participant_id": 1242, "type": "player", "count": 2, "transfers": [
  { "date":"2023-07-01", "type":"transfer",
    "player_id":1242, "player_name":"…",
    "from_team_id":2817, "from_team":"Benfica",
    "to_team_id":2829,  "to_team":"PSG",
    "fee":16000000, "fee_currency":"EUR" } ] }
ПолеОписание
typetransfer · loan · loan_return · other
from_team / to_team (+ _id)клуб-источник и клуб-назначение
fee / fee_currencyсумма сделки и валюта (где раскрыта)

Страны

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 — более 49 000 лиг и турниров, 219 стран.

Программный доступ — через /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" } }

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

GET/v1/tournament/{id}/standings

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

{ "tournament":"Premier League", "tournament_ru":"Премьер-лига", "season_label":"25/26", "standing_type":"total",
  "table": [
    { "position":1, "participant_id":42, "name":"Arsenal", "name_ru":"Арсенал",
      "played":38, "wins":26, "draws":7, "losses":5,
      "scores_for":71, "scores_against":27, "points":85 } ] }

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

GET/v1/tournament/{id}/scorers

Список лучших бомбардиров сезона: место, игрок, команда, голы. season — id сезона (см. /v1/tournament/{id}), иначе берётся последний сезон с данными; limit до 500.

{ "tournament_id":17, "season_id":52186, "count":20, "scorers": [
  { "rank":1, "participant_id":159542, "player_name":"Erling Haaland",
    "team_name":"Manchester City", "goals":27 } ] }

Сетка плей-офф новое

GET/v1/tournament/{id}/bracket

Турнирная сетка (дерево кубка) для кубковых турниров: раунды → пары (команды, результат, счёт, завершённость). season — id сезона, иначе самая свежая сетка.

{ "tournament_id":329, "season_id":61225, "tournament":"UEFA Champions League",
  "tournament_ru":"Лига Чемпионов", "sport":"football", "season_label":"25/26",
  "rounds": [
    { "name":"Final", "matchups":[
      { "home":{…}, "away":{…}, "home_score":2, "away_score":0, "finished":true } ] } ] }

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

GET/v1/rankings?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. Пагинация — limit / offset.

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

movement — изменение позиции с прошлого среза (положительное = поднялась; null, если у источника нет предыдущего среза).

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

Готовые встраиваемые виджеты — серверный рендер в <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 : "погода"
  EVENT ||--o{ EVENT_AUX : "доп. блоки"
  TOURNAMENT_STAGE ||--o| CUP_TREE : "сетка плей-офф"
  TOURNAMENT_STAGE ||--o{ SCORER_TABLE : "бомбардиры"
  PARTICIPANT ||--o{ TRANSFER : "трансферы"
  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сыграл ли исход (для сыгранных матчей)

Тренеры — coaches

Главные тренеры (менеджеры) по сторонам — имя и русский перевод. Доступно, где собран состав.

ПолеОписание
sidehome / away
name / name_ruимя тренера (оригинал и RU)

Статистика игроков — player_stats

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

ПолеОписание
side / participant_idсторона и игрок
player_name / player_name_ruимя (оригинал и RU)
position / jersey / is_substituteамплуа, номер, запасной ли
statsобъект метрик с исходными ключами источника: rating, goalAssist, totalShots, accuratePass / totalPass, touches, ballRecovery, saves, minutesPlayed … (набор зависит от амплуа и вида спорта)

Травмы и дисквалификации — missing_players

Кто не сыграет и почему (предматчевые данные): травмы, дисквалификации, прочие причины.

ПолеОписание
side / player_name / position / jerseyсторона, игрок, амплуа, номер
statusinjured · suspended · doubtful · missing
reason_textчеловекочитаемая причина на русском (напр. «Травма колена»)

Доп. блоки матча (где собраны)

ПолеОписание
momentumграфик моментума по ходу матча (футбол, баскетбол); xg_graph — устаревший алиас
best_playersлучшие игроки матча (MVP) по сторонам: рейтинг, амплуа, номер
win_probabilityвероятности исхода: homeWin / draw / awayWin (в %)
votesголосование болельщиков за исход
average_positionsсредние позиции игроков на поле
highlights / tv_channelsвидео-хайлайты и ТВ-трансляции
referee / attendance / venue_cityсудья, посещаемость, город площадки
fight_result (единоборства) / points_history (теннис)результат боя / поточёчная история

Свежесть и полнота — meta

Контракт API: клиент всегда видит, насколько данные свежие и какие блоки заполнены.

ПолеОписание
meta.last_detail_atкогда деталь матча обновлялась последний раз (ISO-8601)
meta.completenessкарта true/false по секциям: statistics, lineups, coaches, shotmap, player_stats, momentum, missing_players, weather, commentary, win_probability и др.

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

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

Текстовый онлайн — commentary

Плей-бай-плей текстовая трансляция матча. Каждая реплика переводится на русский сразу при сборе: text — русский, text_en — оригинал. Доступно по live и недавним матчам топ-лиг (футбол), где источник ведёт текстовый онлайн; покрытие растёт. В карточке матча — массив commentary.

ПолеОписание
minuteминута матча
text / text_enреплика на русском / оригинал
typeтип события (goal, card, subst …)
side / player_nameсторона и игрок (где относится)

Погода — 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-сигналы. См. Предматчевую аналитику и Тренды.