Here’s the information you see in the Traffic View feed:
- General traffic information: Routes, unusual traffic, ETAs
- Irregularities (also called unusual traffic): Alerts and traffic jams that affect an exceptionally large number of users
- Incidents/reports/alerts: Waze user generated reports and alerts related to a specific incident causing traffic.
Note: When you change the polygon or routes in the Traffic View tool, your feed changes too.
| JSON Element | Value | Description |
id (Root-Level) |
String / UUID | The primary identifier at the root level of a traffic jam or incident payload. This matches the parent event's unique uuid across the platform. |
bbox |
Object / Array | Bounding box coordinates representing the spatial limits of the feed payload. |
broadcasterId |
Integer / String | The unique account identification code of the partner feed owner within the Waze master database. |
type |
String | Event type categorization. Corresponds to values defined in the Alert Type reference matrix. |
subtype |
String | Event subtype specialization. Dependent on configuration flags (for example, atf parameter filtering rules). |
street |
String / Null | The street name exactly as stored in the map database. Text layout reflects un-canonicalized forms and may return null states. |
city |
String / Null |
City and state name Cities are mapped strictly to official political boundaries. This will return empty ( |
country |
String | Two-letter absolute country code mappings conforming to the ISO 3166-1 alpha-2 standard (see two letter codes in http://en.wikipedia.org/wiki/ISO_3166-1). |
isMetric |
Boolean | Indication to the UI what units to use in the display. |
length |
Integer / Float | Length of route in meters. |
lengthOfJams |
Array / Object | List of total length of jams in the bounding box by jam level (indicates how jammed the area is). |
line |
Array of Points | Route geometry. |
time |
Integer | Time in seconds it takes to cross the route right now (for example, in the last check. Checks happen about every two minutes). |
turnType |
String | Legacy field inherited from older routing architectures. This element almost universally resolves to NONE and should be ignored by your parsing layer. |
envelope |
Object | Bounding box of the route. |
historicTime |
Integer | Time in seconds it usually takes to cross this route on the current day of week and time. Calculated using ~30-minute buckets over prior weeks (weighted heavily toward recent weeks). Adjusts automatically to evaluate equivalent holiday periods across prior years. |
alternateRoute |
Object | A suggested route with a faster ETA. Calculated only for routes with a jamLevel over 1 where real-time traffic delay is at least 2 minutes slower than free flow. |
usersOnJams |
Array / Object | Count of users per jam level (these are relative weighted numbers). |
| Under irregularities/route | The following fields are nested directly inside the irregularities list elements: | |
irregularities |
Array | List of routes that are found as having high ETA relative to historic ETAs (Unusual traffic events). Escalated automatically when real-time speeds drop 75% or more below the segment historical average (regularSpeed). |
irregularities/route/id |
Integer | A counter running starting with 0 that counts the number of irregularities on routes. |
irregularities/route/name |
String | Route name (i.e. major street name this route goes through, similar to route name a user sees when routes from the app). |
irregularities/route/type |
String | Returns "STATIC" if the irregularity is caused by a structural road closure, otherwise returns "DYNAMIC" for normal high-volume traffic congestion. |
irregularities/route/fromName |
String | Street name where the irregularity route starts. |
irregularities/route/toName |
String | Street name where the irregularity route ends. |
irregularities/route/endNode |
String | Internal node tracking used to determine route context. Populated on a best-effort basis, doesn't map to standard parameters in basic Jams feeds and shouldn't be used for database joins. |
irregularities/route/alerts |
Array | Lists the unique root IDs of core user-submitted alerts that are directly responsible for causing or triggering the traffic irregularity (Cause Alerts). |
irregularities/route/[shared] |
(Various) | The following elements evaluate exactly to their baseline route definitions: time, line, length, historicTime, jamLevel, envelope, alternateRoute, leadAlert. |
| Under subRoutes | The following fields are nested directly inside the subRoutes list elements: | |
subRoutes |
Array | List of sub sub routes. When a route has any jams on it the route is split into sub routes, each of them with a different jam level. For example, a route could be split into 4 sub routes with corresponding jam levels 0,1,3,0. |
subRoutes/fromName |
String | Street name where subroute starts. |
subRoutes/toName |
String | Street name where subroute ends. |
subRoutes/name |
String | Given by the feed owner, describes the sub route. |
subRoutes/segments |
Array | Array of nested tracking objects mapping the infrastructure footprints consumed by a traffic jam. The nested id inside this array represents the internal road segment reference code. |
subRoutes/jamLevel |
Integer | Traffic congestion scale where level 0 is free flow, levels 1 to 3 indicate increasing slowdown, level 4 means standstill, and level 5 indicates a full road closure. |
subRoutes/[shared] |
(Various) | The following elements evaluate exactly as described in the basic definitions, just isolated for the sub route: line, length, time, historicTime, envelope. |
| Under leadAlert | The following fields are nested directly inside the leadAlert object: | |
leadAlert |
Object | One of many alerts on the route that’s prioritized as the most major one. |
leadAlert/id |
String / UUID | Alert id (internal id). Unique to each individual parent incident. |
leadAlert/type |
String | Alert type. |
leadAlert/subType |
String | Alert sub type - depends on atof parameter. Note: Codebase Enums must support the latest authority codes, including HAZARD_ON_ROAD_EMERGENCY_VEHICLE and HAZARD_ON_ROAD_MOBILE_SPEED_CAMERA. |
leadAlert/reportByNickname |
String | Nickname of the reporter user. |
leadAlert/reportByMood |
Integer | Mood id of the reporter user. |
leadAlert/description |
String / Null | Alert description as added by the reporting user. Third-Party Processing Alert: Context blocks forwarded from third-party municipal authorities or public works records are piped into this property as unformatted, free text. Downstream regex cleaning scripts should be configured defensively to normalize truncation or unexpected formatting anomalies. |
leadAlert/numThumbsUp |
Integer | Number of thumbs up given by wazers to this alert. |
leadAlert/numNotThereReports |
Integer | Number of thumbs down ("Not There" reports) given by wazers to this alert. |
leadAlert/City |
String / Null | City of the alert (optional). Mapped strictly via political boundaries; if an incident falls outside an official municipality edge, this will remain completely empty. |
leadAlert/Street |
String / Null | Street of the alert (optional). |
leadAlert/reportTime |
Timestamp | When alert was reported. |
leadAlert/position |
Object | Alert location (latitude, longitude). |
Traffic View feed example
{
"usersOnJams": [
{
"wazersCount": 1718,
"jamLevel": 0
},
{
"wazersCount": 0,
"jamLevel": 1
},
{
"wazersCount": 25,
"jamLevel": 2
},
{
"wazersCount": 0,
"jamLevel": 3
},
{
"wazersCount": 0,
"jamLevel": 4
}
],
"routes": [
{
"historicTime": 446,
"line": [
{
"x": -74.20689323194252,
"y": 40.64175770128392
},
{
"x": -74.14963579315261,
"y": 40.60903444419476
}
],
"bbox": {
"minY": 40.60903444419476,
"minX": -74.22707498420026,
"maxY": 40.643716689521995,
"maxX": -74.14963579315261
},
"length": 9846,
"type": "STATIC",
"jams": [],
"alerts": [],
"toName": "",
"name": "278 E",
"fromName": "",
"jamLevel": 0,
"id": 1376,
"time": 436
},
{
"subRoutes": [
{
"toName": "SR-139 W (lower)",
"historicTime": 358,
"line": [
{
"x": -74.006321,
"y": 40.722572
},
{
"x": -74.006582,
"y": 40.722752
},
{
"x": -74.085259,
"y": 40.730522
}
],
"bbox": {
"minY": 40.730522,
"minX": -74.085259,
"maxY": 40.740889,
"maxX": -74.062409
},
"fromName": "SR-139 W (lower)",
"length": 3520,
"jamLevel": 0,
"time": 261
}
],
"historicTime": 687,
"line": [
{
"x": -74.00632136441801,
"y": 40.7225729836073
},
{
"x": -74.08525957374057,
"y": 40.73052272482624
}
],
"bbox": {
"minY": 40.7225729836073,
"minX": -74.08525957374057,
"maxY": 40.740889,
"maxX": -74.00632136441801
},
"length": 9092,
"type": "STATIC",
"jams": [],
"alerts": [],
"toName": "",
"name": "78 W",
"fromName": "",
"jamLevel": 0,
"id": 1377,
"time": 735
}
],
"irregularities": [
{
"alerts": [],
"historicTime": -1,
"line": [
{
"x": -74.016234,
"y": 40.706399
},
{
"x": -74.010097,
"y": 40.70187
}
],
"bbox": {
"minY": 40.706399,
"minX": -74.016234,
"maxY": 40.706399,
"maxX": -74.016234
},
"name": "Double tube closure ",
"length": 1040,
"jamLevel": 5,
"id": 0,
"time": -1,
"type": "DYNAMIC",
"jams": [],
"leadAlert": {
"numComments": 0,
"comments": [],
"city": "Manhattan, NY",
"numThumbsUp": 0,
"street": "Battery Park Underpass",
"subType": "ROAD_CLOSED_EVENT",
"id": "alert-2130271205/3c856425-262f-3668-b03c-25d3b02c01f7",
"position": "40.706399 -74.016234",
"type": "ROAD_CLOSED",
"numNotThereReports": 0,
"isLeadAlert": true,
"reportTime": 1522084545431
}
},
{
"alerts": [],
"historicTime": -1,
"line": [
{
"x": -74.050004,
"y": 40.73128
},
{
"x": -74.062409,
"y": 40.73913
}
],
"bbox": {
"minY": 40.73128,
"minX": -74.050004,
"maxY": 40.73128,
"maxX": -74.050004
},
"name": "Construction ",
"length": 1414,
"jamLevel": 5,
"id": 1,
"time": -1,
"type": "DYNAMIC",
"jams": [],
"leadAlert": {
"numComments": 0,
"comments": [],
"city": "Jersey City, NJ",
"numThumbsUp": 0,
"street": "SR-139 W (lower)",
"subType": "ROAD_CLOSED_EVENT",
"id": "alert-2132049084/1c67d40f-2e98-30cb-a64a-ae153bfe850a",
"position": "40.73128 -74.050004",
"type": "ROAD_CLOSED",
"numNotThereReports": 0,
"isLeadAlert": true,
"reportTime": 1522077324308
}
}
],
"broadcasterId": "b9c6100b281f316fbc17b6d94f96524f",
"areaName": "ny_area",
"bbox": {
"minY": 40.208,
"minX": -74.75,
"maxY": 41.108,
"maxX": -73.38
},
"name": "New York Area | DEMO",
"isMetric": false,
"restrictions": {},
"lengthOfJams": [
{
"jamLevel": 1,
"jamLength": 1872
},
{
"jamLevel": 2,
"jamLength": 10461
},
{
"jamLevel": 3,
"jamLength": 9917
},
{
"jamLevel": 4,
"jamLength": 1470
},
{
"jamLevel": 5,
"jamLength": 43032
}
],
"updateTime": 1522138104077
}
Routes example
Irregularity classification thresholds
When a segment's speed plummets 75% below its historical average (regularSpeed), the event is escalated from a standard jam and added to the Irregularities dataset. The severity classification (type) is assigned dynamically based on net time delay added to the segment:
| Type | Highway Infrastructure (Major/Minor Highways, Freeways) | Secondary & Local Roads (Regular Streets) |
|
|
Delay time added > 7 minutes | Delay time added > 5 minutes |
|
|
Delay time added > 15 minutes | Delay time added > 10 minutes |
|
|
Delay time added > 30 minutes | Delay time added > 20 minutes |
|
|
Delay time added > 1 hour | Delay time added > 1 hour |
STATIC vs. DYNAMIC classifications:
-
The
typeparameter inside the irregularities stream may return text states beyondDYNAMIC:-
DYNAMIC: Represents a shifting bottleneck driven strictly by high, real-time traffic volume -
STATIC: Explicitly dictates that the underlying irregularity is caused by a structural road closure
-
Historical heuristics
The historicTime field shows the typical travel time for a route. To calculate this, the engine takes the stats of the segment data from the same day during past weeks in ~30 minute interval buckets.
The calculation uses these rules:
- Interval buckets: Historical records are grouped into ~30-minute blocks for that specific day of the week
- Recent data weights: The engine evaluates data from previous weeks, but gives more weight to recent weeks. Older data becomes less important to the calculation as time goes backץ
- Holiday tracking: For holidays, the engine automatically adjusts to look at historical data from matching holiday periods in past years rather than a standard week
Alert types
Waze currently supports the following types and subtypes of user-generated alerts:
Note: for historical reasons, HAZARD and WEATHERHAZARD types are used interchangeably. The nature of such alerts should be determined using the subtype.
|
Alert type |
Alert Subtype |
|
ACCIDENT |
|
|
JAM |
|
|
WEATHERHAZARD / HAZARD |
|
|
MISC |
|
|
CONSTRUCTION |
|
|
ROAD_CLOSED |
|