Comment choisir une API de géolocalisation pour la production
Analyse technique de Nominatim, Google Maps, Mapbox, HERE, TomTom et PickPoint : architecture, tarifs, exemples de code et guide de migration.
Sommaire
Si vous sélectionnez une API de géolocalisation pour un cas d'usage en production - un formulaire de saisie d'adresse, le routage de coursiers ou le suivi GPS d'une flotte - et souhaitez comprendre ce qui différencie vraiment les options, ce guide est pour vous.
1. Ce qui se passe réellement
Géocodage
Le géocodage direct convertit une requête textuelle (adresse ou nom de lieu) en coordonnées. En interne, c'est une recherche dans un index construit à partir de données cartographiques. La qualité du résultat dépend du niveau de détail de l'index pour une région donnée.
Le géocodage inverse convertit des coordonnées en adresse. Il s'agit d'une requête spatiale contre une couche de polygones.
La recherche par Place ID récupère un enregistrement complet via un identifiant stable retourné dans une réponse précédente.
Routage
Les algorithmes de routage travaillent sur un graphe routier : les nœuds sont des intersections, les arêtes sont des segments de route avec des attributs. Le chemin le plus court est calculé avec une variante de Dijkstra ou A* pondérée par un profil de véhicule.
Le profil détermine les routes accessibles : un piéton emprunte les trottoirs, un camion évite les ponts à tonnage limité, un vélo préfère les pistes cyclables.
L'optimisation multi-étapes est une variante du Problème du Voyageur de Commerce (NP-hard), résolue en pratique avec des heuristiques : voisin le plus proche, 2-opt, avec support de fenêtres temporelles.
Address Search vs. Géocodage
La différence essentielle : Address Search est optimisé pour l'UX en temps réel - il retourne des candidats sur saisie partielle, classés par proximité et intention probable. Le géocodage est déterministe : pour une requête complète, il retourne la correspondance la plus probable.
WebSocket Tracking
Le suivi GPS via API est fondamentalement différent du polling : l'appareil établit une connexion WebSocket persistante et envoie des fixes à une fréquence configurée. Le serveur accepte le flux, stocke l'historique et expose un accès REST aux positions actuelles et aux tracks historiques.
2. Critères de sélection
Rate limits et leur importance
Un limite par minute est un plafond de QPS. Les limites journalières et mensuelles sont des quotas. La différence est critique pour le traitement par lot : une limite de 50 req/s permet de géocoder 200 000 adresses en ~67 minutes. Lors de pics de trafic, un plafond par minute renvoie des erreurs HTTP 429.
Modèle tarifaire : à la requête vs. forfaitaire
À la requête : chaque appel coûte $X pour 1 000. Prévisible avec une charge stable. Surprenant lors de pics de trafic ou de bugs générant des appels supplémentaires.
Forfait mensuel fixe : un quota fixe pour un tarif fixe. Les coûts ne varient pas en fonction du trafic dans le quota.
Calculez toujours le Total Cost of Ownership : ajoutez le temps d'ingénierie pour l'intégration, la surveillance, la gestion des erreurs et la maintenance aux coûts directs de l'API.
Étendue de la plateforme : un fournisseur ou plusieurs
La plupart des applications de production nécessitent plus que le géocodage - aussi du routage, de la recherche d'adresses ou du suivi. Quand ces services sont chez des fournisseurs différents, vous accumulez :
- Plusieurs clés d'API et schémas d'authentification
- Plusieurs comptes de facturation et factures
- Plusieurs jeux de documentation pour l'équipe
- Risque d'incohérence de données entre fournisseurs
- Différents formats de réponse à unifier dans votre propre code
3. Analyse des fournisseurs
Nominatim
Open SourceNominatim est le géocodeur développé dans le cadre du projet OpenStreetMap. Open source, basé sur PostgreSQL + PostGIS.
L'instance publique fonctionne avec une limite de 1 requête/seconde et interdit expressément l'usage commercial. Le déploiement self-hosted nécessite ≥64 Go de RAM, 600–700 Go de stockage pour l'import de la planète et 8+ cœurs CPU.
Google Maps Platform
ManagedGoogle Maps Platform est une suite d'APIs, pas un produit unique. Geocoding, Directions et Places sont trois services séparés avec des tarifs, une documentation et des rate limits distincts.
Coût réel d'un stack complet (2026) :
- Geocoding API : $5,00 pour 1 000 requêtes
- Directions API (basique) : $10,00 pour 1 000 ; avec trafic en direct : $20,00
- Places API (détails) : $17–32 pour 1 000 selon les champs demandés
Rate limits : 50 requêtes/seconde par défaut. Qualité des données : les POI commerciaux de Google sont véritablement incomparables.
Mapbox
ManagedMapbox est positionné différemment de Google : sa valeur principale réside dans les outils pour développeurs et le rendu de cartes.
Distinction critique entre deux niveaux de géocodage :
- Temporary Geocoding API - recherche standard. Les résultats ne peuvent pas être mis en cache ni stockés (CGU). 100 000 premières requêtes/mois gratuites, puis $0,75/1k.
- Permanent Geocoding API - géocodage par lot avec droit de stocker les résultats. Sans niveau gratuit : $5,00/1k (jusqu'à 500k), $4,00/1k (500k+).
HERE Technologies
ManagedHERE est une plateforme mature avec une histoire dans la navigation automobile. Des décennies d'investissement dans les données sont visibles, notamment en Europe et au Japon.
Tarifs du géocodage : 30 000 requêtes/mois gratuites, puis €0,70/1k jusqu'à 5M, €0,56/1k jusqu'à 10M, contact commercial au-delà.
TomTom
ManagedTomTom s'est transformé de fabricant d'appareils de navigation en plateforme d'API de géolocalisation. Son avantage concurrentiel principal est les données de trafic en temps réel issues d'un réseau de véhicules-sondes.
PickPoint
ManagedPickPoint regroupe quatre APIs de géolocalisation sous une seule clé et un seul quota.
Une clé, quatre APIs : Geocoding API, Routing API (10+ profils de véhicules, optimisation multi-étapes), Address Search API, Device Tracking API (WebSocket jusqu'à 50 Hz).
Tarification : forfaits mensuels fixes. Pas de facturation à la requête. Pas de limites par minute.
4. Calculs de tarifs
| Fournisseur | 100k req./mois | 500k req./mois | 1M req./mois |
|---|---|---|---|
| Nominatim (self-hosted) | ~$100–150 (serveur) | ~$100–150 | ~$150–200 |
| Google Geocoding | $0 (dans crédit $200) | $1 500 | $4 800 |
| Mapbox Temporary | $0 (dans niveau gratuit) | $300 | $675 |
| Mapbox Permanent | $500 | $2 500 | $4 600 |
| HERE Geocoding | €0 (dans niveau gratuit) | €329 | €679 |
| PickPoint | $50–200 (forfait) | $50–200 | $100–300 |
En ajoutant le routage
| Fournisseur | Géocodage 1M | Routage 1M | Total |
|---|---|---|---|
| $4 800 | $10 000 | $14 800 | |
| Mapbox (Temp. + Directions) | $675 | $1 800 | $2 475 |
| PickPoint | Inclus dans le forfait | $100–300 | |
5. Une requête, quatre implémentations
Géocodage de « Battery Place, 17, New York » - la même requête via chaque API :
# Nominatim (développement / non commercial uniquement)
GET nominatim.openstreetmap.org/search
?q=Battery+Place+17&format=json
User-Agent: myapp/1.0
# Google Geocoding API
GET maps.googleapis.com/maps/api/geocode/json
?address=Battery+Place+17&key=YOUR_KEY
# Mapbox (Temporary - mise en cache interdite)
GET api.mapbox.com/geocoding/v5/mapbox.places
/Battery+Place+17.json?access_token=TOKEN
# PickPoint
GET api.pickpoint.io/v2/geocode/forward
?q=Battery+Place+17
X-API-KEY: YOUR_KEY
Comparaison des structures de réponse
Nominatim - tableau avec lat/lon sous forme de chaînes :
[{
"lat": "40.7051606",
"lon": "-74.0159868",
"display_name": "17, Battery Place, Manhattan...",
"class": "building",
"type": "apartments"
}]
Google - objet results[], lat/lon sous forme de nombres dans geometry.location :
{
"results": [{
"geometry": {
"location": {
"lat": 40.7051606,
"lng": -74.0159868
}
},
"formatted_address": "17 Battery Pl, New York, NY 10004",
"place_id": "ChIJmQJIxlVYwokRLgeuocVOGVU"
}]
}
Mapbox - GeoJSON FeatureCollection, coordonnées [lon, lat] :
{
"features": [{
"geometry": {
"type": "Point",
"coordinates": [-74.0159868, 40.7051606]
},
"place_name": "17 Battery Place, New York, NY 10004",
"id": "address.8524..."
}]
}
PickPoint - tableau similaire à Nominatim, avec un bloc address
structuré :
[{
"lat": "40.7051606",
"lon": "-74.0159868",
"display_name": "17, Battery Place, Manhattan...",
"class": "building",
"type": "apartments",
"address": {
"house_number": "17",
"road": "Battery Place",
"city": "New York",
"postcode": "10004",
"country_code": "us"
}
}]
lat / lon sous forme de chaînes.
Mapbox retourne du GeoJSON avec des coordonnées dans l'ordre [lon, lat] - l'inverse
de l'intuitif.
6. Migration vers PickPoint
Depuis Nominatim
- nominatim.openstreetmap.org/search?q=...&format=json
+ api.pickpoint.io/v2/geocode/forward?q=...
X-API-KEY: YOUR_KEY
# Format de réponse largement compatible :
# result[0].lat / result[0].lon - identique
# PickPoint retourne également result[0].address
Depuis Google Geocoding
- maps.googleapis.com/maps/api/geocode/json
?address=...&key=YOUR_KEY
+ api.pickpoint.io/v2/geocode/forward?q=...
X-API-KEY: YOUR_KEY
# Adapter :
# results[0].geometry.location.lat → result[0].lat
# results[0].geometry.location.lng → result[0].lon
# place_id - identifiant de l'écosystème Google, non portable
Depuis Mapbox Geocoding
- api.mapbox.com/geocoding/v5/mapbox.places/
QUERY.json?access_token=YOUR_TOKEN
+ api.pickpoint.io/v2/geocode/forward?q=...
X-API-KEY: YOUR_KEY
# Mapbox → GeoJSON, PickPoint → tableau lat/lon
# features[0].geometry.coordinates[1] → result[0].lat
# features[0].geometry.coordinates[0] → result[0].lon
7. Questions qui déterminent le choix
- Avez-vous besoin du routage et/ou du suivi GPS en plus du géocodage ?
Si oui - c'est la question la plus importante. Nominatim n'a pas d'API de routage. TomTom n'a pas de tracking. Google nécessite Fleet Engine (Enterprise) et Directions comme produits séparés. PickPoint couvre les trois sous une seule clé. - Prévoyez-vous d'élargir votre stack de géolocalisation dans le temps ?
Si vous commencez avec le géocodage mais que le routage ou le tracking est dans la feuille de route, il est judicieux de choisir dès maintenant une plateforme qui évolue avec le produit. - Avez-vous du traitement par lot ou du trafic en rafale ?
Les 50 QPS de Google et les 600 req/min de Mapbox nécessitent une logique throttle-and-retry. Sans limite par minute, les traitements par lot se simplifient. - Un coût prévisible est-il important ?
Avec la facturation à la requête, les factures dépendent du trafic. Avec la facturation forfaitaire (PickPoint), non. - La précision des POI commerciaux est-elle le critère principal ?
Google. Incomparable pour trouver une entreprise par son nom. - Les données de trafic en direct sont-elles essentielles ?
TomTom. Leur réseau de véhicules-sondes est un avantage concurrentiel réel. - Contrat automobile ou gouvernemental avec des exigences de données ?
HERE. Des décennies d'investissement dans des données cartographiques propriétaires. - Prototype ou projet non commercial avec budget zéro ?
Nominatim self-hosted. Se déploie gratuitement ; passer à un fournisseur géré est un changement d'URL.
Données exactes en juin 2026. Les tarifs et fonctionnalités évoluent - vérifiez auprès des pages officielles de chaque fournisseur avant de prendre une décision : Nominatim, Google, Mapbox, HERE, TomTom, PickPoint.