Você precisa de alertas de tráfego ao vivo e rotas passo a passo que você pode integrar ao seu aplicativo esta semana. Ao final deste guia, você fará consultas ao Waze para perigos e congestionamentos em tempo real em uma caixa delimitadora e buscará rotas com alertas entre duas coordenadas usando a API de Dados do Waze no Zyla API Hub, com exemplos de curl e Python que você pode copiar e colar em seu serviço.
O que você obtém da API de Dados do Waze
A API de Dados do Waze expõe duas capacidades principais para casos de uso de navegação:
- Alertas e congestionamentos em tempo real dentro de um retângulo geográfico, cobrindo acidentes, fechamentos de estradas, perigos, polícia e congestionamentos.
- Direções de condução (rotas) entre duas coordenadas, incluindo alertas ao longo de cada rota potencial e suporte para especificar um horário de chegada desejado.
As equipes usam isso para alimentar sobreposições de incidentes no aplicativo, ETAs cientes de congestionamento e fluxos de trabalho de redirecionamento automatizados. Todas as chamadas passam pelo Zyla API Hub com uma conta, uma chave de API e cobrança de assinatura + cota (não pago por chamada). O Zyla hospeda mais de 10.000 APIs públicas em várias categorias, mas aqui nos concentraremos na Navegação.
Navegue pelo marketplace em https://zylalabs.com e abra a listagem da API de Dados do Waze para revisar parâmetros, cota e opções de acesso atuais. Você também pode iniciar o teste gratuito de 7 dias diretamente aqui: Iniciar teste gratuito de 7 dias na API de Dados do Waze.
Começando no Zyla API Hub
Para chamar os endpoints:
- Abra a página da API de Dados do Waze no Zyla API Hub e clique em Assinar ou Iniciar Teste Gratuito (quando disponível). A primeira API geralmente oferece um teste gratuito de 7 dias ou 50 solicitações. Não há Plano Gratuito.
- Copie sua chave de API do painel.
- Chame os endpoints mostrados abaixo usando Authorization: Bearer YOUR_API_KEY. Todas as solicitações vão para zylalabs.com com os caminhos exatos fornecidos neste artigo.
A autenticação é apenas no cabeçalho; não anexe chaves de API aos parâmetros de consulta. As chamadas são contadas contra sua cota de assinatura.
Endpoint: Alertas e Congestionamentos
Use isso para buscar alertas em tempo real e congestionamentos dentro de uma área retangular definida por pares de latitude/longitude inferior esquerdo e superior direito. Isso é ideal para camadas de mapa, sobreposições de cidade e monitoramento geofenciado.
- Método: GET
- URL: https://zylalabs.com/api/4814/waze-data-api/6003/alerts-and-jams
- Parâmetros obrigatórios:
- bottom_left (string): “lat,lon”
- top_right (string): “lat,lon”
- Parâmetros opcionais:
- max_alerts (string)
- max_jams (string)
Exemplo oficial de curl (copiar/colar):
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"
Resposta de exemplo 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": "Fechado até 31 de julho para obras. Ref #151583431",
"image": null,
"publish_…
O que usar em produção:
- status: string indicando sucesso.
- parameters: eco da sua solicitação (útil para registro).
- data.alerts: lista de alertas em seu retângulo. Campos principais incluem:
- alert_id: identificador estável para desduplicação.
- type/subtype: classificar por perigo, congestionamento, fechamento, etc.
- latitude / longitude: plotar em sua camada de mapa.
- publish_datetime_utc: timestamp UTC para lógica de frescor e invalidação de cache.
- city, street: contexto para mensagens voltadas ao usuário.
Exemplo em Python: buscar e filtrar construções e fechamentos
Este exemplo chama o mesmo endpoint, filtra tipos de alertas relevantes e imprime uma carga útil mínima que você pode encaminhar para seu frontend ou pipeline 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 na bbox: {len(alerts)}; relevantes: {len(interesting)}")
for a in interesting[:5]:
print(a)
Notas:
- Os timestamps estão em UTC em publish_datetime_utc. Converta em sua interface se necessário, mas armazene em UTC para consistência.
- max_alerts e max_jams permitem que você limite o tamanho da resposta se estiver consultando com frequência.
Endpoint: Direções de Condução
Use isso para obter rotas entre duas coordenadas, com alertas ao longo de cada rota possível. Você pode definir um horário de chegada desejado para planejar as partidas de acordo. A resposta inclui metadados da rota, como length_meters e duration_seconds, além de quaisquer alertas relevantes.
- Método: GET
- URL: https://zylalabs.com/api/4814/waze-data-api/6004/driving-directions
- Parâmetros obrigatórios:
- source_coordinates (string): “lat,lon”
- destination_coordinates (string): “lat,lon”
Exemplo oficial de curl (copiar/colar):
Campos típicos de interesse deste endpoint incluem:
- length_meters: comprimento total da rota (metros).
- duration_seconds: duração total da rota (segundos).
- is_fastest, is_toll, is_hov: booleanos para filtragem de rotas.
- alerts: lista de alertas encontrados ao longo da rota, incluindo tipo, subtipo e coordenadas.
Dicas de uso:
- Cache candidatos a rotas arredondando a origem/destino para evitar reobtenção em pequenas derivações.
- Para ETAs em sua interface, prefira duration_seconds. Converta para minutos no lado do cliente.
- Se você armazenar escolhas de rotas, também armazene o conjunto de alert_ids retornados para detectar quando uma rota mudou materialmente.
Padrões de implementação prática
Polling de caixa delimitadora para sobreposições de cidade
- Divida sua área metropolitana em tiles (por exemplo, 0.1° x 0.1°). Consulte os alertas e congestionamentos de cada tile em uma cadência razoável para sua experiência do usuário.
- Use max_alerts e max_jams para limitar as cargas úteis em áreas densas.
- Desduplicar por alert_id entre tiles e polls. Expire alertas após um limite de tempo, a menos que sejam atualizados pela API.
Lógica de redirecionamento em cima das direções de condução
- Busque rotas para a posição atual de um motorista até o destino a cada N minutos ou após mudanças significativas de posição.
- Quando is_fastest alterna entre alternativas ou um alerta ROAD_CLOSED aparece ao longo da rota escolhida, acione um prompt de redirecionamento.
- Mantenha a última duração conhecida em seconds para comparar com novos resultados e calcular deltas visíveis para o usuário “+X min”.
Unidades, timestamps e caching
- Distâncias estão em metros, durações em segundos. Persista valores brutos; formate em seu local na camada de apresentação.
- Os horários de publicação são sufixados com “_utc”. Trate-os como UTC para agendamento, frescor de alertas e logs.
- Para endpoints de polling, use tempos de cache curtos (dezenas de segundos a alguns minutos) dependendo da tolerância da sua interface à obsolescência.
Chamando a API de agentes de IA via MCP
Se seu fluxo de trabalho usa clientes compatíveis com MCP (por exemplo, Claude Code, Cursor, Windsurf), você pode chamar qualquer API do Zyla, incluindo a API de Dados do Waze, através do endpoint MCP. Aponte seu agente ou ferramenta para:
Passe sua chave como apikey=YOUR_API_KEY na URL do endpoint MCP. O agente pode então invocar os mesmos caminhos da API de Dados do Waze que você vê neste artigo. Isso é útil para prototipar operações dirigidas por chat (por exemplo, “mostrar fechamentos nesta bbox” ou “buscar a rota mais rápida para o destino”). Para serviços não agentes, chame os endpoints REST diretamente como mostrado acima. Você sempre pode explorar mais opções de navegação e mapeamento no Zyla API Hub.
Tratamento de erros e observabilidade
- Registre request_id das respostas. Isso ajuda a correlacionar seus logs com o suporte do Zyla quando necessário.
- Valide os parâmetros antes de chamar: assegure-se de que bottom_left.lat < top_right.lat e longitudes definem um retângulo sensato.
- Trate arrays de alertas vazios de forma elegante; a falta de dados é muitas vezes um estado válido para uma região tranquila.
- Reduza ou diminua max_alerts quando você estiver próximo da sua cota de assinatura. Verifique a página da API para opções de acesso atuais e detalhes de preços.
Checklist de segurança e implantação
- Armazene a chave da API em seu gerenciador de segredos do lado do servidor; nunca a exponha no JS do lado do cliente.
- Termine o TLS em sua borda e chame o Zyla apenas sobre HTTPS (como mostrado em todos os exemplos).
- Implemente timeouts em clientes HTTP (por exemplo, 10–20s) e monitore taxas de erro.
- Use listas de permissão para domínios de saída; permita apenas zylalabs.com e mcp.zylalabs.com onde apropriado.
Snippet de ponta a ponta: obtenha uma rota, depois sobreponha alertas em seu mapa
Fluxo de alto nível:
- Chame driving-directions para coordenadas de origem/destino.
- Extraia alertas da rota escolhida para exibir marcadores de incidentes.
- Chame alerts-and-jams para a bbox da viewport para enriquecer com incidentes próximos que não estão na rota.
Você pode compor os dois endpoints do lado do servidor e retornar uma carga útil compacta para seu frontend: polilinha da rota ou coordenadas (quando disponíveis), duration_seconds e um conjunto mesclado de alertas desduplicados indexados por alert_id.
Referência rápida
- Alertas e Congestionamentos (GET): https://zylalabs.com/api/4814/waze-data-api/6003/alerts-and-jams
- Direções de Condução (GET): https://zylalabs.com/api/4814/waze-data-api/6004/driving-directions
- Autenticação: Authorization: Bearer YOUR_API_KEY
- Faturamento: assinatura + cota (não pago por chamada). Primeira API: teste gratuito de 7 dias ou 50 solicitações. Sem Plano Gratuito.
Perguntas Frequentes
Com que frequência devo consultar Alertas e Congestionamentos para um mapa da cidade?
Depende da sua experiência do usuário e cota. Muitos aplicativos consultam a cada 30–120 segundos para áreas densas e usam max_alerts para limitar o tamanho da carga útil. Armazene respostas brevemente e desduplique por alert_id.
Quais unidades length_meters e duration_seconds usam em Direções de Condução?
Metros para distância e segundos para duração. Converta para milhas/quilômetros e minutos no momento da apresentação.
Os timestamps estão em horário local ou UTC?
O exemplo mostra publish_datetime_utc em UTC. Armazene e compare em UTC, e formate para o horário local em sua interface se necessário.
Posso chamar esses endpoints de um navegador?
Evite expor sua chave de API no código do lado do cliente. Proxie chamadas através do seu backend, que mantém o cabeçalho Authorization: Bearer YOUR_API_KEY.
Onde encontro preços e cotas atuais?
Verifique a página da API de Dados do Waze no Zyla API Hub para opções de acesso atuais e preços. A assinatura é baseada em cota, não pago por chamada.
Pronto para integrar dados de navegação ao vivo do Waze em seu produto? Crie uma conta gratuita, obtenha sua chave de API e inicie o teste gratuito de 7 dias aqui: Iniciar teste gratuito de 7 dias na API de Dados do Waze. Você pode descobrir mais APIs de navegação e mapeamento no Zyla API Hub quando estiver pronto para expandir sua pilha.