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 241 aires de stationnement poids lourds et 9 135 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, 86 sites — 5 851 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 : environ 119 000 observations en trente jours. En regroupant cet historique par heure de la journée, on obtient la courbe qu’une carte statique ne peut pas montrer.
| Heure locale (Autriche, CEST) | Places occupées | Places libres moy. par site |
|---|---|---|
| 08h00 – 14h00 | ~40 % | ~43 |
| 17h00 | 55,2 % | 33,3 |
| 19h00 | 70,2 % | 23,4 |
| 21h00 | 76,9 % | 18,6 |
| 22h00 (pic) | 77,8 % | 18,1 |
| 00h00 – 04h00 | ~76–77 % | ~19 |
L’occupation du réseau double approximativement entre la fin de matinée et 22h00, puis se maintient sur ce plateau jusque vers quatre heures du matin. Lue comme une moyenne de flotte, elle paraît encore tenable — 77 % occupé signifie 23 % libre, et 18 places ouvertes par site, ce n’est pas rien.
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.
- 57 des 86 sites en direct ont atteint zéro place libre à un moment de la fenêtre de trente jours.
- À 23h00 locale, 47 sites sur 83 observés à cette heure avaient été complètement pleins au moins une fois pendant la fenêtre. À 06h00 locale, seulement 2.
- Prenons une aire ordinaire — Wiener Neustadt, 40 places PL. Moyenne de places libres à 07h00 locale : 21,1. À 20h00 locale : 1,9. À partir de 18h00 locale, chaque tranche horaire 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 à 09h08 locale le 30 juillet semblait parfaitement détendu : zéro site plein sur 86, seulement deux réduits à leurs deux dernières places. Arnoldstein, à la frontière italienne, affichait 12 % d’occupation avec 352 de ses 402 places PL libres. Les deux images sont vraies. Onze heures les séparent. Un chiffre juste au petit-déjeuner 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": 352,
"occupied_spots": 50,
"occupancy_pct": 12,
"occupancy_status": "spacesAvailable",
"opening_status": "open",
"occupancy_updated": "2026-07-30T07:01:44Z"
},
"last_updated": "2026-07-30T07:08:00Z"
}
]
}
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. 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": 21.1, "avg_capacity": 71, "samples": 71 },
{ "hour": 12, "avg_available": 14.6, "avg_capacity": 71, "samples": 75 },
{ "hour": 18, "avg_available": 1.9, "avg_capacity": 71, "samples": 30 },
{ "hour": 20, "avg_available": 2.2, "avg_capacity": 71, "samples": 24 }
]
}
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.
Deux 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. Et 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.
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. Parmi les flux européens de stationnement poids lourds que NAPSPAN intègre, seule une minorité publie des comptages en direct — 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. L’Autriche est le réseau sur lequel repose cet article parce que c’est celui dont la couche temps réel est à la fois assez complète pour raisonner et autorisée à la rediffusion sous licence ouverte. Nous préférons nommer la lacune plutôt que colorier une carte qui laisserait croire à une couverture que nous n’avons pas. - Même en Autriche, il s’agit de 86 sites sur 241. Les 155 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. La série autrichienne commence le 30 juin 2026 et le point d’accès de tendance remonte trente jours : aujourd’hui, la fenêtre correspond donc à l’intégralité de l’enregistrement. Elle ne contient encore aucune saisonnalité, et un profil de vacances d’août n’est pas un profil de février. Cela s’améliorera tout seul ; ce n’est pas encore meilleur.
- 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