Road traffic around the address in 100 m, 500 m and 1 km discs
traffic_exposure45 fields45 of these fields open in the demo
What this does not say
Quoted verbatim from the section’s warnings field, exactly as the API returns it. They are not translated: a translation would show something other than what your response actually contains.
- ÅDT is Statens vegvesen's annual average daily traffic for a road stretch in the year adt_year (from counting or estimation, see basis and adt_counted), not live traffic. Discs are straight-line distance from the address point (_100m, _500m, _1000m; each disc includes the smaller ones) and say nothing about whether a road is reachable, audible or screened from the address.
- traffic_load_<r> is Σ(ÅDT × metres of the stretch inside the disc) / 1000 / disc area in km², in vehicle-km per km² per day. Each NVDB stretch counts once; separate carriageways and one-way streets are separate stretches carrying their own traffic. NVDB leaves ÅDT off many municipal and private roads, so the load is a lower bound: those roads are unknown, not zero. A disc with no ÅDT stretch has adt_segments 0 and null ÅDT figures (adt_status no_adt_road_in_ring); no_adt_data_within_20km means we hold no ÅDT stretch within 20 km of the address (NVDB has none there, or the area is not loaded), and every ÅDT figure is null.
- busiest_road_<r>.adt_applies_to is one_carriageway_of_divided_road when NVDB records the ÅDT for one carriageway only; the road's two-way traffic is then roughly the sum of both carriageways. heavy_vehicle_share_pct is NVDB's share of long vehicles (5.6 m and over). NVDB carries no street name for ÅDT stretches; road_number (EV18, FV24, KV1234) identifies the road.
- Sensor figures are never summed across sensors: sensors on one road count the same vehicles. sensor_combined_adt_<r> is the sum over distinct road numbers of the busiest sensor on each road (sensor_combination_method), with the roads listed in sensor_roads_<r>. Sensors are sparse, so sensor_count_<r> is mainly a data-quality indicator and a disc without sensors (sensor_status no_sensor_in_ring) is not measured, not free of traffic. busiest_sensor_<r>.vehicles_per_hour is the latest reading at updated_at, not a live congestion measure.
Fields
16 of 45 fields are value fields — the ones that decide whether a record actually says anything. The rest are context: identifiers, codes and timestamps. Fields marked “open” return values to anonymous callers; the rest require a key.
| Field | Type | Role | Demo |
|---|---|---|---|
| adt_status_100m | string | null | context | open |
| adt_segments_100m | integer | null | context | open |
| max_adt_100m | integer | null | value | open |
| busiest_road_100m | object | null | context | open |
| traffic_load_100m | number | null | value | open |
| adt_segments_over_5000_100m | integer | null | value | open |
| adt_segments_over_15000_100m | integer | null | value | open |
| sensor_status_100m | string | null | context | open |
| sensor_count_100m | integer | null | context | open |
| sensor_combined_adt_100m | integer | null | value | open |
| sensor_roads_100m | array<object> | null | context | open |
| busiest_sensor_100m | object | null | context | open |
| sensors_in_ring_100m | array<object> | null | context | open |
| adt_status_500m | string | null | context | open |
| adt_segments_500m | integer | null | context | open |
| max_adt_500m | integer | null | value | open |
| busiest_road_500m | object | null | context | open |
| traffic_load_500m | number | null | value | open |
| adt_segments_over_5000_500m | integer | null | value | open |
| adt_segments_over_15000_500m | integer | null | value | open |
| sensor_status_500m | string | null | context | open |
| sensor_count_500m | integer | null | context | open |
| sensor_combined_adt_500m | integer | null | value | open |
| sensor_roads_500m | array<object> | null | context | open |
| busiest_sensor_500m | object | null | context | open |
| sensors_in_ring_500m | array<object> | null | context | open |
| adt_status_1000m | string | null | context | open |
| adt_segments_1000m | integer | null | context | open |
| max_adt_1000m | integer | null | value | open |
| busiest_road_1000m | object | null | context | open |
| traffic_load_1000m | number | null | value | open |
| adt_segments_over_5000_1000m | integer | null | value | open |
| adt_segments_over_15000_1000m | integer | null | value | open |
| sensor_status_1000m | string | null | context | open |
| sensor_count_1000m | integer | null | context | open |
| sensor_combined_adt_1000m | integer | null | value | open |
| sensor_roads_1000m | array<object> | null | context | open |
| busiest_sensor_1000m | object | null | context | open |
| sensors_in_ring_1000m | array<object> | null | context | open |
| sensor_combination_method | string | null | context | open |
| nearest_adt_road | object | null | context | open |
| nearest_adt_road_distance_m | integer | null (m) | value | open |
| nearest_adt_road_status | string | null | context | open |
| adt_fetched_at | timestamp | null | context | open |
| sensors_updated_at | timestamp | null | context | open |
Fetch this section
curl -H "X-API-Key: $APPROACH_API_KEY" \ "https://api.approach.no/api/v1/addresses/285717643?include=traffic_exposure" # paginated, one section at a time curl -H "X-API-Key: $APPROACH_API_KEY" \ "https://api.approach.no/api/v1/addresses/285717643/sections/traffic_exposure?limit=25"
Try it now
This is a real call against the public demo, from here. What appears below is what the API returned — not a sample.