Necesitas alertas de tráfico en vivo y rutas giro a giro que puedas integrar en tu aplicación esta semana. Al final de esta guía, consultarás a Waze para obtener peligros y congestiones en tiempo real dentro de un cuadro delimitador y obtendrás rutas con alertas entre dos coordenadas utilizando la API de Datos de Waze en Zyla API Hub, con ejemplos de curl y Python que puedes copiar y pegar en tu servicio.
Lo que obtienes de la API de Datos de Waze
La API de Datos de Waze expone dos capacidades principales para casos de uso de navegación:
- Alertas y congestiones en tiempo real dentro de un rectángulo geográfico, cubriendo accidentes, cierres de carreteras, peligros, policía y embotellamientos.
- Direcciones de conducción (rutas) entre dos coordenadas, incluyendo alertas a lo largo de cada ruta potencial y soporte para especificar una hora de llegada deseada.
Los equipos utilizan esto para potenciar superposiciones de incidentes en la aplicación, ETAs conscientes de la congestión y flujos de trabajo de re-direccionamiento automatizados. Todas las llamadas pasan por Zyla API Hub con una cuenta, una clave API y facturación de suscripción + cuota (no pago por llamada). Zyla alberga más de 10,000 APIs públicas en diversas categorías, pero aquí nos centraremos en Navegación.
Navega por el mercado en https://zylalabs.com y abre la lista de la API de Datos de Waze para revisar parámetros, cuota y opciones de acceso actuales. También puedes comenzar la prueba de 7 días directamente aquí: Iniciar prueba de 7 días en la API de Datos de Waze.
Comenzando en Zyla API Hub
Para llamar a los endpoints:
- Abre la página de la API de Datos de Waze en Zyla API Hub y haz clic en Suscribirse o Iniciar Prueba Gratuita (cuando esté disponible). La primera API generalmente ofrece una prueba de 7 días o 50 solicitudes. No hay Plan Gratuito.
- Copie su clave API del panel de control.
- Llama a los endpoints que se muestran a continuación usando Authorization: Bearer YOUR_API_KEY. Todas las solicitudes van a zylalabs.com con las rutas exactas proporcionadas en este artículo.
La autenticación es solo en el encabezado; no agregues claves API a los parámetros de consulta. Las llamadas se cuentan contra tu cuota de suscripción.
Endpoint: Alertas y Congestiones
Utiliza esto para obtener alertas en tiempo real y embotellamientos dentro de un área rectangular definida por pares de latitud/longitud de esquina inferior izquierda y esquina superior derecha. Esto es ideal para mosaicos de mapas, superposiciones de ciudades y monitoreo geofencing.
- Método: GET
- URL: https://zylalabs.com/api/4814/waze-data-api/6003/alerts-and-jams
- Parámetros requeridos:
- bottom_left (string): “lat,lon”
- top_right (string): “lat,lon”
- Parámetros opcionales:
- max_alerts (string)
- max_jams (string)
Ejemplo oficial de curl (copia/pega):
curl -s -X GET "https://zylalabs.com/api/4814/waze-data-api/6003/alerts-and-jams?bottom_left=51.2800%2C-0.5100&top_right=51.5000%2C-0.0800&max_alerts=100&max_jams=0" \
-H "Authorization: Bearer YOUR_API_KEY"
Ejemplo de respuesta oficial
{
"status": "OK",
"request_id": "86b7f40f-b386-4aee-af95-274974d93184",
"parameters": {
"bottom_left": [
"51.2800",
"-0.5100"
],
"top_right": [
"51.5000",
"-0.0800"
],
"max_alerts": 100,
"max_jams": 0
},
"data": {
"alerts": [
{
"alert_id": "alert-1851823848/7b5e52cb-9549-4955-a117-ce19dd01fe9b",
"type": "HAZARD",
"subtype": "HAZARD_ON_ROAD_CONSTRUCTION",
"reported_by": "Causeway one.network",
"description": ".",
"image": null,
"publish_datetime_utc": "2026-07-22T08:30:00.000Z",
"country": "GB",
"city": "Mole Valley",
"street": null,
"latitude": 51.281508,
"longitude": -0.369863,
"num_thumbs_up": 7,
"alert_reliability": 0,
"alert_confidence": 0,
"near_by": null,
"provider": "Elgin (Road works)",
"provider_id": "151505923",
"comments": [],
"num_comments": 0
},
{
"alert_id": "alert-1191763163/60f6957d-0668-49d6-b43f-710177584187",
"type": "HAZARD",
"subtype": "HAZARD_ON_ROAD_CONSTRUCTION",
"reported_by": "Causeway one.network",
"description": ".",
"image": null,
"publish_datetime_utc": "2026-05-15T13:00:00.000Z",
"country": "GB",
"city": "Mole Valley",
"street": "Durleston Park Dr",
"latitude": 51.280691,
"longitude": -0.365612,
"num_thumbs_up": 39,
"alert_reliability": 0,
"alert_confidence": 0,
"near_by": null,
"provider": "Elgin (Road works)",
"provider_id": "149944301",
"comments": [],
"num_comments": 0
},
{
"alert_id": "alert-1618880859/60722796-8030-486e-913c-4e683837b754",
"type": "ROAD_CLOSED",
"subtype": null,
"reported_by": "ClosureMonitor",
"description": "Cerrado hasta el 31 de julio por obras viales. Ref #151583431",
"image": null,
"publish_…
Lo que debes usar en producción:
- status: cadena que indica éxito.
- parameters: eco de tu solicitud (útil para registro).
- data.alerts: lista de alertas en tu rectángulo. Los campos clave incluyen:
- alert_id: identificador estable para deduplicación.
- type/subtype: clasificar por peligro, embotellamiento, cierre, etc.
- latitude / longitude: trazar en tu capa de mapa.
- publish_datetime_utc: marca de tiempo UTC para lógica de frescura e invalidación de caché.
- city, street: contexto para mensajes dirigidos al usuario.
Ejemplo en Python: obtener y filtrar construcciones y cierres
Este ejemplo llama al mismo endpoint, filtra tipos de alertas relevantes y imprime una carga útil mínima que puedes enviar a tu frontend o canal de alertas.
import os
import requests
API_KEY = os.getenv("ZYLALABS_API_KEY", "YOUR_API_KEY")
url = "https://zylalabs.com/api/4814/waze-data-api/6003/alerts-and-jams"
params = {
"bottom_left": "51.2800,-0.5100",
"top_right": "51.5000,-0.0800",
"max_alerts": "100",
"max_jams": "0"
}
headers = {
"Authorization": f"Bearer {API_KEY}"
}
resp = requests.get(url, params=params, headers=headers, timeout=20)
resp.raise_for_status()
payload = resp.json()
alerts = payload.get("data", {}).get("alerts", [])
interesting = []
for a in alerts:
atype = a.get("type")
subtype = a.get("subtype")
if atype in ("HAZARD", "ROAD_CLOSED"):
interesting.append({
"id": a.get("alert_id"),
"type": atype,
"subtype": subtype,
"lat": a.get("latitude"),
"lon": a.get("longitude"),
"published_utc": a.get("publish_datetime_utc"),
"city": a.get("city"),
"street": a.get("street"),
"thumbs_up": a.get("num_thumbs_up")
})
print(f"Total de alertas en bbox: {len(alerts)}; relevantes: {len(interesting)}")
for a in interesting[:5]:
print(a)
Notas:
- Las marcas de tiempo están en UTC en publish_datetime_utc. Convierte en tu UI si es necesario, pero almacena en UTC para consistencia.
- max_alerts y max_jams te permiten limitar el tamaño de la respuesta si estás consultando con frecuencia.
Endpoint: Direcciones de Conducción
Utiliza esto para obtener rutas entre dos coordenadas, con alertas a lo largo de cada ruta posible. Puedes establecer una hora de llegada deseada para planificar las salidas en consecuencia. La respuesta incluye metadatos de la ruta como length_meters y duration_seconds, además de cualquier alerta relevante.
- Método: GET
- URL: https://zylalabs.com/api/4814/waze-data-api/6004/driving-directions
- Parámetros requeridos:
- source_coordinates (string): “lat,lon”
- destination_coordinates (string): “lat,lon”
Ejemplo oficial de curl (copia/pega):
Campos típicos de interés de este endpoint incluyen:
- length_meters: longitud total de la ruta (metros).
- duration_seconds: duración total de la ruta (segundos).
- is_fastest, is_toll, is_hov: booleanos para filtrado de rutas.
- alerts: lista de alertas encontradas a lo largo de la ruta, incluyendo tipo, subtipo y coordenadas.
Consejos de uso:
- Cachea candidatos de ruta redondeando las coordenadas de origen/destino para evitar volver a obtener datos en desviaciones menores.
- Para ETAs en tu UI, prefiere duration_seconds. Convierte a minutos del lado del cliente.
- Si almacenas elecciones de ruta, también almacena el conjunto de alert_ids devueltos para detectar cuándo una ruta ha cambiado materialmente.
Patrones de implementación práctica
Polling de cuadro delimitador para superposiciones de ciudad
- Divide tu área metropolitana en mosaicos (por ejemplo, 0.1° x 0.1°). Consulta las alertas y congestiones de cada mosaico a un ritmo razonable para tu UX.
- Utiliza max_alerts y max_jams para limitar las cargas útiles en áreas densas.
- Deduplica por alert_id a través de mosaicos y consultas. Expira alertas después de un umbral de tiempo a menos que sean actualizadas por la API.
Lógica de re-direccionamiento sobre direcciones de conducción
- Obtén rutas para la posición actual de un conductor hacia el destino cada N minutos o después de cambios significativos de posición.
- Cuando is_fastest cambia entre alternativas o aparece una alerta de ROAD_CLOSED a lo largo de la ruta elegida, activa un aviso de re-direccionamiento.
- Mantén la última duración_seconds conocida para comparar con nuevos resultados y calcular deltas visibles para el usuario “+X min”.
Unidades, marcas de tiempo y caché
- Las distancias están en metros, las duraciones en segundos. Persiste los valores en bruto; formatea en tu localidad en la capa de presentación.
- Los tiempos de publicación están sufijados con “_utc”. Trátalos como UTC para programación, frescura de alertas y registros.
- Para endpoints de polling, utiliza cortos tiempos de vida en caché (decenas de segundos a unos minutos) dependiendo de la tolerancia de tu UI a la obsolescencia.
Llamando a la API desde agentes de IA a través de MCP
Si tu flujo de trabajo utiliza clientes compatibles con MCP (por ejemplo, Claude Code, Cursor, Windsurf), puedes llamar a cualquier API de Zyla, incluida la API de Datos de Waze, a través del endpoint MCP. Dirige tu agente o herramienta a:
Pasa tu clave como apikey=YOUR_API_KEY en la URL del endpoint MCP. El agente puede entonces invocar las mismas rutas de la API de Datos de Waze que ves en este artículo. Esto es útil para prototipar operaciones impulsadas por chat (por ejemplo, “mostrar cierres en este bbox” o “obtener la ruta más rápida al destino”). Para servicios no basados en agentes, llama a los endpoints REST directamente como se muestra arriba. Siempre puedes explorar más opciones de navegación y mapeo en Zyla API Hub.
Manejo de errores y observabilidad
- Registra request_id de las respuestas. Ayuda a correlacionar tus registros con el soporte de Zyla cuando sea necesario.
- Valida los parámetros antes de llamar: asegúrate de que bottom_left.lat < top_right.lat y que las longitudes definan un rectángulo sensato.
- Maneja con gracia los arreglos de alertas vacíos; la falta de datos es a menudo un estado válido para una región tranquila.
- Reduce o disminuye max_alerts cuando estés cerca de tu cuota de suscripción. Consulta la página de la API para opciones de acceso actuales y detalles de precios.
Lista de verificación de seguridad y despliegue
- Almacena la clave API en tu administrador de secretos del lado del servidor; nunca la expongas en JS del lado del cliente.
- Termina TLS en tu borde y llama a Zyla solo a través de HTTPS (como se muestra en todos los ejemplos).
- Implementa tiempos de espera en clientes HTTP (por ejemplo, 10–20s) y monitorea las tasas de error.
- Utiliza listas permitidas para dominios salientes; permite solo zylalabs.com y mcp.zylalabs.com donde sea apropiado.
Fragmento de extremo a extremo: obtener una ruta, luego superponer alertas en tu mapa
Flujo de alto nivel:
- Llama a driving-directions para las coordenadas de origen/destino.
- Extrae alertas de la ruta elegida para mostrar marcadores de incidentes.
- Llama a alerts-and-jams para el bbox de la vista para enriquecer con incidentes cercanos que no están en la ruta.
Puedes componer los dos endpoints del lado del servidor y devolver una carga útil compacta a tu frontend: polilínea de ruta o coordenadas (cuando estén disponibles), duration_seconds y un conjunto combinado de alertas deduplicadas indexadas por alert_id.
Referencia rápida
- Alertas y Congestiones (GET): https://zylalabs.com/api/4814/waze-data-api/6003/alerts-and-jams
- Direcciones de Conducción (GET): https://zylalabs.com/api/4814/waze-data-api/6004/driving-directions
- Autenticación: Authorization: Bearer YOUR_API_KEY
- Facturación: suscripción + cuota (no pago por llamada). Primera API: prueba de 7 días o 50 solicitudes. No hay Plan Gratuito.
Preguntas Frecuentes
¿Con qué frecuencia debo consultar Alertas y Congestiones para un mapa de ciudad?
Depende de tu UX y cuota. Muchas aplicaciones consultan cada 30–120 segundos para áreas densas y utilizan max_alerts para limitar el tamaño de la carga útil. Cachea las respuestas brevemente y deduplica por alert_id.
¿Qué unidades utilizan length_meters y duration_seconds en Direcciones de Conducción?
Metros para distancia y segundos para duración. Convierte a millas/kilómetros y minutos en el momento de la presentación.
¿Las marcas de tiempo están en hora local o UTC?
La muestra muestra publish_datetime_utc en UTC. Almacena y compara en UTC, y formatea a la hora local en tu UI si es necesario.
¿Puedo llamar a estos endpoints desde un navegador?
Evita exponer tu clave API en el código del lado del cliente. Proxy las llamadas a través de tu backend, que mantiene el encabezado Authorization: Bearer YOUR_API_KEY.
¿Dónde encuentro precios y cuotas actuales?
Consulta la página de la API de Datos de Waze en Zyla API Hub para opciones de acceso actuales y precios. La suscripción se basa en cuotas, no en pago por llamada.
¿Listo para integrar datos de navegación en vivo de Waze en tu producto? Crea una cuenta gratuita, obtén tu clave API y comienza la prueba de 7 días aquí: Iniciar prueba de 7 días en la API de Datos de Waze. Puedes descubrir más APIs de navegación y mapeo en Zyla API Hub cuando estés listo para expandir tu stack.