---
id: api-sports
title: Метод `sports` — список видов спорта
description: Описание метода sports для получения краткого списка доступных видов спорта.
version: v1
language: ru
---

# Метод `sports` — список видов спорта


## Рекомендация: обычно лучше использовать `menu`

Метод `sports` возвращает только список доступных видов спорта. Эти же данные уже
находятся на верхнем уровне ответа метода [`menu`](../menu.md).

Для обычной интеграции рекомендуется использовать `menu`, потому что за один запрос он
возвращает всю структуру:

```text
вид спорта → страна → турнир
```

Если использовать отдельные методы, ту же структуру придётся получать пошагово:

```text
1. sports → получить виды спорта
2. countries → выбрать страну для нужного вида спорта
3. tournaments → получить турниры выбранной страны
4. events → получить матчи выбранного турнира
```

Таким образом, перед запросом матчей выбранного турнира потребуются три навигационных
запроса вместо одного запроса `menu`.

Методы `sports`, `countries` и `tournaments` созданы как дополнительные. Используйте их,
если проекту действительно нужна пошаговая загрузка данных или только один уровень
спортивной структуры. Не используйте их автоматически вместо `menu` без необходимости.

## Когда отдельный метод `sports` может быть полезен

Метод подходит, если необходимо:

- получить только короткий список видов спорта;
- загрузить страны и турниры позже, после действия пользователя;
- реализовать интерфейс с пошаговой загрузкой разделов;
- выполнить отдельную задачу, для которой страны и турниры не нужны.

Если после списка видов спорта всё равно потребуются страны и турниры, используйте
`menu`.

## Запрос

```http
GET https://YOUR_API_DOMAIN/v1/sports/{type}/{lang}
```

API-ключ необходимо передавать в HTTP-заголовке:

```http
Package: YOUR_API_KEY
```

### Параметры пути

| Параметр | Тип | Обязательный | Описание |
|---|---|---:|---|
| `type` | string | да | Тип спортивной линии: `live` или `line` |
| `lang` | string | да | Язык названий. Язык должен поддерживаться API и входить в тариф клиента |

Значения параметра `type`:

| Значение | Какие данные возвращаются |
|---|---|
| `live` | Виды спорта, для которых сейчас доступны Live-матчи |
| `line` | Виды спорта, для которых доступны предстоящие Prematch-матчи |

### Необязательный query-параметр

| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
| `cybersport` | boolean | `false` | Переключает метод на список видов киберспорта |

Пример запроса киберспортивных данных:

```http
GET https://YOUR_API_DOMAIN/v1/sports/live/ru?cybersport=true
```

Сохранённые в этой документации полные ответы получены без query-параметров, то есть
при `cybersport=false`.

## Пример запроса Live

```bash
curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/sports/live/ru' \
  --header 'Package: YOUR_API_KEY'
```

## Пример запроса Prematch

```bash
curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/sports/line/ru' \
  --header 'Package: YOUR_API_KEY'
```

## Сокращённый пример ответа Live

Ниже показан фрагмент реального ответа. Значения сохранены без изменений, но массив
`body` сокращён до трёх видов спорта.

```json
{
  "status": 1,
  "page": "/v1/sports",
  "body": [
    {
      "id": 1,
      "name": "Футбол",
      "counter": 48
    },
    {
      "id": 2,
      "name": "Хоккей",
      "counter": 16
    },
    {
      "id": 3,
      "name": "Баскетбол",
      "counter": 22
    }
  ]
}
```

## Сокращённый пример ответа Prematch

Этот фрагмент также взят из реального ответа. Массив `body` сокращён.

```json
{
  "status": 1,
  "page": "/v1/sports",
  "body": [
    {
      "id": 1,
      "name": "Футбол",
      "counter": 2568
    },
    {
      "id": 2,
      "name": "Хоккей",
      "counter": 168
    },
    {
      "id": 3,
      "name": "Баскетбол",
      "counter": 103
    }
  ]
}
```

Значения `counter` показывают состояние линии только в момент получения ответа и
постоянно изменяются.

## Поля ответа

### Верхний уровень

| Поле | Тип | Описание |
|---|---|---|
| `status` | number | Статус выполнения запроса. В успешном ответе возвращается `1` |
| `page` | string | Название метода. Для `sports` возвращается `/v1/sports` |
| `body` | array | Массив доступных видов спорта |

### Объект вида спорта

| Поле | Тип | Описание |
|---|---|---|
| `id` | number | ID вида спорта. Используется как `sportId` в других методах |
| `name` | string | Название вида спорта на языке, указанном в `lang` |
| `counter` | number | Количество доступных матчей этого вида спорта |

## Готовые иконки видов спорта

Для каждого вида спорта можно использовать стандартную иконку SportAPI. Возьмите
значение поля `id` из ответа и подставьте его вместо `{sportId}`:

```text
https://cdn.sportapi.net/sports/v1/color/{sportId}.webp
```

Например, для вида спорта с `id: 1`:

[https://cdn.sportapi.net/sports/v1/color/1.webp](https://cdn.sportapi.net/sports/v1/color/1.webp)

## Связь с методом `menu`

Объекты из массива `body` метода `sports` имеют те же поля, что и объекты видов спорта
на верхнем уровне `body` метода `menu`:

| Поле | `sports` | `menu` |
|---|---:|---:|
| `id` | да | да |
| `name` | да | да |
| `counter` | да | да |
| `sub` со странами и турнирами | нет | да |

Список и счётчики относятся к состоянию линии на момент запроса. Если вызвать `sports`
и `menu` в разное время, значения `counter` и состав доступных видов спорта могут уже
измениться.

## Что делать с полученным `id`

После выбора вида спорта возьмите его поле `id`. В следующих URL этот идентификатор
обозначается как `sportId`.

При пошаговой схеме его нужно передать в метод `countries`, чтобы получить страны
выбранного вида спорта. Затем потребуется метод `tournaments`, и только после выбора
турнира можно запросить его матчи через `events`.

Если использовать `menu`, идентификаторы спорта, страны и турнира уже будут находиться
в одном ответе.

Не используйте заранее записанный `sportId`, не проверив текущий ответ `sports` или
`menu`. Метод возвращает только виды спорта, в которых сейчас есть доступные матчи. Если
завершился или исчез единственный матч определённого спорта, этот спорт не вернётся при
следующем запросе для соответствующего типа `live` или `line`.

При пошаговой навигации передавайте в `countries` только `sportId`, полученный из
актуального ответа `sports`.

## Снимок сохранённых ответов

| Тип линии | Русский ответ | Английский ответ |
|---|---:|---:|
| Live | 22 вида спорта | 22 вида спорта |
| Prematch (`line`) | 32 вида спорта | 32 вида спорта |

Это статистика конкретных ответов от 21 августа 2026 года, а не постоянный состав API.

Полные ответы без сокращений:

- [Live, русский язык](../../examples/json-responses/sports.live.ru.json)
- [Prematch, русский язык](../../examples/json-responses/sports.line.ru.json)
- [Live, английский язык](../../examples/json-responses/sports.live.en.json)
- [Prematch, английский язык](../../examples/json-responses/sports.line.en.json)

Файлы содержат только тело ответа API. API-ключ в них не сохраняется.

## Частота обновления

Рекомендуется запрашивать `sports`:

- Live — не чаще одного раза в 60 секунд;
- Prematch (`line`) — не чаще одного раза в 120 секунд.

Подробнее: [«Рекомендации по обновлению данных»](../../getting-started/update-guidelines.md).

Ошибки ключа, тарифа и параметров описаны в документе
[«Обработка ошибок»](../../getting-started/error-handling.md).
