Alybet Odds API – Client Integration

Access real-time betting odds from Winner.bet, Betika, and Superbet through a unified REST API. No authentication required.

Overview

Base URL:https://alybet.io

Features

  • Real-time odds from 3 bookmakers (10,000+ matches)
  • Structured JSON with version tracking
  • Filter by bookmaker (winner, betika, superbet)
  • Health monitoring and scraper statistics
  • Zero authentication – open access

Authentication

No authentication required. All endpoints are publicly accessible.

bash
curl https://alybet.io/api/v2/odds

Endpoints

All endpoints are relative to the Base URL above.

GET/api/v2/odds

All matches from all bookmakers (recommended)

Returns {version, matches[], matches_count} with odds {"1","X","2"}
GET/api/v2/odds?bookmaker=winner

Filter by bookmaker (winner, betika, superbet)

Returns only matches from the specified bookmaker
GET/api/stats

Scraper statistics and system health

Returns match counts, error counts, cache metrics per bookmaker
GET/api/capabilities

Endpoint discovery (call at startup)

Returns available endpoints, filters, and bookmaker list
GET/health

Simple health check for uptime monitoring

Returns {status: "ok"}

Polling Recommendations

Recommended

10-15 secondsLive odds tracking
30 secondsNormal usage / dashboards

Not Recommended

<5 secondsUnnecessary – data updates every 5-23s

Client Rules

DO

  • Use /api/v2/odds for all new integrations
  • Check the version field – only process when it changes
  • Call /api/capabilities at startup for discovery
  • Retry on 5xx errors with exponential backoff

DON'T

  • Poll faster than 5 seconds
  • Use the legacy /api/odds for new integrations
  • Assume match count is fixed – it varies by time of day

Response Format

Use the version field to detect changes.

Only process data when the version number increases. This avoids redundant work.

Success Response

json
{
  "version": 13500,
  "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": 10275
}

Error Response

json
{
  "error": "Bad Request",
  "message": "Unknown bookmaker: invalid"
}

Code Examples

cURL

bash
curl https://alybet.io/api/v2/odds | jq '.matches[0]'

Python (Polling Loop)

python
import requests
import time

BASE_URL = "https://alybet.io"
last_version = 0

while True:
    response = requests.get(f"{BASE_URL}/api/v2/odds", timeout=10)

    if response.status_code == 200:
        data = response.json()
        if data["version"] != last_version:
            last_version = data["version"]
            print(f"v{last_version}: {data['matches_count']} matches")
            for m in data["matches"][:3]:
                odds = m["odds"]
                print(f"  {m['home']} vs {m['away']}  1:{odds['1']}  X:{odds['X']}  2:{odds['2']}")

    time.sleep(15)

JavaScript/Node.js

javascript
const BASE_URL = "https://alybet.io";
let lastVersion = 0;

async function pollOdds() {
  const res = await fetch(`${BASE_URL}/api/v2/odds`);
  const data = await res.json();

  if (data.version !== lastVersion) {
    lastVersion = data.version;
    console.log(`v${lastVersion}: ${data.matches_count} matches`);
    data.matches.slice(0, 3).forEach(m =>
      console.log(`  ${m.home} vs ${m.away}  1:${m.odds["1"]}  X:${m.odds["X"]}  2:${m.odds["2"]}`)
    );
  }
}

setInterval(pollOdds, 15000);

Test Connection

Test your connection to the API directly from this page:

Common Errors & Solutions

HTTP CodeCauseSolution
200SuccessProcess the response normally
400Invalid bookmaker filterUse valid bookmaker: winner, betika, or superbet
404Endpoint not foundCheck /api/capabilities for available endpoints
500Server errorRetry with exponential backoff
504Gateway timeoutRetry after 5 seconds