GET historical-odds

Endpoint

GET /v4/historical-odds

Anforderungsparameter

  • fixtureId* (string) Fixture-ID, um historische Quoten abzurufen.
  • bookmakers* (string) Komma-getrennte Liste von Buchmacher-Slugs (max 3), um die Ergebnisse zu filtern. Beispiel: pinnacle,bet365
  • id (number) (Optional) Die eindeutige ID eines bestimmten historischen Quoten-Eintrags zum Filtern.
  • playerId (number) (Optional) Die playerId, die mit den Quoten verknüpft ist, um die Ergebnisse einzugrenzen.
  • outcomeId (number) (Optional) Die outcomeId, um die Quoten für ein bestimmtes Ergebnis zu filtern.
  • active (boolean) (Optional) Filtern basierend darauf, ob der Quoten-Eintrag derzeit aktiv ist.

Request-Header

  • If-None-Match (string) (Optional) Senden Sie das ETag einer vorherigen Antwort zurück, um eine bedingte Anfrage zu stellen. Wäre die Antwort identisch, gibt der Server 304 Not Modified mit leerem Body zurück, statt die Nutzlast erneut zu senden. Nur wirksam für Fixtures, die beendet oder abgebrochen sind (siehe „Bedingte Anfragen“ unten).

Beispielanfrage

GET /v4/historical-odds?fixtureId=id1000000758265379

Beispielantwort

{
  "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
                  }
                ]
              }
            }
          }
        }
      }
    }
  }
}

Antwort (200 OK)

Bei einer erfolgreichen Anfrage antwortet der Server mit einem Statuscode 200 und gibt eine Map von fixtureId zu verschachtelten Buchmacher-Quoten-Historie zurück..

  • bookmakers (object) Quoten gruppiert nach Buchmacher-Slug
    • markets (object) Jede Begegnung enthält Marktobjekte mit Ergebnissen.
    • outcomes (object) Ergebnis-IDs mit Spieldaten.
    • players (object) Spieler mit Quoten-Daten, die enthalten:
      • id (number) Die eindeutige Kennung für den historischen Quoten-Eintrag.
      • createdAt (string) Der Zeitstempel, als der historische Quoten-Eintrag erstellt wurde.
      • price (number) Der Preis (Quoten), der angeboten wird.
      • limit (number) Der maximal erlaubte Einsatz für die Quoten.
      • active (boolean) Ob die Quoten derzeit aktiv sind.
      • exchangeMeta (object|null) Exchange-Metadaten, falls zutreffend, einschließlich Back- und Lay-Preisen.

Response-Header (nur für beendete/abgebrochene Fixtures)

  • ETagEine kurze undurchsichtige Zeichenkette, die den aktuellen Antwort-Body identifiziert. Beispiel: "a1b2c3d4e5f6a7b8".
  • Cache-Control private, max-age=259200 (3 Tage).

Antwort (304 Not Modified)

Wird zurückgegeben, wenn die Anfrage einen If-None-Match-Header enthält, dessen Wert dem aktuellen ETag für diese Fixture und Filterkombination entspricht. Die Antwort hat einen leeren Body; der Client sollte die zuvor zwischengespeicherte Nutzlast erneut verwenden.

Bedingte Anfragen

Für beendete oder abgebrochene Fixtures ist die Antwort deterministisch, daher enthält jede 200-Antwort einen ETag-Header. Clients, die dieselbe Fixture wiederholt abfragen, können den Body lokal zwischenspeichern und bei nachfolgenden Anfragen If-None-Match: <etag> senden, um eine unveränderte Nutzlast nicht erneut übertragen und parsen zu müssen:

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"

Der ETag ist an die exakte Antwort gebunden und ändert sich daher, wenn sich Query-Parameter (Bookmaker, Filter) ändern. Laufende und bevorstehende Fixtures geben keinen ETag aus, da ihre Quotenhistorie noch wächst; bedingte Anfragen auf solchen Fixtures werden als normale 200-Antwort mit vollständigem Body ausgeliefert.

Notizen

  • Endpunkt-Cooldown (Rate Limit): 5000ms (eine 304-Antwort zählt ebenfalls auf dieses Limit).
  • Alle historischen Quotendaten seit Januar 2026 sind verfügbar.
Nächste SeiteGET settlements
Problem melden
OddsPapi | Docs GET historical odds