Menu
Where they went
Mobility flows, daily
Devices seen at one screen while an ad played and at another screen within the next 24 hours. One row per screen pair, day and radio signal, with the distinct devices as a floor and a ceiling and the median minutes between the two sightings. The same flows by hour, and every device transition between two screens by day, ship alongside.
The question it answers
Where do people go after they pass this screen?
10.1 million
screen pairs
21.8 million
daily rows
5,278
destination screens
Measured over the 28 days to October 11, 2026.
The dataset
- Grain
- Daily.
- Cadence
- Daily rows, one file per day. The hourly table carries the same flows by hour.
- History
- From July 15, 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
- Trade areas and cross-visitation between venues.
- Exposure-to-visit paths: who saw an ad in one place and turned up in another.
- Corridor and route analysis for transit, retail and real estate.
The tables
Read from the export registry each time this site is built.
mobility_flows_daily
Daily, from July 15, 2026- Grain
- One row per flow_date, source_screen_id, destination_screen_id and source.
- Delivery
- One file per day, as Parquet or JSONL.
- Basis
- Measured.
- Definition
- Version 2.
| Column | Type | What it holds |
|---|---|---|
flow_date | date | UTC day of the source sightings. |
source_screen_id | string | Screen where identifiers were seen during an ad play. Trillboards screen id (24-character hex); joins dim_screen.screen_id. |
destination_screen_id | string | Screen where the same identifiers were seen within the next 24 hours. |
source | string | Radio signal source of the identifiers: ble, mdns, ssdp or http_probe. |
repeated_signal_count | integer | Pairs of (source sighting, destination sighting) behind the row. Unit: signal_pairs. |
unique_identifiers_floor | integer | Distinct identifiers in the day's largest single hour-by-ad-window cell: the least the day's distinct count can be. Unit: identifiers. |
identifier_cell_sum | integer | Sum of the cells' distinct identifiers: the most the day's distinct count can be. Unit: identifiers. |
ad_window_cells | integer | The hour-by-ad-window cells the row aggregates. Unit: cells. |
median_lag_minutes | double | Mean over the cells of each cell's median minutes from the source to the destination sighting. Unit: minutes. |
proximity_graph_edges_hourly
Hourly, from July 15, 2026Screen-to-screen movement by hour and radio signal, anchored on ad plays.
- Grain
- One row per hour_bucket, source_screen_id, destination_screen_id and source.
- Delivery
- One file per day, as Parquet or JSONL.
- Basis
- Measured.
- Definition
- Version 2.
| Column | Type | What it holds |
|---|---|---|
hour_bucket | timestamp | UTC hour the identifiers were seen at the source screen during an ad play. |
source_screen_id | string | Screen where the identifiers were seen during the play. Trillboards screen id (24-character hex); joins dim_screen.screen_id. |
destination_screen_id | string | Screen where the same identifiers were seen within the next 24 hours. |
source | string | Radio signal source of the identifiers: ble, mdns, ssdp or http_probe. |
repeated_signal_count | integer | Pairs of (source-screen signal, destination-screen signal) behind the row, summed over its ad-window cells. Unit: signal_pairs. |
unique_identifiers_floor | integer | Distinct identifiers in the largest single (creative, ad) cell of the hour: the least the hour's distinct count can be. Unit: identifiers. |
identifier_cell_sum | integer | Sum of the cells' distinct identifiers: the most the hour's distinct count can be (an identifier seen in two cells counts twice here). Unit: identifiers. |
ad_window_cells | integer | The (creative, ad) cells the row aggregates. Unit: cells. |
median_lag_minutes | double | Mean over the cells of each cell's median minutes from the source sighting to the destination sighting. Unit: minutes. |
cross_screen_edges_daily
Daily, from May 2026Devices seen at one screen and then at another within the hour, by screen pair and day, with the median lag and distance.
- Grain
- One row per dt, source_screen_id and destination_screen_id.
- Delivery
- One file per day, as Parquet or JSONL.
- Basis
- Measured.
- Definition
- Version 3.
| Column | Type | What it holds |
|---|---|---|
dt | date | UTC day of the transitions. |
source_screen_id | string | Screen the device was seen at first. Trillboards screen id (24-character hex); joins dim_screen.screen_id. |
destination_screen_id | string | Screen the device was seen at next, 1-60 minutes later. |
edge_count | integer | Distinct transitions (device key, screens, time, lag) from the source to the destination that day. Unit: transitions. |
unique_devices | integer | Distinct device keys behind the transitions (the RSSI-independent stable key). Unit: identifiers. |
lag_p50_minutes | integer | Exact median minutes between the two sightings. Unit: minutes. |
transition_distance_p50_m | double | Exact median great-circle distance between the two screens' stored coordinates. The transition writer stores 0 where either screen has no coordinate, so 0 means co-located or not located. Unit: meters. |
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 sampleAll datasets · Next: Geohash activity, hourly