Skip to content
eifingerPublic

About

Asynchronous Waze client for calculating routes and travel times.

Topics

Resources

Stars

18 stars

Watchers

1 watching

Forks

Repository files navigation

pywaze

Asynchronous Waze client for calculating routes and travel times.

Based on WazeRouteCalculator

Installation

uv add pywaze

Usage

#!/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.

Address resolving base coordinates

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.


About

Asynchronous Waze client for calculating routes and travel times.

Topics

Resources

Stars

18 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages