Real-time betting odds. Zero auth. Stable polling API.
curl https://alybet.io/api/v2/odds | jq '.matches[0]'
// alybet.js
const BASE = "https://alybet.io";
export async function getOdds(bookmaker) {
const url = bookmaker
? `${BASE}/api/v2/odds?bookmaker=${bookmaker}`
: `${BASE}/api/v2/odds`;
const res = await fetch(url);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
return await res.json();
}
// Usage:
// const data = await getOdds();
// const winner = await getOdds("winner");
let lastVersion = 0;
setInterval(async () => {
const data = await (await fetch('https://alybet.io/api/v2/odds')).json();
if (data.version !== lastVersion) {
lastVersion = data.version;
// process data.matches
}
}, 15000);
| Endpoint | When to use | Status |
|---|---|---|
| /api/v2/odds | Production — all new integrations | REQUIRED |
| /api/odds | Legacy clients only | DEPRECATED |
| /api/capabilities | Startup discovery | OPTIONAL |
| /health | Monitoring / uptime checks | OPTIONAL |
| /api/stats | Internal debugging | OPTIONAL |
{
"version": 8,
"matches": [
{
"id": "superbet_11521552",
"sport": "football",
"bookmaker": "Superbet",
"home": "Lech Poznan",
"away": "Gornik Zabrze",
"league": "Ekstraklasa",
"odds": { "1": 2.10, "X": 3.40, "2": 3.20 },
"start_time": 1772722800,
"updated": 1770477003
}
],
"matches_count": 150
}
| Field | Type | Notes |
|---|---|---|
| id | string | {bookmaker}_{source_id} |
| sport | string | Currently "football" |
| bookmaker | string | Betika, Superbet, or Winner |
| home / away | string | Team names (empty entries excluded) |
| league | string | "Unknown" if unavailable |
| odds | object | {"1": home, "X": draw, "2": away} |
| start_time | number|null | Unix ts, null if unknown |
| updated | number | Unix ts of last data update |
| HTTP | Meaning | Action |
|---|---|---|
| 200 | Success | Process response |
| 404 | Not found | Check /api/capabilities |
| 500 | Server error | Retry with exponential backoff |
| 504 | Timeout | Retry after 5s |