Skip to content

← API reference

Road traffic around the address in 100 m, 500 m and 1 km discs

traffic_exposure45 fields45 of these fields open in the demo
Source
Statens vegvesen NVDB (ÅDT) and Statens vegvesen traffic sensors
Geography
The address point
Reported stale after
120 days
Access
Requires an API key granted this section
Contract version
1
In packages
environment_nuisance

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.

FieldTypeRoleDemo
adt_status_100mstring | nullcontextopen
adt_segments_100minteger | nullcontextopen
max_adt_100minteger | nullvalueopen
busiest_road_100mobject | nullcontextopen
traffic_load_100mnumber | nullvalueopen
adt_segments_over_5000_100minteger | nullvalueopen
adt_segments_over_15000_100minteger | nullvalueopen
sensor_status_100mstring | nullcontextopen
sensor_count_100minteger | nullcontextopen
sensor_combined_adt_100minteger | nullvalueopen
sensor_roads_100marray<object> | nullcontextopen
busiest_sensor_100mobject | nullcontextopen
sensors_in_ring_100marray<object> | nullcontextopen
adt_status_500mstring | nullcontextopen
adt_segments_500minteger | nullcontextopen
max_adt_500minteger | nullvalueopen
busiest_road_500mobject | nullcontextopen
traffic_load_500mnumber | nullvalueopen
adt_segments_over_5000_500minteger | nullvalueopen
adt_segments_over_15000_500minteger | nullvalueopen
sensor_status_500mstring | nullcontextopen
sensor_count_500minteger | nullcontextopen
sensor_combined_adt_500minteger | nullvalueopen
sensor_roads_500marray<object> | nullcontextopen
busiest_sensor_500mobject | nullcontextopen
sensors_in_ring_500marray<object> | nullcontextopen
adt_status_1000mstring | nullcontextopen
adt_segments_1000minteger | nullcontextopen
max_adt_1000minteger | nullvalueopen
busiest_road_1000mobject | nullcontextopen
traffic_load_1000mnumber | nullvalueopen
adt_segments_over_5000_1000minteger | nullvalueopen
adt_segments_over_15000_1000minteger | nullvalueopen
sensor_status_1000mstring | nullcontextopen
sensor_count_1000minteger | nullcontextopen
sensor_combined_adt_1000minteger | nullvalueopen
sensor_roads_1000marray<object> | nullcontextopen
busiest_sensor_1000mobject | nullcontextopen
sensors_in_ring_1000marray<object> | nullcontextopen
sensor_combination_methodstring | nullcontextopen
nearest_adt_roadobject | nullcontextopen
nearest_adt_road_distance_minteger | null (m)valueopen
nearest_adt_road_statusstring | nullcontextopen
adt_fetched_attimestamp | nullcontextopen
sensors_updated_attimestamp | nullcontextopen

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.