Sharp-Tarif · REST · JSON
API-Dokumentation
Die Daten deines Dashboards als JSON, mit denselben Filtern (deine Buchmacher, sonst die deines Landes und die internationalen): Gelegenheiten des letzten Scans (ein Scan pro Minute), Surebets, Kombiwetten und die fairen Wahrscheinlichkeiten jedes Spiels (alle 5 Minuten aktualisiert). Basis-URL: https://proba.bet.
Authentifizierung
Erstelle einen Schlüssel unter Einstellungen → API (Sharp-Tarif, max. 3 aktive Schlüssel). Sende ihn im Header Authorization: Bearer. Der Parameter ?api_key= wird für Tabellenkalkulationen akzeptiert, ist aber nicht empfohlen: Der Schlüssel landet dann in Logs und im Verlauf. Der Schlüssel wird einmal angezeigt; wir speichern nur seinen SHA-256-Hash.
curl -H "Authorization: Bearer pb_live_xxxxxxxx" "https://proba.bet/api/v1/me"{ "plan": "sharp", "daily_limit": 20000, "remaining_today": 19999 }Kontingent
20.000 Anfragen pro Schlüssel und Tag (UTC), zurückgesetzt um 00:00 UTC. Jede erfolgreiche Antwort enthält X-RateLimit-Limit und X-RateLimit-Remaining (eine 429 ebenfalls, mit Retry-After). Die Gelegenheiten ändern sich höchstens einmal pro Minute (Quoten britischer Buchmacher: alle 1 bis 2 Minuten), die Wahrscheinlichkeiten der Spiele alle 5 Minuten: Häufiger abzufragen ist sinnlos.
Endpunkte
| Endpoint | Parameter | Liefert |
|---|---|---|
GET /api/v1/me | — | plan, daily_limit, remaining_today |
GET /api/v1/opportunities | kind=value|surebet|combo (Standard value) · min_ev (Bruchteil; Vorteil bei value, Standard 0,02; Gewinn bei surebet, Standard 0,005; bei combo ignoriert) · sport (ohne Wirkung bei combo) · limit (≤ 1000, Standard 300) | kind, count, generated_at, data[] (event_id, sport_key, home, away, commence_time, market_key, outcome, point, book, book_title, price, link, fair_prob, fair_odds, ev, ev_expected, kelly, grade, flags, alt_books, exchange, first_seen, published_at… ; surebet : profit, legs[] ; combo : legs[]) |
GET /api/v1/matches | sport · hours (1–96, Standard 96; Turnier- oder Rennsieger bis 14 Tage) · limit (≤ 1000, Standard 600) — oder id=<event_id>: eine Zeile pro Ausgang (market_key, line, outcome, point, fair_prob, fair_odds) | count, generated_at, data[] (event_id, home, away, commence_time, p_home, p_draw, p_away, total_line, p_over, p_under, source, matched, thin, kind, updated_at) |
Beispiel: Value Bets
curl -H "Authorization: Bearer pb_live_xxxxxxxx" \
"https://proba.bet/api/v1/opportunities?kind=value&min_ev=0.02&sport=soccer_epl&limit=50"{
"kind": "value", "count": 12, "generated_at": "2026-09-19T21:03:44.120Z",
"data": [{
"event_id": "0ab3…", "sport_key": "soccer_epl", "home": "Arsenal", "away": "Chelsea", "commence_time": "2026-09-20T15:00:00+00:00",
"market_key": "h2h", "outcome": "Draw", "point": null,
"book": "unibet_fr", "book_title": "Unibet (FR)", "price": 3.60, "link": "https://…",
"fair_prob": 0.2914, "fair_odds": 3.43, "ev": 0.0490, "ev_expected": 0.0294, "kelly": 0.0113, "grade": "A", "flags": [],
"alt_books": [{ "book": "betclic_fr", "price": 3.55, "ev": 0.0344, "ev_expected": 0.0206, "grade": "A" }],
"first_seen": "2026-09-19T21:01:40+00:00", "published_at": "2026-09-19T21:02:41+00:00"
}]
}Zurückgegeben werden nur Wetten, die bei deinen Buchmachern (Einstellungen) spielbar sind – ohne eigene Auswahl bei denen deines Landes und den internationalen –; bei einer Surebet alle ihre Beine. book / price / ev bezeichnen das beste Angebot über alle Buchmacher: Nimm deins aus book oder alt_books. Grade A = Babeths Auswahl (im öffentlichen Track Record verfolgt); B = veröffentlicht mit Flags; C = vor dem Wetten prüfen. ev_expected = Anteil des Vorteils, der zur Schlussquote erwartet wird (Grundlage des Einsatzes); kelly = volles Kelly auf ev_expected; published_at = Zeitpunkt des Scans; first_seen = erstes Auftreten. Datumsangaben in ISO 8601 UTC.
Beispiel: Match-Wahrscheinlichkeiten
curl -H "Authorization: Bearer pb_live_xxxxxxxx" "https://proba.bet/api/v1/matches?sport=soccer_epl&hours=48"
curl -H "Authorization: Bearer pb_live_xxxxxxxx" "https://proba.bet/api/v1/matches?id=0ab3c9d1"Fehler
400— ungültiger Parameter (kind, id, sport)401 missing_or_invalid_api_key— Authorization-Header fehlt oder Schlüssel falsch formatiert401 unknown_api_key— Schlüssel unbekannt oder widerrufen403 plan_required:sharp— das Konto des Schlüssels ist nicht im Sharp-Tarif429 daily_quota_exceeded— Tageskontingent erreicht — wird um 00:00 UTC zurückgesetzt500 internal_error— interner Fehler, versuche es erneut503 upstream_unavailable— Daten vorübergehend nicht verfügbar (/matches), versuche es in einer Minute erneut
Webhooks
Statt die API abzufragen, lass Babeth sich bei dir melden: Gib unter Einstellungen → Webhook eine öffentliche HTTPS-URL ein und lass „Alerts aktivieren“ eingeschaltet. Jede neue Auswahl-Wette bei deinen Buchmachern (dieselben Filter wie deine Alerts, Ruhezeit inbegriffen) wird per POST mit deinem Einsatz geschickt. Ein fehlgeschlagener Aufruf (Zeitüberschreitung, Status außerhalb von 2xx, Weiterleitung) wird beim nächsten Scan wiederholt; nach 5 Fehlschlägen pausiert die Zustellung 10 Minuten. Eine Wette kann ausnahmsweise zweimal ankommen: Dedupliziere über event_id + market_key + outcome + point.
POST https://example.com/proba (Settings → Webhook)
Content-Type: application/json
X-Proba-Event: picks | test
X-Proba-Signature: sha256=<HMAC-SHA256(secret, body)>
{
"event": "picks", "sent_at": "2026-09-20T09:00:12Z", "user_id": "…",
"picks": [{
"event_id": "0ab3…", "sport_key": "soccer_epl", "home": "Arsenal", "away": "Chelsea", "commence_time": "2026-09-20T15:00:00Z",
"sport_title": "EPL", "market_key": "h2h", "outcome": "Draw", "point": null,
"book": "unibet_fr", "book_title": "Unibet (FR)", "price": 3.60, "link": "https://…", "book_url": "https://…",
"fair_prob": 0.2914, "fair_odds": 3.43, "min_odds": 3.50, "ev": 0.049, "ev_expected": 0.0294, "grade": "A",
"stake": 3, "currency": "EUR", "exchange": null
}]
}Prüfe die Signatur, bevor du dem Payload vertraust:
# Node.js
const sig = req.headers["x-proba-signature"]; // "sha256=…"
const mac = crypto.createHmac("sha256", SECRET).update(rawBody).digest("hex");
const a = Buffer.from(sig || ""), b = Buffer.from("sha256=" + mac);
const ok = a.length === b.length && crypto.timingSafeEqual(a, b);
# Python
ok = hmac.compare_digest(sig, "sha256=" + hmac.new(SECRET.encode(), raw_body, hashlib.sha256).hexdigest())Antworte mit 2xx innerhalb von 5 Sekunden, ohne Weiterleitung. Das Event `test` kommt vom Button „Test senden“.
Bedingungen
Persönliche Nutzung oder eigene Tools. Kein Weiterverkauf der Daten, keine öffentliche Weiterverbreitung. Schlüssel können jederzeit in den Einstellungen widerrufen werden. Entscheidungshilfe-Daten, keine Gewinngarantie.
Brauchst du die API?
Der Sharp-Tarif enthält die API, Linienbewegungen, mehrere Bankrolls und den vollständigen Vergleich.