Skip to main content
Menu
📰 Have border news? Submit it to our news line and get an indexable dofollow backlink + free translation into 24 languages — 1 article per week is free. Submit border news →

API Documentation

REST + JSON over HTTPS. One base URL, one key, predictable envelopes.

Raw .md GitHub
Base URLhttps://nakordoni.eu/api/v1/data/
FormatJSON, UTF-8
AuthAuthorization: Bearer NKD-DEV-…
VersioningPath-versioned & per-endpoint: /api/v1/… is stable; /api/v2/… serves the newer behaviour only for endpoints that changed, and transparently falls back to v1 for the rest. v1 responses never change. If a newer version supersedes the one your key is calling, we email you and show a notice in the developer portal — you never have to discover it from a changelog.

On this page

Authentication · Response envelope · Quotas · Code samples · Excel / Power Query · ERP (BAS / 1C) · MCP Server · Attribution · Data licence and markets · Data freshness · History data export · What you can build
Products Border Queues: API Status · Checkpoints Directory API · Border Queue API v2 · Checkpoint Search API · Live Border Queue API · Advanced Wait Time API · Multi-Checkpoint API · Checkpoint Alternatives API · Live Queue & Freshness API  ·  Forecasts & Stats: Queue Forecast API · Checkpoint Hourly Statistics API · Best Time to Cross API  ·  Fuel & Locations: EU Fuel Prices API · Fuel Prices by City API · Nearby Fuel Stations API · Cheapest Fuel Nearby API · Local Fuel Price API · Fuel Grade Names API · Driver POIs API · Truck Parking API · Nearby Shops API · Free Showers API · Driver Restaurants API · Industrial Zones API · Currency Exchange Rates API  ·  Travel Planning: Route Planner API · Border Travel Matrix API · Truck Driving Bans API v2 · Trading Sundays API · Holiday Calendar API  ·  Drivers & Roads: Road Conditions API v2 · Vignettes & Road Tolls API · Internet Points API · Bus Carrier Border Stats API · Border Weather Condition API · Air Alert Proximity API  ·  Your Fleet (NakBus Live): Fleet Vehicles API · Fleet Live Positions API · Fleet History API  ·  AI Assistant: Border AI Assistant API · Personalised AI Assistant API

Authentication

Every request needs your API key in the Authorization header (recommended) or as a ?key= parameter.

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

Response envelope

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

Errors return ok:false with error.code (missing_api_key, invalid_api_key, qps_exceeded, quota_exceeded, unknown_product, product_unavailable, bad_request, internal_error) and HTTP status 401/403/404/429/500. Rate-limit headers X-Devapi-Limit and X-Devapi-Remaining are sent on every metered response.

Quotas

Explorer
calls/day on standard data APIs1,000
calls/day on forecast & statistics APIs200
QPS2

Daily counters reset at midnight UTC. You get an email at 80% and 100% of quota.

Paid plans raise every one of these limits. See the current plans and their allowances: Plans

Code samples

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)

Pull live queue, forecast or truck-ban data straight into a workbook with Power Query's built-in JSON connector — no code, refreshable on a schedule. The same Headers pattern works for every product in this API; just change the 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

Keep the API key inside the M query (Home → Advanced Editor), not in a worksheet cell — Power Query blocks a web request built from another query or cell ("Formula.Firewall") unless its privacy level is set to Organizational.

Multiple checkpoints in one table (fleet dashboards) — 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 in Excel, or a scheduled refresh in Power BI / Excel Online, keeps the numbers current — no polling code needed.

ERP integration (BAS / BAF and 1C-family platforms)

BAS / BAF and other 1C-family platforms can call this API directly from a scheduled job — HTTPConnection plus ReadJSON, no middleware, no extra service to host. The most common setup keeps an information register of EU fuel prices up to date.

Refreshing an information register (fuel prices, all countries in one call)

// 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;

Three things to get right: pass New OpenSSLSecureConnection on port 443 or the request dies on TLS; call /api/v1/data/fuel without a country parameter so one request returns every country instead of one call per country; and test ok before touching data — failures come back as ok:false with an error.code, not as an exception. The sample uses the platform English keyword set; the localized equivalents (HTTPСоединение, ПрочитатьJSON, РегистрыСведений) behave identically.

Fuel prices upstream move once a day, so a daily or twice-daily scheduled job is enough and stays far inside the free Explorer quota. Live queue data (queue, multi, border) changes every few minutes — poll those on their own schedule, and use multi to read up to 5 checkpoints in a single request instead of looping.

MCP Server

Prefer tool-calling over REST? We run a real MCP server (Streamable HTTP transport) exposing a safe read-only subset of this API as MCP tools — same API key, same quota, just a different 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

Client config (Claude Desktop / Claude Code):

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

Products

Partial outage Checked 2026-09-05T04:40:09Z · Live JSON: GET /api/v1/data/status (no key) · full status page

Pick an endpoint for its full reference, parameters, versions and a live sandbox.

Standard draws from the standard data quota  ·  Heavy draws from the forecast & statistics quota — see Quotas

Border Queues

API Status Standard

Live health of every Developer-API product: online / degraded / offline, response latency and last-checked time, plus an overall …

Checkpoints Directory API StandardOnline

Directory of all monitored border checkpoints: IDs, names, countries, coordinates and status. Use it to discover ppid values for …

Border Queue API HeavyOnlinev2

All checkpoints on a given border + vehicle type in one call — live queue, wait estimate, and data freshness for every crossing. …

Checkpoint Search API StandardOnline

Find checkpoint PPIDs by name in any language. Returns all PPIDs for that location grouped by vehicle type. Up to 20 names per re…

Live Border Queue API HeavyOnline

Real-time queue length, wait estimate and status for any monitored checkpoint. Includes a snapshot block: current queue (queue_no…

Advanced Wait Time API HeavyOnline

Wait time adjusted for live traffic flow and weather, with a full breakdown of each adjustment, plus the same wait_status/trend f…

Multi-Checkpoint API HeavyOnline

Fetch live queue status and/or data freshness for up to 5 checkpoints in a single request. Quota counts as ⌈(N PPIDs × sub-produc…

Checkpoint Alternatives API StandardOnline

Nearby alternative checkpoints on the same border with current queues and distance deltas.

Live Queue & Freshness API StandardOnline

When a checkpoint was last updated, by which source, and a freshness rating.

Forecasts & Stats

Queue Forecast API HeavyOnline

ML ensemble forecast of queue levels: 24-hour and 7-day (168h) horizons with confidence bounds. The same model that powers nakord…

Checkpoint Hourly Statistics API HeavyOnline

Hourly historical queue stats per checkpoint and date: 24 hourly values, daily avg/min/max, peak and quietest hours, day-over-day…

Best Time to Cross API StandardOnline

Typical-week load statistics per checkpoint: 7×24 day-of-week × hour matrix (median + p25/p75 band), quietest/busiest day, best/w…

Fuel & Locations

EU Fuel Prices API StandardOnline

Fuel prices across EU countries — country averages, nearest stations by coordinates, or stations near a border checkpoint. Aggreg…

Fuel Prices by City API StandardOnline

Per-city fuel price summary for a country: cheapest station price and average across the top 5 stations in each major city.

Nearby Fuel Stations API StandardOnlinev2 only

The closest petrol stations to a point or city with current prices per fuel type, sorted by distance. Station-level coverage: DE,…

Cheapest Fuel Nearby API StandardOnlinev2 only

The cheapest petrol stations around a point or city, ranked by price for the chosen fuel type (closest wins a tie). Station-level…

Local Fuel Price API StandardOnlinev2 only

Best available fuel price for any point in Europe, resolved down a three-tier ladder. Where we have station-level data (DE, IT, F…

Fuel Grade Names API StandardOnlinev2 only

The naming table behind every fuel product: our canonical grade codes and the name each grade carries at a pump in 41 European co…

Driver POIs API StandardOnline

Truck parkings (14k+), free showers, services and supermarkets across Europe with coordinates. Results are sorted closest-first w…

Truck Parking API StandardOnlinev2 only

The closest truck parkings, Autohöfe and truck stops to a point or city — sorted by distance with distance_km, name, coordinates …

Nearby Shops API StandardOnlinev2 only

The closest supermarkets and grocery shops to a point or city — sorted by distance with distance_km, name, coordinates and countr…

Free Showers API StandardOnlinev2 only

The closest free showers for drivers to a point or city — sorted by distance with distance_km, name, coordinates and country.

Driver Restaurants API StandardOnlinev2 only

The closest driver-friendly restaurants to a point or city — sorted by distance with distance_km, name, coordinates and country.

Industrial Zones API StandardOnlinev2 only

The closest industrial and logistics zones to a point or city (3k+ across Europe) — sorted by distance with distance_km, name, co…

Currency Exchange Rates API StandardOnline

EUR-based exchange rates for PLN, CZK, HUF, USD, GBP, CHF, NOK and UAH, sourced from Frankfurter (ECB), cached 6 hours. No parame…

Travel Planning

Route Planner API HeavyOnlinev2 only

A door-to-door plan for a border trip: the route, the crossings on it with a live queue or a forecast for your arrival time, and …

Border Travel Matrix API HeavyOnline

Travel time + border queue data for all checkpoints from a given origin. Returns drive time, current queue, total estimated journ…

Truck Driving Bans API StandardOnlinev2

European truck driving restrictions for one or more countries, including seasonal and holiday bans. Each ban carries its restrict…

Trading Sundays API StandardOnline

Sunday retail-opening regulations and upcoming trading Sundays per regulated EU country.

Holiday Calendar API StandardOnline

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

Drivers & Roads

Road Conditions API StandardOnlinev2

Approved road condition reports near borders and on major corridors: potholes, roadworks, closures, ice, hazards — combining driv…

Vignettes & Road Tolls API StandardOnlinev2 only

Whether a country requires a vignette for highway travel, current prices per duration and where to read more — per country or for…

Internet Points API StandardOnlinev2 only

Mobile-operator shops and WiFi points useful to drivers on the road, nearest-first from a point or city with distance_km.

Bus Carrier Border Stats API StandardOnline

Border-crossing performance per bus carrier: crossings, average/median/min/max wait minutes — built from our own plate-matched cr…

Border Weather Condition API StandardOffline

The road hazard at a checkpoint on a single 0–5 scale: clear road, fog, snow, rain, ice or strong wind — named in your language, …

Air Alert Proximity API StandardOnlinev2 only

Air-raid alerts and airborne objects near ONE border crossing. Anchor on a checkpoint (ppid), a coordinate pair or a city and get…

Your Fleet (NakBus Live)

Fleet Vehicles API StandardOnlinev2 only

Your own NakBus Live fleet: every vehicle registered to your company with plate, label, assigned route, public-map flag, status, …

Fleet Live Positions API StandardOnlinev2 only

Where your buses are right now — one row per active vehicle with lat/lon, timestamp and age, speed, bearing and timetable delay, …

Fleet History API HeavyOnlinev2 only

Recorded GPS track of your own vehicles: every stored position point in a time window, in chronological order, with speed, bearin…

AI Assistant

Border AI Assistant API HeavyOnline

Ask our production AI assistant any border-crossing question (queues, forecasts, rules, fuel, routes) and get the same grounded a…

Personalised AI Assistant API HeavyOnlinev2 only

Your own AI assistant, grounded on YOUR content plus OUR live border data. Point it at your markdown files or let us fetch the pa…

History data export

Approved developers can download hourly-averaged, published border-queue history for up to 5 checkpoints (rolling window up to 90 days) as gzipped CSV, NDJSON, or JSON. This is a portal-only feature — NOT an API endpoint; you build and download exports from the "Data export" tab in your account.

Access is granted on request: open a Data ticket telling us which checkpoints, the time window, and your intended use. Once approved, the Data export tab appears in your account. Default limit: 1 export/day, up to 5 checkpoints each — ask us to raise it.

Fields — one row per checkpoint per UTC hour

ParameterDescription
ppidCheckpoint id
checkpoint_nameCheckpoint name
hour_utcHour bucket, ISO-8601 UTC
directione.g. UA->PL
vehicle_typecar / bus / truck / pedestrian
avg_queue_lengthHourly average queue length
avg_wait_minutesHourly average wait; null where a checkpoint has no official wait feed
sample_countNumber of observations in the hour

Data is published-only and passes our anomaly / data-quality checks before export (no raw per-report data). All timestamps are UTC. Files are kept for 10 days.

Provenance: every file embeds a signed fingerprint (sha256 + HMAC) in its header, so any copy can later be confirmed as genuine nakordoni.eu data and checked for tampering — even after download.

# 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

What you can build

The same data products render the visuals on nakordoni.eu — weekly forecast charts, hourly queue profiles, live status cards. A taste of what the forecast and stats APIs contain:

7-day border queue forecast chart built from the Forecast API
Weekly forecast + busiest-day hourly profile — Forecast API (prediction_steps=168 / 24)
Hourly queue statistics chart built from the Statistics API
Per-checkpoint hourly queue chart — Statistics API (stats?ppid=…&compare=1)

Attribution

Explorer-plan integrations must show a visible "Data by nakordoni.eu" link wherever the data is displayed. It keeps the free plan free.

The exact code

Copy this snippet as-is. The link must stay indexable: a plain HTML <a href> that search engines can follow — do NOT add rel="nofollow" or rel="sponsored", do not render it only via JavaScript, and do not hide it with CSS.

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

Compact small-print variant (e.g. under a chart or widget):

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

You may link to your language version instead, e.g. https://nakordoni.eu/pl/ — any indexable link to nakordoni.eu counts. The anchor text "Data by nakordoni.eu" must stay in English.

Where to place it

We periodically verify attribution on the "page where the data is used" you provided at signup. Missing or de-indexed attribution on the free Explorer plan leads to a reminder first, then key suspension. Customers on a paid plan may omit attribution.

Data licence and markets

Your API key grants a licence to use our data in the countries you declared when you signed up, and only in those countries. We review every declaration before granting full access, because our data is our own product and we do not license it into markets without knowing where it will be published.

Data freshness

How current your data is depends on your plan. There is no per-response marker — every plan returns the same fields, the same types and the same response shape.

A delayed response is never an error and never a quota problem — it is a complete, valid response with older numbers in it. Retrying does not return newer data.

If your application needs current data, any paid plan returns real-time telemetry.

Get your free API key