Документация 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=.
Лимиты и тарифы
| Тариф | Запросов / день | Цена |
|---|---|---|
| Trial | 1 000 | бесплатно |
| Starter | 50 000 | ₽4 900 / мес |
| Pro | 500 000 | ₽19 900 / мес |
| Business | 2 000 000 | ₽49 900 / мес |
Текущий расход виден в личном кабинете. При превышении лимита — ответ 429.
Ошибки
| Код | Значение |
|---|---|
401 | Ключ не передан или недействителен |
404 | Сущность не найдена |
422 | Неверные параметры запроса |
429 | Превышен дневной лимит тарифа |
Локализация (RU)
Названия лиг, турниров, команд и стран отдаются объектом name_i18n с ключами по локали —
русский лежит рядом с оригиналом:
"name_i18n": { "en": "Premier League", "ru": "Премьер-лига" }
Берите name_i18n.ru для русского интерфейса или name_i18n.en для
оригинала. Где русского ещё нет — поле может отсутствовать (заполнение идёт постоянно).
Виды спорта
Список видов спорта с идентификаторами и названиями.
{ "sports": [
{ "id": 1, "slug": "football", "name_i18n": {"en":"Football","ru":"Футбол"} },
{ "id": 2, "slug": "basketball", "name_i18n": {"en":"Basketball","ru":"Баскетбол"} }
]}
Матчи и расписание
Матчи с фильтрами. Параметры:
| Параметр | Описание |
|---|---|
sport | slug вида спорта (например football) |
date | дата YYYY-MM-DD (по времени начала) |
status | scheduled · live · finished |
top | true — только важные лиги (отсеивает любительские/юношеские); на фиде по дате топ-матчи идут первыми. В ответе у каждого матча есть 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-матчи
Только идущие сейчас матчи (опционально ?sport=). Счёт и статус обновляются каждые ~20 секунд.
Детализация матча
Полная карточка матча со всей собранной детализацией:
{ "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 показывает, какие секции заполнены. Глубина зависит от уровня лиги.
Турнирные таблицы новое
Таблица сезона: позиция, игры, В/Н/П, забито/пропущено, очки. 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} ] }
Бомбардиры новое
Таблица бомбардиров сезона: ранг, игрок, команда, голы. season — id сезона
(иначе самый свежий); limit ≤ 500.
{ "tournament_id":47325, "count":20,
"scorers": [ {"rank":1,"participant_id":…,"player_name":"…","team_name":"…","goals":8} ] }
Турнирная сетка (кубки) новое
Сетка плей-офф для кубковых турниров: раунды → пары (команды, счёт, результат, сыграно).
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"}]} ] } ] }
Рейтинги новое
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
История трансферов участника. Для игрока — его переходы (откуда/куда, дата, тип, сумма);
для команды — входящие и исходящие. 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.
Турниры и лиги
Список турниров/лиг (опционально ?sport=), с количеством матчей, страной и полом.
{ "count": 18, "tournaments": [
{ "id": 17, "name": "Premier League",
"name_i18n": {"en":"Premier League","ru":"Премьер-лига"},
"sport": "football", "gender": "M", "country": "EN", "events": 14023 }
]}
Поиск
Нечёткий поиск команд и игроков по названию (с транслитерацией). Параметры: q,
sport, type (team|player), limit.
GET /v1/participants/search?q=зенит&type=team
Команда / игрок
Профиль: тип, вид спорта, страна, пол, дата рождения (для игроков), name_i18n,
image_url и дополнительные поля (стадион, амплуа, рост — где доступно).
Изображения
Готовое изображение (логотип команды / фото игрока), 150×150. Можно встраивать напрямую:
<img src="https://api.sportwire.ru/v1/participant/4504/image?key=ВАШ_КЛЮЧ">
Матчи участника
Матчи конкретной команды/игрока (прошедшие и будущие), с пагинацией.
Страны
Список стран (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 с фильтрами:
| Параметр | Описание |
|---|---|
country | ISO-код страны (например ES, RU) |
sport | slug вида спорта |
q | поиск по названию (EN или RU) |
limit / offset | пагинация |
Предматчевая аналитика новое
Готовый аналитический пакет по матчу: форма и тренды обеих команд, очные встречи, турнирный контекст, математическая модель (Пуассон) с вероятностями исходов, «справедливыми коэффициентами» и 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 присутствует
в каждом ответе.Тренды команды и профиль лиги новое
Форма и тренды команды отдельно (общие / дома / в гостях / последние N), дисциплина и последние матчи.
Профиль лиги: средние голы, доля П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 }
Погода на стадионе новое
Погода в момент матча по координатам стадиона: температура и «ощущается», осадки и их вероятность,
ветер и порывы, влажность, облачность, текстовое описание. Также доступна в блоке
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>
| Параметр | Описание |
|---|---|
tournament | id турнира (обязательный) |
theme | light (по умолчанию) · dark |
title | 0 — скрыть заголовок (для своей вёрстки) |
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) |
status | scheduled · live · finished |
round_num / round_name | тур / название стадии |
venue | площадка (стадион) |
lineup_confirmed | false — предварительный состав, true — официальный, null — нет |
extra | счёт по периодам (period_scores), сезон, тур, время начала текстом |
weather | погода на стадионе (см. ниже) |
Стороны и счёт — participants
| Поле | Описание |
|---|---|
participant_id / name / name_ru | команда или игрок, локализованное имя |
side | home / away |
score | итоговый счёт стороны |
image_url | логотип / фото |
События матча — incidents
Голы, карточки (жёлтые/красные), замены, VAR, пенальти, начало/конец таймов и др. — по всей истории.
| Поле | Описание |
|---|---|
minute / minute_plus | минута (+добавленное) |
period | тайм / период |
kind | тип события (goal, card, subst, var, penalty …) |
side | сторона |
player_name / assist_name | игрок и ассистент |
payload | детали (тип карточки, счёт после события, описание) |
Статистика матча — statistics
Владение, удары (всего/в створ), угловые, фолы, офсайды, передачи, отборы, сейвы и десятки метрик; по таймам и за весь матч.
| Поле | Описание |
|---|---|
period | ALL / 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
| Поле | Описание |
|---|---|
type | team / player |
name_i18n / country / gender | имя (EN/RU), страна, пол |
birth_date | дата рождения (игроки) |
image_url | логотип / фото |
extra | стадион, амплуа, рост и др. (где доступно) |
Аналитика (вычисляемое)
Поверх данных доступны вычисляемые блоки — форма и тренды, очные встречи, профиль лиги, модель Пуассона с вероятностями и «справедливыми» кэфами, value-сигналы. См. Предматчевую аналитику и Тренды.