Piano Sharp · REST · JSON
Documentazione API
I dati della tua dashboard, in JSON, con gli stessi filtri (i tuoi bookmaker, altrimenti quelli del tuo paese e quelli internazionali): opportunità dell'ultima scansione (una scansione al minuto), surebet, multiple e probabilità giuste di ogni partita (aggiornate ogni 5 minuti). URL di base: https://proba.bet.
Autenticazione
Crea una chiave in Impostazioni → API (piano Sharp, massimo 3 chiavi attive). Inviala nell'header Authorization: Bearer. Il parametro ?api_key= è accettato per i fogli di calcolo, ma sconsigliato: la chiave finisce così nei log e nella cronologia. La chiave viene mostrata una sola volta; conserviamo solo il suo hash SHA-256.
curl -H "Authorization: Bearer pb_live_xxxxxxxx" "https://proba.bet/api/v1/me"{ "plan": "sharp", "daily_limit": 20000, "remaining_today": 19999 }Limite giornaliero
20.000 richieste per chiave e per giorno (UTC), azzerate alle 00:00 UTC. Ogni risposta riuscita contiene X-RateLimit-Limit e X-RateLimit-Remaining (anche una 429, con Retry-After). Le opportunità cambiano al massimo una volta al minuto (quote dei bookmaker britannici: ogni 1-2 minuti), le probabilità delle partite ogni 5 minuti: interrogare più spesso è inutile.
Endpoint
| Endpoint | Parametri | Restituisce |
|---|---|---|
GET /api/v1/me | — | plan, daily_limit, remaining_today |
GET /api/v1/opportunities | kind=value|surebet|combo (predefinito value) · min_ev (frazione; vantaggio per value, predefinito 0,02; profitto per surebet, predefinito 0,005; ignorato per combo) · sport (senza effetto su combo) · limit (≤ 1000, predefinito 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, predefinito 96; vincitori di torneo o di gara fino a 14 giorni) · limit (≤ 1000, predefinito 600) — oppure id=<event_id>: una riga per esito (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) |
Esempio: value bet
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"
}]
}Vengono restituite solo le scommesse giocabili sui tuoi bookmaker (Impostazioni) — in mancanza, su quelli del tuo paese e su quelli internazionali —; per una surebet, tutte le sue gambe. book / price / ev indicano la migliore offerta tra tutti i bookmaker: prendi la tua da book o alt_books. grade A = selezione di Babeth (tracciata nel track record pubblico); B = pubblicata con segnalazioni; C = da verificare prima di scommettere. ev_expected = parte del vantaggio attesa alla chiusura (base della puntata); kelly = Kelly pieno su ev_expected; published_at = ora della scansione; first_seen = prima comparsa. Le date sono in ISO 8601 UTC.
Esempio: probabilità delle partite
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"Errori
400— parametro non valido (kind, id, sport)401 missing_or_invalid_api_key— header Authorization mancante o chiave malformata401 unknown_api_key— chiave sconosciuta o revocata403 plan_required:sharp— l'account della chiave non è sul piano Sharp429 daily_quota_exceeded— limite giornaliero raggiunto — si azzera alle 00:00 UTC500 internal_error— errore interno, riprova503 upstream_unavailable— dati momentaneamente non disponibili (/matches), riprova tra un minuto
Webhook
Invece di interrogare l'API, lascia che sia Babeth a chiamarti: in Impostazioni → Webhook, inserisci un URL HTTPS pubblico e lascia attivo “Attiva gli avvisi”. Ogni nuova scommessa della selezione sui tuoi bookmaker (stessi filtri dei tuoi avvisi, ore di silenzio comprese) viene inviata (POST) con la tua puntata. Una chiamata fallita (timeout, codice fuori da 2xx, reindirizzamento) viene ritentata alla scansione successiva; dopo 5 fallimenti, l'invio si ferma per 10 minuti. Eccezionalmente una stessa scommessa può arrivare due volte: deduplica su 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
}]
}Verifica la firma prima di fidarti del payload:
# 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())Rispondi 2xx entro 5 secondi, senza reindirizzamento. L'evento `test` arriva dal pulsante “Invia un test”.
Condizioni
Uso personale o per i tuoi strumenti. Nessuna rivendita dei dati, nessuna ridistribuzione pubblica. Le chiavi possono essere revocate in qualsiasi momento dalle Impostazioni. Dati di supporto alle decisioni, nessuna garanzia di vincita.
Ti serve l'API?
Il piano Sharp include l'API, i movimenti di quota, più bankroll e il comparatore completo.