Asynchronous Waze client for calculating routes and travel times.
Based on WazeRouteCalculator
uv add pywaze#!/usr/bin/env python3
import asyncio
from pywaze import route_calculator
async def get_time(start: str, end: str) -> float:
"""Return the travel time home."""
async with route_calculator.WazeRouteCalculator() as client:
results = await client.calc_routes(start, end)
first_route = results[0]
return first_route.duration
start = "50.00332659227126,8.262322651915843"
end = "50.08414976707619,8.247836017342934"
travel_time = asyncio.run(get_time(start, end))
print(travel_time)Every request is made with a fresh, browser-impersonating curl_cffi session that
is closed as soon as the request finishes, so there is nothing long-lived to clean up.
The asynchronous context manager and await client.close() are kept for backwards
compatibility.
The client constructor argument (an injected httpx.AsyncClient) is deprecated and
ignored: Waze rejects HTTPX's TLS fingerprint. Passing it emits a DeprecationWarning.
When one or both endpoints are addresses, calc_routes() resolves them directly
via Waze's mobile autocomplete API.
You can provide custom base coordinates to bias address results near those coordinates:
await client.calc_routes(start, end, base_coords=(48.137154, 11.576124))If base_coords is omitted and exactly one endpoint is already coordinates,
that coordinate endpoint is used automatically as base coordinates for
resolving the address.