Real-time sports betting odds from multiple bookmakers
https://alybet.io
Always start by checking what endpoints are available:
curl https://alybet.io/api/capabilities
curl https://alybet.io/api/v2/odds
curl "https://alybet.io/api/v2/odds?bookmaker=winner"
/api/capabilities first to discover supported endpoints and filters. Do not hardcode endpoint lists - they may change.
Loading endpoints from server...
| Status Code | Meaning | Action |
|---|---|---|
| 200 | Success | Process response data |
| 400 | Bad Request | Check parameters (e.g., invalid bookmaker name) |
| 404 | Not Found | Endpoint not supported - check /api/capabilities |
| 500 | Server Error | Retry with exponential backoff |
| 503 | Service Unavailable | Backend temporarily unavailable, retry later |
/api/v2/odds for new integrations. It provides cleaner data with sport field, structured odds, null handling, and filtered empty entries.
{
"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 | Description |
|---|---|---|
| id | string | Unique match identifier (bookmaker_id format) |
| sport | string | Sport type (currently "football") |
| bookmaker | string | Source bookmaker name |
| home / away | string | Team names (entries with empty names are excluded) |
| league | string | League name ("Unknown" if not available) |
| odds | object | Odds map: {"1": home, "X": draw, "2": away} |
| start_time | number|null | Unix timestamp, or null if unknown |
| updated | number | Unix timestamp of last update |
{
"version": 8,
"matches": [
{
"id": "superbet_11521552",
"bookmaker": "Superbet",
"home": "Lech Poznan",
"away": "Gornik Zabrze",
"league": "",
"odds": [2.10, 3.40, 3.20],
"start_time": 0,
"updated": 1770477003
}
],
"matches_count": 150
}
sport field. Odds as array [home, draw, away] instead of map. Empty league as "" instead of "Unknown". Unknown start_time as 0 instead of null. Entries with empty team names are included.
{
"endpoints": [
"/api/odds",
"/api/v2/odds",
"/api/stats",
"/health",
"/monitor"
],
"filters": {
"/api/odds": ["bookmaker"],
"/api/v2/odds": ["bookmaker"]
},
"supported_bookmakers": [
"betika",
"superbet",
"winner"
],
"version": "1.0"
}
curl -X GET "https://alybet.io/api/v2/odds" \
-H "Accept: application/json"
const res = await fetch('https://alybet.io/api/v2/odds');
const data = await res.json();
console.log(`Found ${data.matches_count} matches`);
data.matches.forEach(match => {
console.log(`${match.home} vs ${match.away} (${match.sport})`);
console.log(` Odds: 1=${match.odds["1"]} X=${match.odds["X"]} 2=${match.odds["2"]}`);
});
import requests
response = requests.get('https://alybet.io/api/v2/odds')
data = response.json()
print(f"Found {data['matches_count']} matches")
for match in data['matches']:
odds = match['odds']
print(f"{match['home']} vs {match['away']} ({match['league']})")
print(f" 1={odds['1']} X={odds['X']} 2={odds['2']}")
curl -X GET "https://alybet.io/api/v2/odds?bookmaker=winner" \
-H "Accept: application/json"
const bookmaker = 'winner';
const res = await fetch(`https://alybet.io/api/v2/odds?bookmaker=${bookmaker}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
console.log(`${bookmaker}: ${data.matches_count} matches`);
import requests
params = {'bookmaker': 'winner'}
response = requests.get('https://alybet.io/api/v2/odds', params=params)
if response.status_code == 200:
data = response.json()
print(f"Winner odds: {data['matches_count']} matches")
else:
print(f"Error: HTTP {response.status_code}")
/api/capabilities response (changes infrequently)?bookmaker=) rather than client-side filtering/api/capabilities regularly for new endpoints and features. The version field indicates the current API version.