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

# Метод `tournaments` — список турниров и чемпионатов


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

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

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

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

При пошаговой загрузке потребуются отдельные запросы:

```text
1. sports → получить sportId
2. countries → получить countryId
3. tournaments → получить tournamentId
4. events → получить матчи турнира
```

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

## Запрос

```http
GET https://YOUR_API_DOMAIN/v1/tournaments/{sportId}/{countryId}/{type}/{lang}
```

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

```http
Package: YOUR_API_KEY
```

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

| Параметр | Тип | Обязательный | Описание |
|---|---|---:|---|
| `sportId` | number | да | ID вида спорта, полученный из `sports` или `menu` |
| `countryId` | number | да | ID страны, полученный из `countries` или `menu` |
| `type` | string | да | Тип спортивной линии: `live` или `line` |
| `lang` | string | да | Язык названий. Язык должен поддерживаться API и входить в тариф клиента |

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

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

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

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

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

```http
GET https://YOUR_API_DOMAIN/v1/tournaments/{sportId}/{countryId}/live/ru?cybersport=true
```

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

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

В примере используются футбол (`sportId=1`) и Россия (`countryId=1`):

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

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

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

## Реальный пример ответа Live

В момент запроса для выбранных параметров был доступен один турнир, поэтому ниже
показан полный ответ без сокращений.

```json
{
  "status": 1,
  "page": "/v1/tournaments",
  "body": [
    {
      "id": 2916716,
      "name": "Чемпионат России. Молодежное первенство. Дивизион А",
      "counter": 1,
      "sport_id": 1,
      "countryId": 1
    }
  ]
}
```

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

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

```json
{
  "status": 1,
  "page": "/v1/tournaments",
  "body": [
    {
      "id": 176125,
      "name": "Кубок России",
      "counter": 8,
      "sport_id": 1,
      "countryId": 1
    },
    {
      "id": 225733,
      "name": "Чемпионат России. Премьер-лига",
      "counter": 18,
      "sport_id": 1,
      "countryId": 1
    },
    {
      "id": 30079,
      "name": "Чемпионат России. Премьер-лига. Статистика тура",
      "counter": 1,
      "sport_id": 1,
      "countryId": 1
    }
  ]
}
```

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

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

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

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

### Объект турнира

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

Обратите внимание на точное написание полей в JSON:

- ID вида спорта называется `sport_id`;
- ID страны называется `countryId` с заглавной буквой `I`.

Не заменяйте `countryId` на `country_id` при чтении ответа.

## Готовые иконки турниров

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

```text
https://cdn.sportapi.net/tournaments/v1/color/{tournamentId}.webp
```

Например, для турнира с `id: 118737`:

[https://cdn.sportapi.net/tournaments/v1/color/118737.webp](https://cdn.sportapi.net/tournaments/v1/color/118737.webp)

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

Объекты из массива `body` метода `tournaments` содержат те же поля, что и объекты
турниров внутри `menu` для выбранного вида спорта и страны.

Если вызвать методы в разное время, состав турниров и значения `counter` могут
отличаться, поскольку спортивная линия постоянно изменяется.

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

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

Для запроса матчей выбранного турнира понадобятся:

- `sportId` из выбранного вида спорта;
- `tournamentId` из поля `id` выбранного турнира;
- тип линии `live` или `line`;
- язык ответа.

При использовании `menu` нужные `sportId` и `tournamentId` уже находятся в одном
ответе, поэтому предварительные запросы `sports`, `countries` и `tournaments` не нужны.

Не запрашивайте матчи по заранее сохранённому `tournamentId`, не проверив актуальный
ответ `tournaments` или `menu`. Турнир возвращается только пока в нём есть доступные
матчи выбранного типа линии.

Если единственный матч турнира закончился, перешёл из Prematch в Live или исчез по
другой причине, этот турнир перестанет возвращаться в соответствующей выдаче. Передавайте
в `events` только `tournamentId` из актуальной навигационной цепочки.

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

Во всех примерах использованы футбол (`sportId=1`) и Россия (`countryId=1`).

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

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

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

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

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

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

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

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

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

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