Le règlement (CE) 561/2006 est de l’arithmétique. Quatre heures et demie de conduite, puis 45 minutes de pause. Neuf heures par jour, onze deux fois par semaine, un repos journalier d’au moins onze heures. Tout outil de planification digne de ce nom sait calculer où le compteur expire — le nôtre aussi.
Le règlement ne dit rien sur l’existence d’une place où garer le camion.
C’est précisément ce qui empêche les répartiteurs de dormir, car l’échec ne se solde pas par une amende : il se solde par un conducteur qui, à 21h30, se tient à l’entrée d’une aire pleine et choisit entre la bande d’arrêt d’urgence et la conduite illégale. Et c’est difficile à anticiper, parce que la carte induit en erreur d’une manière très particulière : l’aire ne disparaît pas quand elle est pleine. Tout inventaire statique continue de l’afficher, à pleine taille, toute la nuit.
« Y a-t-il une aire poids lourds ? » est la mauvaise question
Prenons l’Autriche, où nous disposons de la vérité terrain place par place pour confronter la carte.
L’inventaire statique indique que le réseau autoroutier et de voies rapides de l’ASFINAG compte 244 aires de stationnement poids lourds et 9 185 places PL. C’est le chiffre qu’affiche une carte de couverture, et il est exact. Il est aussi inutile à la nuit tombée, car il décrit le béton, pas la disponibilité.
Sur ce total, 85 sites — 5 835 places PL — publient leur occupation en direct, que nous interrogeons toutes les 60 secondes. Nous enregistrons chaque changement sur ces sites depuis le 30 juin 2026 : 293 334 observations au 10 septembre 2026, dont 127 387 dans les trente derniers jours que lit le point de terminaison de tendance. En regroupant cet historique par heure de la journée, on obtient la courbe qu’une carte statique ne peut pas montrer — mesurée ici sur les trente jours au 10 septembre 2026 :
| Heure locale (Autriche, CEST) | Places PL occupées | Places libres moy. par site |
|---|---|---|
| 08h00 – 14h00 | ~39 % | ~41 |
| 17h00 | 52,4 % | 31,9 |
| 19h00 | 68,4 % | 21,2 |
| 21h00 | 76,6 % | 15,7 |
| 21h00 – 04h00 (plateau ; pic 77,0 % à 01h00) | ~76–77 % | ~16 |
| 00h00 – 04h00 | ~75–77 % | ~16 |
L’occupation du réseau double entre la fin de matinée et la tombée de la nuit — 38,4 % à 11h00 locale, 76,6 % à 21h00 —, puis se maintient sur ce plateau jusque vers quatre heures du matin, avec un pic à 77,0 % vers 01h00, avant de retomber à 57,5 % à six heures. Lue comme une moyenne de flotte, elle paraît encore tenable : 77 % occupé signifie 23 % libre, et 16 places ouvertes par site, ce n’est pas rien.
Une note d’arithmétique, car s’y tromper déplace cette colonne de vingt points. Ces pourcentages sont des places PL occupées, calculées sur les truck_spaces de chaque site. Divisez les mêmes décomptes de places libres par la capacity totale et le réseau se lit à 68–88 % d’occupation toute la journée — ce n’est pas un réseau plus chargé, c’est un numérateur et un dénominateur qui ne comptent pas la même chose. 84 des 85 sites autrichiens qui remontent des données sont des sites mixtes où les deux diffèrent.
Cette moyenne est le piège. L’occupation ne se répartit pas poliment sur le réseau : elle se concentre, et certaines aires tombent franchement à zéro.
- 40 des 86 sites observés dans la fenêtre de trente jours ont atteint zéro place libre à un moment.
- À 23h00 locale, 22 sites sur 85 observés à cette heure avaient été complètement pleins au moins une fois pendant la fenêtre — à 21h00, 33 d’entre eux, et à 07h00, trois. Huit aires enregistrent un zéro à chacune des heures de 18h00 à 23h00.
- Prenons une aire ordinaire — Wiener Neustadt, 40 places PL. Moyenne de places libres à 07h00 locale : 22,0. À 20h00 locale : 5,7. Chaque tranche horaire de 18h00 à 23h00 locale présente un minimum enregistré de 0.
Wiener Neustadt n’est pas un site exceptionnel, c’est un site normal — et pour toute la seconde moitié de la soirée, sa réponse honnête à « mon conducteur peut-il s’arrêter ici ? » est : probablement pas, et vous auriez dû le savoir à la répartition.
Pendant ce temps, le même réseau à 14h47 locale le 10 septembre semblait presque détendu : zéro site plein sur 85, et une seule aire réduite à ses deux dernières places. Arnoldstein, à la frontière italienne, affichait 8 % d’occupation avec 366 de ses 402 places PL libres. Les deux images sont vraies. Six heures les séparent. Un chiffre juste l’après-midi et faux au coucher doit être lu en direct, sinon il ne vaut pas la peine d’être lu.
L’occupation en direct, dans le même appel /features que tout le reste
L’ASFINAG publie cela sous forme de deux documents DATEX II : une ParkingTablePublication statique qui décrit les sites, et une ParkingStatusPublication dynamique qui porte le nombre de places libres. Aucun n’est exploitable seul — le document d’état n’a pas de géométrie, la table n’a pas d’occupation. Nous les joignons sur parkingRecordReference et publions un feature par site, comptages en direct intégrés :
curl -H "X-API-Key: $KEY" \
"https://api.napspan.com/api/v1/features?type=truck_parking&jurisdiction=AUT"
{
"data": [
{
"id": "AUT-tp-PARK000064",
"source": "AUT",
"jurisdiction": "AUT",
"feature_type": "truck_parking",
"name": "Arnoldstein Zollamt",
"latitude": 46.540813,
"longitude": 13.670096,
"is_active": true,
"properties": {
"truck_parking": true,
"capacity": 431,
"truck_spaces": 402,
"available_spots": 366,
"occupied_spots": 36,
"occupancy_pct": 8,
"occupancy_status": "spacesAvailable",
"opening_status": "open",
"occupancy_updated": "2026-09-10T12:33:34Z"
},
"last_updated": "2026-09-10T12:36:35Z"
}
]
}
Trois détails de cette réponse comptent plus qu’il n’y paraît :
- Le dénominateur est
truck_spaces, pascapacity. Arnoldstein compte 431 places dont 402 accueillent un poids lourd, etavailable_spotsne compte que les places PL. Diviser parcapacityrevient à sous-estimer silencieusement le taux de remplissage côté PL sur chaque site mixte du réseau — soit 84 des 85 sites autrichiens qui remontent des données. La règle se généralise avec un seul embranchement : utiliseztruck_spaceslà où le flux le publie, etcapacitylà où il ne le publie pas. L’Autriche estampilletruck_spacessur ses 244 sites ; le flux fédéral allemand ne l’estampille sur aucun, car ses enregistrements d’aires poids lourds sont exclusivement PL etcapacityy est déjà le chiffre PL. available_spots: 0est un fait, pas une absence. Cela signifie plein, et nous le savons. Un site sans flux en direct omet complètement le champ. Ces deux états ne doivent pas se confondre dans votre code : « absent » vaut inconnu, « 0 » vaut fermé pour vous.occupancy_updatedest l’horodatage du comptage lui-même, distinct delast_updated: vous pouvez donc écarter une lecture périmée selon votre propre seuil plutôt que de vous fier à notre cycle d’interrogation.
Et le code pays est en ISO 3166-1 alpha-3 : ?jurisdiction=AUT, jamais AT — la forme à deux lettres n’est pas un alias, elle renvoie un ensemble vide.
La tendance : « cette aire est-elle habituellement pleine à mon heure d’arrivée ? »
Un comptage en direct répond à une question sur maintenant. La répartition planifie un arrêt dans six heures, quand ce comptage aura changé. C’est à cet écart que sert l’historique horaire, disponible sur le point d’accès de détail :
curl -H "X-API-Key: $KEY" \
"https://api.napspan.com/api/v1/features/AUT-tp-PARK000402/details"
{
"data": { "id": "AUT-tp-PARK000402", "name": "Wr. Neustadt", ... },
"availability_trend": [
{ "hour": 5, "avg_available": 22.0, "avg_capacity": 71, "samples": 77, "low_samples": 0 },
{ "hour": 12, "avg_available": 18.1, "avg_capacity": 71, "samples": 78, "low_samples": 0 },
{ "hour": 18, "avg_available": 5.7, "avg_capacity": 71, "samples": 41, "low_samples": 0 },
{ "hour": 20, "avg_available": 5.6, "avg_capacity": 71, "samples": 33, "low_samples": 0 }
]
}
Vingt-quatre tranches, construites sur les trente derniers jours d’occupation enregistrée pour cette aire précise. C’est la différence entre « il y a deux places libres à l’instant » et « cette aire est descendue à un chiffre tous les soirs depuis un mois » — et seule la seconde est exploitable à 14h00, au moment de décider où le conducteur dormira.
Trois précautions avant de tracer la courbe. Les heures sont en UTC ; l’Autriche était à UTC+2 sur toute la fenêtre, la tranche 18 correspond donc à 20h00 sur l’écran du conducteur — localisez avant d’afficher à un humain. samples est là pour être lu : les tranches sont écrites au changement, une tranche peu fournie mérite donc moins de confiance qu’une tranche dense. Nous publions le compte plutôt que de le lisser.
Et la troisième est celle qui fausse un graphique en silence : avg_capacity est la capacité totale du site, tandis que avg_available ne compte que les places PL. Wiener Neustadt a 40 places PL au sein de 71 places au total — d’où le avg_capacity: 71 de chaque tranche ci-dessus. Calculer 1 - avg_available / avg_capacity ne donne donc pas l’occupation PL de cette aire : cela mélange les deux décomptes et se lit environ vingt points trop plein. Prenez le dénominateur dans le truck_spaces du feature et n’utilisez avg_capacity que pour ce qu’il est : la taille du site entier. C’est le même piège que dans la réponse en direct, un nom de champ plus loin — et le fait que les deux nombres se côtoient dans le même objet est précisément ce qui le rend facile à manquer.
Sa vraie place : sur l’itinéraire, à côté de la pause
Interroger une aire par son identifiant est le chemin de mise au point. Ce qui change une soirée, c’est que l’occupation arrive déjà rattachée à l’itinéraire — et à la pause qu’exige le règlement.
Envoyez un itinéraire poids lourd normal à POST /api/v1/routing/route avec include_features: ["truck_parking"], et le stationnement revient dans le canal features[] — distinct des warnings[] de danger, activé à la demande, et sans coût tant que vous ne le demandez pas :
{
"features": [
{
"type": "truck_parking",
"name": "Wr. Neustadt",
"distance_along_route_m": 184000,
"detour_m": 240,
"side": "right",
"available_spots": 3,
"capacity": 40,
"as_of": "2026-07-30T18:02:11Z",
"source": "AUT",
"geometry": { "type": "Point", "coordinates": [16.2, 47.8] }
}
]
}
Ajoutez ensuite un bloc hos avec le compteur du conducteur et ruleset: "eu_561", et la réponse gagne une projection hos[] : où tombe la pause, et quel stationnement est atteignable avant la limite plutôt qu’après. Là où un flux publie l’occupation en direct, deux choses en découlent qu’un inventaire statique ne pourra jamais faire :
- Les aires atteignables sont classées par places libres, si bien que la première suggestion est celle qui a le plus de chances d’avoir encore de la place, et non simplement le béton le plus proche.
- L’arrêt est marqué
feasible: falselorsque toutes les aires atteignables se déclarent pleines. C’est l’alerte qui compte. Elle survient au moment de la planification, dans une réponse d’API, des heures avant qu’elle n’arrive autrement sous forme d’appel téléphonique depuis une aire de repos.
Cela voyage sur la même requête que les interdictions PL et panneaux VMS du corridor, ses coûts de péage, ses files d’attente aux frontières et le plan de pauses 561/2006 lui-même. Un appel renvoie un itinéraire poids lourd praticable, les règles qui l’arrêteraient, ce qu’il coûte, où le conducteur doit légalement se reposer — et s’il y aura une place à son arrivée.
Ce que ces données ne font pas
Les limites honnêtes font partie du produit ; les voici sans fioritures.
- La plupart des flux nationaux publient l’inventaire, pas l’occupation. La Slovénie, les Pays-Bas, la Bavière et la Lettonie nous transmettent des sites et des capacités sans aucune disponibilité, et il en va de même pour la plupart des flux
parkinggénéralistes. Deux flux font exception, et le plus important est allemand : la couche de stationnement poids lourds du réseau autoroutier fédéral porte des comptages en direct sur 1 759 de ses 1 858 sites — vingt fois le réseau autrichien qui remonte des données — et elle est servie par l’API dans le même schématruck_parking. Cet article repose malgré tout sur l’Autriche, pour une raison qui mérite d’être dite : les conditions de l’ASFINAG sont une CC BY 4.0 confirmée, tandis que la variante de licence fédérale allemande est encore en cours de vérification — et nous préférons ancrer un exemple chiffré sur la couche dont nous avons fini d’examiner les conditions de rediffusion. Interrogez les deux ; pondérez la couche allemande en conséquence tant que nous n’en dirons pas plus. - Même en Autriche, il s’agit de 85 sites sur 244. Les 159 autres sont de vraies aires, qui apparaissent avec une capacité et sans comptage. Votre interface a besoin d’un troisième état — libre / plein / ne remonte rien — et c’est l’absence d’
available_spotsqui le sélectionne. - Trente jours d’historique, c’est trente jours — et c’est une fenêtre glissante. La série autrichienne commence le 30 juin 2026 — 293 334 observations au 10 septembre — mais le point d’accès de tendance ne lit que les trente derniers jours : l’enregistrement a donc déjà débordé la fenêtre, et ce que vous récupérez aujourd’hui est un mois d’été, pas la série entière. L’écart n’est pas théorique : sur les trente jours au 30 juillet, 57 des 86 aires avaient atteint zéro place libre et 47 des sites observés à 23h00 avaient été pleins à un moment ; sur les trente jours au 14 août, ces chiffres sont 40 et 29, et sur les trente jours au 10 septembre, 40 et 22. Même réseau, même point d’accès, des semaines d’écart. Servez-vous de la tendance comme d’un taux de base pour la saison où vous êtes, et rechargez-la plutôt que de mettre en cache un chiffre du mois dernier.
- Une place libre n’est pas une place réservée. Rien ici ne réserve quoi que ce soit. Vous savez ce que l’exploitant a déclaré et quand — exactement ce qu’il faut pour choisir entre deux aires, mais pas la garantie que la place survivra aux vingt prochaines minutes.
- La tendance est un a priori, pas une prévision. Une moyenne par heure sur trente jours est un bon taux de base, et elle est aveugle au jeudi particulier que vit votre conducteur. Servez-vous-en pour classer les candidats et savoir quand le réseau se tend ; pour la décision finale, prenez le comptage en direct.
Le fil conducteur
C’est la même forme que les cinq problèmes de données routières que rencontre toute flotte européenne transfrontalière. L’information existe. Une autorité publique la publie, correctement, sous licence ouverte. Elle arrive répartie sur deux documents DATEX II à joindre sur une clé de référence, dans un profil national, à son propre rythme — et faire cela une fois par pays, pour toujours, est un engagement de maintenance qui entre en concurrence avec le produit que vous vendez réellement.
NAPSPAN effectue cette jointure une seule fois. Les comptages autrichiens arrivent dans le même schéma truck_parking que tous les autres flux de stationnement du système, filtrables par pays, portés sur l’itinéraire aux côtés des péages et des temps de repos, servis depuis l’Europe et classés juridiquement avant diffusion. Les données autrichiennes sont publiées par l’ASFINAG sous licence CC BY 4.0 — Datenquelle: ASFINAG — licensed under CC BY 4.0 — et cette mention accompagne chaque enregistrement que nous vous remettons.
Essayez
- Documentation API —
/featuresavectype=truck_parking,/features/{id}/detailspour la tendance, etPOST /routing/routeavecinclude_features - Carte en direct — le réseau autrichien tel qu’il est en ce moment
- Clé API gratuite — sans carte bancaire, essai de 14 jours
Découvrez l’aire pleine à 14h00, pas à 21h30
Occupation en direct place par place, historique horaire d’occupation et planification des pauses 561/2006 qui classe les aires atteignables par places libres — en un seul appel d’API. Essai gratuit de 14 jours. Sans carte bancaire.
Obtenir une clé API gratuite Lire la documentation