Waze Traffic Alerts Scraper avatar

Waze Traffic Alerts Scraper

Pricing

from $3.10 / 1,000 alert chargeds

Go to Apify Store
Waze Traffic Alerts Scraper

Waze Traffic Alerts Scraper

Get crowd-sourced road closures, hazards, and events from Waze. Talks directly to Waze's own protocol, no login needed. Split from the mature, published waze-all-in-one-api for a focused, single-purpose workflow.

Pricing

from $3.10 / 1,000 alert chargeds

Rating

0.0

(0)

Developer

Romy

Romy

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

25 days ago

Last modified

Categories

Share

What does Waze Traffic Alerts Scraper do?

Waze Traffic Alerts Scraper takes one or more geographic bounding boxes and pushes every real-time crowd-sourced road event (closures, contraflow lanes, hazards) found within them — one dataset row per event.

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 in the source repo — field names and numbers are the real app's, not guesses). No Waze account, no API key, no scraping setup. This is the /alerts slice of Waze All-in-One API, split out as its own focused Actor.

Why use Waze Traffic Alerts Scraper?

  • Real crowd-sourced road events — closures, contraflow lanes, and hazards with geometry, the same data rendered as dashed lines and pins in the Waze app
  • Batch multiple areas in one run — pass many bounding boxes and get every event across all of them in a single dataset
  • No account needed — every request authenticates itself with a fresh anonymous session
  • Confirmed working worldwide — the underlying protocol was tested live in Indonesia, the UK, the US, and Israel during development, not just one market
  • Use cases: traffic monitoring dashboards, road-closure alerting, urban mobility research, logistics/routing risk analysis

Input

FieldTypeDescription
boundingBoxesarrayRequired. One or more { north, south, east, west } bounding boxes (decimal degrees).

Example:

{
"boundingBoxes": [{ "north": -6.15, "south": -6.18, "east": 106.83, "west": 106.82 }]
}

Output

One dataset row per road event, tagged with the bounding box it came from:

{
"boundingBox": { "north": -6.15, "south": -6.18, "east": 106.83, "west": 106.82 },
"id": "750503858",
"version": 0,
"typeCode": 5,
"street": "Contra Flow Hayam Wuruk",
"city": "Jakarta Pusat",
"crossStreet": "Gajah Mada",
"points": [
{ "lon": 106.820862, "lat": -6.167265 },
{ "lon": 106.819936, "lat": -6.163168 }
],
"roadSegmentIds": ["516284383", "516266383"],
"raw": [
"AddRoadInfo",
"750503858",
"0",
"5",
"0",
"Contra Flow Hayam Wuruk",
"Jakarta Pusat",
"",
"Gajah Mada",
"F",
"F",
"0",
"0",
"2",
"0",
"-1",
"T",
"-1",
"-1",
"12",
"-1",
"F",
"0",
"0",
"465",
"",
"1164106498",
"1"
]
}

Data table

FieldDescription
boundingBoxThe bounding box this event was found in (echoes back the input)
idStable event id, unchanged across live updates
versionUpdate/sequence number for this event
typeCodeNumeric event type (not yet mapped to a name — see Known limitations)
street / city / crossStreetLocation context, as reported
pointsEvent geometry (polyline), decoded lon/lat
roadSegmentIdsUnderlying Waze road-graph segment ids the event is linked to
rawThe unparsed AddRoadInfo CSV fields, for the handful of positions not yet mapped to a named field above

How it connects to the parent

This Actor is a narrow, batch-run spin-off of Waze All-in-One API, a Standby REST API exposing eight Waze endpoints. It reuses that Actor's exact session-handshake and CSV-parsing logic for the /alerts endpoint only, restructured as a normal input-in/dataset-out batch Actor instead of an always-on HTTP API. If you need routing, search, nearby POI, reverse geocoding, walking distance, batch ETA, or SOS providers too, use the parent Actor instead.

Known limitations

  • typeCode, and a handful of other numeric fields, aren't mapped to human-readable names. AddRoadInfo is parsed entirely natively (no Java-side protobuf class to cross-reference, unlike the parent's other endpoints) — confirmed by decompiling the actual native parser function. That decompile did surface two verified wire-format facts not yet correlated to an exact field position: one numeric field is a float scaled ×10 (not a plain int), and one field supports a |-delimited sub-list of up to 20 integers — never populated in any sample captured so far. The unmapped positions are returned under raw rather than guessed at.
  • 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.004 per alert — charged once for each road event returned within a bounding box (Free plan price; lower on paid Apify plans). See the Actor's Pricing tab for current tiered rates.

Found a bug or have a feature request? Use the Issues tab on this Actor's page.