Документация SportWire API
REST API к спортивным данным: расписание, live, события,
статистика, xG, составы, таблицы, предматчевая аналитика, погода, история и справочники. Базовый URL —
https://api.sportwire.ru. Все ответы — JSON в UTF-8; даты — ISO-8601 (UTC).
Обзор
Современный REST-интерфейс поверх единой модели данных:
- REST — эндпоинты
/v1/…, ключ в заголовкеX-API-Key.
Каждая сущность (матч, турнир, команда, игрок) — единая и недублированная; названия доступны на нескольких языках, включая русский (см. Локализация).
Аутентификация
API-ключ выдаётся мгновенно в личном кабинете (тариф Trial — бесплатно).
REST — заголовок X-API-Key:
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",
"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.
Турниры и лиги
Список турниров/лиг (опционально ?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=ВАШ_КЛЮЧ">
Матчи участника
Матчи конкретной команды/игрока (прошедшие и будущие), с пагинацией.
Трансферы beta
История трансферов участника. Для игрока — его переходы (откуда/куда, дата, тип, сумма);
для команды — входящие и исходящие. Параметр 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" } ] }
| Поле | Описание |
|---|---|
type | transfer · loan · loan_return · other |
from_team / to_team (+ _id) | клуб-источник и клуб-назначение |
fee / fee_currency | сумма сделки и валюта (где раскрыта) |
Страны
Список стран (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 с фильтрами:
| Параметр | Описание |
|---|---|
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" } }
Турнирные таблицы новое
Турнирная таблица сезона: позиция, игры, В/Н/П, забито/пропущено, очки. Параметр
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 } ] }
Бомбардиры новое
Список лучших бомбардиров сезона: место, игрок, команда, голы. 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 } ] }
Сетка плей-офф новое
Турнирная сетка (дерево кубка) для кубковых турниров: раунды → пары (команды, результат, счёт,
завершённость). 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 } ] } ] }
Рейтинги новое
Глобальные рейтинги. Параметр 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>
| Параметр | Описание |
|---|---|
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 : "погода"
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) |
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 | сыграл ли исход (для сыгранных матчей) |
Тренеры — coaches
Главные тренеры (менеджеры) по сторонам — имя и русский перевод. Доступно, где собран состав.
| Поле | Описание |
|---|---|
side | home / 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 | сторона, игрок, амплуа, номер |
status | injured · 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
| Поле | Описание |
|---|---|
type | team / player |
name_i18n / country / gender | имя (EN/RU), страна, пол |
birth_date | дата рождения (игроки) |
image_url | логотип / фото |
extra | стадион, амплуа, рост и др. (где доступно) |
Аналитика (вычисляемое)
Поверх данных доступны вычисляемые блоки — форма и тренды, очные встречи, профиль лиги, модель Пуассона с вероятностями и «справедливыми» кэфами, value-сигналы. См. Предматчевую аналитику и Тренды.