Przejdź do treści
← Oferta API ArbiScan

Dla integratorów · REST API v1

Dokumentacja API kursów bukmacherskich

Pobierz kursy prematch do własnej aplikacji, porównywarki lub modelu. Zacznij od jednego zapytania, a potem sprawdź dostępne źródła, rynki i czas obserwacji danych.

Opracowanie: zespół ArbiScan · kontrakt sprawdzony 17 września 2026

Pierwsze zapytanie: cURL i Python

Adres bazowy to https://api.arbiscan.pl/v1. Odczyt kursów wymaga aktywnego klucza w nagłówku X-API-Key. API ma oddzielny dostęp od planów PRO i ULTRA panelu ArbiScan.

  1. Załóż konto API i wybierz dostęp po zatwierdzeniu konta. Szczegóły cen i limitów znajdziesz w ofercie API Data i Data Plus.
  2. Zapisz swój klucz jako zmienną środowiskową ARBISCAN_API_KEY na serwerze. Nie umieszczaj go w adresie URL, repozytorium ani kodzie przeglądarki.
  3. Uruchom poniższe zapytanie. Przykłady korzystają z Twojego limitu odczytów.

cURL

curl --fail-with-body --get 'https://api.arbiscan.pl/v1/odds' \
  --header "X-API-Key: $ARBISCAN_API_KEY" \
  --data-urlencode 'limit=5'

Python 3, bez dodatkowych bibliotek

import json
import os
from urllib.request import Request, urlopen

request = Request(
    "https://api.arbiscan.pl/v1/odds?limit=5",
    headers={"X-API-Key": os.environ["ARBISCAN_API_KEY"]},
)
with urlopen(request, timeout=20) as response:
    data = json.load(response)

for event in data["events"]:
    print(event["id"], event["home_team"], event["away_team"])
    for bookmaker in event["bookmakers"]:
        print(bookmaker["key"], bookmaker["last_update"])

# To tylko pierwsza strona, nie cały feed.
print("Kolejna strona:", data.get("next_cursor"))

Odpowiedź zawiera events, a w wydarzeniu: id, drużyny, termin rozpoczęcia i listę bookmakers. Każdy bukmacher ma rynki z selekcjami i kursami. count dotyczy zwróconej strony, nie całego zbioru.

Betclic, STS, Superbet: jak sprawdzić zakres danych?

ArbiScan jest niezależnym dostawcą danych. To własne API ArbiScan, nie oficjalne API Betclic, STS ani Superbet. Nazwa operatora na stronie nie oznacza dostępności każdego jego rynku w dowolnej chwili.

GET /bookmakers
Lista bukmacherów ze świeżymi kursami w aktualnym feedzie.
GET /sports
Sporty obecne w bieżących danych prematch.
GET /leagues?sport=Football
Ligi dla wskazanego sportu. Wartości sportów pobierz z katalogu.
GET /markets
Katalog rynków; filtry sport, league i bookmaker. Do dalszych stron służy cursor.
GET /odds
Kursy i wydarzenia. Filtry: sport, league, bookmakers, markets, commence_from, commence_to.
GET /events/{event_id}
Szczegóły wydarzenia. Użyj identyfikatora z odpowiedzi API i zakoduj go jako segment URL.

Rzuty rożne, kartki i inne rynki

Zacznij od /markets, a następnie sprawdź konkretne wydarzenia w /odds. Katalog pokazuje obecny zakres, nie gwarancję kompletności dla wszystkich lig i meczów. Jeśli potrzebujesz rożnych lub kartek, podaj w briefie integracji bukmacherów, ligi, okres meczu i oczekiwane linie — pozwoli to ocenić dopasowanie danych przed zakupem.

Świeżość kursu to czas obserwacji, nie czas pobrania

last_update opisuje obserwację danych bukmachera, a last_seen obserwację wydarzenia. Samo HTTP 200 nie potwierdza świeżości ani dostępności kursu u operatora. Feed REST obejmuje prematch; nie traktuj go jako gwarantowanego feedu zakładów live.

GET /health działa bez klucza. Rozróżnia ok (proces i baza odpowiadają) od data_fresh oraz data_status (gotowość danych). Próg sprawdzisz w active_max_age_seconds.

W /odds możesz podać max_age_seconds od 60 do 900 sekund. Węższy próg może zwrócić mniej kursów albo pustą listę. Parametr include_stale nie jest obsługiwany — jego wysłanie daje HTTP 400. To nie jest sposób na pobranie archiwum.

Pobieranie wielu stron bez mieszania danych

limit w /odds przyjmuje 1–500; domyślnie 200. Gdy has_more jest prawdziwe, przekaż otrzymany next_cursor jako cursor kolejnego zapytania, zachowując filtry. Nie konstruuj kursora samodzielnie.

Jeżeli w trakcie pobierania zmieni się snapshot, API może zwrócić HTTP 409 z kodem snapshot_changed lub cursor_version_expired. Rozpocznij pobieranie od pierwszej strony i odrzuć niepełny poprzedni zestaw. Nie łącz stron z różnych snapshotów.

Historia obserwacji, WebSocket i podpisane webhooki należą do Data Plus. Sprawdź zakres endpointów i planów. Dostarczenie zmiany nie gwarantuje możliwości zawarcia zakładu po wskazanym kursie.

Błędy, limity i puste odpowiedzi

400
Sprawdź parametry, zakres dat i dozwolone wartości. Nie ponawiaj identycznego błędnego zapytania w pętli.
401
Brak prawidłowego, aktywnego klucza w X-API-Key. Sprawdź dostęp w panelu API; nie wysyłaj klucza w zgłoszeniu.
409
Snapshot lub wersja kursora się zmieniły. Rozpocznij paginację od nowa.
429
Osiągnięto limit. Odczytaj treść błędu i nagłówek Retry-After, jeśli występuje. Dla wyczerpanego limitu całkowitego samo czekanie może nie wystarczyć.
200, puste events
Zapytanie się powiodło, ale bieżące dane nie spełniają filtrów. Sprawdź katalog, okno czasowe i świeżość, zanim zwiększysz częstotliwość odczytów.

GET /usage pozwala sprawdzić użycie. Przy awarii sieci stosuj ograniczoną liczbę ponowień z rosnącym opóźnieniem. Klucze w jednym koncie nie są sposobem na mnożenie limitu planu.

Dane kursowe nie są prognozą wyniku meczu ani gwarancją zysku. Zakres wykorzystania i redystrybucji potwierdź w warunkach swojego dostępu.