Wett-Splits
Öffentliche Wett-Splits (Handle % und Bet %) von DraftKings, Circa Sports und BetMGM abrufen.
GET /api/v1/splitsAuthentifizierung
Erfordert API-Schlüssel. Erfordert Pro-Tarif ($229/Monat) oder höher.
Was sind Wett-Splits?
Handle % ist der Prozentsatz des gesamten gewetteten Geldes auf jeder Seite. Bet % ist der Prozentsatz der gesamten Tickets (platzierten Wetten) auf jeder Seite.
Die Lücke zwischen Bet % und Handle % offenbart Sharp Money. Wenn 30 % der Tickets 60 % des Geldes ausmachen, sind Sharp-Bettors auf dieser Seite.
Datenquellen
| Quelle | Typ | Enthaltene Werte | Aktualisierungshäufigkeit |
|---|---|---|---|
| DraftKings | Recreational Book (~35 % US-Marktanteil) | Handle % und Bet % | Alle 5 Minuten |
| Circa Sports | Sharp-freundliches Buch (zieht Profis an) | Handle % und Bet % | Alle 5 Minuten |
| BetMGM | Recreational Book — abgeleitet aus dem eigenen Public-Bet-Prozentsatz-Feld | Nur Bet % — handle_pct-Werte sind null | Unregelmäßig |
Der Vergleich der Splits von DraftKings (recreational) vs. Circa (sharp) zeigt, wo professionelles Geld vom Publikum abweicht.
Die Abdeckung ist auf diese drei Bücher festgelegt. Sie wächst nicht mit dem Sportsbook-Kontingent Ihres Tarifs — mehr ausgewählte Bücher oder ein höherer Tarif fügen keine weiteren Splits-Quellen hinzu. Kein anderes Buch veröffentlicht Wett-Splits, und weitere sind nicht geplant. Da BetMGM nur einen Ticket-Prozentsatz liefert, lässt sich die Bet-%/Handle-%-Differenz, die Sharp Money offenlegt, ausschließlich für DraftKings- und Circa-Zeilen berechnen. Der Verlauf enthält innerhalb des 48-Stunden-Fensters erfasste Samples von DraftKings, Circa und BetMGM. BetMGM veröffentlicht nur Ticket-Prozentsätze; die Handle-Prozentsätze bleiben null.
consensus ist ein Label, kein Sportsbook. Wenn alle Quellen zu einem Event identische Zahlen melden, werden diese Zeilen zu einer einzigen Zeile mit "sportsbook": "consensus" zusammengefasst. Die API vergibt dieses Label synthetisch — es erscheint nie in /api/v1/sportsbooks, /splits?sportsbook=consensus filtert jedoch darauf. Zusammengefasste Zeilen werden von einem sportsbook=draftkings-Filter nicht zurückgegeben.
Query-Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
sport | string | Nach Sportart filtern (kommagetrennt). Beispiel: basketball |
league | string | Nach Liga filtern (kommagetrennt). Beispiel: nba,ncaab |
sportsbook | string | Nach Splits-Quelle filtern. Beispiel: draftkings,circa. Akzeptiert außerdem den synthetischen Wert consensus. |
event_id | string | Nach kanonischer Event-ID filtern (kommagetrennt) |
market | string | Filtert auf Events, die einen bestimmten Split-Markt führen (kommagetrennt). Eines oder mehrere von spread, total, moneyline. |
limit | integer | Maximale Ergebnisse (Standard 100, Maximum 200) |
offset | integer | Paginierungs-Offset (Standard 0) |
Antwort
{
"data": [
{
"event_id": "mlb_guardians_orioles_2026-04-16",
"sport": "baseball",
"league": "mlb",
"sportsbook": "draftkings",
"away_team": "Baltimore Orioles",
"home_team": "Cleveland Guardians",
"spread": {
"away_odds": -1.5,
"home_odds": 1.5,
"handle_pct": { "away": 0.22, "home": 0.78 },
"bets_pct": { "away": 0.20, "home": 0.80 }
},
"total": {
"line": 8,
"handle_pct": { "over": 0.53, "under": 0.47 },
"bets_pct": { "over": 0.57, "under": 0.43 }
},
"moneyline": {
"away_odds": 104,
"home_odds": -126,
"handle_pct": { "away": 0.28, "home": 0.72 },
"bets_pct": { "away": 0.33, "home": 0.67 }
},
"fetched_at": "2026-04-16T19:25:28.363825+00:00",
"available_metrics": ["bets_pct", "handle_pct"]
}
],
"pagination": {
"limit": 100,
"offset": 0,
"count": 1,
"total": 41,
"has_more": false,
"next_offset": null
},
"updated_at": "2026-04-16T19:29:38.920698424Z"
}In der /splits-Antwort führt der Spread Linien-Werte innerhalb der Schlüssel away_odds/home_odds (z. B. -1.5 / +1.5) — die Feldbenennung ist eine bekannte Inkonsistenz. Der historische Endpoint verwendet away_line/home_line für dieselben Daten.
Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
event_id | string | Kanonische Event-ID — verwenden Sie diese, um sie mit /odds-Daten zu verknüpfen |
sport | string | Atlas-normalisierter Sportname |
league | string | Atlas-normalisierter Liganame |
sportsbook | string | Quell-Sportsbook für die Splits-Daten (draftkings, circa, betmgm oder der synthetische Wert consensus) |
away_team | string | Name des Auswärtsteams |
home_team | string | Name des Heimteams |
spread.away_odds | number | Auswärts-Spread-Linien-Wert (z. B. -1.5) — siehe Hinweis oben |
spread.home_odds | number | Heim-Spread-Linien-Wert (z. B. +1.5) |
spread.handle_pct | object | Geld-% auf jeder Seite (away, home; 0.0-1.0) |
spread.bets_pct | object | Ticket-% auf jeder Seite (away, home; 0.0-1.0) |
total.line | number | Over/Under-Linie (z. B. 225.5) |
total.handle_pct | object | Geld-% (over, under; 0.0-1.0) |
total.bets_pct | object | Ticket-% (over, under; 0.0-1.0) |
moneyline.away_odds | number | Auswärts-Moneyline-Quoten (amerikanisches Format) |
moneyline.home_odds | number | Heim-Moneyline-Quoten (amerikanisches Format) |
moneyline.handle_pct | object | Geld-% auf jeder Seite (away, home; 0.0-1.0) |
moneyline.bets_pct | object | Ticket-% auf jeder Seite (away, home; 0.0-1.0) |
fetched_at | string | ISO-8601-Zeitstempel, wann die Daten zuletzt erfasst wurden |
available_metrics | array | Welche Split-Metriken der Sportsbook dieser Zeile überhaupt veröffentlicht — bets_pct, handle_pct oder beide, immer in dieser Reihenfolge. Eine Aussage über den Sportsbook, nicht über die Werte dieser Zeile. Entfällt, wenn der Sportsbook nicht erklärt ist — siehe unten. |
Welche Werte null sein können — und welche Schlüssel ganz fehlen können. Die oben genannten Prozentsatz- und Quoten-Schlüssel sind immer vorhanden, einige enthalten aber statt einer Zahl null. Zwei Schlüssel können ganz fehlen, statt null zu führen: total.line fehlt bei einem Event, für das die Buchmacher-Seite kein Total veröffentlicht hat, und available_metrics fehlt bei einem Buch, das SharpAPI nicht erklärt hat — lies beide mit einem Standardwert, statt ihr Vorhandensein vorauszusetzen.
handle_pct.away / .home (und .over / .under bei Totals) sind in jeder betmgm-Zeile null, da BetMGM nur einen Ticket-Prozentsatz veröffentlicht — es gibt keine Handle-Zahl. bets_pct-Werte sind null, wenn die Quelle für diesen Markt noch keinen Prozentsatz gemeldet hat; der BetMGM-Feed ist unregelmäßig, daher tritt das dort auf. moneyline.away_odds / .home_odds sind null, wenn eine Buchmacher-Seite die Moneyline für ein Event zurückgezogen hat, die Split-Prozentsätze aber weiter veröffentlicht — das kommt auch bei DraftKings- und Circa-Zeilen vor, nicht nur bei BetMGM. Die OpenAPI-Spezifikation deklariert all dies als nullable, ein generierter Client akzeptiert die Werte also.
Das Feld event_id verwendet dasselbe kanonische ID-Format wie der /odds-Endpoint, sodass Sie Splits direkt mit Odds-Daten verknüpfen können.
Beispielsweise können Sie Quoten für ein bestimmtes Spiel abrufen und mit dessen Splits vergleichen:
GET /api/v1/odds?event_id=nba_thunder_timberwolves_2026-03-15
GET /api/v1/splits?event_id=nba_thunder_timberwolves_2026-03-15/odds enthält kein zeilenweises öffentliches Bet %.
Wettdaten-Splits (Geld-% und Ticket-%) sind nur über diesen Endpoint (/splits) und dessen historische Variante (/splits/history) verfügbar. Das Feld public_bet_pct existiert nicht in /odds-Zeilen.
available_metrics lesen
Eine Splits-Zeile kann available_metrics enthalten, ein Array mit den Split-Metriken, die der Sportsbook dieser Zeile überhaupt veröffentlicht. Es beschreibt den Sportsbook, nicht die Zeile: Ein Buch, das den Geldanteil veröffentlicht, führt handle_pct weiterhin auf, auch wenn die handle_pct-Member dieser Zeile null sind.
Es können nur zwei Namen auftreten, immer in dieser Reihenfolge, und jeder ist exakt ein Schlüssel innerhalb der Objekte spread, total und moneyline — ein Name hier verweist also auf ein Feld, das Sie nachschlagen können:
bets_pct— Anteil der Tickets (platzierte Wetten), 0.0-1.0handle_pct— Anteil des Geldes (Handle), 0.0-1.0
Das Feld entfällt vollständig, wenn SharpAPI nicht erklärt hat, was ein Buch veröffentlicht. Fehlt es, bedeutet das nicht angegeben — niemals veröffentlicht nichts.
Lesen Sie die Liste zusammen mit dem Wert. Am Beispiel von handle_pct:
available_metrics | handle_pct-Member | Bedeutung |
|---|---|---|
vorhanden, führt handle_pct auf | Zahlen | Das Buch veröffentlicht den Geldanteil und wir haben ihn. |
vorhanden, führt handle_pct auf | null | Das Buch veröffentlicht den Geldanteil und uns fehlt er — eine Lücke auf unserer Seite, keine Einschränkung des Buchs. |
vorhanden, führt handle_pct nicht auf | null | Das Buch veröffentlicht keinen Geldanteil. Es ist nichts kaputt. |
vorhanden, führt handle_pct nicht auf | Zahlen | Sollte nicht vorkommen; behandeln Sie es als veraltete Angabe und vertrauen Sie dem Wert. |
| fehlt | Zahlen oder null | Über dieses Buch ist nichts angegeben. Leiten Sie nichts ab — lesen Sie die Werte für sich, und vermerken Sie das Buch nicht als „veröffentlicht nichts“. |
Eine consensus-Zeile führt die Schnittmenge. Eine zusammengeführte Zeile mit "sportsbook": "consensus" fasst mehrere Bücher zusammen, ihre Aussage muss also für jedes einzelne gelten: Sie führt nur die Metriken auf, die alle beitragenden Bücher erklären, und lässt das Feld ganz weg, wenn eines davon nicht erklärt ist.
Beispiele
Alle NBA-Splits
curl "https://api.sharpapi.io/api/v1/splits?league=nba" \
-H "X-API-Key: YOUR_API_KEY"Splits-Verlauf
Verfolgen Sie, wie sich Splits im Laufe der Zeit für ein bestimmtes Event verschieben.
GET /api/v1/splits/history?event_id={event_id}Query-Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
event_id | string | Ja | Kanonische Event-ID |
sportsbook | string | Nein | Nach Buch filtern (kommagetrennt), vor der Seiteneinteilung. |
start_time | string | Nein | Untere Grenze. RFC 3339 (2026-04-16T13:00:00Z) oder Unix-Sekunden (1776344602). |
end_time | string | Nein | Obere Grenze, gleiche Formate. |
limit | integer | Nein | Maximale Einträge (Standard 100, Maximum 200). |
cursor | string | Nein | Fortsetzungstoken aus meta.next_cursor; Event-, Buch- und Zeitfilter unverändert lassen. |
Die Aufbewahrung beträgt nur 48 Stunden. Es gibt kein langfristiges Archiv und keine Wiederherstellung außerhalb dieses Fensters. Folgen Sie meta.next_cursor, solange meta.has_more true ist. meta.total, books, oldest und newest beschreiben die aktuelle Seite; meta.limit ist die effektive Seitengröße (Standard 100, maximal 200; größere Werte werden auf 200 begrenzt). Verwenden Sie für einen festen Zeitraum auf jeder Seite denselben end_time. Ungültige Zeitangaben oder unpassende Cursor liefern 400; vorübergehende Speicherfehler liefern 503.
Antwort
Einträge werden vom ältesten zuerst sortiert. Dieser Endpoint gibt den Erfolgs-Envelope (success/data/meta) aus — abweichend von /splits, das data/pagination/updated_at ausgibt.
Die Verlaufs-Payload verwendet book (nicht sportsbook) und der Spread führt away_line/home_line (nicht away_odds/home_odds). Beides sind bekannte Inkonsistenzen gegenüber /splits. Jeder Eintrag enthält außerdem available_metrics mit derselben Bedeutung wie bei /splits: die Metriken, die das Buch dieses Eintrags überhaupt veröffentlicht. Bei einem nicht erklärten Buch entfällt das Feld.
Verlaufswerte können fehlen. Prozentwerte können null sein; BetMGM veröffentlicht keine Handle-Prozentsätze. Linien und Quoten können fehlen oder null sein. available_metrics nennt die vom Buch veröffentlichten Metriken; prüfen Sie einzelne Marktwerte auf fehlende oder Null-Werte.
{
"success": true,
"data": [
{
"available_metrics": ["bets_pct", "handle_pct"],
"book": "circa",
"ts": "2026-04-16T13:03:21.071966+00:00",
"timestamp": 1776344602.36,
"spread": {
"away_line": -1.5,
"home_line": 1.5,
"handle_pct": { "away": 0.37, "home": 0.63 },
"bets_pct": { "away": 0.27, "home": 0.73 }
},
"total": {
"line": 8,
"handle_pct": { "over": 0.43, "under": 0.57 },
"bets_pct": { "over": 0.55, "under": 0.45 }
},
"moneyline": {
"away_odds": 104,
"home_odds": -126,
"handle_pct": { "away": 0.35, "home": 0.65 },
"bets_pct": { "away": 0.35, "home": 0.65 }
}
}
],
"meta": {
"event_id": "mlb_guardians_orioles_2026-04-16",
"total": 1,
"books": ["circa"],
"limit": 100,
"has_more": false,
"next_cursor": "",
"oldest": "2026-04-16T13:03:22.360588312Z",
"newest": "2026-04-16T13:03:22.360588312Z",
"updated_at": "2026-04-16T19:28:50.525875452Z"
}
}Daten werden alle ~5 Minuten erfasst und für 48 Stunden über ein Valkey-Sorted-Set (splits_history:{event_id}), bewertet nach Unix-Zeitstempel, aufbewahrt.
Vollständiger Verlauf
curl "https://api.sharpapi.io/api/v1/splits/history?event_id=nba_thunder_timberwolves_2026-03-15" \
-H "X-API-Key: YOUR_API_KEY"Splits interpretieren
| Signal | Was es bedeutet |
|---|---|
| Bet % hoch, Handle % niedrig | Public-Seite — viele kleine Wetten |
| Bet % niedrig, Handle % hoch | Sharp-Seite — weniger, aber größere Wetten |
| DK und Circa stimmen überein | Marktkonsens — sowohl Publikum als auch Sharps ausgerichtet |
| DK und Circa weichen ab | Sharp-Public-Split — Circa (sharp) ist anderer Meinung als DK (public) |
Splits stammen ausschließlich von drei Büchern — DraftKings und BetMGM (recreational) sowie Circa (sharp-nah). Kein echtes Sharp Book veröffentlicht Splits, und weitere Quellen sind nicht geplant. Verwenden Sie Splits als ein Signal zusammen mit Linienbewegung und +EV-Analyse, nicht isoliert.