Sharp plan · REST · JSON
API documentation
Everything the dashboard shows, as JSON: opportunities of the last scan (every 45 s), surebets, parlays and the fair probabilities of every match. Base URL: https://proba.bet.
Authentication
Create a key in Settings → API (Sharp plan, 3 active keys max). Send it as a Bearer token. The key is shown once; we only store its SHA-256 hash.
curl -H "Authorization: Bearer pb_live_xxxxxxxx" "https://proba.bet/api/v1/me"{ "plan": "sharp", "daily_limit": 20000, "remaining_today": 19999 }Quota
20,000 requests per key and per day (UTC). Each response carries X-RateLimit-Limit and X-RateLimit-Remaining. Data changes every 45 seconds: polling faster than that is pointless.
Endpoints
| Endpoint | Parameters | Returns |
|---|---|---|
GET /api/v1/me | — | plan, daily_limit, remaining_today |
GET /api/v1/opportunities | kind=value|surebet|combo · min_ev · sport · limit | count, data[] (event, market, outcome, book, price, fair_prob, ev, grade, alt_books, link…) |
GET /api/v1/matches | sport · hours (≤ 168) · limit — ou id=<event_id> | count, data[] (home, away, commence_time, p_home, p_draw, p_away, total_line, p_over, p_under, source, matched, thin, kind) |
Example: 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:44Z",
"data": [{
"event_id": "0ab3…", "sport_key": "soccer_epl", "home": "Arsenal", "away": "Chelsea", "commence_time": "2026-09-20T15:00:00Z",
"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, "grade": "A", "flags": [],
"alt_books": [{ "book": "betclic_fr", "price": 3.55, "ev": 0.0344, "grade": "A" }]
}]
}grade A = Babeth's selection (tracked in the public track record); B = published with flags; C = check before betting. alt_books lists the other bookmakers offering the same bet with an edge.
Example: match probabilities
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"Errors
401 missing_or_invalid_api_key— missing or unknown key403 plan_required:sharp— the key's account is not on the Sharp plan429 daily_quota_exceeded— daily quota reached — resets at 00:00 UTC
Webhooks
Instead of polling, let Babeth call you: in Settings → Webhook, enter an HTTPS URL. Every new selection bet at your bookmakers (same filters as your alerts) is POSTed once, with your stake. A failed call is retried at the next scan; after 5 failures, delivery pauses for 10 minutes.
POST https://votre-serveur.example/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",
"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, "min_odds": 3.50, "ev": 0.049, "grade": "A", "stake": 12, "currency": "EUR"
}]
}Verify the signature before trusting the payload:
# Node.js
const sig = req.headers["x-proba-signature"]; // "sha256=…"
const mac = crypto.createHmac("sha256", SECRET).update(rawBody).digest("hex");
const ok = sig === "sha256=" + mac;
# Python
ok = hmac.compare_digest(sig, "sha256=" + hmac.new(SECRET.encode(), raw_body, hashlib.sha256).hexdigest())Respond 2xx within 5 seconds. The `test` event comes from the “Send a test” button.
Terms
Personal use or your own tools. No resale of the data, no public redistribution. Keys can be revoked at any time from Settings. Decision-support data, no guarantee of winnings.
Need the API?
The Sharp plan includes the API, line moves, multiple bankrolls and the full comparator.