Eine Route, die in einem Land legal ist, kann jenseits der Grenze zur selben Stunde illegal sein. Das ist die stille Falle im europäischen Fernverkehr: Das Fahren ist durchgehend, doch das Regelwerk wechselt bei jeder Grenze. Wochenend- und Nachtfahrverbote, sektorale Verbote auf alpinen Transitkorridoren, Umweltzonen in Innenstädten, länderspezifische Gewichts- und Maßbeschränkungen, saisonale Sperrungen — keines davon taucht in einer Verbraucher-Navi auf, und jedes bringt eine echte Strafe, wenn man es auf die harte Tour erfährt: ein Bußgeld, eine erzwungene Wartezeit am Straßenrand oder eine an der Grenze abgewiesene Ladung.
Wir haben darüber als eines der fünf Straßendaten-Probleme jeder grenzüberschreitenden europäischen Flotte geschrieben. Dieser Beitrag ist die ausführliche Fassung: Wie die Daten tatsächlich aussehen, wenn Sie aufhören, siebenundzwanzig nationale Regel-Scraper zu warten, und stattdessen ein normalisiertes Schema abfragen — und wie die Beschränkungen eines Korridors an der Route hängend zurückkommen, nicht als separate Hausaufgabe.
Der Bedarf ist nicht „jede Regel in Europa“
Er ist enger und nützlicher als das. Ein Disponent will kein durchsuchbares Lexikon jeder nationalen Vorschrift; er will die Beschränkungen und die Schilder auf diesem Korridor, für diesen Lkw, bevor der Fahrer dort ist kennen. Das ist eine räumliche Frage, und genau diese Form beantwortet NAPSPAN.
Zwei normalisierte Feature-Typen tragen sie, beide abgefragt über denselben /features-Endpunkt, den der Rest der API spricht:
truck_restrictions— die Gewichts-, Höhen-, Breiten-, Längen- und Zufahrtsbeschränkungen und -verbote für schwere Fahrzeuge, aggregiert aus nationalen Feeds und — in Ländern ohne maschinenlesbaren Beschränkungs-Feed — aus den Community-Lkw-Beschränkungs-Tags von OpenStreetMap.signs— Straßenbeschilderung einschließlich Wechselverkehrszeichen (VMS/DMS): der Live-Text, den eine Anzeigetafel zeigt, normalisiert, sodass ein deutsches und ein österreichisches Panel in Ihrem Code gleich zu lesen sind.
Beide sind filterbar nach jurisdiction und nach einer Bounding Box, und beide hängen an den Feature-Gruppen trucking und Infrastruktur, die Sie mit GET /features/groups durchstöbern können. Ein Schema für ein deutsches Nachtfahrverbot und ein österreichisches sektorales Verbot heißt: Sie prüfen einen Ort statt siebenundzwanzig.
Beschränkungen auf einem Korridor, per Bounding Box
Fragen Sie die Lkw-Beschränkungen innerhalb einer Bounding Box in einem Land ab. Hier ein Abschnitt in Zentralösterreich:
curl -H "X-API-Key: $KEY" \
"https://api.napspan.com/api/v1/features?type=truck_restrictions&jurisdiction=AUT&bbox=13.0,47.0,16.5,48.5"
Jede Zeile ist ein Feature in derselben Hülle: Koordinaten, die Straße, auf der es liegt, und ein properties-Objekt. Die konkreten Limit-Schlüssel sind quellenabhängig statt ein festes Schema — eine OpenStreetMap-Quelle liefert die rohen Tags maxweight / maxheight (plus abgeleitetes maxweight_lbs / maxheight_ft), ein nationaler Feed das, was diese Behörde veröffentlicht. Fürs Routing zählen die numerischen — sie sind die Schlüssel, gegen die das Lkw-Profil tatsächlich geprüft wird:
{
"data": [
{
"id": "OSM-EU-osm-2971775",
"source": "OSM-EU",
"jurisdiction": "AUT",
"feature_type": "truck_restrictions",
"name": "B320",
"latitude": 47.5584364,
"longitude": 14.1699315,
"road_name": "B320",
"is_active": true,
"properties": {
"maxweight": "3.5",
"maxweight_lbs": 7716,
"highway": "primary",
"source_type": "osm",
"osm_type": "way",
"osm_id": 2971775
},
"last_updated": "2026-07-06T21:10:00Z",
"has_details": false
}
],
"total": 17332, "limit": 100, "offset": 0, "has_more": true
}
OpenStreetMap-Quellen tragen © OpenStreetMap contributors (ODbL); wo eine nationale Behörde ihren eigenen Beschränkungs-Feed veröffentlicht, werden stattdessen diese Quelle und ihre Lizenz gestempelt.
Lesen Sie die Schlüssel, die es gibt — nicht die, die kanonisch klingen
Das ist das Detail, das einen Nachmittag kostet, deshalb hier gemessen statt beschrieben. Ein sauber schemaförmiger Name — max_weight_t, max_height_m, max_width_m — liest sich genau wie das Feld, das Sie wollen, und trifft null Zeilen. Über die 194.980 aktiven truck_restrictions im europäischen Datenbestand am 14. August 2026 sind dies die Schlüssel, die tatsächlich ein ausgeschildertes Limit tragen:
| Dimension | Schlüssel mit Wert | Aktive Zeilen |
|---|---|---|
| Gewicht | maxweight / maxweight_lbs | 73.014 / 72.831 |
| Höhe | maxheight / maxheight_ft | 68.067 / 40.359 |
| Breite | maxwidth | 5.188 |
| Länge | maxlength | 4.847 |
| Achslast | maxaxleload | 968 |
Beachten Sie die Typen im Beispiel oben: Der rohe Tag ist ein String in genau der Form, in der die Quelle ihn veröffentlicht hat ("3.5", anderswo "4.2 m"), während der abgeleitete _lbs- / _ft-Zwilling eine Zahl ist. Parsen, nicht casten.
Und planen Sie die Zeilen ohne jede Zahl mit ein. 144.742 der 194.980 aktiven Beschränkungen tragen eine lesbare Dimension; das übrige Viertel nicht. Das sind Zufahrtsverbote, und sie sind keine Datenlücke — es ist die Kategorie, in die sehr viele grenzüberschreitende Regeln fallen. Der französische nationale Layer besteht ausschließlich daraus: Alle 3.320 Zeilen sind Verordnungen mit access_restriction_type: "noEntry", einer erlassenden Behörde und einem Gültigkeitsfenster — und nicht eine trägt ein Gewicht oder eine Höhe. Eine Integration, die nur auf Dimensionen zugreift, lässt Frankreich vollständig unter den Tisch fallen.
Tauschen Sie type=truck_restrictions gegen group=trucking, und derselbe Aufruf fächert sich über dreizehn Lkw-bezogene Layer auf einmal auf — Beschränkungen und Gewichtslimits, Brückenhöhen, Parken und Rastplätze, Wiege- und Kontrollstationen, geeichte Waagen, Frachtkorridore, Lkw-Routen sowie Werkstatt-, Wasch- und Servicepunkte —, sodass eine einzige Anfrage das gesamte Nutzfahrzeug-Bild für eine Bounding Box zeichnet.
Die Wechselverkehrszeichen
Der Typ signs trägt die Straßenbeschilderung, und bei VMS/DMS-Anzeigetafeln schließt das die aktuell angezeigte Nachricht ein. Fragen Sie sie genauso ab — nach Land, nach Bounding Box:
curl -H "X-API-Key: $KEY" \
"https://api.napspan.com/api/v1/features?type=signs&jurisdiction=AUT&bbox=9.5,46.4,17.2,49.0"
{
"data": [
{
"id": "AUT-vms-AQ_A09_2_188,127_Q",
"source": "AUT",
"jurisdiction": "AUT",
"feature_type": "signs",
"name": "VMS A9 (AQ_A09_2_188,127_Q)",
"latitude": 47.00692,
"longitude": 15.40754,
"is_active": true,
"properties": {
"road": "A9",
"bearing": 359,
"pictograms": ["8", "24", "24", "111"],
"pictogram_descriptions": ["other", "blankVoid", "other", "other", "other"],
"image_url": "https://maps.asfinag.at/cache/wvz?image=AQ_A09_2_814_F3_F2.B_8"
},
"last_updated": "2026-08-14T11:51:37Z",
"has_details": false
}
],
"total": 17, "limit": 100, "offset": 0, "has_more": false
}
Diese Nutzlast ist bewusst gewählt, denn sie zeigt das Feld, das Sie nicht voraussetzen dürfen. message ist optional, und auf manchen nationalen Feeds ist es überhaupt nie vorhanden. Wo ein Portal Worte veröffentlicht, trägt message den angezeigten Text der Tafel, über ihre Zeilen mit Zeilenumbrüchen zusammengefügt, sodass Sie nicht pro Land eine andere Nutzlast parsen — eine spanische Tafel kommt als "MANTENGA\nDISTANCIA DE\nSEGURIDAD" an. Wo sie Symbole veröffentlicht, wie es die DATEX-II-VMS-Publikation der ASFINAG heute für alle siebzehn ihrer aktiven österreichischen Anzeigetafeln tut, gibt es gar keinen message-Schlüssel, und der Inhalt steckt in pictograms / pictogram_descriptions, während image_url auf die gerenderte Tafel zeigt. Fehlend heißt diese Anzeigetafel veröffentlicht keinen Text — nicht diese Anzeigetafel ist leer.
Gemessen am 14. August 2026: Von den aktiven signs-Zeilen trägt Spanien auf 1.535 von 2.516 Nachrichtentext, England auf 505 von 1.519, Finnland auf 445 von 542. Österreich, Lettland, Berlin und Polen tragen keinen. Slowenien ist wieder der dritte Zustand — es veröffentlicht den message-Schlüssel auf allen 239 seiner Schilder, und jeder Wert ist ein leerer String: prüfen Sie also den Wert, nicht den Schlüssel. Es ist in beiden Fällen dieselbe eine signs-Form; die nationalen Zugangspunkte unterscheiden sich nur darin, was sie hineinlegen.
Das Entscheidende: Beschränkungen fahren die Route mit
Eine Bounding Box abzufragen ist der manuelle Weg. Der Weg, der den Tag eines Disponenten verändert, ist, dass Lkw-Beschränkungen an der Route selbst hängend zurückkommen. Senden Sie eine normale Routing-Anfrage an POST /api/v1/routing/route mit dem Profil des Lkw, und die Beschränkungen des Korridors treffen im warnings[]-Kanal ein — kein zweiter Aufruf, kein separater räumlicher Abgleich auf Ihrer Seite.
Und es ist kein Datenmüllhaufen. Die Engine vergleicht jede Beschränkung mit dem tatsächlich gesendeten Lkw und warnt nur, wenn Ihr Fahrzeug das Limit überschreitet — eine Warnung pro Dimension, sodass der Disponent genau sieht, welches Maß das Problem ist:
{
"warnings": [
{
"type": "truck_restriction",
"severity": "critical",
"title": "Truck weight restriction",
"description": "weight limit 3.50t; your truck is 40.00t.",
"distance_along_route_m": 184300,
"projected_arrival_time": "2026-07-08T18:40:00Z",
"source": "OSM-EU",
"source_id": "2971775",
"geometry": { "type": "Point", "coordinates": [14.1699315, 47.5584364] }
}
]
}
Alles, was ein Disponent zum Handeln braucht, steckt in diesem einen Objekt: was die Beschränkung ist, wo auf der Route sie liegt (distance_along_route_m) und wann der Lkw sie voraussichtlich erreicht (projected_arrival_time).
Bei der vierten Frage — gilt das Verbot zu dieser Stunde überhaupt? — ist Genauigkeit nötig, denn die Antwort steht nicht dort, wo man zuerst nachsieht. Eine Warnung hat Felder valid_from / valid_to auf oberster Ebene, und sie werden aus Start- und Endzeit des Features selbst befüllt. Kein europäischer Lkw-Beschränkungs-Feed, den wir führen, setzt diese heute: Am 14. August 2026 hatte keine einzige der 194.980 aktiven Beschränkungen eine Start- oder Endzeit, eine Beschränkungswarnung kommt also mit beiden Feldern leer an. Wo ein nationaler Feed doch ein Fenster veröffentlicht, kommt es innerhalb von properties unter den Namen der Quelle an — die französischen Verordnungen tragen valid_from auf allen 3.320 Zeilen und valid_until (nicht valid_to) auf 420 davon —, und die Warnung reicht properties unverändert durch: dort ist also zu lesen. Alles ohne Fenster, was jede oben gezeigte OpenStreetMap-Zeile einschließt, ist stehender Bestand: als stets geltend behandeln.
Eine weitere Prüfung fährt auf derselben Anfrage mit, und sie greift danach, was Sie laden, nicht wie groß Sie sind. 7.102 aktive Beschränkungen tragen einen hazmat-Zufahrts-Tag aus OpenStreetMap; senden Sie eine Ladung mit gesetztem hazardous-Array im Lkw-Profil, und ein mit hazmat: "no" getaggter Abschnitt kommt als eigene kritische hazmat_restriction-Warnung zurück, getrennt von den Dimensionsprüfungen — die Routing-Engine wird zudem gebeten, solche Abschnitte über hazardous / tunnel_category zu meiden. Im alpinen Transit ist das häufig die bindende Beschränkung, und keine Dimensionsprüfung hätte sie je zutage gefördert.
Das reitet auf derselben Anfrage wie die Mautkosten des Korridors und die Pausenplanung nach 561/2006. Eine grenzüberschreitende Abfrage — etwa LV → PL → DE — liefert eine befahrbare Lkw-Route zurück, die Beschränkungen, die sie stoppen würden, wo der Fahrer legal pausieren muss und was die Fahrt an Maut kostet: das betriebliche Bild, bevor der Lkw rollt, nicht nach dem Bußgeld.
Was Sie von den Daten erwarten können
Einige ehrliche Hinweise, damit sich die Abdeckung so verhält, wie Sie es erwarten:
- Die Abdeckung ist pro Quelle und wächst. Am 14. August 2026 umfasst der
truck_restrictions-Layer fünfzehn Gebiete: Frankreich (3.320), Lettland (233) und Schottland (4) aus nationalen Feeds sowie Österreich, Belgien, die Schweiz, Finnland, Dänemark, Kroatien, Litauen, Estland, Moldau, Luxemburg, Zypern und Island aus den Community-Tags von OpenStreetMap — allein Österreich stellt 69.064 Zeilen. Dersigns/VMS-Layer umfasst acht: Spanien, England, Finnland, Slowenien, Lettland, Berlin, Polen und Österreich. Weitere nationale Zugangspunkte fügen sich in dieselben zwei Feature-Typen ein, sobald wir sie anbinden; fragen SieGET /api/v1/features/typesfür die aktuellen Zählungen je Typ ab, bevor Sie gegen ein Land bauen. - Gebietscodes sind ISO 3166-1 alpha-3.
?jurisdiction=LVA, niemalsLV— die zweibuchstabige Form ist kein Alias und trifft überhaupt nichts, scheitert also als leeres Ergebnis statt als Fehler. Untergliederungen erweitern sie mit Bindestrich (GBR-SCT,DEU-BE), und ein Untergliederungscode rollt nicht aus seinem Ländercode auf. - Zeitfenster kommen aus der Quelle — innerhalb von
properties. Saisonale, Wochenend- und Nachtfahrverbote erscheinen dort, wo der Upstream-Feed sie stempelt: heute heißt dasproperties.valid_from/properties.valid_untilder französischen Verordnungen, nicht die Feldervalid_from/valid_toder Warnung auf oberster Ebene, die bislang kein europäischer Beschränkungs-Feed befüllt. Wo eine Quelle eine Beschränkung als stehenden Bestand ohne Zeiten veröffentlicht, behandeln Sie sie als stets geltend, statt ein Fenster anzunehmen. - Beschränkungen routen; Schilder werden abgefragt. Lkw-Beschränkungen fahren die Route in
warnings[]automatisch mit. VMS/Schilder sind nicht Teil der Routing-Anreicherung — holen Sie sie für einen Korridor mit einerbbox-Abfrage auftype=signs, an der Bounding Box der Route ausgerichtet. - Es ist eine Planungsgrundlage. Die Daten sind für Disposition und Vorabplanung gebaut. Sie schärfen den Plan; sie ersetzen nicht die Pflicht des Fahrers, dem Schild vor ihm zu folgen.
Der rote Faden
Jede nationale Behörde veröffentlicht ihre Beschränkungen und Schilder auf ihre eigene Weise, nach ihrem eigenen Zeitplan, unter ihrer eigenen Lizenz. All das mit einer Route zu verbinden und aktuell zu halten, ist intern lösbar — und intern gelöst wird es zu einer dauerhaften Wartungsverpflichtung, die mit dem Produkt konkurriert, das Sie eigentlich verkaufen. NAPSPAN erledigt diese Aggregation einmal und übergibt Ihnen ein normalisiertes Schema: Fragen Sie eine Bounding Box ab, oder senden Sie eine Route und bekommen Sie die Beschränkungen darauf zurück, filterbar nach Land, ausgeliefert aus Europa, jede Quelle vor der Auslieferung lizenzklassifiziert.
Ausprobieren
- API-Dokumentation —
/featuresmittype,group,jurisdictionundbbox, dazuPOST /routing/route - Live-Karte — die normalisierten Beschränkungen und Schilder über die europäischen NAPs ansehen
- Kostenloser API-Schlüssel — keine Karte, 14-tägige Testphase
Kennen Sie das Verbot vor der Grenze, nicht an ihr
Nationale Lkw-Beschränkungen und Wechselverkehrszeichen, normalisiert in ein Schema — abfragbar nach Land und Bounding Box, und automatisch auf Ihrer Route ausgegeben. Kostenlose 14-tägige Testphase. Keine Karte.
Kostenlosen API-Schlüssel sichern Dokumentation lesen