Przejdź do treści
Menu
📰 Masz nowe informacje z granic? Prześlij ją do naszej sekcji aktualności i otrzymaj indeksowalny link dofollow + bezpłatne tłumaczenie na 24 języki — 1 artykuł tygodniowo za darmo. Wyślij wiadomości graniczne →

Dokumentacja API

REST + JSON przez HTTPS. Jeden bazowy URL, jeden klucz, przewidywalne koperty.

Raw .md GitHub
Bazowy URLhttps://nakordoni.eu/api/v1/data/
FormatJSON, UTF-8
UwierzytelnianieAuthorization: Bearer NKD-DEV-…
WersjonowanieWersjonowanie w ścieżce i osobno dla każdego endpointu: /api/v1/… jest stabilny; /api/v2/… udostępnia nowe zachowanie tylko dla endpointów, które się zmieniły, a dla pozostałych przezroczyście wraca do v1. Odpowiedzi v1 nigdy się nie zmieniają.

Na tej stronie

Uwierzytelnianie · Format odpowiedzi · Limity · Przykłady kodu · Excel / Power Query · ERP (BAS / 1C) · Serwer MCP · Atrybucja · Eksport danych historycznych · Co możesz zbudować
Produkty Kolejki graniczne: Status API · API katalogu przejść granicznych · API kolejek granicznych v2 · API wyszukiwania przejść granicznych · API kolejki granicznej na żywo · Multi-Checkpoint API · API alternatywnych przejść granicznych · API kolejki na żywo i aktualności  ·  Prognozy i statystyki: API prognozy kolejki · API godzinowych statystyk przejścia · API „Najlepszy czas przekroczenia"  ·  Paliwo i lokalizacje: API cen paliw w UE · API cen paliwa według miast · API punktów POI dla kierowców · API kursów walut  ·  Planowanie podróży: API planera trasy · API macierzy podróży · API zakazów ruchu ciężarówek · API niedziel handlowych · API Kalendarz świąt  ·  Kierowcy i drogi: API stanu dróg · API granicznych statystyk przewoźników autobusowych  ·  Asystent AI: API granicznego asystenta AI · API spersonalizowanego asystenta AI

Uwierzytelnianie

Każde żądanie wymaga Twojego klucza API w nagłówku Authorization (zalecane) lub jako parametr ?key=.

curl "https://nakordoni.eu/api/v1/data/queue?ppid=id_13" \
  -H "Authorization: Bearer NKD-DEV-XXXX-XXXX-XXXX"

Format odpowiedzi

{
  "ok": true,
  "api_version": "v1",
  "product": "queue",
  "attribution": "Data by nakordoni.eu",
  "data": { ... },
  "usage": { "limit": 1000, "used": 42, "reset": "2026-06-06T00:00:00Z" }
}

Błędy zwracają ok:false z error.code (missing_api_key, invalid_api_key, qps_exceeded, quota_exceeded, unknown_product, product_unavailable, bad_request, internal_error) oraz statusem HTTP 401/403/404/429/500. Nagłówki limitu częstotliwości X-Devapi-Limit i X-Devapi-Remaining są wysyłane w każdej rozliczanej odpowiedzi.

Limity

ExplorerPay As You Grow
wywołań/dzień dla standardowych API danych1,00050,000
wywołań/dzień dla API prognoz i statystyk20010,000
QPS220

Liczniki dzienne resetują się o północy UTC. Otrzymujesz e-mail przy 80% i 100% limitu.

Przykłady kodu

curl

curl "https://nakordoni.eu/api/v1/data/queue?ppid=id_13" \
  -H "Authorization: Bearer $NKD_API_KEY"

JavaScript (fetch)

const res = await fetch('https://nakordoni.eu/api/v1/data/forecast?ppid=id_13&prediction_steps=24', {
  headers: { Authorization: `Bearer ${process.env.NKD_API_KEY}` }
});
const { ok, data, error, usage } = await res.json();
if (!ok) throw new Error(error?.code ?? res.status);
console.log(`forecast points: ${data.length}, calls left today: ${usage.limit - usage.used}`);

Python (requests)

import os, requests

r = requests.get(
    "https://nakordoni.eu/api/v1/data/stats",
    params={"ppid": "id_15", "compare": 1},
    headers={"Authorization": f"Bearer {os.environ['NKD_API_KEY']}"},
    timeout=15,
)
payload = r.json()
print(payload["data"]["daily"], payload["usage"])

Excel (Power Query)

Pobieraj dane o kolejkach, prognozach czy zakazach dla ciężarówek prosto do arkusza dzięki wbudowanemu konektorowi JSON w Power Query — bez kodu, z odświeżaniem według harmonogramu. Ten sam wzorzec nagłówków (Headers) działa dla każdego produktu tego API — wystarczy zmienić URL.

Data → Get Data → From Other Sources → Blank Query, then Home → Advanced Editor and paste:

let
    ApiKey = "NKD-DEV-XXXX-XXXX-XXXX",
    Source = Json.Document(Web.Contents("https://nakordoni.eu/api/v1/data/queue",
        [Query = [ppid = "id_13"], Headers = [Authorization = "Bearer " & ApiKey]])),
    data = Source[data],
    AsTable = Record.ToTable(data)
in
    AsTable

Trzymaj klucz API wewnątrz zapytania M (Home → Advanced Editor), a nie w komórce arkusza — Power Query blokuje żądanie internetowe zbudowane na podstawie innego zapytania lub komórki ("Formula.Firewall"), chyba że poziom prywatności ustawiono na Organizational.

Wiele przejść granicznych w jednej tabeli (dashboardy flotowe) — e.g. every truck crossing UA→EU (crossing_type=9):

let
    ApiKey = "NKD-DEV-XXXX-XXXX-XXXX",
    Source = Json.Document(Web.Contents("https://nakordoni.eu/api/v1/data/border/1/all/9",
        [Headers = [Authorization = "Bearer " & ApiKey]])),
    checkpoints = Source[data],
    AsTable = Table.FromRecords(checkpoints)
in
    AsTable

Data → Refresh All w Excelu lub zaplanowane odświeżanie w Power BI / Excel Online utrzymuje aktualność danych — bez kodu odpytywania (polling).

Integracja z ERP (BAS / BAF i platformy z rodziny 1C)

BAS / BAF i inne platformy z rodziny 1C mogą wywoływać to API bezpośrednio z zadania cyklicznego — HTTPConnection plus ReadJSON, bez warstwy pośredniej. Najczęstszy scenariusz to utrzymywanie aktualnego rejestru informacji z cenami paliw w UE.

Odświeżanie rejestru informacji (ceny paliw, wszystkie kraje w jednym wywołaniu)

// Scheduled job — runs once a day
Connection = New HTTPConnection("nakordoni.eu", 443, , , , 30, New OpenSSLSecureConnection);

Headers = New Map;
Headers.Insert("Authorization", "Bearer NKD-DEV-XXXX-XXXX-XXXX");

Request  = New HTTPRequest("/api/v1/data/fuel", Headers);
Response = Connection.Get(Request);

Reader = New JSONReader;
Reader.SetString(Response.GetBodyAsString("UTF-8"));
Answer = ReadJSON(Reader, True);
Reader.Close();

If Answer["ok"] <> True Then
    // Answer["error"]["code"] says why; Answer["usage"] holds your quota state
    Return;
EndIf;

For Each Row In Answer["data"] Do
    Record = InformationRegisters.FuelPrices.CreateRecordManager();
    Record.Period   = CurrentSessionDate();
    Record.Country  = Row["country"];    // "PL", "DE", "SK", "RO", ...
    Record.Diesel   = Row["diesel"];
    Record.Petrol   = Row["petrol"];
    Record.LPG      = Row["lpg"];
    Record.Currency = Row["currency"];
    Record.Write();
EndDo;

Trzy rzeczy do zrobienia poprawnie: przekaż New OpenSSLSecureConnection na porcie 443, inaczej żądanie polegnie na TLS; wywołuj /api/v1/data/fuel bez parametru country, żeby jedno żądanie zwróciło wszystkie kraje zamiast osobnego wywołania dla każdego; i sprawdzaj ok, zanim sięgniesz po data — błędy wracają jako ok:false z error.code, a nie jako wyjątek. Przykład używa angielskiego zestawu słów kluczowych platformy; zlokalizowane odpowiedniki (HTTPСоединение, ПрочитатьJSON, РегистрыСведений) działają identycznie.

Ceny paliw u źródeł zmieniają się raz na dobę, więc zadanie raz lub dwa razy dziennie w zupełności wystarczy i mieści się głęboko w darmowym limicie Explorer. Dane kolejek na żywo (queue, multi, border) zmieniają się co kilka minut — odpytuj je we własnym rytmie i użyj multi, aby odczytać do 20 przejść jednym żądaniem zamiast w pętli.

Serwer MCP

Wolisz wywoływanie narzędzi zamiast REST? Uruchamiamy prawdziwy serwer MCP (transport Streamable HTTP), udostępniający bezpieczny, tylko do odczytu podzbiór tego API jako narzędzia MCP — ten sam klucz API, ten sam limit, po prostu inny transport.

Endpoint: https://nakordoni.eu/mcp · Server card: /.well-known/mcp/server-card.json

get_api_status      — no key required
list_checkpoints     — country, lang
get_border_queue     — origin, destination, crossing_type, lang
get_live_queue       — ppid, lang
get_queue_forecast   — ppid, prediction_steps

Konfiguracja klienta (Claude Desktop / Claude Code):

{
  "mcpServers": {
    "nakordoni": {
      "url": "https://nakordoni.eu/mcp",
      "headers": { "Authorization": "Bearer NKD-DEV-XXXX-XXXX-XXXX" }
    }
  }
}

Produkty

All systems operational Checked 2026-08-06T03:15:10Z · Live JSON: GET /api/v1/data/status (no key) · full status page

Wybierz endpoint, aby zobaczyć pełną dokumentację, parametry, wersje i żywą piaskownicę.

Standardowy korzysta z domyślnej puli danych  ·  Ciężki korzysta z limitu prognozy i statystyk — zobacz Limity

Kolejki graniczne

Status API Standardowy

Aktualny stan każdego produktu Developer API: online / zdegradowany / offline, opóźnienie odpowiedzi i czas ostatniego sprawdzeni…

API katalogu przejść granicznych StandardowyOnline

Katalog wszystkich monitorowanych przejść granicznych: identyfikatory, nazwy, kraje, współrzędne i status. Użyj go, aby poznać wa…

API kolejek granicznych CiężkiOnlinev2

Wszystkie przejścia na danej granicy dla jednego typu pojazdu w jednym zapytaniu — żywa kolejka, szacowany czas i świeżość danych…

API wyszukiwania przejść granicznych StandardowyOnline

Znajdź PPID przejść granicznych po nazwie w dowolnym języku. Zwraca wszystkie PPID dla tej lokalizacji pogrupowane wg typu pojazd…

API kolejki granicznej na żywo CiężkiOnline

Kolejki w czasie rzeczywistym, szacowany czas oczekiwania i status dla dowolnego przejścia. Zawiera blok snapshot: aktualna kolej…

Multi-Checkpoint API CiężkiOnline

Pobierz status kolejki i świeżość danych dla do 20 punktów kontrolnych w jednym żądaniu. Przydział jest liczony jako ⌈(N PPID × p…

API alternatywnych przejść granicznych StandardowyOnline

Pobliskie alternatywne przejścia na tej samej granicy z aktualnymi kolejkami i różnicami odległości.

API kolejki na żywo i aktualności StandardowyOnline

Kiedy przejście było ostatnio aktualizowane, przez jakie źródło, oraz ocena świeżości.

Prognozy i statystyki

API prognozy kolejki CiężkiOnline

Prognoza poziomów kolejki na bazie zespołu modeli ML: horyzonty 24-godzinny i 7-dniowy (168 h) z przedziałami ufności. Ten sam mo…

API godzinowych statystyk przejścia CiężkiOnline

Godzinowe historyczne statystyki kolejki dla przejścia i daty: 24 wartości godzinowe, dobowa średnia/min/max, godziny szczytu i n…

API „Najlepszy czas przekroczenia" StandardowyOnline

Statystyki typowego tygodnia dla przejścia: macierz 7×24 dzień-tygodnia×godzina (mediana + zakres p25/p75), najspokojniejszy/najb…

Paliwo i lokalizacje

API cen paliw w UE StandardowyOnline

Średnie ceny benzyny/oleju napędowego/LPG w krajach UE oraz najbliższe stacje, zagregowane z oficjalnych źródeł krajowych.

API cen paliwa według miast StandardowyOnline

Podsumowanie cen paliwa dla każdego dużego miasta w kraju: najtańsza stacja i średnia z 5 najtańszych.

API punktów POI dla kierowców StandardowyOnline

Parkingi dla ciężarówek (14 tys.+), darmowe prysznice, serwisy i supermarkety w całej Europie ze współrzędnymi.

API kursów walut StandardowyOnline

Kursy wymiany oparte na EUR dla PLN, CZK, HUF, USD, GBP, CHF, NOK i UAH, źródło Frankfurter (ECB), cache 6h. Brak parametrów — za…

Planowanie podróży

API planera trasy CiężkiOnline

Plan podróży od drzwi do drzwi: trasa, przejścia graniczne na niej z bieżącą kolejką lub prognozą na godzinę przyjazdu oraz posto…

API macierzy podróży CiężkiOnline

Czas przejazdu + kolejka graniczna dla wszystkich przejść z danego miejsca wyjazdu. Zwraca czas jazdy, bieżącą kolejkę, łączny sz…

API zakazów ruchu ciężarówek StandardowyOnline

Europejskie ograniczenia ruchu ciężarówek według kraju i daty, w tym zakazy sezonowe i świąteczne.

API niedziel handlowych StandardowyOnline

Przepisy dotyczące niedzielnego handlu detalicznego i najbliższe niedziele handlowe dla każdego regulowanego kraju UE.

API Kalendarz świąt StandardowyOnline

Official public holidays per European country — dates, local names and type, each country's full holiday list included. Backed by…

Kierowcy i drogi

API stanu dróg StandardowyOnline

Zatwierdzone zgłoszenia stanu dróg w pobliżu granic i na głównych korytarzach: dziury, roboty drogowe, zamknięcia, lód, zagrożeni…

API granicznych statystyk przewoźników autobusowych StandardowyOnline

Wyniki przekraczania granicy według przewoźnika autobusowego: przejazdy, średni/medianowy/min/max czas oczekiwania w minutach — z…

Asystent AI

API granicznego asystenta AI CiężkiOnline

Zadaj naszemu produkcyjnemu asystentowi AI dowolne pytanie o przekraczanie granicy (kolejki, prognozy, przepisy, paliwo, trasy) i…

API spersonalizowanego asystenta AI CiężkiOnline

Twój własny asystent AI, oparty na TWOICH treściach i NASZYCH danych granicznych na żywo. Wskaż nam swoje pliki markdown albo str…

Inne

Advanced Wait Time API

Eksport danych historycznych

Zatwierdzeni deweloperzy mogą pobrać opublikowaną historię kolejek granicznych uśrednioną godzinowo dla maksymalnie 5 przejść (okno ruchome do 90 dni) w postaci spakowanego gzipem CSV, NDJSON lub JSON. To funkcja wyłącznie w portalu — NIE endpoint API; eksporty budujesz i pobierasz w zakładce „Eksport danych” w swoim koncie.

Dostęp przyznajemy na wniosek: otwórz zgłoszenie kategorii Data i napisz, których przejść dotyczy, jakiego okna czasowego i do czego chcesz go użyć. Po zatwierdzeniu w Twoim koncie pojawia się zakładka „Eksport danych”. Domyślny limit: 1 eksport dziennie, do 5 przejść w każdym — poproś nas o jego podniesienie.

Pola — jeden wiersz na przejście graniczne na każdą godzinę UTC

ParametrOpis
ppidIdentyfikator przejścia granicznego
checkpoint_nameNazwa przejścia granicznego
hour_utcGodzina, ISO-8601 UTC
directionnp. UA->PL
vehicle_typesamochód / autobus / ciężarówka / pieszy
avg_queue_lengthŚrednia godzinowa długość kolejki
avg_wait_minutesŚredni godzinowy czas oczekiwania; null tam, gdzie przejście nie ma oficjalnego źródła czasu oczekiwania
sample_countLiczba obserwacji w godzinie

Dane są wyłącznie opublikowane i przed eksportem przechodzą nasze kontrole anomalii i jakości (żadnych surowych danych z pojedynczych zgłoszeń). Wszystkie znaczniki czasu są w UTC. Pliki przechowujemy 10 dni.

Pochodzenie: każdy plik zawiera w nagłówku podpisany odcisk (sha256 + HMAC), więc dowolną kopię można później potwierdzić jako autentyczne dane nakordoni.eu i sprawdzić pod kątem manipulacji — nawet po pobraniu.

# sha256: 3f9c…   # signature: e87b…
ppid,checkpoint_name,hour_utc,direction,vehicle_type,avg_queue_length,avg_wait_minutes,sample_count
id_10,Hrushiv,2026-06-12T02:00:00Z,UA->PL,car,11,,4

Co możesz zbudować

Te same produkty danych renderują wizualizacje na nakordoni.eu — tygodniowe wykresy prognoz, godzinowe profile kolejek, karty statusu na żywo. Przedsmak tego, co zawierają API prognoz i statystyk:

7-day border queue forecast chart built from the Forecast API
Prognoza tygodniowa + godzinowy profil najbardziej obciążonego dnia — Forecast API (prediction_steps=168 / 24)
Hourly queue statistics chart built from the Statistics API
Godzinowy wykres kolejki dla przejścia — Statistics API (stats?ppid=…&compare=1)

Atrybucja

Integracje w planie Explorer muszą pokazywać widoczny link "Data by nakordoni.eu" wszędzie tam, gdzie wyświetlane są dane. To utrzymuje darmowy plan darmowym.

Dokładny kod

Skopiuj ten fragment bez zmian. Link musi pozostać indeksowalny: zwykły HTML <a href>, po którym mogą podążać wyszukiwarki — NIE dodawaj rel="nofollow" ani rel="sponsored", nie renderuj go wyłącznie przez JavaScript i nie ukrywaj przez CSS.

<a href="https://nakordoni.eu/" title="Border queues, forecasts &amp; statistics">Data by nakordoni.eu</a>

Kompaktowy drobny wariant (np. pod wykresem lub widżetem):

<p style="font-size:12px;margin:4px 0">
  Data by <a href="https://nakordoni.eu/">nakordoni.eu</a>
</p>

Możesz linkować do swojej wersji językowej, np. https://nakordoni.eu/pl/ — liczy się każdy indeksowalny link do nakordoni.eu. Tekst kotwicy "Data by nakordoni.eu" musi pozostać po angielsku.

Gdzie umieścić

Okresowo weryfikujemy atrybucję na "stronie wykorzystania danych" podanej przy rejestracji. Brak lub deindeksacja atrybucji w planie Explorer prowadzi najpierw do przypomnienia, potem do zawieszenia klucza. Klienci Pay As You Grow mogą pominąć atrybucję.

Uzyskaj darmowy klucz API