Waze Route & ETA Scraper
Pricing
from $4.68 / 1,000 route request processeds
Waze Route & ETA Scraper
Run live route calculation, walking distance, and batch ETA queries against Waze's real-time routing engine, for an array of route request objects in a single run. No account or API key needed — each request authenticates itself anonymously. Derived from romy/waze-all-in-one-api.
What does Waze Route & ETA Scraper do?
Waze Route & ETA Scraper takes an array of route request objects and pushes live route calculation, walking distance, or batch ETA results — one dataset row per request.
It talks directly to the same internal protocol the official Waze Android app uses (rt.waze.com), reverse-engineered by live MITM capture against a real device and cross-referenced against the app's own decompiled protobuf schema (see proto/waze_rt.proto, copied verbatim from Waze All-in-One API, this Actor's parent). No Waze account, no API key — each request mints its own short-lived anonymous session server-side. This is the route/ETA slice of that parent Actor, split out as its own focused, batch-run scraper.
Why use Waze Route & ETA Scraper?
- Three operations, one input array — route calculation, walking distance, and batch ETA, mixed freely in a single run
- Live traffic, not a static distance matrix — the same real-time routing engine behind the app's own navigation
- Batch ETA in one call per request —
eta-batchfans one origin out to many destinations server-side, useful for dispatch/delivery routing without oneroutecall per stop - No account needed — every request authenticates itself anonymously
- Use cases: logistics/routing risk analysis, delivery dispatch ETA, travel-time estimation for many origin/destination pairs
How it connects to the parent
This Actor is a narrow spin-off of Waze All-in-One API, which exposes every reverse-engineered Waze endpoint as an always-on Standby REST API. This Actor wraps only the parent's /route, /walking-distance, and /eta-batch endpoints as a normal batch Actor: give it an input array, get a dataset of results back.
Input
| Field | Type | Description |
|---|---|---|
requests | array | Required. One or more route request objects (see below). |
Each item in requests:
| Field | Type | Applies to | Description |
|---|---|---|---|
operation | string | all | "route", "walking-distance", or "eta-batch" |
fromLat / fromLon | number | all | Origin coordinates |
toLat / toLon | number | route, walking-distance | Destination coordinates |
destinations | array of {lat, lon} | eta-batch | One or more destinations |
vehicleType | string | route, eta-batch | Confirmed live values include "PRIVATE" (default), "MOTORCYCLE", "TAXI" |
maxRoutes | integer | route | Number of route alternatives to return, default 3 |
Example:
{"requests": [{ "operation": "route", "fromLat": -6.1754, "fromLon": 106.827, "toLat": -6.1274, "toLon": 106.6577 },{ "operation": "walking-distance", "fromLat": -6.1754, "fromLon": 106.827, "toLat": -6.178, "toLon": 106.83 },{"operation": "eta-batch","fromLat": -6.1754,"fromLon": 106.827,"destinations": [{ "lat": -6.1274, "lon": 106.6577 },{ "lat": -6.1954, "lon": 106.8206 }]}]}
Output
One dataset row per request item, { request, result }:
{"request": { "operation": "route", "fromLat": -6.1754, "fromLon": 106.827, "toLat": -6.1274, "toLon": 106.6577 },"result": [{ "totalLength": 31365, "totalSeconds": 1986 },{ "totalLength": 27001, "totalSeconds": 2909 }]}
walking-distance result is a single number (meters) or null. eta-batch result is an array of { lat, lon, seconds }, echoing each destination with its live ETA in seconds (seconds is null if that leg failed).
Known limitations
routeresults don't include route line geometry. Waze encodes it with Google's S2 cell geometry format, which isn't decoded by this Actor — distance, ETA, traffic comment, and warnings are all real-time and accurate, only the polyline itself is omitted. (Inherited from the parent.)- A malformed request item (missing required fields for its
operation) is skipped with a logged error rather than failing the whole run. - This is an unofficial, reverse-engineered integration, not affiliated with or endorsed by Waze / Google. Behavior may change if Waze changes its protocol.
Pricing
Pay per event: $0.006 per route — charged once for each route/walking-distance/eta-batch request item successfully processed (Free plan price; lower on paid Apify plans). See the Actor's Pricing tab for current tiered rates.