Where they went

Billboard passes and traffic flow

Every time one of our camera vehicles passes a roadside billboard on a map-matched route: seconds in view, seconds legible, whether the cab was occupied, how many passengers, and the camera's attention readings, summed per board per local day. The flow table adds modelled vehicles per hour past each face by day type and hour, from US federal and Quebec traffic counts shaped by our fleet's own trips.

Request a sampleAll datasets

The question it answers

How many people passed this billboard, could they read it, and who was in the car?

24,049

billboards passed

15.7 million

passes

68

media owners

139

DMAs the boards stand in

Measured over the 90 days to September 25, 2026.


The dataset

Grain
Daily.
Cadence
Daily rows per board, one file per day. The flow table is one current snapshot.
History
From May 12, 2026.
Format
Parquet or JSONL.
Delivered to
Your S3 bucket, your GCS bucket, or a time-limited download link, with a manifest and a schema.
Method
How each measure is produced and how to add rows up: the measurement methodology.

What buyers do with it

  • Audit an out-of-home buy against measured passes.
  • Rank faces by legible seconds and occupied passes.
  • Price boards on who was in the car.

The tables

Read from the export registry each time this site is built.

board_pass_daily

Daily, from May 12, 2026
Grain
One row per local_date and board_id.
Delivery
One file per day, as Parquet or JSONL.
Basis
Measured.
Definition
Version 1.
ColumnTypeWhat it holds
local_datedateThe board's local calendar day.
board_idstringThe roadside face: the venue id of the board face.
venue_type_idintegerOpenOOH venue type id of the face (0 = unclassified).
publisher_namestringMedia owner of the face (empty when none is recorded).
dma_codestringNielsen DMA of the face. Null: The face is outside a DMA.
passesintegerPasses of our map-matched vehicles with the face in view. Unit: passes.
vehiclesintegerDistinct vehicles behind the passes. Unit: vehicles.
site_primary_passesintegerPasses on which this face was the site's primary face. Unit: passes. Null: The currency rollup holds no row for the board-day.
expected_passesdoubleFace-share-weighted passes, for a face whose orientation is unresolved. Unit: passes. Null: The currency rollup holds no row for the board-day.
visible_sdoubleSeconds the face was in view over the passes. Unit: seconds. Null: The currency rollup holds no row for the board-day.
legible_sdoubleSeconds the face was legible (available to be read) over the passes. Unit: seconds. Null: The currency rollup holds no row for the board-day.
occupancy_known_passesintegerPasses whose cab occupancy is known. Unit: passes.
occupied_passesintegerOf those, the passes with a passenger in the cab. Unit: passes.
occupied_sharedoubleoccupied_passes / occupancy_known_passes. Unit: share. Null: No pass with a known occupancy (occupancy_known_passes = 0).
pax_count_sumdoublePassengers summed over the occupied passes that carry a count. Unit: passengers.
pax_count_nintegerOccupied passes that carry a passenger count. Unit: passes.
pax_count_meandoublePassengers per occupied pass: pax_count_sum / pax_count_n. Unit: passengers_per_pass. Null: No occupied pass carries a passenger count (pax_count_n = 0).
camera_windowsintegerCabin camera windows during the passes. Unit: windows.
hy_pose_valid_windowsintegerHead-yaw instrument: windows with a valid pose. Unit: windows.
hy_heads_up_windowsintegerHead-yaw instrument: windows with the head up. Unit: windows.
hy_eyes_out_windowsintegerHead-yaw instrument: windows with the eyes out of the vehicle. Unit: windows.
sh_pose_valid_windowsintegerShoulder (MoveNet) instrument: windows with a valid pose. Unit: windows.
sh_heads_up_windowsintegerShoulder instrument: windows with the head up. Unit: windows.
sh_eyes_out_windowsintegerShoulder instrument: windows with the eyes out of the vehicle. Unit: windows.
pass_audience_method_versionintegerpass_audience method version of the audience rollup. Null: The board-day was built under more than one method version.
exposure_currency_method_versionintegerexposure_currency method version of the currency rollup. Null: More than one method version, or no currency row.

Also answered live by the measurement API: Who was in the cab during a board pass.

board_flow_hourly

Hourly, from Current state
Grain
One row per board_id, dow_type and local_hour.
Delivery
One file per delivery, as Parquet or JSONL.
Basis
Modelled.
Definition
Version 1.
ColumnTypeWhat it holds
board_idstringThe roadside face: the venue id of the board face.
dow_typestringDay type: weekday, saturday or sunday (holidays count as sunday).
local_hourintegerBoard-local hour of the day, 0-23.
flow_vphdoubleModelled vehicles per hour past the face. Unit: vehicles_per_hour.
flow_cvdoubleCoefficient of variation of flow_vph. Unit: ratio.
aadt_facingdoubleAnnual average daily traffic facing the face, after the two-way split. Unit: vehicles_per_day.
waysintegerRoad ways contributing to the face. Unit: ways.
aadt_sourcestringWeakest AADT basis among the ways: hpms (FHWA HPMS), mtq (Quebec) or imputed.
aadt_yearintegerOldest AADT year among the ways. Null: The AADT is imputed.
profile_basisstringBasis of the hourly shape: fleet_blend (our fleet's observed traversal profile blended with the TMAS prior) or tmas_prior (the prior alone).
kappadoubleStrength of the prior against the fleet profile in the blend. Null: The build used the TMAS prior alone.
fit_window_enddateLast day of the fleet profile's fit window.
exposure_currency_method_versionintegerexposure_currency method version of the flow.

Request a sample

Tell us the markets and the weeks you want. The sample is cut from production by the same export that makes the full delivery.

Request a sample

All datasets · Next: Radio presence and device exposure