GET historical-odds

Эндпоинт

GET /v4/historical-odds

Параметры запроса

  • fixtureId* (string) ID матча, для которого нужно получить исторические коэффициенты.
  • bookmakers* (string) Список slug букмекеров, разделённых запятыми (макс. 3), для фильтрации результатов. Пример: pinnacle,bet365
  • id (number) (Необязательно) Уникальный ID конкретной записи исторических коэффициентов для фильтрации.
  • playerId (number) (Необязательно) playerId, связанный с коэффициентами, чтобы сузить результаты.
  • outcomeId (number) (Необязательно) outcomeId, чтобы отфильтровать коэффициенты по конкретному исходу.
  • active (boolean) (Необязательно) Фильтр по тому, активна ли запись коэффициентов в данный момент.

Заголовки запроса

  • If-None-Match (string) (Необязательно) Передайте ETag из предыдущего ответа, чтобы выполнить условный запрос. Если ответ был бы идентичным, сервер вернёт 304 Not Modified с пустым телом вместо повторной отправки полезной нагрузки. Работает только для фикстур, которые завершены или отменены (см. «Условные запросы» ниже).

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

GET /v4/historical-odds?fixtureId=id1000000758265379

Пример ответа

{
  "fixtureId": "id1000000758265379",
  "bookmakers": {
    "pinnacle": {
      "markets": {
        "101": {
          "outcomes": {
            "101": {
              "players": {
                "0": [
                  {
                    "createdAt": "2025-04-16T21:12:10.506331+00:00",
                    "price": 9.11,
                    "limit": 1191.25,
                    "active": false,
                    "exchangeMeta": null
                  },
                  {
                    "createdAt": "2025-04-16T20:50:58.321847+00:00",
                    "price": 9.11,
                    "limit": 1191.25,
                    "active": true,
                    "exchangeMeta": null
                  }
                ]
              }
            }
          }
        },
        "10168": {
          "outcomes": {
            "10168": {
              "players": {
                "0": [
                  {
                    "createdAt": "2025-04-16T20:16:45.057806+00:00",
                    "price": 1.729,
                    "limit": 13072.7023319616,
                    "active": false,
                    "exchangeMeta": null
                  },
                  {
                    "createdAt": "2025-04-16T20:16:18.597131+00:00",
                    "price": 1.729,
                    "limit": 13072.7023319616,
                    "active": true,
                    "exchangeMeta": null
                  },
                  {
                    "createdAt": "2025-04-16T20:15:51.441377+00:00",
                    "price": 1.699,
                    "limit": 13633.7625178827,
                    "active": true,
                    "exchangeMeta": null
                  }
                ]
              }
            }
          }
        }
      }
    }
  }
}

Ответ (200 OK)

При успешном запросе сервер возвращает код статуса 200 и возвращает map от fixtureId к вложенной истории коэффициентов по букмекерам..

  • bookmakers (object) Коэффициенты, сгруппированные по slug букмекера
    • markets (object) Каждый матч содержит объекты рынков с исходами.
    • outcomes (object) ID исходов с данными по игрокам.
    • players (object) Игроки с данными по коэффициентам, включающими:
      • id (number) Уникальный идентификатор записи исторических коэффициентов.
      • createdAt (string) Время создания записи исторических коэффициентов.
      • price (number) Цена (коэффициент), предлагаемая букмекером.
      • limit (number) Максимально допустимая ставка для этих коэффициентов.
      • active (boolean) Показывает, активны ли эти коэффициенты в данный момент.
      • exchangeMeta (object|null) Метаданные биржи, если применимо, включая цены back и lay.

Заголовки ответа (только для завершённых/отменённых фикстур)

  • ETagКороткая непрозрачная строка, идентифицирующая текущее тело ответа. Пример: "a1b2c3d4e5f6a7b8".
  • Cache-Control private, max-age=259200 (3 дня).

Ответ (304 Not Modified)

Возвращается, если запрос содержит заголовок If-None-Match, значение которого совпадает с текущим ETag для данной фикстуры и комбинации фильтров. Ответ имеет пустое тело; клиент должен повторно использовать ранее закэшированную полезную нагрузку.

Условные запросы

Для завершённых или отменённых фикстур ответ детерминирован, поэтому каждый ответ 200 содержит заголовок ETag. Клиенты, многократно опрашивающие одну и ту же фикстуру, могут кэшировать тело локально и отправлять If-None-Match: <etag> в последующих запросах, чтобы избежать повторной передачи и разбора неизменённой полезной нагрузки:

GET /v4/historical-odds?fixtureId=id1000000758265379&bookmakers=pinnacle
→ 200 OK
  ETag: "a1b2c3d4e5f6a7b8"
  Cache-Control: private, max-age=259200
  { "fixtureId": "...", "bookmakers": { ... } }

GET /v4/historical-odds?fixtureId=id1000000758265379&bookmakers=pinnacle
If-None-Match: "a1b2c3d4e5f6a7b8"
→ 304 Not Modified
  ETag: "a1b2c3d4e5f6a7b8"

ETag привязан к конкретному ответу, поэтому он меняется при изменении параметров запроса (bookmakers, фильтры). Для идущих и предстоящих фикстур ETag не выдаётся, поскольку их история коэффициентов всё ещё пополняется; условные запросы на такие фикстуры обслуживаются как обычный 200 с полным телом.

Примечания

  • Задержка эндпоинта (лимит запросов): 5000ms (ответ 304 также учитывается в этом лимите).
  • Все исторические данные коэффициентов начиная с января 2026 года доступны.
Предыдущая страницаGET odds by tournaments
Следующая страницаGET settlements
Сообщить о проблеме
OddsPapi | Документация GET historical odds