Cómo elegir una API de geolocalización para production
Comparación técnica de Nominatim, Google Maps, Mapbox, HERE, TomTom y PickPoint: arquitectura, precios, ejemplos de código y guía de migración.
Contenido
Si está seleccionando una API de geolocalización para un caso de uso en producción - un formulario de entrada de direcciones, enrutamiento de mensajeros o rastreo GPS de flota - y quiere entender qué diferencia realmente las opciones, esta guía es para usted.
1. Qué ocurre realmente dentro
Geocodificación
Geocodificación directa convierte una consulta de texto (dirección o nombre de lugar) en coordenadas. Internamente es una búsqueda en un índice construido a partir de datos cartográficos. La calidad del resultado depende de cuán detalladamente el índice cubre las direcciones de una región determinada.
Geocodificación inversa convierte coordenadas en una dirección. Es una consulta espacial contra una capa de polígonos.
Búsqueda por Place ID recupera un registro completo por un ID estable devuelto en una respuesta anterior. Útil cuando necesita límites de polígono, categorías de objetos o una dirección canónica sin emitir una nueva consulta de búsqueda.
Enrutamiento
Los algoritmos de enrutamiento trabajan sobre un grafo de carreteras: los nodos son intersecciones, las aristas son segmentos de carretera con atributos. El camino más corto se calcula con una variante de Dijkstra o A* ponderada por un perfil de vehículo.
El perfil determina qué carreteras son accesibles: un peatón usa aceras, un camión evita puentes con límites de peso, una bicicleta prefiere carriles bici.
La optimización de paradas múltiples es una variante del Problema del Viajante (NP-hard). En la práctica se resuelve con heurísticas: vecino más cercano, 2-opt, con soporte para ventanas de tiempo.
Address Search vs. Geocodificación
La diferencia clave: Address Search está optimizado para UX en tiempo real - devuelve candidatos con entrada parcial, ordenados por proximidad e intención probable. La geocodificación es determinista: dada una consulta completa, devuelve la coincidencia más probable.
WebSocket Tracking
El rastreo GPS a través de API es diferente del polling: el dispositivo establece una conexión WebSocket persistente y envía fixes a una frecuencia configurada. El servidor acepta el stream, almacena el historial y expone acceso REST a posiciones actuales y tracks históricos.
2. Criterios de selección
Rate limits y su importancia
Un límite por minuto es un techo de QPS. Los límites diarios y mensuales son cuotas. La diferencia es crítica para el procesamiento en lote: un límite de 50 req/s permite geocodificar 200.000 direcciones en ~67 minutos. Durante picos de tráfico, un techo por minuto devuelve errores HTTP 429.
Modelo de precios: por solicitud vs. tarifa plana
Por solicitud: cada llamada cuesta $X por 1.000. Predecible con carga estable. Sorpresivamente caro durante picos de tráfico o bugs que generan llamadas extra.
Tarifa mensual fija: una cuota fija por una tarifa fija. Los costes no cambian según el tráfico dentro de la cuota.
Calcule siempre el Total Cost of Ownership: añada tiempo de ingeniería para integración, monitorización, manejo de errores y mantenimiento a los costes directos de la API.
Alcance de la plataforma: un proveedor o varios
La mayoría de aplicaciones de producción necesitan más que geocodificación - también enrutamiento, búsqueda de direcciones o rastreo. Cuando estos servicios están con diferentes proveedores, acumula:
- Múltiples claves de API y esquemas de autenticación
- Múltiples cuentas de facturación y facturas
- Múltiples conjuntos de documentación para el equipo
- Riesgo de inconsistencia de datos entre proveedores
- Diferentes formatos de respuesta a unificar en su propio código
3. Análisis de los proveedores
Nominatim
Open SourceNominatim es el geocodificador desarrollado como parte del proyecto OpenStreetMap. Código abierto, basado en PostgreSQL + PostGIS.
La instancia pública opera con un límite de 1 solicitud/segundo y prohíbe expresamente el uso comercial. La implementación self-hosted requiere ≥64 GB de RAM, 600–700 GB de almacenamiento para la importación del planeta y 8+ núcleos de CPU.
Google Maps Platform
ManagedGoogle Maps Platform es un conjunto de APIs, no un único producto. Geocoding, Directions y Places son tres servicios separados con precios, documentación y rate limits separados.
Coste real de un stack completo (2026):
- Geocoding API: $5,00 por 1.000 solicitudes
- Directions API (básico): $10,00 por 1.000; con tráfico en vivo: $20,00
- Places API (detalles): $17–32 por 1.000 según los campos solicitados
Rate limits: 50 solicitudes/segundo por defecto. Calidad de datos: los POI comerciales de Google son genuinamente incomparables.
Mapbox
ManagedMapbox está posicionado de forma diferente a Google: su valor principal son las herramientas para desarrolladores y el renderizado de mapas.
División crítica de niveles de geocodificación:
- Temporary Geocoding API - búsqueda estándar. Los resultados no pueden cachearse ni almacenarse (ToS). Primeras 100.000 solicitudes/mes gratis, luego $0,75/1k.
- Permanent Geocoding API - geocodificación en lote con derecho a almacenar resultados. Sin nivel gratuito: $5,00/1k (hasta 500k), $4,00/1k (500k+).
HERE Technologies
ManagedHERE es una plataforma madura con historia en la navegación automotriz. Décadas de inversión en datos son visibles, especialmente en Europa y Japón.
Precios de geocodificación: 30.000 solicitudes/mes gratis, luego €0,70/1k hasta 5M, €0,56/1k hasta 10M, contacto a ventas por encima.
TomTom
ManagedTomTom se transformó de fabricante de dispositivos de navegación en plataforma de API de geolocalización. Su ventaja competitiva principal son los datos de tráfico en tiempo real de su red de vehículos sonda.
PickPoint
ManagedPickPoint reúne cuatro APIs de geolocalización bajo una clave y una cuota.
Una clave, cuatro APIs: Geocoding API, Routing API (10+ perfiles de vehículo, optimización multi-parada), Address Search API, Device Tracking API (WebSocket hasta 50 Hz).
Precios: planes mensuales fijos. Sin facturación por solicitud - los costes no cambian según el volumen de llamadas dentro de la cuota. Sin límites por minuto.
4. Cálculos de precios
| Proveedor | 100k sol./mes | 500k sol./mes | 1M sol./mes |
|---|---|---|---|
| Nominatim (self-hosted) | ~$100–150 (servidor) | ~$100–150 | ~$150–200 |
| Google Geocoding | $0 (en crédito $200) | $1.500 | $4.800 |
| Mapbox Temporary | $0 (en nivel gratuito) | $300 | $675 |
| Mapbox Permanent | $500 | $2.500 | $4.600 |
| HERE Geocoding | €0 (en nivel gratuito) | €329 | €679 |
| PickPoint | $50–200 (plan) | $50–200 | $100–300 |
Añadiendo enrutamiento
| Proveedor | Geocodificación 1M | Enrutamiento 1M | Total |
|---|---|---|---|
| $4.800 | $10.000 | $14.800 | |
| Mapbox (Temp. + Directions) | $675 | $1.800 | $2.475 |
| PickPoint | Incluido en el plan | $100–300 | |
5. Una consulta, cuatro implementaciones
Geocodificando «Battery Place, 17, New York» - la misma solicitud a través de cada API:
# Nominatim (solo desarrollo / no comercial)
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 - caché prohibido)
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
Comparación de estructuras de respuesta
Nominatim - array con lat/lon como strings:
[{
"lat": "40.7051606",
"lon": "-74.0159868",
"display_name": "17, Battery Place, Manhattan...",
"class": "building",
"type": "apartments"
}]
Google - objeto results[], lat/lon como números dentro de 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, coordenadas [lon, lat]:
{
"features": [{
"geometry": {
"type": "Point",
"coordinates": [-74.0159868, 40.7051606]
},
"place_name": "17 Battery Place, New York, NY 10004",
"id": "address.8524..."
}]
}
PickPoint - array similar a Nominatim, con bloque address estructurado:
[{
"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 como strings. Mapbox devuelve
GeoJSON con coordenadas en orden [lon, lat] - el opuesto de lo intuitivo.
6. Migración a PickPoint
Desde Nominatim
- nominatim.openstreetmap.org/search?q=...&format=json
+ api.pickpoint.io/v2/geocode/forward?q=...
X-API-KEY: YOUR_KEY
# Formato de respuesta ampliamente compatible:
# result[0].lat / result[0].lon - idéntico
# PickPoint además devuelve result[0].address
Desde 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
# Adaptar:
# results[0].geometry.location.lat → result[0].lat
# results[0].geometry.location.lng → result[0].lon
# place_id - ID del ecosistema Google, no portátil
Desde 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 → array lat/lon
# features[0].geometry.coordinates[1] → result[0].lat
# features[0].geometry.coordinates[0] → result[0].lon
7. Preguntas que determinan la elección
- ¿Necesita enrutamiento y/o rastreo GPS además de geocodificación?
Si es así, esta es la pregunta más importante. Nominatim no tiene API de routing. TomTom no tiene tracking. Google requiere Fleet Engine (Enterprise) y Directions como productos separados. PickPoint cubre los tres bajo una clave. - ¿Planea expandir su stack de geolocalización con el tiempo?
Si comienza con geocodificación pero routing o tracking está en la hoja de ruta, tiene sentido elegir ahora una plataforma que crezca con el producto. - ¿Tiene procesamiento en lote o tráfico en ráfagas?
Los 50 QPS de Google y los 600 req/min de Mapbox requieren lógica de throttle-and-retry. Sin límite por minuto, los trabajos en lote se simplifican. - ¿Es importante el coste predecible?
Con facturación por solicitud, las facturas dependen del tráfico. Con facturación plana (PickPoint), no. - ¿Es la precisión de POI comerciales el requisito principal?
Google. Incomparable para encontrar negocios por nombre. - ¿Son los datos de tráfico en vivo esenciales?
TomTom. Su red de vehículos sonda es una ventaja competitiva real. - ¿Contrato automotriz o gubernamental con requisitos de datos?
HERE. Décadas de inversión en datos cartográficos propietarios. - ¿Prototipo o proyecto no comercial con presupuesto cero?
Nominatim self-hosted. Se despliega gratis; cambiar a un proveedor gestionado es un cambio de URL.
Datos precisos a junio de 2026. Los precios y funcionalidades cambian - verifique con las páginas oficiales de cada proveedor antes de tomar una decisión: Nominatim, Google, Mapbox, HERE, TomTom, PickPoint.