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.
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",
"last_seen_at": "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",
"last_seen_at": "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 | home, away, over, under |
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) |
event_start_time | string | ISO 8601 Event-Startzeit |
last_seen_at | string | ISO 8601 Zeitstempel der letzten Beobachtung dieser Zeile durch unseren Adapter. Wird in jedem Ingest-Zyklus aktualisiert — dies ist das Pipeline-Frische-Signal. |
odds_changed_at | string | ISO 8601 Zeitstempel der quelleneigenen Aktualisierung des Sportwettenanbieters für diese Linie, sofern verfügbar. Bei Pinnacle wird er fortgeführt, solange Preis/Linie/is_live-Flag unverändert bleiben (siehe Pinnacles odds_changed_at verstehen). Verwenden Sie last_seen_at für die Pipeline-Frische. |
is_live | boolean | Ob das Event derzeit live läuft |
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) |
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. |
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, last_seen_at, 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,
"last_seen_at": "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