Menu
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.
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.
| Column | Type | What it holds |
|---|---|---|
local_date | date | The board's local calendar day. |
board_id | string | The roadside face: the venue id of the board face. |
venue_type_id | integer | OpenOOH venue type id of the face (0 = unclassified). |
publisher_name | string | Media owner of the face (empty when none is recorded). |
dma_code | string | Nielsen DMA of the face. Null: The face is outside a DMA. |
passes | integer | Passes of our map-matched vehicles with the face in view. Unit: passes. |
vehicles | integer | Distinct vehicles behind the passes. Unit: vehicles. |
site_primary_passes | integer | Passes on which this face was the site's primary face. Unit: passes. Null: The currency rollup holds no row for the board-day. |
expected_passes | double | Face-share-weighted passes, for a face whose orientation is unresolved. Unit: passes. Null: The currency rollup holds no row for the board-day. |
visible_s | double | Seconds the face was in view over the passes. Unit: seconds. Null: The currency rollup holds no row for the board-day. |
legible_s | double | Seconds 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_passes | integer | Passes whose cab occupancy is known. Unit: passes. |
occupied_passes | integer | Of those, the passes with a passenger in the cab. Unit: passes. |
occupied_share | double | occupied_passes / occupancy_known_passes. Unit: share. Null: No pass with a known occupancy (occupancy_known_passes = 0). |
pax_count_sum | double | Passengers summed over the occupied passes that carry a count. Unit: passengers. |
pax_count_n | integer | Occupied passes that carry a passenger count. Unit: passes. |
pax_count_mean | double | Passengers 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_windows | integer | Cabin camera windows during the passes. Unit: windows. |
hy_pose_valid_windows | integer | Head-yaw instrument: windows with a valid pose. Unit: windows. |
hy_heads_up_windows | integer | Head-yaw instrument: windows with the head up. Unit: windows. |
hy_eyes_out_windows | integer | Head-yaw instrument: windows with the eyes out of the vehicle. Unit: windows. |
sh_pose_valid_windows | integer | Shoulder (MoveNet) instrument: windows with a valid pose. Unit: windows. |
sh_heads_up_windows | integer | Shoulder instrument: windows with the head up. Unit: windows. |
sh_eyes_out_windows | integer | Shoulder instrument: windows with the eyes out of the vehicle. Unit: windows. |
pass_audience_method_version | integer | pass_audience method version of the audience rollup. Null: The board-day was built under more than one method version. |
exposure_currency_method_version | integer | exposure_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.
| Column | Type | What it holds |
|---|---|---|
board_id | string | The roadside face: the venue id of the board face. |
dow_type | string | Day type: weekday, saturday or sunday (holidays count as sunday). |
local_hour | integer | Board-local hour of the day, 0-23. |
flow_vph | double | Modelled vehicles per hour past the face. Unit: vehicles_per_hour. |
flow_cv | double | Coefficient of variation of flow_vph. Unit: ratio. |
aadt_facing | double | Annual average daily traffic facing the face, after the two-way split. Unit: vehicles_per_day. |
ways | integer | Road ways contributing to the face. Unit: ways. |
aadt_source | string | Weakest AADT basis among the ways: hpms (FHWA HPMS), mtq (Quebec) or imputed. |
aadt_year | integer | Oldest AADT year among the ways. Null: The AADT is imputed. |
profile_basis | string | Basis of the hourly shape: fleet_blend (our fleet's observed traversal profile blended with the TMAS prior) or tmas_prior (the prior alone). |
kappa | double | Strength of the prior against the fleet profile in the blend. Null: The build used the TMAS prior alone. |
fit_window_end | date | Last day of the fleet profile's fit window. |
exposure_currency_method_version | integer | exposure_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