Truck Route API Online
Truck routing API with fuel stations and truck parking along the route, plus weigh stations and a driver rest plan. Send origin, destination and your vehicle (height, weight, length, width, axle load, hazmat) and get an HGV-legal route with the restrictions and dated truck driving bans it meets, the border crossings on it with their live wait, priced fuel stations, truck parkings (secure flag, capacity, amenities) and weighbridges within a corridor of the line. With include=rest the EU 561/2006 rules are applied to your driver state: 45-minute breaks at most 4 h 30 apart, daily rests before the 9 h / 10 h limit, each placed at a real parking before the limit is reached, weekend and holiday bans waited out, border waits on the timeline, single or double crew — and the ETA includes all of it. The rest plan is a planning aid, not a tachograph record. Beta: vehicle_type=motorhome plans private motorhomes (no EU 561 rest plan: include=rest gives a motorhome break and overnight plan; tolls priced with motorhome rules per country). include=fuel_plan plans where to refuel and how many litres for your tank.
GET https://nakordoni.eu/api/v3/data/truck-route
— клас квоти: route
| Параметр | Опис |
|---|---|
from | Origin as lat,lon (required unless from_city is given), e.g. 52.2297,21.0122 |
to | Destination as lat,lon (required unless to_city is given) |
from_city | Origin city name instead of coordinates (add from_country for accuracy) |
from_country | ISO 3166-1 alpha-2 country of from_city, e.g. PL |
to_city | Destination city name instead of coordinates |
to_country | ISO 3166-1 alpha-2 country of to_city |
via | Up to 5 waypoints as lat,lon|lat,lon |
vehicle_type | truck (default) or motorhome (beta). motorhome: height, weight, width, length and axle-load limits and every "no trucks" / weight-category sign apply (strict); weekend, holiday and night bans for goods vehicles are not applied (listed with applies=false), city-centre and low-emission zones still apply; ETA uses motorhome speed limits (over 3.5 t, Germany motorway 80 km/h); no EU 561 rest plan (an explicit include=rest gives the motorhome break and overnight plan, see rest_every_min) and no weigh stations; tolls use motorhome rules per country (see data.tolls and the Motorhome section below). Bans: up to 7.5 t no weekend/holiday/night ban applies (Austria and Slovakia only with a trailer); over 7.5 t they are lifted in CH, DE, FR, HU and IT. weight is required; crew, driven_*, reduced_*, extended_* and last_weekly_rest_end are rejected with 400. |
height | Vehicle height in metres (1.0–5.0) |
weight | Gross vehicle weight in tonnes (1–60); drives weight-limited restrictions and bans |
length | Vehicle length in metres (2–30) |
width | Vehicle width in metres (1.0–3.5) |
axle_load | Axle load in tonnes (1–20) |
axles | Number of axles, tractor plus trailer (2–12); used for routing and for toll classes (default for tolls: 5 from 18 t, 3 from 12 t, else 2) |
trailers | Number of trailers (0–3); reported back, no routing effect yet |
hazmat | Dangerous goods: 0 (default), 1 = ADR load with class not given, or a comma list of ADR classes 1–9 and/or explosive, gas, flammable, flammable_solid, oxidizing, poison, radioactive, corrosive, harmful_to_water |
adr_tunnel | ADR tunnel restriction code of the load: B, C, D or E. Tunnels whose category forbids it are avoided (implies hazmat) |
avoid | Comma list of tolls, ferries, motorways, borders, tunnels, unpaved, low_emission_zones |
emission_class | Vehicle emission class euro0 … euro6; used for low-emission-zone checks and toll notes (tolls are priced at Euro VI rates) |
alternatives | Number of alternative routes, 0–2 (default 0; routes without via points only) |
geometry | polyline5 (default), polyline6 or geojson |
arrive_at | Wanted arrival as RFC 3339; the departure is planned backwards including breaks and rests (instead of depart_at) |
route_type | fastest (default) or eco |
include | Comma list of fuel, parking, weigh, rest (default: all four); add fuel_plan (never in the default, needs tank_l) for refuelling stops |
corridor_km | Max distance from the route for fuel, parking and weigh stations, 0.2–5 km (default 2) |
fuel | Fuel grades to price, comma list (default diesel) |
tank_l | include=fuel_plan: usable tank size in litres, 20–1500 (required with fuel_plan) |
consumption_l100 | include=fuel_plan: consumption in litres per 100 km, 3–60 (default: motorhome 13, truck 30) |
start_fuel_pct | include=fuel_plan: tank level at departure in %, 5–100 (default 100) |
reserve_pct | include=fuel_plan: the plan never lets the tank drop below this %, 5–50 (default 15). The grade planned is the first one in fuel |
rest_every_min | vehicle_type=motorhome with include=rest: a break after at most this many minutes of driving, 60–300 (default 150, a recommendation: private motorhomes up to 7.5 t have no binding driving-time law) |
break_min | vehicle_type=motorhome with include=rest: break length in minutes, 5–120 (default 20) |
day_drive_max_min | vehicle_type=motorhome with include=rest: overnight stop when the day's driving reaches this many minutes, 120–720 (default 540 = 9 h, a recommendation, not a legal limit) |
night_min | vehicle_type=motorhome with include=rest: minimum overnight stop length in minutes, 60–900 (default 600) |
night_start_after | vehicle_type=motorhome with include=rest: HH:MM local time, 12:00–21:30 (default 17:00). When the day would run past 22:00, the overnight stop is placed at a parking reached between this time and 22:00 (local time at the stop), within the break and daily-driving limits |
night_end_not_before | vehicle_type=motorhome with include=rest: HH:MM local time, 04:00–11:00 (default 07:00, a recommendation). An overnight stop never ends before this time at the stop location; it is lengthened instead |
goods_or_towing | vehicle_type=motorhome with include=rest: 0 or 1 (default 0). Send 1 when the motorhome carries goods or tows (own car, trailer, horse). With weight over 7.5 t, EU 561/2006 is then applied on the EU/EEA parts of the route: a 45-minute break after at most 4 h 30 of driving, at most 9 h driving per day (the 10 h extension is not planned), a daily rest of at least 11 h; those rows have rule eu561_motorhome. The 15 + 30 split break is not planned; weekly limits are not checked. Not applied in Switzerland (low to medium confidence) and outside EU/EEA. At or below 7.5 t, or with 0, the motorhome plan is unchanged |
depart_at | Departure as ISO 8601 with time zone, up to 14 days ahead (default: now) |
aliases | Accepted for easy switching: depart → depart_at, departAt, arriveAt, vehicleHeight, vehicleWidth, vehicleLength, vehicleWeight (kg or t), vehicleAxleWeight / axleWeight → axle_load, vehicleNumberOfAxles / axleCount → axles, vehicleTrailers → trailers, vehicleAdrTunnelRestrictionCode → adr_tunnel, vehicleEmissionClass → emission_class, maxAlternatives → alternatives, waypoints → via |
crew | 1 (default) or 2 drivers — double crew uses the 30-hour daily rest window and 9 h rests |
traffic | forecast (default), live or off. forecast = learned recurring congestion + live traffic near the departure + roadworks, closures and weather at the passing time; live = current traffic without the learned pattern; off = no traffic layer (free-flow drive time) |
driven_since_break_min | Driver state: minutes driven since the last 45-minute break (default 0) |
driven_today_min | Driver state: minutes driven since the last daily rest (default 0) |
driven_week_min | Driver state: minutes driven this calendar week (default 0) |
driven_last_week_min | Driver state: minutes driven last week, for the 90 h fortnight limit (default 0) |
reduced_daily_rests_used | Reduced (9 h) daily rests already taken since the last weekly rest, 0–3 (default 0) |
extended_days_used | 10-hour driving days already used this week, 0–2 (default 0) |
last_weekly_rest_end | ISO 8601 end of the last weekly rest (default: assumed just before departure) |
reduced_weekly_ok | 1 = a reduced (24 h) weekly rest may be planned (default 0 = regular 45 h) |
lang | Language code for names and messages (default en) |
Поля відповіді — усередині об’єкта data у конверті відповіді. [] позначає список, тож data.items[].name — це поле name кожного елемента. Поле буває null, відсутнє або порожній список, коли значення в нас немає, — заглушок ми не підставляємо.
| Поле | Опис |
|---|---|
data.route | distance_m, duration_s (pure driving), geometry (format in geometry_format), bbox, countries (ISO codes in order), departure_at, toll_distance_m, fuel_l, ascent_m, descent_m, legal, avoid; with arrive_at also arrive_at_requested. |
data.route.country_split[] | Per country in route order: country, km, duration_min. |
data.route.adr | Only with adr_tunnel: tunnel_code, tunnels_avoided[] and tunnels_on_route[] (name, category, lat, lon). |
data.route.low_emission_zones_avoided[] | Only with avoid=low_emission_zones: zones the route was moved out of (name, country); low_emission_zones_on_route[] lists any that could not be avoided. |
data.tolls | Estimated truck tolls: currency (EUR), total_eur, complete, by_country[] (country, km_toll, cost_eur, basis), objects[] (priced tunnels and bridges: name, type, country, lat, lon, cost_eur, basis), estimate, coverage_note. A country we cannot price has cost_eur null and is named in coverage_note. With vehicle_type=motorhome (beta): priced true, vat included, and by_country[] lists every country on the line: country, system (none, exempt, vignette, distance, flat_daily, section), category, km_toll, amount (EUR incl. VAT, null when not priced yet), currency, priced, status (confirmed or likely), tariff (how it was computed), period (vignettes: shortest valid one), reference (official operator page of the rule), note. objects[] also lists bridges with their own toll, priced per crossing at the official class rate (name, type, country = the country that collects, cost_eur, priced, category, tariff, status, reference). total_eur sums priced countries and priced crossings; complete is false when any country or crossing on the route is not priced. Roads that are toll-free by law are not charged (Portugal: former SCUT motorways). Classes follow weight (up to / over 3.5 t), height and axles. Truck (HGV) rates are never used for a motorhome. |
data.vehicle | The vehicle as understood: height_m, weight_t, length_m, width_m, axle_load_t, hazmat, axles, trailers, adr_classes, adr_tunnel, emission_class, type (truck or motorhome); a motorhome also has beta: true and beta_note. |
data.alternatives[] | Only with alternatives: distance_m, duration_s, forecast_duration_s (with traffic), tolls (currency, total_eur, complete, by_country) and geometry for each alternative route. Alternatives are planned without time-dependent restrictions and are not ban-checked; the main route is. Empty when no reasonable alternative exists. |
data.route.restriction_hits[] | Restrictions for this vehicle still on the line: kind, name, country, at_km. A zone that holds one of your via points is entered only on the legs into and out of that via: it is listed with exempt=true and reason=via_inside_zone and does not make route.legal false. |
data.route.truck_bans[] | Dated truck driving bans on the route: name, kind, country, details, min_weight_t, window_from, window_to, eta_at_ban (on the traffic forecast timeline), eta_at_ban_free (free-flow timeline), km_from_start, applies, active, avoided. |
data.route.border_crossings[] | Crossings on the route: name, ppid, from_country, to_country, lat, lon, km_from_start, status; wait_min = time on the exit side + the entry side at the planned arrival (wait_at), null when neither side is measured (wait_minutes = same value, legacy name); wait_sides[] (side country, role exit|entry, ppid, min, basis live|forecast, note when not measured); wait_notes[]; wait_capped (a side over 48 h is planned at 48 h); registration_required = an electronic-queue lane: register before arriving. v2: the time to get a slot is not included in the wait. v3: Ukraine-exit truck lanes use the eCherha published wait as wait_min (fresh data only, never capped; entry side included; stale = wait_min null + warning echerha_wait_unverified) and add registration_wait_minutes, registration_wait_source (echerha), registration_wait_at, registration_note (localized) and registration_url. |
data.route.warnings[] | code and message, e.g. ban_avoidance_skipped, restrictions_on_route, adr_tunnel_on_route, adr_tunnel_not_checked, low_emission_zone_on_route, closure_on_route (a full motorway closure overlaps the passing time), tolls_not_fully_avoided, arrive_at_not_reachable. |
data.route.closures_on_route[] | German motorways: closures, roadworks and traffic warnings within 150 m of the line whose time window overlaps the moment the truck passes: type (closure, roadwork, warning), road, title, km_from_start, eta, from, to, full_closure, lorry_specific (text names lorries or a weight limit), lat, lon. The route is not changed around them. |
data.traffic_forecast | Unless traffic=off: model, mode, duration_base, duration_s_free, duration_s_forecast, delay_s (recurring, live, roadworks, weather, total), hotspots[] (km_from_start, km_to, eta, delay_s, reason recurring|live|roadworks|lane_closure|closure|weather, label, road, confidence low|medium|high, dow_hour, delay_by_reason, country; jam_frequency and road_condition where known), weather_on_route[], closures_avoided[], recommended_alternative (a forecast-faster alternative is only recommended — the primary route is never swapped), coverage (how much data backed the plan, with a note), calc_ms. The forecast timeline drives the ETA, rest plan, ban timing and border-wait timing. A planning estimate; data collection started in September 2026. |
data.rest_plan[] | EU 561/2006 stops in order: type (break, daily_rest, weekly_rest), start_at, end_at, duration_min, km_from_start, parking (a parkings[] row or null), reason, overlaps_ban, counts_as. |
data.rest_plan[] (motorhome) | vehicle_type=motorhome with include=rest (not EU 561/2006): type break or overnight, start_at, end_at, duration_min, km_from_start, parking (a parkings[] row or null), reason, rule (motorhome, or eu561_motorhome with goods_or_towing=1 over 7.5 t in EU/EEA), drive_before_min, tz (time zone of the stop), start_local and end_local (local time at the stop), warning (no_parking_in_window when no parking was found before the stop was due; the stop is then at the due point). Stops are placed at the most suitable parking before they are due, never later: rest areas, Autohof and truck stops with services first, lorry-only parkings last; overnight stops prefer toilets, showers, water, RV dump and electricity. Overnight rows also carry country (ISO 3166-1 alpha-2), hint (overnight-parking hint for that country in English, or null) and hint_confidence (high, medium, low or null). Hints are information from secondary sources, not legal advice and never a ban; local signs and municipal rules apply. Examples: PT 48 h in the same municipality, not in protected, Natura 2000 or coastal zones; NL municipal, usually up to 3 days; DE one night to restore fitness to drive; DE, ES, FR, IT, NL and DK no camping setup (awning, chairs, tables). In HR, SI, IS and ME (low confidence) campsites, aires and camper stops in our parking data rank first for the overnight stop; other parkings are still used when none is in reach. Default values (150 min, 9 h, 07:00) are recommendations, not legal limits. waits[] holds border_wait rows; assumptions[] and rest_warnings[] as for trucks. |
data.fuel_plan | Only with include=fuel_plan: grade, tank_l, consumption_l100, start_fuel_pct, reserve_pct, stops[] (km_from_start, station = a fuel_stations[] row, litres, est_price_per_l, est_cost and currency in the station currency, est_cost_eur, price_updated_at, fuel_left_on_arrival_pct, below_reserve when no station was in range), total_litres, total_est_cost (EUR, priced stops only), total_currency, fuel_left_at_destination_pct, warnings[] (code, km_from_start, message: fuel_gap, no_station_to_destination, price_unknown). Each stop is the cheapest station per litre within range that keeps the reserve; it buys enough to reach a cheaper station further on, or the destination, else a full tank. stops is empty when the tank covers the trip. |
data.rest_warnings[] / data.route.warnings[] (v3) | echerha_registration (registration needed, with registration_wait_minutes) and echerha_wait_unverified (eCherha wait missing or older than 3 h). |
data.rest_plan[].in_vehicle_allowed | v3, on daily and weekly rest stops: false for a regular weekly rest (45 h or more) and for any weekly rest of more than 45 h; true for a reduced weekly rest (24 h to less than 45 h) and for daily rests. accommodation_required has the opposite value. rule = EU 561/2006 Art. 8(8) as amended by 2020/1054. |
data.rest_plan[].accommodation[] | v3, on weekly rest stops: parkings with rooms on site near the stop (route-plan: the driving window of places[]; truck-route: 45 min of driving before to 15 min after) — name, type, country, lat, lon, at_km, offset_min, off_route_km, rooms_on_site. Information only: the stop and its truck parking do not change. |
data.rest_plan[].parking.has_accommodation | v3, on weekly rest stops: true when this parking (in route-plan also each places[] row) has rooms on site, i.e. a site with rooms within 300 m. nearest_accommodation_km = distance in km to the nearest accommodation[] site, or null. |
data.rest_plan[].warning | v3: no_accommodation_found when accommodation_required is true and accommodation[] is empty. Information only; the stop stays in the plan. |
data.waits[] | Forced waits on the timeline: ban_wait (a driving ban) and border_wait, same shape as rest_plan. |
data.eta | Arrival time including driving, breaks, rests, ban waits and border waits; with driving_time_min, total_time_min and crew. |
data.weekly_rest_check | next_weekly_rest_due_by, weekly_rest_on_trip, driven_week_min_at_arrival, driven_fortnight_min_at_arrival, weekly and fortnight limits, reduced rests and 10 h days used at arrival. |
data.assumptions[] | Defaults applied to driver state you did not send, and country rules not planned for. |
data.rest_warnings[] | code, km_from_start, message — e.g. no_parking_in_window when a stop had to be placed at the legal limit. |
data.fuel_stations[] | name, brand, lat, lon, country, km_from_start, distance_from_route_km, detour_km, prices[] (fuel_type, price, currency, stale), price_updated_at. A fuel price last confirmed more than 90 days ago is not returned (the same rule as the fuel products; see Price age on the fuel-stations page). |
data.parkings[] | name, type (parking, rest_area, truck_stop, autohof), lat, lon, country, km_from_start, distance_from_route_km, detour_km, capacity, capacity_trucks (official truck spaces where known, e.g. German motorway rest areas), secure, amenities[], opening_hours. |
data.weigh_stations[] | name, lat, lon, country, km_from_start, distance_from_route_km, detour_km, type and side (null when not known). |
data.coverage | corridor_km, countries_on_route, fuel_grades, fuel countries with sparse or no price data, truncated lists, measured_at. |
data.resolved_locations | Only with from_city/to_city: query, lat, lon, label of the geocoded point. |
api_version | v2 is unchanged. v3 (/api/v3/data/truck-route) adds the eCherha border wait and registration_* fields above, and the rest planner treats a border wait as time spent at the border: a long queue counts as the break, daily rest or weekly rest that was due (counts_as on the waits[] row) instead of being added on top. |
data.disclaimer | The rest plan is a planning aid, not a tachograph record or legal advice. |
data.attribution | List of credits to display: always "Data by nakordoni.eu"; plus "Weigh stations: © OpenStreetMap contributors (ODbL)" whenever weigh_stations is non-empty. |
Автобудинок (бета)
Надішліть vehicle_type=motorhome, щоб спланувати маршрут приватного автобудинку. weight (повна маса в тоннах) обов’язковий: від неї залежать обмеження швидкості, класи платних доріг і заборони. Відповідь містить vehicle.type=motorhome, vehicle.beta=true і попередження motorhome_beta.
Driver-hours rules (EU 561/2006) do not apply to private motorhomes: crew, driven_*, reduced_*, extended_* and last_weekly_rest_end are rejected with 400. include=weigh is not offered (warning include_not_available). include=rest gives a motorhome plan instead: a break every rest_every_min of driving (default 150, break_min 20) and an overnight stop when the day reaches day_drive_max_min (default 480, night_min 600), each at the most suitable parking before it is due (rest areas, Autohof and truck stops with services; overnight stops prefer toilets, showers, water, RV dump and electricity). rest_plan rows carry rule=motorhome. Only when include is sent explicitly; the default include stays without a rest plan.
Знаки читаються суворо: діють обмеження висоти, маси, ширини, довжини та навантаження на вісь, і враховується кожен знак «вантажівкам заборонено» або вагової категорії, навіть якщо він може стосуватися лише вантажних автомобілів (зокрема у Швейцарії).
Заборони руху вантажівок у вихідні, свята та вночі: до 7,5 т жодна не діє (Австрія та Словаччина — лише з причепом); понад 7,5 т вони зняті у Швейцарії, Німеччині, Франції, Угорщині та Італії. Зняті заборони наводяться з applies=false. Зони центру міста та низьких викидів діють.
Driving time uses the motorhome speed limit of each country; over 3.5 t, German motorways are planned at 80 km/h (strict reading). No EU 561 driver rest plan (see include=rest above) and no weigh stations.
Плата за дороги для автобудинків за країнами
Правила для автобудинків за країнами (система і статус для кожної вагової категорії). Суми з ПДВ, переведені в EUR; тарифи для вантажівок (HGV) не використовуються ніколи. status confirmed — правило з офіційного тексту оператора, likely — клас або тариф визначено за аналогією. Мости з окремою платою оцінюються за кожен проїзд в objects. Країна без правила має amount null і complete=false.
| Країна | до 3,5 т | понад 3,5 т |
|---|---|---|
AT | vignette · confirmed | distance · confirmed |
BE | none · confirmed | exempt · confirmed |
BG | vignette · likely | distance · likely |
CH | vignette · confirmed | flat_daily · confirmed |
CZ | vignette · likely | distance · confirmed |
DE | none · confirmed | exempt · likely |
DK | none · likely | none · likely |
ES | section · likely | section · likely |
FR | section · likely | section · likely |
HR | section · likely | section · likely |
HU | vignette · confirmed | vignette · confirmed |
IT | section · likely | section · likely |
LI | none · likely | none · likely |
LU | none · likely | none · likely |
NL | none · confirmed | none · confirmed |
PL | section · likely | distance · confirmed |
PT | section · likely | section · likely |
RO | vignette · likely | vignette · likely |
SE | none · confirmed | none · confirmed |
SI | vignette · confirmed | distance · confirmed |
SK | vignette · confirmed | vignette · confirmed |
Мости, що оплачуються за проїзд: Fetesti-Cernavoda Bridge (A2), Giurgiu-Ruse Bridge, Calafat-Vidin Bridge
Поки не враховано: платні дороги 1-го класу в Чехії (лише автомагістралі), мости через Тежу в Лісабоні, плата за в’їзд до міст. Португалія: колишні автомагістралі SCUT, безкоштовні з 2025 року, не тарифікуються.
Приклад запиту
curl "https://nakordoni.eu/api/v2/data/truck-route?from=47.8095,13.0550&to=46.0569,14.5058&vehicle_type=motorhome&weight=4.8&height=3.2&length=7.65&width=2.34&axles=2" \ -H "Authorization: Bearer NKD-DEV-XXXX-XXXX-XXXX"
Приклад відповіді (скорочено)
{
"ok": true,
"product": "truck-route",
"data": {
"vehicle": { "type": "motorhome", "beta": true, "weight_t": 4.8, "height_m": 3.2, "axles": 2,
"beta_note": "Motorhome routing is in beta. …" },
"route": {
"distance_m": 276000, "duration_s": 13020,
"truck_bans": [],
"warnings": [ { "code": "motorhome_beta", "message": "Motorhome routing is in beta. …" } ]
},
"tolls": {
"currency": "EUR", "priced": true, "total_eur": 74.91, "complete": true, "vat": "included",
"by_country": [
{ "country": "AT", "system": "distance", "km_toll": 196.6, "amount": 65.44, "priced": true, "status": "confirmed",
"tariff": "196.6 km x 0.3329 EUR/km incl. VAT (2 axles, Euro 6 assumed)",
"reference": "https://www.go-maut.at/go-maut-bezahlen/tarife-go-maut/" },
{ "country": "SI", "system": "distance", "km_toll": 61.6, "amount": 9.47, "priced": true, "status": "confirmed",
"tariff": "61.6 km x 0.1538 EUR/km incl. VAT (2 axles, Euro 6 assumed)" }
],
"objects": [],
"coverage_note": "… Truck (HGV) toll rates are never applied to a motorhome."
}
}
}
curl "https://nakordoni.eu/api/v3/data/truck-route?from=52.2297,21.0122&to=52.52,13.405&weight=40&height=4&axles=5&emission_class=euro6&crew=1" \ -H "Authorization: Bearer NKD-DEV-XXXX-XXXX-XXXX"
Оновлено