Technical deep-dives into European mobility data, DATEX II normalization, and the engineering behind aggregating European National Access Points.
Germany stamps 141,772 chargers In Betrieb and not one of them says whether a van is plugged in right now. 115,952 stations across NL, FR, CH and LT publish live state per connector — 307,741 cables in all — with the freshness and coverage limits stated rather than buried.
A national average is a statistic no station charges. Diesel medians run €1.899 in Spain against €2.232 in France — and €0.455 a litre separates Occitanie from Navarre. Per-station prices for France, Spain and Italy, the grade-naming and freshness traps that break integrations, and an honest map of the countries where the data legally cannot be resold.
A static map keeps showing a lorry park at full size all night, even when it is full. Austrian occupancy doubles between late morning and 22:00, and 40 of the 86 sites observed hit zero free bays inside a month. Live bay counts, a per-hour occupancy trend, and 561/2006 break planning that orders reachable parking by open spaces.
Inside Schengen a border is a road sign; at the EU’s external freight frontier it is a queue measured in days — 5,964 minutes and 1,006 trucks at Yahodyn–Dorohusk on one July morning. Live electronic-queue waits and queue depth, normalized into one schema and surfaced on your route as warnings[] before the truck leaves.
A route legal in one country can be illegal across the border at the same hour. National truck restrictions and variable-message signs, normalized into one queryable schema — filterable by jurisdiction and bounding box, and surfaced automatically as warnings[] along your route, only when your truck actually trips the limit.
Twenty-seven countries, twenty-seven National Access Points, and one truck plan that has to survive every border in between — from diverging DATEX profiles to per-country tolls, EU 561/2006 breaks, national truck bans, and EV-charging gaps. The five problems we hear in nearly every conversation, and what takes each off your plate.
Not every useful feed travels as DATEX II on a National Access Point. We folded Open Charge Map EV charging, Czech municipal parking via Golemio, and Kyiv open data into the same normalized GeoJSON schema — and crossed the EU border for the first time, into Ukraine and Moldova.
A nav app won’t tell the dispatcher where the 4.5-hour break limit lands — or whether there’s a free truck parking spot when it does. Send the driver’s clock with the route and get back every required break and stop under EU 561/2006, each with the parking reachable before the deadline and a feasible flag.
Distance tolls on the autoroutes, vignette and Go-Box charges in the DACH region — and none of them are a car’s rate. Add include: ["tolls"] to a route request and get the truck’s real toll cost: a per-currency total plus a per-section breakdown, priced against weight, axles, and category.
Every NAP publishes a different DATEX II profile, version, transport, and auth flow. Here's the adapter pattern that turns 30 incompatible feeds into one schema.
Mobilithek doesn't use API keys — it uses TLS client certificates. Registration, certificate handling, the broker URL, and a working Go client.