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é.

20Tarifs officiels numérisés
44Documents officiels derrière eux
96Contours de zones sur la carte
150Prix de référence calculés à la main
167/167Prix de référence retrouvés par le moteur aujourd’hui

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
rules/rulesets/ie-dublin.yaml : la source et les deux tarifs de jour qu’utilise un trajet depuis l’aéroport. Le tarif A cède la place au tarif B dès que le prix atteint le montant fixé par l’arrêté.

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.

À: Dublin, Paris, Madrid

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.

À: Londres, Dublin, Hong Kong, Mexico

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.

À: Londres, Dublin, Rome, Tokyo

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.

À: New York City, San Francisco, Mexico

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.

À: Paris, Londres, Rome

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 :

Carte d’un trajet en taxi de l’aéroport Paris-Charles de Gaulle à Saint-Germain, à travers la zone des taxis parisiens jusqu’à la zone du forfait rive gauche
Paris : l’itinéraire depuis l’aéroport Charles de Gaulle se termine dans la zone rive gauche (le contour en pointillés), donc le forfait officiel s’applique à la place du compteur. Paris fixe un forfait pour chaque rive de la Seine.
Carte d’un trajet en taxi de l’aéroport d’Heathrow à Paddington, avec un repère là où le compteur londonien passe au tarif longue distance
Londres : le repère vert montre où le compteur passe au tarif longue distance, que Transport for London fixe pour la fin d’un long trajet.

Chaque montant d’un calcul est indiqué avec sa règle et un lien vers le document officiel :

Un prix de taxi de l’aéroport de Dublin à O'Connell Street, détaillé ligne par ligne, chaque ligne renvoyant au Taxi Regulation (Maximum Fares) Order 2024
Dublin : le prix de l’aéroport à O'Connell Street, ligne par ligne. Chaque ligne renvoie à l’arrêté dont elle provient.

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 :

VillePrix de référenceCalculés à la mainExemples 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 villes16715017167/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 } }
rules/golden/ie-dublin.yaml : le calcul dans le commentaire, le trajet et le prix attendu en dessous.

Puis la réponse du moteur pour le même trajet, calculée au moment où cette page a été générée :

LigneRègleMontant
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-a4,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-a19,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-b4,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-a0,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"
    }
  ]
}
Une partie de la trace du moteur pour ce trajet : chaque ligne indique sa règle et sa source, et les événements disent où le tarif a changé le long de l’itinéraire.

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.