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.
- Załóż konto API i wybierz dostęp po zatwierdzeniu konta. Szczegóły cen i limitów znajdziesz w ofercie API Data i Data Plus.
- Zapisz swój klucz jako zmienną środowiskową
ARBISCAN_API_KEYna serwerze. Nie umieszczaj go w adresie URL, repozytorium ani kodzie przeglądarki. - 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,leagueibookmaker. Do dalszych stron służycursor. 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.