Le moteur de calcul
Nous avons numérisé les tarifs officiels des taxis de 20 villes : chaque tarif, plage horaire, zone, forfait et supplément, tiré des documents des autorités et écrit sous forme de règles qu’un ordinateur peut suivre. Un seul moteur lit ces règles et fait tourner le compteur le long de votre itinéraire : vous obtenez le prix officiel sans lire le PDF de l’autorité.
Pourquoi numériser un tarif
Le tarif des taxis d’une ville est un texte juridique : un arrêté, un avis ou une grille tarifaire, souvent un PDF scanné dans la langue du pays. Il fixe le fonctionnement du compteur, pas le prix d’un trajet. Pour connaître le prix, il faut donc appliquer soi-même chaque règle : quel tarif s’applique à cette heure, quand le compteur compte la distance et quand il compte le temps, où commence le forfait aéroport et quels suppléments il autorise.
La plupart des calculateurs évitent ce travail et estiment à partir d’un prix moyen au kilomètre. Nous l’avons fait une fois, ville par ville, pour que chaque page de TaxiFare applique exactement les règles de l’autorité, en un seul endroit et en quatre langues.
Du document de l’autorité au jeu de règles
Le tarif de chaque ville devient un jeu de règles : un fichier structuré avec chaque tarif, horaire, zone, forfait et supplément, et pour chaque valeur le document officiel dont elle provient. Lorsque la formulation de l’autorité compte, le fichier la cite. Voici une partie du vrai jeu de règles de Dublin, tirée du fichier au moment où cette page a été générée :
si-479-2024:
title: Taxi Regulation (Maximum Fares) Order 2024 (S.I. No. 479 of 2024)
publisher: National Transport Authority, Irish Statute Book
url: https://www.irishstatutebook.ie/pdf/2024/en.si.2024.0479.pdf
kind: official
retrieved: 2026-10-31
checked: opened
archive: null
standard-a:
name: Standard rate, Tariff A
flag: { amount: 4.40, covers: { distance: 500 m, time: 84.9 s } }
distance: { amount: 0.20, every: 151.5 m }
time: { amount: 0.20, every: 25.7 s }
drop: { amount: 0.20, rounding: up }
# "Graduates to Tariff B when running total switches from €23.60 to €23.80"
after: { fare: 23.60, tariff: standard-b }
source: si-479-2024
standard-b:
name: Standard rate, Tariff B (over €23.60)
flag: 0
distance: { amount: 0.20, every: 116.3 m }
time: { amount: 0.20, every: 19.7 s }
drop: { amount: 0.20, rounding: up }
source: si-479-2024
Avant qu’un jeu de règles puisse être publié, un validateur le vérifie :
- chaque valeur indique sa source, et une valeur sans source est refusée ;
- l’horaire ne laisse aucune heure de la semaine sans tarif, et chaque zone, tarif et supplément auquel il renvoie existe ;
- aucune combinaison de tarifs ne peut rendre un trajet plus lent moins cher qu’un trajet plus rapide ;
- ce que l’autorité ne précise pas est consigné comme hypothèse, jamais complété en silence.
Ensuite, le rédacteur vérifie chaque valeur dans le document officiel, ligne par ligne, et valide le tarif. D’ici là, la page de la ville signale qu’il s’agit d’un brouillon. Chaque document figure sur la page des sources officielles.
Ce que le moteur sait gérer
Deux villes ne fixent jamais leurs prix de la même façon. Voici les règles que le moteur applique aujourd’hui, chacune exigée par un vrai tarif :
Heure, week-ends et jours fériés
Chaque tarif a ses jours, ses heures et ses jours fériés, comparés à l’heure locale. Les règles sont examinées dans l’ordre et la première qui convient l’emporte : un tarif de jour férié peut ainsi remplacer celui de semaine.
Distance ou temps, comme compte le compteur
Au-dessus d’une vitesse donnée, le compteur facture la distance, en dessous le temps. Quelques villes facturent les deux à la fois. Le moteur suit la vitesse le long de l’itinéraire et facture chaque portion comme le ferait le compteur.
À: Paris, New York City, Vienne, Amsterdam
Les pas du compteur
Beaucoup de compteurs avancent par pas d’un montant fixe, et un pas commencé compte en entier. La prise en charge couvre la première portion de distance ou de temps.
Un tarif qui change pendant le trajet
Certains tarifs passent à un taux plus élevé après une distance donnée ou dès que le prix atteint un montant. Dans d’autres, le tarif change à une heure donnée, même en cours de trajet.
Zones et forfaits
Les contours des zones décident si le compteur tourne ou si un forfait s’applique, par exemple entre un aéroport et un quartier, et quels suppléments un forfait peut comporter.
À: Paris, New York City, Madrid, Rome
Limites et pourcentages
Au-delà d’une limite, le compteur peut appliquer un multiple de son tarif, et un supplément peut être une part du prix plutôt qu’un montant fixe.
Prix minimum et maximum
Un minimum relève le prix d’un trajet court et un plafond limite celui d’un long. Dans les deux cas, les lignes du calcul donnent toujours le total.
Péages, réservations et passagers
Les péages de tunnels et de ponts lorsque le tarif les répercute, les frais de réservation et les suppléments pour passagers supplémentaires, chacun selon la règle qui le fixe.
À: Hong Kong, New York City, Dublin, Paris
Le tarif en vigueur ce jour-là
Un nouveau tarif devient une nouvelle version avec sa date d’entrée en vigueur, et un calcul utilise la version en vigueur le jour du trajet. Chaque modification figure sur la page des modifications de tarifs.
Le compteur le long de l’itinéraire
Un trajet est calculé sur de vraies routes avec les données d’OpenStreetMap. Le moteur vérifie ensuite dans quelles zones l’itinéraire commence, se termine et passe, choisit le tarif en vigueur à la prise en charge et fait tourner le compteur le long de l’itinéraire. Un compteur facture le temps dans la circulation lente, donc chaque calcul est donné pour une circulation fluide, normale et dense, avec des temps de trajet ajustés à chaque ville.
Chaque page de trajet montre son itinéraire sur une carte avec les zones qui déterminent le prix. Deux exemples tirés du site :
Chaque montant d’un calcul est indiqué avec sa règle et un lien vers le document officiel :
Captures d’écran du 5 novembre 2026. Les pages elles-mêmes affichent toujours le tarif en vigueur.
Comment nous le testons
Un code qui est d’accord avec lui-même ne prouve rien : chaque tarif est donc testé sur des prix établis indépendamment du moteur :
- Calculé à la main. Pour chaque ville, nous prenons des trajets typiques (un trajet court, un trajet vers l’aéroport, un trajet de nuit ou de week-end, un trajet qui traverse une limite) et calculons le prix à la main à partir du seul tarif, avec le calcul écrit au-dessus de chacun. Le moteur doit tomber à moins de 2 %.
- Les exemples de l’autorité. Lorsqu’une autorité publie des exemples de prix, comme les prix typiques de Transport for London, le moteur doit tomber dans la fourchette publiée.
- Sur la vraie route. Chaque prix de référence est aussi recalculé le long de son itinéraire routier, pour vérifier les temps de trajet.
- Des règles toujours vraies. Des tests automatiques vérifient par exemple qu’un trajet plus long ou plus lent ne coûte jamais moins, que les lignes d’un calcul donnent toujours son total et que chaque prix cité dans le texte d’une page correspond au jeu de règles.
Le moteur a recalculé chaque prix de référence au moment où cette page a été générée. Voici les résultats :
| Ville | Prix de référence | Calculés à la main | Exemples de l’autorité | Concordance |
|---|---|---|---|---|
| Abou Dabi | 6 | 6 | 0 | 6/6 |
| Amsterdam | 5 | 4 | 1 | 5/5 |
| Barcelone | 10 | 10 | 0 | 10/10 |
| Berlin | 6 | 6 | 0 | 6/6 |
| Boston | 6 | 6 | 0 | 6/6 |
| Dublin | 8 | 8 | 0 | 8/8 |
| Hong Kong | 7 | 7 | 0 | 7/7 |
| Londres | 15 | 2 | 13 | 15/15 |
| Madrid | 11 | 11 | 0 | 11/11 |
| Mexico | 9 | 9 | 0 | 9/9 |
| Munich | 9 | 9 | 0 | 9/9 |
| New York City | 7 | 7 | 0 | 7/7 |
| Paris | 6 | 3 | 3 | 6/6 |
| Rome | 10 | 10 | 0 | 10/10 |
| San Francisco | 9 | 9 | 0 | 9/9 |
| São Paulo | 6 | 6 | 0 | 6/6 |
| Tokyo | 14 | 14 | 0 | 14/14 |
| Vienne | 6 | 6 | 0 | 6/6 |
| Washington DC | 7 | 7 | 0 | 7/7 |
| Édimbourg | 10 | 10 | 0 | 10/10 |
| Toutes les villes | 167 | 150 | 17 | 167/167 |
Un trajet, calculé deux fois
Dublin Airport to O'Connell Street, Tuesday 12:00 (standard, A then B). D’abord, le prix de référence tel qu’il figure dans notre fichier de tests, calculé à la main d’après l’arrêté :
# Airport to O'Connell Street, 15,480 m in 30 min: 1,030.6 s moving
# (12,900.5 m) + 769.4 s slow. Whole trip at Tariff A: 12,900.5/151.5 × 0.20
# + 769.4/25.7 × 0.20 = 23.0175; A takes (19.20 + 0.6601) / 23.0175 = 0.8628
# of it (19.20). The rest at Tariff B: 0.1372 × (12,900.5/116.3 × 0.20
# + 769.4/19.7 × 0.20) = 4.1148. 116.57 steps → 117 × 0.20 = 23.40; + 4.40 = 27.80.
- { id: airport-city, label: "Dublin Airport to O'Connell Street, Tuesday 12:00 (standard, A then B)", kind: hand, source: si-479-2024,
trip: { from: [53.4264, -6.2499], to: [53.3498, -6.2603], at: "2026-11-03 12:00", distance: 15.48 km, duration: 30 min },
expect: { mode: meter, fare: 27.80 } }
Puis la réponse du moteur pour le même trajet, calculée au moment où cette page a été générée :
| Ligne | Règle | Montant |
|---|---|---|
| Prise en charge, Tarif standard, tarif A, comprend les premiers 500 m ou 84.9 sTaxi Regulation (Maximum Fares) Order 2024 (S.I. No. 479 of 2024) | tariffs.standard-a | 4,40 € |
| Tarif standard, tarif A: 11,13 km, 11,1 min en circulation lenteTaxi Regulation (Maximum Fares) Order 2024 (S.I. No. 479 of 2024) | tariffs.standard-a | 19,86 € |
| Tarif standard, tarif B (au-delà de 23,60 €): 1,77 km, 1,8 min en circulation lenteTaxi Regulation (Maximum Fares) Order 2024 (S.I. No. 479 of 2024) | tariffs.standard-b | 4,11 € |
| Inclus dans la prise en chargeTaxi Regulation (Maximum Fares) Order 2024 (S.I. No. 479 of 2024) | tariffs.standard-a | −0,66 € |
| Pas du compteur de 0,20 (tout pas entamé est dû)Taxi Regulation (Maximum Fares) Order 2024 (S.I. No. 479 of 2024) | tariffs.standard-a | 0,09 € |
| Moteur · calculé à la main : 27,80 € | 27,80 € | |
Les deux concordent. La même trace figure dans l’API de calcul, pour que chacun puisse vérifier un prix ligne par ligne :
{
"mode": "meter",
"typical": 27.8,
"lines": [
{
"label": "Prise en charge, Tarif standard, tarif A, comprend les premiers 500 m ou 84.9 s",
"amount": 4.4,
"rule": "tariffs.standard-a",
"source": "si-479-2024"
},
{
"label": "Tarif standard, tarif A: 11,13 km, 11,1 min en circulation lente",
"amount": 19.86,
"rule": "tariffs.standard-a",
"source": "si-479-2024"
}
],
"events": [
{
"at_m": 13356.4,
"label": "Début du Tarif standard, tarif B (au-delà de 23,60 €)",
"rule": "tariffs.standard-b"
}
]
}
Ce que le moteur ne peut pas savoir
- La circulation le jour même. Nous donnons une fourchette pour une circulation fluide, normale et dense ; le compteur facture la circulation que vous rencontrez réellement.
- L’itinéraire du chauffeur. Nous calculons l’itinéraire routier le plus rapide ; un détour, une route fermée ou une route à péage que le tarif ne couvre pas change le prix.
- Les suppléments que personne ne peut prévoir, comme des frais de nettoyage. Lorsque le tarif en prévoit, le calcul les indique comme pouvant s’ajouter.
- Les pourboires et les prix des VTC comme Uber ou Bolt : ils ne sont pas réglementés, il n’y a donc pas de tarif officiel à numériser.
Si un prix payé diffère du nôtre, dites-le-nous. Les signalements confirmés deviennent de nouveaux prix de référence.
Utiliser le moteur
Le même moteur répond à l’API de calcul et au serveur MCP à l’adresse /mcp, avec la trace complète : chaque ligne avec sa règle et sa source, l’itinéraire et les événements le long du trajet. La façon dont nous choisissons les sources et vérifions les tarifs est décrite dans la méthodologie.