Truck Route API: truck routing with fuel stations & truck parking along the route
One call returns a truck-legal route for your vehicle, a driver rest plan under EU driving-time rules, and the fuel stations and truck parkings along the way — with current prices, the distance from the start and the detour each one costs.
- Truck-legal routing for your vehicle: height, weight, length, width, axle load and hazmat
- Driver rest plan under EU Regulation 561/2006, with every break placed at a real truck parking
- Truck ETA with rest stops — every break and rest is included
- Fuel stations with current prices, truck parking and weigh stations along the route
- 10 free route calls a day on every account
Computed by the same routing engine as our TruckTurn truck navigation app.
A truck route planner for fleets, dispatch and TMS
Carrier dispatch
Plan a lorry route that fits the vehicle before the driver sets off, and see where the truck can refuel and rest on the way.
TMS and ERP vendors
Add an HGV route planner API to your transport management software without building, hosting or maintaining a routing engine.
Fleet telematics
Turn a live position and the driver’s tachograph state into a realistic ETA with rest stops, and suggest the next fuel stop or parking.
Freight marketplaces
Quote loads on a truck-legal distance and a driving time that includes breaks, instead of a car route.
What you get in one call
Truck routing API
Distance, duration and route geometry that respect your vehicle’s height, weight, length, width and axle load, and the hazmat class you declare.
Truck bans and legality checks
Truck driving bans and vehicle restrictions we know about are taken into account when the route is computed.
EU driving-time rest plan
Breaks, daily rests and weekly rests under EU Regulation 561/2006, each placed at a truck parking on the route, with times.
Fuel stations along the route
Stations near the route with current prices where we have them, the kilometre at which they come up and the detour.
Truck parking along the route
Truck parkings and rest areas with the kilometre from the start and the detour from the route.
Weigh stations along the route
Truck scales and weigh stations on the route, with the kilometre at which each one comes up.
Toll costs by country
An estimate of the truck tolls on the route in euros, per country and for priced tunnels and bridges, based on your axle count and weight. Countries we cannot price yet are named in the response, never counted as free.
Dangerous goods and avoid options
Declare the ADR classes and the tunnel restriction code (B, C, D or E) of your load, and tunnels whose category forbids it are avoided where the category is mapped. You can also avoid tolls, ferries, motorways, border crossings, tunnels, unpaved roads and low-emission zones.
Eco routing
Ask for a route that favours lower fuel use over the shortest driving time.
Avoids Russia and Kaliningrad
Routes never pass through Russia or Kaliningrad.
Driver rest plan under EU driving-time rules (Regulation 561/2006)
An HGV break planner built into the route. The API plans driving time, breaks and rests the way EU Regulation 561/2006 describes them and places each stop at a real truck parking along the route — so the ETA you get back is a truck ETA with rest stops, not a non-stop driving time.
- 45-minute breaks, including the split 15 + 30 minute form
- Daily rest of 11 hours, or a reduced 9 hours where the rules allow it
- Weekly rest of 45 hours, or a reduced 24 hours
- Team driving with two drivers
- Pass in the driver’s current tachograph state — driving time since the last break, today and this week — and the plan continues from there
- Each stop comes with its arrival and departure time, and the final ETA includes all of them
A planning aid, not a tachograph record and not legal advice. The driver and the operator remain responsible for complying with the driving-time rules.
Traffic forecast along the route
By default the route is timed with a traffic forecast for the moment the truck actually passes each section, not for the moment you send the request. The forecast timeline drives the ETA, the EU 561 rest plan, the timing of driving bans and the arrival time at border crossings.
- Recurring congestion learned continuously from our own traffic observations, per road section, weekday and hour — for example a jam that repeats every Friday afternoon
- Live traffic near the departure; further ahead its weight fades towards the learned pattern
- Roadworks, lane closures and full closures that are active at the time the truck passes
- Weather and road conditions at the passing time, on the parts of the route where we have weather data
- A blend of several statistical models, re-weighted by their recent accuracy and recalculated every 15 minutes
- Each hotspot carries a confidence level (low, medium or high); the coverage block shows how much data backed the plan
A planning estimate, not a guarantee. Data collection started in September 2026, so the learned patterns are still young and improve as weeks accumulate. Weather is not covered everywhere. When an alternative looks faster it is recommended in the response; the primary route is never swapped for you.
Parameter: traffic
| Value | What it does |
|---|---|
traffic=forecast | Default. Learned recurring congestion plus live traffic, roadworks, closures and weather at the passing time. |
traffic=live | Current traffic only, without the learned weekday and hour pattern. |
traffic=off | No traffic layer: the route is timed at free-flow drive time. |
Response block: traffic_forecast
The response adds a traffic_forecast block: the free-flow and forecast durations, the delay split by cause (recurring, live, roadworks, weather), the hotspots on the route with their ETA, cause, road, confidence and weekday-hour, weather points on the route, closures avoided, a recommended alternative when one is forecast to be faster, and coverage figures. Each alternative route carries forecast_duration_s, and each driving ban carries eta_at_ban on the forecast timeline next to eta_at_ban_free.
curl "https://nakordoni.eu/api/v2/data/truck-route?from=52.4064,16.9252&to=45.4642,9.1900&weight=40&height=4&alternatives=1&depart_at=2026-10-09T13:00:00%2B02:00&traffic=forecast" \
-H "Authorization: Bearer $NKD_API_KEY"
Show a real response excerpt
{
"traffic_forecast": {
"model": "nkd-traffic-forecast-2",
"mode": "forecast",
"duration_base": "free_flow",
"duration_s_free": 51732,
"duration_s_forecast": 52067,
"delay_s": { "recurring": 335, "live": 0, "roadworks": 0, "weather": 0, "total": 335 },
"hotspots": [
{ "km_from_start": 0.5, "km_to": 4, "eta": "2026-10-09T13:00:32+02:00", "delay_s": 67,
"reason": "recurring", "label": "Recurring congestion (historical pattern)", "road": "433, 196",
"confidence": "low", "dow_hour": "Fri 13-14h", "delay_by_reason": { "recurring": 67 },
"country": "PL", "jam_frequency": 1, "observations": 4 },
{ "km_from_start": 232, "km_to": 256, "eta": "2026-10-09T15:36:12+02:00", "delay_s": 248,
"reason": "recurring", "label": "Recurring congestion (historical pattern)", "road": "L30",
"confidence": "low", "dow_hour": "Fri 15-16h", "delay_by_reason": { "recurring": 248 },
"country": "DE", "jam_frequency": 0.35, "observations": 3 }
],
"weather_on_route": [
{ "km_from_start": 145, "eta": "2026-10-09T14:38:03+02:00", "temp_c": 14.8, "precip_mm_h": 0,
"precip_type": null, "wind_gust_kmh": 17, "visibility_km": 25.8, "speed_factor": 1, "effects": [] }
],
"closures_avoided": [],
"recommended_alternative": null,
"coverage": {
"profile_cells_hit": 44, "ensemble_cells_hit": 0, "ensemble_cells_in_horizon": 0, "route_cells": 823,
"sampled_since": "2026-09-15", "max_observations_per_weekday_hour": 54, "live_traffic_age_min": 44,
"weather_covered_km": 55, "route_km": 1291.8,
"note": "Recurring congestion is learned from our own traffic observations since 2026-09-15 … Delays are the excess over free-flow truck speed. …"
},
"calc_ms": 1345
},
"alternatives": [
{ "distance_m": 1359314, "duration_s": 54373, "forecast_duration_s": 54707, "…": "…" }
],
"route": {
"truck_bans": [
{ "name": "Seasonal", "country": "AT", "eta_at_ban": "2026-10-10T11:28:47+02:00",
"eta_at_ban_free": "2026-10-09T23:38:13+02:00", "…": "…" }
],
"…": "…"
}
}
A real response, trimmed to two hotspots, one weather point, one alternative and one ban; long texts shortened. The docs carry the full field list.
See a real calculation
Saved responses for popular truck routes, calculated by the API — the map, rest stops and ETA below are what the API returned, not a live call from this page.
- Fuel station
- Truck parking
- Weigh station
- Break
- Daily rest
- Weekly rest
- Border wait
- DepartureDay 1, 06:00
- Driving · 394 km · 4 h 24 min
- Break · 45 min Day 1, 10:24 · at Raststätte Börde-Nord 1, Hohe Börde
- Driving · 401 km · 4 h 27 min
- Daily rest · 11 h 0 min Day 1, 15:37 · at Punkt 9749
- Driving · 135 km · 1 h 29 min
- Arrival (ETA)Day 2, 04:06
Request
GET https://nakordoni.eu/api/v2/data/truck-route?from=52.4064,16.9252&to=51.9244,4.4777&weight=40&height=4&crew=1&depart=2026-10-12T06:00:00%2B02:00
Response excerpt
{
"slug": "poznan-rotterdam",
"title": "Poznań → Rotterdam",
"request_url": "https://nakordoni.eu/api/v2/data/truck-route?from=52.4064,16.9252&to=51.9244,4.4777&weight=40&height=4&crew=1&depart=2026-10-12T06:00:00%2B02:00",
"departure": "2026-10-12T06:00:00+02:00",
"geometry": "…",
"totals": {
"distance_km": 930,
"driving_min": 622,
"total_min": 1327,
"border_wait_min": 0
},
"countries": [
"PL",
"DE",
"…"
],
"border_crossings": [],
"tolls": {
"currency": "EUR",
"total_eur": 245.9,
"complete": true,
"by_country": [
{
"country": "DE",
"km_toll": 556.4,
"cost_eur": 193.63,
"basis": "distance-based HGV toll: tolled km × per-km truck rate for this axle/weight class"
},
{
"country": "NL",
"km_toll": 204,
"cost_eur": 31.82,
"basis": "distance-based HGV toll: tolled km × per-km truck rate for this axle/weight class"
},
{
"country": "PL",
"km_toll": 159.3,
"cost_eur": 20.45,
"basis": "distance-based HGV toll: tolled km × per-km truck rate for this axle/weight class"
…
Calculated on 2026-10-09 04:30 UTC
- Fuel station
- Truck parking
- Weigh station
- Break
- Daily rest
- Weekly rest
- Border wait
- DepartureDay 1, 06:00
- Driving · 77 km · 1 h 2 min
- Border wait · 3 h 6 min Day 1, 07:02 · at Krakivets
- Driving · 244 km · 3 h 16 min
- Break · 45 min Day 1, 13:24 · at Brzesko
- Driving · 301 km · 4 h 6 min
- Daily rest · 11 h 0 min Day 1, 18:16 · at Krajków Południe (A4) → Katowice
- Driving · 331 km · 4 h 27 min
- Break · 45 min Day 2, 09:43 · at Parkhaus Europacenter Adlershof
- Driving · 20 km · 18 min
- Arrival (ETA)Day 2, 10:47
Request
GET https://nakordoni.eu/api/v2/data/truck-route?from=49.8397,24.0297&via=49.9546,23.1163&to=52.5200,13.4050&weight=40&height=4&crew=1&depart=2026-10-12T06:00:00%2B03:00
Response excerpt
{
"slug": "lviv-berlin",
"title": "Lviv → Berlin",
"request_url": "https://nakordoni.eu/api/v2/data/truck-route?from=49.8397,24.0297&via=49.9546,23.1163&to=52.5200,13.4050&weight=40&height=4&crew=1&depart=2026-10-12T06:00:00%2B03:00",
"departure": "2026-10-12T06:00:00+03:00",
"geometry": "…",
"totals": {
"distance_km": 972.5,
"driving_min": 791,
"total_min": 1727,
"border_wait_min": 186
},
"countries": [
"UA",
"PL",
"…"
],
"border_crossings": [
{
"name": "Krakivets",
"lat": 49.954611,
"lon": 23.116259,
"km_from_start": 77,
"wait_minutes": 186,
"wait_min": 186,
"wait_sides": [
{
"side": "UA",
"role": "exit",
"ppid": "id_111",
"min": 186,
"basis": "measured_dwell",
"registration_required": true,
"sample_n": 1164,
"sample_days": 7,
"note": "registration_lane,registration_dwell"
},
{
"side": "PL",
"role": "entry",
…
Calculated on 2026-10-09 04:30 UTC
- Fuel station
- Truck parking
- Weigh station
- Break
- Daily rest
- Weekly rest
- Border wait
- DepartureDay 1, 06:00
- Driving · 395 km · 4 h 23 min
- Break · 45 min Day 1, 10:23 · at AS 24 ABCL2 - Lavatrans Nimes
- Driving · 264 km · 2 h 56 min
- Daily rest · 11 h 0 min Day 1, 14:04 · at AS 24 NICE PAL
- Driving · 326 km · 3 h 36 min
- Arrival (ETA)Day 2, 04:41
Request
GET https://nakordoni.eu/api/v2/data/truck-route?from=41.3874,2.1686&to=45.4642,9.1900&weight=40&height=4&crew=1&depart=2026-10-12T06:00:00%2B02:00
Response excerpt
{
"slug": "barcelona-milan",
"title": "Barcelona → Milan",
"request_url": "https://nakordoni.eu/api/v2/data/truck-route?from=41.3874,2.1686&to=45.4642,9.1900&weight=40&height=4&crew=1&depart=2026-10-12T06:00:00%2B02:00",
"departure": "2026-10-12T06:00:00+02:00",
"geometry": "…",
"totals": {
"distance_km": 984.9,
"driving_min": 657,
"total_min": 1362,
"border_wait_min": 0
},
"countries": [
"ES",
"FR",
"…"
],
"border_crossings": [],
"tolls": {
"currency": "EUR",
"total_eur": 194.98,
"complete": true,
"by_country": [
{
"country": "FR",
"km_toll": 531.8,
"cost_eur": 148.9,
"basis": "motorway toll: tolled km × network-average per-km truck rate (actual sections vary)"
},
{
"country": "IT",
"km_toll": 287.5,
"cost_eur": 44.85,
"basis": "motorway toll: tolled km × network-average per-km truck rate (actual sections vary)"
},
{
"country": "ES",
"km_toll": 6.5,
"cost_eur": 1.23,
"basis": "motorway toll: tolled km × network-average per-km truck rate (actual sections vary)"
…
Calculated on 2026-10-09 04:30 UTC
Sample request and response
curl "https://nakordoni.eu/api/v2/data/truck-route?from=52.4064,16.9252&to=45.4642,9.1900&weight=40&height=4&include=fuel,parking" \
-H "Authorization: Bearer $NKD_API_KEY"
{
"route": {
"distance_km": 1186.4,
"driving_time_min": 905,
"eta": "2026-10-04T18:40:00+02:00",
"vehicle": { "weight_t": 40, "height_m": 4.0 },
"geometry": "…"
},
"rest_plan": [
{ "type": "break_45", "km_from_start": 352.1,
"arrive": "2026-10-04T10:31:00+02:00", "depart": "2026-10-04T11:16:00+02:00",
"parking": { "name": "…", "detour_km": 0.3 } },
{ "type": "daily_rest", "hours": 11, "km_from_start": 708.9, "parking": { "name": "…" } }
],
"fuel": [
{ "name": "…", "km_from_start": 118.6, "detour_km": 0.8,
"prices": { "diesel": 1.629 }, "currency": "EUR" }
],
"parking": [
{ "name": "…", "km_from_start": 352.1, "detour_km": 0.3, "spaces": 60 }
]
}
Abbreviated and illustrative — field names can still change before release. The docs carry the full parameter list and response schema.
Coverage
Routing covers Europe and never passes through Russia or Kaliningrad. Fuel prices and parking density differ by country — the lists below come straight from our live data.
Countries with fuel station prices
Current station prices are available only in these countries. Elsewhere the route, rest plan and parking still work, but fuel prices are not returned.
- Italy · 58,659 stations
- Germany · 43,672 stations
- Spain · 39,429 stations
- France · 31,496 stations
- Greece · 14,154 stations
- Portugal · 9,807 stations
- Norway · 4,001 stations
- Croatia · 2,540 stations
- Austria · 1,996 stations
- Slovenia · 1,736 stations
- Poland · 151 stations · limited coverage
Truck parking by country
Truck parking locations we hold, by country. Coverage is denser in some countries than in others.
- Poland · 6,286 parkings
- Germany · 3,518 parkings
- France · 1,184 parkings
- Czechia · 963 parkings
- Romania · 924 parkings
- Belgium · 815 parkings
- Spain · 731 parkings
- Austria · 677 parkings
- Netherlands · 633 parkings
- Hungary · 572 parkings
- Italy · 535 parkings
- Slovakia · 472 parkings
- Croatia · 429 parkings
- Lithuania · 360 parkings
- Bulgaria · 340 parkings
- United Kingdom · 241 parkings
- Latvia · 235 parkings
- Serbia · 215 parkings
- Ukraine · 200 parkings
- Estonia · 199 parkings
- North Macedonia · 135 parkings
- Greece · 116 parkings
- Slovenia · 116 parkings
- Portugal · 104 parkings
- Sweden · 84 parkings
- Denmark · 83 parkings
- Switzerland · 79 parkings
- Norway · 67 parkings
- Luxembourg · 64 parkings
- Montenegro · 55 parkings
- Albania · 51 parkings
Plus smaller numbers in 2 more countries.
Counts are read from our database and refreshed every few hours.
Pricing
Every account
- 10 route calls per day
- Free on every account, including Explorer. No card required.
Pro
- 2,000 route calls per day
- Included in the plan, alongside its other data API calls.
Pro MAX
- 10,000 route calls per day
- Included in the plan, alongside its other data API calls.
Extra route calls
- +100 route calls per day
- Add blocks to a paid plan when your fleet needs more.
Prices are net, excluding VAT.
Frequently asked questions
What is the Truck Route API?
A truck routing API: you send a start, a destination and your vehicle, and get back a truck-legal route, a driver rest plan under EU driving-time rules, and the fuel stations and truck parkings along the way — in one JSON response.
How is it different from a car routing API?
A car route can send a 4-metre, 40-tonne vehicle under a low bridge or onto a weight-restricted road. This route is computed for your vehicle’s dimensions, weights, axle load and hazmat class, and takes truck driving bans into account.
Does it plan driver breaks and rests?
Yes. It plans breaks, daily rests and weekly rests under EU Regulation 561/2006 — including split breaks, reduced rests and two-driver team driving — places each stop at a truck parking on the route and includes them in the ETA. Pass the driver’s current driving times and the plan starts from where they are.
Is the rest plan a legal guarantee?
No. It is a planning aid that follows the rules as we implement them. It is not a tachograph record and not legal advice, and it does not guarantee compliance. The driver and the operator remain responsible, and real traffic, waiting and loading times will change the plan.
Which countries have fuel prices?
Only the countries listed under Coverage on this page. That list is generated from our live data, so it shows what the API can return today.
Does a route ever go through Russia?
No. Routes avoid Russia and Kaliningrad.
How many route calls are free?
Every account gets 10 free route calls per day. Paid plans include more, and extra route calls can be added in blocks of 100 per day.
Can I use it in my TMS or dispatch software?
Yes. It is a plain HTTPS GET that returns JSON, so any TMS, ERP, dispatch or telematics system that can call a REST API can use it. The docs list every parameter and the response schema.
Does the API return toll costs?
Yes, as an estimate in euros: per country, from the tolled kilometres on the route and the truck rate for your axle count and weight, plus priced tunnels and bridges on the route. Rates are Euro VI rates. A country without a rate on file is listed in a coverage note and left out of the total instead of being counted as zero.
Can it plan routes for dangerous goods (ADR)?
You can send the ADR classes of the load and its tunnel restriction code. Tunnels whose category forbids that code are avoided where the category is mapped; if no other route exists, the response says so. You remain responsible for checking the ADR rules that apply to your load.
Plan your first truck route
Create a free account and get a key — 10 route calls a day are free on every account.