Quoten-Momentaufnahme
Eine Momentaufnahme aktueller Quoten von Sportwettenanbietern abrufen.
GET /api/v1/oddsAuthentifizierung
Erfordert einen API key. Verfügbar für alle Tarife.
Welche Sportwettenanbieter in Ihren Ergebnissen zurückgegeben werden, hängt von Ihrem Abonnement-Tarif ab. Nutzer des Free-Tarifs erhalten ausschließlich Quoten von DraftKings und FanDuel. Siehe Anbieterzugang nach Tarif weiter unten.
Geändert in v3.0.0: Die Quotenantwort führt jetzt ein einziges timestamp-Feld (Auslieferung / Feed-Aktualität, passend zu OpticOdds). Die früheren Felder odds_changed_at, last_seen_at und wire_received_at wurden entfernt — lesen Sie stattdessen timestamp. Es gibt kein Feld mehr dafür, wann sich der Preis zuletzt bewegt hat.
Query-Parameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
sportsbook | string | tarifabhängig | Kommagetrennte Sportwettenanbieter-IDs (z. B. draftkings,fanduel). Tarif-Limits werden durchgesetzt. |
sport | string | alle | Filter nach Sportart(en), kommagetrennt (z. B. basketball, football). Unterstützt Kategorie-Aliase. |
league | string | alle | Filter nach Liga(en), kommagetrennt (z. B. nba, nfl, nhl) |
market | string | alle | Filter nach Markttyp(en), kommagetrennt. Unterstützt Kategorie-Aliase (main, spread, total, props) oder exakte Typen (point_spread, player_points). |
event | string | — | Filter nach Event-ID(s), kommagetrennt |
live | boolean | — | true = nur live, false = nur Prematch, weglassen = beides |
sort | string | — | Sortierfeld mit optionalem --Präfix für absteigend (z. B. -odds_american, odds_probability) |
fields | string | alle | Kommagetrennte Feldnamen, die in der Antwort enthalten sein sollen (z. B. id,sportsbook,odds_american) |
min_odds | number | — | Filter für minimale American Odds (z. B. -110) |
max_odds | number | — | Filter für maximale American Odds (z. B. +200) |
group_by | string | — | Ergebnisse nach Feld gruppieren (z. B. event) |
state | string | — | US-Bundesstaatscode für Sportwettenanbieter-Deeplinks (z. B. nj, ny, il). Wenn gesetzt, enthalten deep_link-URLs ?state=XX, sodass die Weiterleitung auf die korrekte bundesstaatsspezifische Sportwettenanbieter-Domain zielt. Betrifft nur Anbieter mit bundesstaatsabhängigen URLs (BetMGM, Caesars, BetRivers). |
limit | integer | 50 | Maximale Ergebnisse pro Seite (max. 200) |
offset | integer | 0 | Paginierungs-Offset. Muss ≤ 500 sein. Werte über 500 geben 400 offset_too_large zurück — verwenden Sie cursor für tiefere Paginierung. Kann doppelte Zeilen erzeugen, wenn sich Live-Daten zwischen Anfragen aktualisieren. |
cursor | string | — | Undurchsichtiger Cursor aus next_cursor einer vorherigen Antwort. Erforderlich für tiefe Paginierung (über Offset 500 hinaus) und empfohlen für jeden mehrseitigen Scan — stabil gegenüber Live-Datenänderungen. Hat Vorrang vor offset, wenn beide angegeben sind. |
Verwenden Sie kommagetrennte Werte, um nach mehreren Sportwettenanbietern zu filtern: sportsbook=draftkings,fanduel,betmgm
Markt-Kategorie-Aliase
Anstatt einzelne Markttypen aufzulisten, können Sie einen Kategorie-Alias verwenden, um eine Gruppe verwandter Märkte abzugleichen. Aliase und exakte Typen können in einer kommagetrennten Liste beliebig kombiniert werden.
| Alias | Erweitert zu |
|---|---|
main | moneyline, point_spread, total_points |
spread | point_spread, puck_line, run_line, set_handicap |
total | total_points, total_goals, total_runs, total_games, total_rounds, team_total |
props | Alle player_*-Markttypen (Präfix-Match) |
# Alle "main"-Märkte abrufen (moneyline + spreads + totals)
curl "https://api.sharpapi.io/api/v1/odds?league=nba&market=main" \
-H "X-API-Key: YOUR_API_KEY"
# Alias mit exaktem Typ kombinieren
curl "https://api.sharpapi.io/api/v1/odds?league=nfl&market=spread,moneyline" \
-H "X-API-Key: YOUR_API_KEY"
# Alle Player-Prop-Märkte
curl "https://api.sharpapi.io/api/v1/odds?league=nba&market=props" \
-H "X-API-Key: YOUR_API_KEY"Der props-Alias verwendet einen Präfix-Match, sodass automatisch alle Markttypen einbezogen werden, die mit player_ beginnen (z. B. player_points, player_rebounds, player_assists, player_strikeouts usw.).
Beispielanfragen
cURL
curl -X GET "https://api.sharpapi.io/api/v1/odds?league=nba&sportsbook=draftkings&market=moneyline" \
-H "X-API-Key: YOUR_API_KEY"Paginierung
Verwenden Sie cursorbasierte Paginierung für mehrseitige Scans. Der /odds-Endpoint liefert Live-Daten, die etwa alle 15 Sekunden aktualisiert werden. Bei offsetbasierter Paginierung können Zeilen zwischen Anfragen ihre Position ändern, was an Seitengrenzen zu Duplikaten führt. Cursorbasierte Paginierung verankert jede Seite am zuletzt gesehenen Element — keine Drift.
Jede Antwort enthält sowohl next_cursor (stabil) als auch next_offset (Legacy) im pagination-Objekt. Verwenden Sie für sequenzielle Vollscans des Datensatzes immer next_cursor.
# Erste Seite — kein Cursor erforderlich
curl "https://api.sharpapi.io/api/v1/odds?league=nfl&limit=200" \
-H "X-API-Key: YOUR_API_KEY"
# Folgeseiten — next_cursor aus der vorherigen Antwort übergeben
curl "https://api.sharpapi.io/api/v1/odds?league=nfl&limit=200&cursor=eyJlIjoiMzM0ODMxNTMiLCJiIjoiZHJhZnRraW5ncyIsIm0iOiJtb25leWxpbmUiLCJpIjoiZHJhZnRraW5nc18zMzQ4MzE1M19tb25leWxpbmVfUEhJIn0" \
-H "X-API-Key: YOUR_API_KEY"Cursor sind undurchsichtig — parsen oder konstruieren Sie sie nicht. Sie kodieren die Sortierposition des letzten Elements der aktuellen Seite und sind nur für dieselben Filterparameter gültig.
?offset=N funktioniert weiterhin für flache Paginierung (bis Offset 500) und ist für Einzelseitenanfragen oder direkten Positionszugriff geeignet. Über 500 hinaus gibt die API 400 offset_too_large zurück — der Server müsste sonst bei jeder Seite das gesamte gefilterte Ergebnis sortieren, was sich viel günstiger vermeiden als pro Anfrage optimieren lässt. Verwenden Sie für tiefere Zugriffe cursor.
{
"error": {
"code": "offset_too_large",
"message": "offset must be <= 500; use `cursor=` from the previous response for deeper pagination",
"max_offset": 500
}
}Antwort
Erfolg (200)
{
"success": true,
"data": [
{
"id": "draftkings_33483153_moneyline_PHO",
"sportsbook": "draftkings",
"event_id": "33483153",
"sport": "basketball",
"league": "nba",
"home_team": "PHI 76ers",
"away_team": "PHO Suns",
"market_type": "moneyline",
"selection": "PHO Suns",
"selection_type": "away",
"odds_american": -150,
"odds_decimal": 1.667,
"odds_probability": 0.60,
"line": null,
"event_start_time": "2026-01-26T19:00:00Z",
"timestamp": "2026-01-26T02:10:24.125Z",
"is_live": false
},
{
"id": "draftkings_33483153_moneyline_PHI",
"sportsbook": "draftkings",
"event_id": "33483153",
"sport": "basketball",
"league": "nba",
"home_team": "PHI 76ers",
"away_team": "PHO Suns",
"market_type": "moneyline",
"selection": "PHI 76ers",
"selection_type": "home",
"odds_american": 130,
"odds_decimal": 2.30,
"odds_probability": 0.4348,
"line": null,
"event_start_time": "2026-01-26T19:00:00Z",
"timestamp": "2026-01-26T02:10:24.125Z",
"is_live": false
}
],
"meta": {
"count": 2,
"total": 3095,
"books_available": ["draftkings", "fanduel", "betmgm", "caesars", "pinnacle"],
"books_returned": ["draftkings"],
"pagination": {
"limit": 50,
"offset": 0,
"has_more": true,
"next_offset": 50,
"next_cursor": "eyJlIjoiMzM0ODMxNTMiLCJiIjoiZHJhZnRraW5ncyIsIm0iOiJtb25leWxpbmUiLCJpIjoiZHJhZnRraW5nc18zMzQ4MzE1M19tb25leWxpbmVfUEhJIn0"
},
"updated_at": "2026-01-26T02:10:37.846Z",
"filters": {
"league": "nba",
"sportsbook": "draftkings",
"market": "moneyline"
}
}
}Antwort-Header
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 299
X-RateLimit-Reset: 1737853200
X-Data-Delay: 0
X-Request-Id: req_abc123def456| Header | Beschreibung |
|---|---|
X-RateLimit-Limit | Maximale Anfragen pro Minute für Ihren Tarif |
X-RateLimit-Remaining | Verbleibende Anfragen im aktuellen Zeitfenster |
X-RateLimit-Reset | Unix-Zeitstempel, wann das Rate Limit zurückgesetzt wird |
X-Data-Delay | Datenverzögerung in Sekunden (0 für Echtzeit, 60 für Free-Tarif) |
X-Request-Id | Eindeutige Anfrage-Kennung zur Fehlersuche |
Fehlerantworten
401 Unauthorized
{
"error": {
"code": "unauthorized",
"message": "Invalid or missing API key",
"docs": "https://docs.sharpapi.io/en/authentication"
}
}403 Tier Restricted
{
"error": {
"code": "tier_restricted",
"message": "Sportsbook 'pinnacle' requires Sharp tier or higher",
"docs": "https://docs.sharpapi.io/en/pricing"
}
}429 Rate Limited
{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded. Retry after 45 seconds.",
"docs": "https://docs.sharpapi.io/en/authentication#rate-limits"
}
}Schema des Quoten-Objekts
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Eindeutige Quoten-Kennung |
sportsbook | string | Sportwettenanbieter-ID (z. B. draftkings) |
event_id | string | Event-Kennung |
sport | string | Sportart-Slug (z. B. basketball, football) |
league | string | Liga-Slug (z. B. nba, nfl) |
home_team | string | Name der Heimmannschaft |
away_team | string | Name der Auswärtsmannschaft |
market_type | string | moneyline, spread, total, player_prop usw. |
selection | string | Die Auswahl (Mannschaftsname, Over/Under, Spielername) |
selection_type | string | Kanonische Seiten-Kennung. Siehe Selektionstypen unten für die vollständige Aufzählung, einschließlich zusammengesetzter Formen (z. B. home_over), die auf Mehrachsen-Märkten emittiert werden. |
team_side | string|undefined | Roher Team-Seiten-Hinweis aus dem Adapter — einer aus home, away, draw. Nützlich, wenn selection_type einen zusammengesetzten Wert (z. B. home_over) trägt und Sie nur die Team-Achse ohne Parsing möchten. Fehlt, wenn der Adapter ihn nicht gesetzt hat. |
odds_american | number | American Odds (z. B. -110, +150) |
odds_decimal | number | Dezimalquoten (z. B. 1.909) |
odds_probability | number | Implizite Wahrscheinlichkeit (z. B. 0.5238) |
line | number | null | Spread- oder Total-Linienwert (null bei Moneyline) |
is_alternate_line | boolean|undefined | true, wenn das line dieser Zeile von der kanonischen Hauptlinie für ihre (event, market_type, player)-Gruppe abweicht. Immer false für Märkte ohne Linie (Moneyline, Outright). Stabil auf /opportunities/ev heute; Rollout auf /odds-Zeilen läuft. Verwenden Sie es, um Haupt- und Alternativlinien-Snapshots zu trennen. |
event_start_time | string | ISO 8601 Event-Startzeit |
timestamp | string | ISO-8601-Zeitpunkt, zu dem SharpAPI diese Quote zuletzt durch seine Pipeline aktualisiert hat — wird in jedem Ingest-Zyklus weitergeschaltet. Ein Feed-Aktualitäts- / Liveness-Signal (entspricht OpticOdds’ timestamp); es ist NICHT der Zeitpunkt, zu dem sich der Preis zuletzt geändert hat. |
is_live | boolean | Ob das Event derzeit live läuft |
event_uuid | string|undefined | Stabile kanonische Event-UUID aus dem SharpAPI-Atlas, sofern das Event gemappt ist. Während event_id die primäre Event-Kennung des Adapters trägt (oft die des ursprünglichen Sportwettenanbieters), ist event_uuid ein feed-stabiler Hash für Cross-Feed-Joins. Fehlt bei nicht gemappten Events. |
external_event_id | string|undefined | Die native Event-ID des Sportwettenanbieters, sofern sie sich von event_id unterscheidet. Nützlich, um Zeilen in die UI oder API des Sportwettenanbieters zurückzuverknüpfen. |
deep_link | string|undefined | Auflösungs-URL, die auf die Event- oder Wettschein-Seite des Sportwettenanbieters zeigt. Übergeben Sie state= (z. B. state=nj) in der Anfrage, um über staatsspezifische Subdomains zu routen, sofern die Buchmacher diese benötigen (BetMGM, Caesars, BetRivers). |
market_id | string|undefined | Native Markt-Kennung des Sportwettenanbieters. Einige Buchmacher legen keine offen — fehlt, wenn unbekannt. |
selection_id | string|undefined | Native Selektions-/Outcome-Kennung des Sportwettenanbieters. Einige Buchmacher legen keine offen — fehlt, wenn unbekannt. |
player_name | string|undefined | Spielername (nur bei Player-Prop-Märkten) |
stat_category | string|undefined | Statistikkategorie, z. B. points, rebounds (nur bei Player-Prop-Märkten) |
home_pitcher | string|undefined | Nur MLB. Heim-Starter-Pitcher, sofern vom Buchmacher veröffentlicht. |
away_pitcher | string|undefined | Nur MLB. Auswärts-Starter-Pitcher, sofern vom Buchmacher veröffentlicht. |
public_bet_pct | number|undefined | Öffentlicher Wetttickets-Prozentsatz (0.0-1.0). Derzeit nur BetMGM. |
max_bet | number|undefined | Maximaler Einsatzbetrag (USD) für diesen Markttyp. Derzeit nur Pinnacle. |
volume | number|undefined | Gematchtes Volumen auf dieser Selektion. Nur Wettbörsen (Betfair, Novig, ProphetX, Polymarket). Einheiten folgen dem ursprünglichen Buchmacher (z. B. gematchter Einsatz bei Betfair, Aktien-Volumen bei Vorhersagemärkten). |
volume_24h | number|undefined | Gematchtes Volumen der letzten 24 Stunden auf dieser Selektion. Nur Wettbörsen. |
open_interest | number|undefined | Offenes Interesse (gematchter Einsatz / aktuell gehaltene Aktien) auf dieser Selektion. Nur Wettbörsen. |
polymarket_resolution | string|undefined | Nur Polymarket. UMA Optimistic-Oracle-Resolutionsstatus, sobald der Markt beendet ist — einer aus settled_normal, voided, disputed, proposed, unknown. Fehlt bei laufenden Polymarket-Märkten und bei allen Nicht-Polymarket-Buchmachern. |
Selektionstypen
selection_type trägt die kanonische Seiten-Kennung für jede selection. Die meisten Märkte sind zweiseitig (z. B. Moneyline, Point Spread, Total) und emittieren einen der einfachen Werte unten. Eine kleine Menge an Mehrachsen-Märkten (Fußball Doppelchance, BTTS-kombiniert, Ergebnis × O/U, MMA Round Betting, Tennis Set Betting, korrekter Endstand usw.) kodiert zwei Outcomes pro Selektion und emittiert zusammengesetzte Werte, die mit _ verbunden sind.
| Familie | Werte | Wo sie erscheinen |
|---|---|---|
| Zweiseitig (Team-Seite) | home, away | moneyline, point_spread, puck_line, run_line, team_total, set_handicap, die meisten Periodenmärkte |
| Zweiseitig (Linien-Richtung) | over, under | total_points, total_goals, total_runs, total_games, total_rounds, team_total, alle player_*_o_u-Props |
| Zweiseitig (Ja/Nein) | yes, no | binary, Prop-artige Ja/Nein-Märkte, Börsen-”Back/Lay”-Ausgänge, Polymarket-Vorhersagemärkte |
| Zweiseitig (Parität) | even, odd | Total-Paritätsmärkte (z. B. Total-Punkte gerade/ungerade) |
| Dreiseitig | draw | Dreiseitige Moneyline (Fußball 1X2), komplementäre Seite des Draw-No-Bet, “Kein Tor” bei next_goal |
| Zusammengesetzt (Team × O/U) | home_over, home_under, away_over, away_under | Fußball match_result_total_goals (“Team A und Über N.5”) und analoge Ergebnis-plus-Total-Märkte |
| Zusammengesetzt (Team × BTTS) | home_yes, home_no, away_yes, away_no, draw_yes, draw_no | Fußball match_result_both_teams_to_score |
| Zusammengesetzt (Doppelchance) | home_draw, away_draw, home_away | Fußball double_chance (1X / X2 / 12) und MMA-Doppelchance |
| Zusammengesetzt (Runde / Methode) | home_r1, home_r2, home_decision, away_r1 usw. | MMA round_betting und Method-of-Victory-Märkte |
| Auffangwert | other | game_prop, “Kein Tor” bei next_goal und jede Selektion, bei der der kanonische Seiten-Mapper das Outcome nicht sauber zerlegen kann. Immer in geringem Volumen vorhanden; behandeln Sie ihn als opak. |
Parsing zusammengesetzter Werte. Zusammengesetzte selection_type-Strings verbinden die Team-Achse (home / away / draw) stets mit einem einzelnen Unterstrich mit der sekundären Achse. Um nur die Team-Achse ohne Parsing zu erhalten, lesen Sie team_side — es ist die rohe vom Adapter gesetzte Seite für dieselbe Zeile.
Long-Tail-Märkte emittieren zusätzliche Formen. Märkte wie correct_score (z. B. "2_1"), set_betting (z. B. "0_2"), winning_margin, halftime_fulltime, first_goal und anytime_goal kodieren Score-Level- oder zusammengesetzte Outcomes direkt in selection_type. Wenn Sie auf ein geschlossenes Enum angewiesen sind, filtern Sie auf die Familien oben und behandeln Sie jeden unbekannten Wert als opak — werfen Sie keinen Fehler.
Sortierung
Verwenden Sie den sort-Parameter, um Ergebnisse nach einem beliebigen Feld zu ordnen. Mit - als Präfix für absteigende Reihenfolge.
# Sortieren nach besten American Odds (absteigend)
curl "https://api.sharpapi.io/api/v1/odds?league=nba&sort=-odds_american" \
-H "X-API-Key: YOUR_API_KEY"
# Sortieren nach odds_probability (aufsteigend)
curl "https://api.sharpapi.io/api/v1/odds?league=nba&sort=odds_probability" \
-H "X-API-Key: YOUR_API_KEY"
# Sortieren nach Event-Startzeit
curl "https://api.sharpapi.io/api/v1/odds?sort=event_start_time" \
-H "X-API-Key: YOUR_API_KEY"Gültige Sortierfelder: odds_american, odds_decimal, odds_probability, event_start_time, timestamp, sportsbook, league, sport.
Feldauswahl
Verwenden Sie den fields-Parameter, um nur bestimmte Felder zurückzugeben und so die Nutzlast zu verringern.
# Nur id, sportsbook und American Odds zurückgeben
curl "https://api.sharpapi.io/api/v1/odds?league=nba&fields=id,sportsbook,odds_american" \
-H "X-API-Key: YOUR_API_KEY"Die Antwort enthält dann nur die angeforderten Felder für jedes Quoten-Objekt:
{
"data": [
{
"id": "draftkings_33483153_moneyline_PHO",
"sportsbook": "draftkings",
"odds_american": -150
}
]
}Filterung nach Quotenbereich
Verwenden Sie min_odds und max_odds, um nach American-Odds-Wert zu filtern.
# Nur Plus-Money-Quoten zurückgeben (+100 und höher)
curl "https://api.sharpapi.io/api/v1/odds?league=nba&min_odds=100" \
-H "X-API-Key: YOUR_API_KEY"
# Nur Quoten zwischen -200 und +200 zurückgeben
curl "https://api.sharpapi.io/api/v1/odds?league=nba&min_odds=-200&max_odds=200" \
-H "X-API-Key: YOUR_API_KEY"Nach Event gruppierte Antwort
Verwenden Sie group_by=event, um Quoten nach Event statt als flache Liste zu gruppieren. Dies ist nützlich für den Aufbau eventzentrischer UIs.
curl "https://api.sharpapi.io/api/v1/odds?league=nba&group_by=event" \
-H "X-API-Key: YOUR_API_KEY"{
"data": [
{
"event_id": "33483153",
"event_name": "PHI 76ers vs PHO Suns",
"sport": "basketball",
"league": "nba",
"start_time": "2026-01-26T19:00:00Z",
"is_live": false,
"odds": [
{
"id": "draftkings_33483153_moneyline_PHO",
"sportsbook": "draftkings",
"market_type": "moneyline",
"selection": "PHO Suns",
"selection_type": "away",
"odds_american": -150,
"odds_decimal": 1.667,
"odds_probability": 0.60,
"line": null,
"timestamp": "2026-01-26T02:10:24.125Z"
}
]
}
],
"meta": {
"group_by": "event",
"books_available": 5,
"filters": { "league": "nba" },
"updated_at": "2026-01-26T02:10:37.846Z"
}
}Anbieterzugang nach Tarif
Welche Sportwettenanbieter in Ihren Quotenergebnissen enthalten sind, hängt von Ihrem Abonnement-Tarif ab:
| Tarif | Verfügbare Anbieter | Enthaltene Sportwettenanbieter |
|---|---|---|
| Free | 2 | DraftKings, FanDuel |
| Hobby | 5 | + BetMGM, Caesars, theScore Bet |
| Pro | 15 | + Bet365, BetRivers und weitere |
| Sharp | Alle 32 | Alle verfügbaren Sportwettenanbieter |
| Enterprise | Alle 32 | Alle verfügbaren Sportwettenanbieter |
Pinnacle (Sharp Book) erfordert Sharp-Tarif oder höher. Die Anfrage sportsbook=pinnacle in einem Free-, Hobby- oder Pro-Tarif gibt einen 403 tier_restricted-Fehler zurück.
Filterbeispiele
# Live-NBA-Quoten von allen verfügbaren Anbietern abrufen
curl "https://api.sharpapi.io/api/v1/odds?league=nba&live=true" \
-H "X-API-Key: YOUR_API_KEY"
# Moneyline- und Spread-Quoten für ein bestimmtes Event abrufen
curl "https://api.sharpapi.io/api/v1/odds?event=33483153&market=moneyline,spread" \
-H "X-API-Key: YOUR_API_KEY"
# Durch alle NFL-Spread-Quoten paginieren (verwenden Sie next_cursor aus jeder Antwort)
curl "https://api.sharpapi.io/api/v1/odds?league=nfl&market=spread&limit=200" \
-H "X-API-Key: YOUR_API_KEY"Verwandte Endpoints
- Odds Delta - Nur Quoten abrufen, die sich seit einem bestimmten Zeitstempel geändert haben
- Best Odds - Die besten Quoten über alle Anbieter hinweg für jede Auswahl abrufen
- Odds Comparison - Quoten anbieterübergreifend nebeneinander vergleichen
- Batch Odds - Quoten für mehrere Events in einer Anfrage abrufen
- Markets - Verfügbare Markttypen auflisten
- Sportsbooks - Verfügbare Sportwettenanbieter und ihren Status auflisten