Road traffic around the address in 100 m, 500 m and 1 km discs
Available with: trial key (open fields) · bought bundle or agreed plan (all fields) · Pricing
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
Send the key in the X-API-Key header. The section can be fetched with the rest of the address, or on its own with pagination.
curl --fail-with-body --silent --show-error \ -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 --fail-with-body --silent --show-error \ -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.