Placecast™ Profiles
Motionworks Placecast™ Profiles provides robust insights into visitation to points of interest across North America
Motionworks Placecast™ Profiles provides historical and near-real time data on the for places and regions from the beginning of 2019 to present. Data includes activities by type, audience, and origin.
Data Dimensions
- Frequency Published monthly.
- Geographic coverage Summarizes activities for residents of the U.S. for Motionworks Places and Regions.
- Zone systems Not applicable. No zone systems are used in reporting data in this schema.
- Date availability Monthly data since 2019.
- Latency Data are published monthly. Each release adds the most recent available month of measured data.
Schema
| Name | Description | Type | Example |
|---|---|---|---|
| place_id | Unique and persistent identifier of this place or region defined by a data collection polygon (also sometimes called point or place of interest). | Integer | 356698 |
| name | Name of the place. | String | Target |
| street_address | Street address of the place. | String | 3600 S Louise Ave |
| city | City of the place. | String | Sioux Falls |
| state | State or province of the place. | String | SD |
| postal_code | Postal delivery code of the place. In the US, this is the ZIP code. | String | 57106 |
| location | Latitude and longitude of the place | JSON {String: String} | {"lat":43.51214, "lon":-96.7693} |
| market | A variety of location descriptors using standard geographies, e.g. county, state, core-based statistical area, and designated market area. | JSON {String: String} | {"co_geoid": "46099","co_name": "Minnehaha",...} |
| place_type_id | Unique identifier of the place type. | Integer | 12 |
| place_type | Description of the place type. | String | Retail |
| place_audit_status | Audit status of the place. | String | Reviewed |
| place_modified_date | The last date the place's metadata, polygon, or audit status were modified, ISO 8601 with yyyy-mm-dd. | Date | 2023-05-11 |
| published_date | The most recent month of measured data included in this release, labeled using ISO 8601 with yyyy-mm-dd (the first day of that month). The row-level metrics (activities, visits, dropoffs, passbys, and the related per-person and confidence-interval fields) are an annualized estimate: the average of the monthly values over the 12-month window ending in this month (September through August), the same window used for the trade-area breakdown. | Date | 2025-08-01 |
| activities | Estimated activities at the place, where an activity refers to any significant time spent at a place. Activities are the sum of dropoffs and visits, which are differentiated by a dwell time threshold. This is an annualized estimate over the 12-month window ending in published_date; see the published_date description. | Integer | 72408 |
| visits | Estimated visits at the place. A visit is an activity with a measured dwell time at the place greater than or equal to activities_dwell_threshold. This is an annualized estimate over the 12-month window ending in published_date; see the published_date description. | Integer | 56576 |
| dropoffs | Estimated dropoffs at the place. A dropoff is an activity with a measured dwell time at the place less than ‘activities_dwell_threshold‘. This is an annualized estimate over the 12-month window ending in published_date. | Integer | 15832 |
| passbys | Estimated pass-bys of the place. A pass-by has zero dwell time at the place and is NOT an activity. They do not count as a dropoff or visit (or stay). This is an annualized estimate over the 12-month window ending in published_date. | Integer | 7007 |
| stays | Estimated stays at the place. In short, a stay is an overnight visit. Stays are a subset of ‘visits‘, meaning a ‘stay‘ counts as a ‘visit‘, but not all ‘visits‘ count as a ‘stay‘. A stay is a visit with a measured dwell time of at least 4 hours inclusive of 03:00 a.m. in local time. This is an annualized estimate over the 12-month window ending in published_date. | Integer | 0 |
| visits_ci | 90% confidence interval of the ‘visits‘ estimate. If we were to repeatedly make new estimates of ‘visits‘ using the same procedure with new data from different samples of people, the confidence interval would contain the resulting estimate 90% of the time. | JSON [Integer, len=2] | [55535, 57605] |
| visits_observations | The number of visits observed directly in the sample, summed over the 12-month window used to compute the annualized estimate (see published_date). | Integer | 10117 |
| imputed | A boolean flag indicating whether the estimates for this place were imputed with a larger time window than the standard period due to missing data. If true, activities, visits, dropoffs, passbys, stays, and all other included metrics are imputed. | Boolean | false |
| visits_avg_dwell | Average dwell time (in minutes) per person, ignoring those panel members who live in the associated block group(s) that intersect the place or that work in the place. This is an annualized estimate over the 12-month window ending in published_date. | Number (Float) | 90.0 |
| activities_dwell_threshold | The dwell time threshold (in minutes) for the place. This value is derivied from observed data across all places with the same place type of the place. Activities measuring a dwell time less than this threshold at this place are counted as dropoffs, and activities measuring a dwell time greater than or equal to this threshold at this place are counted as visits. Values for Places are maximum of 15 minutes. In Placecast™ Profiles, this is based on the average value over the last two months. | Number (Float) | 13.0 |
| visits_frequency_per_person | Average visits per person, ignoring those panel members who live in the associated block group(s) that intersect the place or that work in the place. This is an annualized estimate over the 12-month window ending in published_date. | Number (Float) | 1.18 |
| visits_unique_persons | The number of unique persons visiting the place. Equals ‘visits‘ divided by ‘visits_frequency_per_person‘. This is an annualized estimate over the 12-month window ending in published_date. | Integer | 47940 |
| visits_unique_long_trips | The number of unique long-distance trips visiting the place. A long-distance trip is counted when a panel member is more than 50 miles from their home neighborhood. Panel members are only eligible to contribute to the estimate of unique long-distance trips if the place does not overlap with the home county of the panel member. This is an annualized estimate over the 12-month window ending in published_date. | Integer | 14367 |
| passbys_travel_mode | Pass-bys by vehicular and pedestrian status, as an annualized estimate over the 12-month window ending in published_date. The determination of vehicular pass-bys and pedestrian pass-bys are determined by observed speed. The sum of all will equal ‘passbys‘. Vehicular are first, and pedestrian are second in the array. If NULL, the polygon of this place is large enough to be considered a region and is not calculated. | JSON [Integer, len = 2] | [6657, 350] |
| local_radius | Activities, pass-bys, dropoffs, and visits by local and non-local status, as an annualized estimate over the 12-month window ending in published_date. A local activity or pass-by is counted when the home block group of the panel member is within a 50-mile radius of the place. The radius is calculated between the observed lat/lon of the panel member and the center point of the home block group. The sum of all will equal ‘activities‘, ‘passbys‘, ‘dropoffs‘, and ‘visits‘, respectively. Local is first, and non-local is second in the array. | JSON {String: [Integer, len = 2]} | {"activities": [50708, 21700], "visits": [39621, 16955], "dropoffs": [11087, 4745], "passbys": [4907, 2100]} |
| percent_visits | Percent of visits by various dimensions, including the day of the week and hour of the day, demographic segments, and home locations. The sum of all will generally equal 100, except in the case of rounding error. Indices against the population are included for demographic segments. For example, with age group 0-17 having 3.1% of visits, an index of 100 indicates that 3.1% of the population of the surrounding DMA also is aged 0-17. Indices can range from 0 to infinity, where 0 occurs when there are no visits from a given segment, and infinity occurs when the segment is not present in the surrounding DMA. See the Percent Visits section for a more detailed example. | JSON {String: {String: {String: Float}}} | {"day": {...}, "segment": {...}, "home": {...}} |
| history | A history of ‘activities‘, ‘visits‘, ‘dropoffs‘, and ‘passbys‘ by month, year, and week, beginning with January 2019. The month array reports the activity measured within each calendar month and is the basis for time-based analysis. The year array reports per-year figures (the current year is year-to-date). In the week array, each week reports the value of its month, so visits, activities, dropoffs, and passbys are identical for every week within a month and the month's visit_observations is divided among its weeks. Labeled using ISO 8601 with ‘yyyy-mm‘ (month), ‘yyyy‘ (year), or ‘yyyy-Www‘ (week). See the Historical Summary section for a more detailed example. | JSON {String: [{String: Integer}]} | {"month": [{...}], "year": [{...}], "week": [{...}]} |
| certified | True if the place's metrics meet Motionworks certification criteria. | Boolean | true |
| percentile | Percentile rank of the place within its peer group on the certification metric. | Number (Float) | 0.83 |
Household Demographics and Privacy
All of our demographics, even if person-level, like age or gender, are estimated by considering the demographic profiles of the household unit. If we observe visits from a neighborhood characterized by households that tend to be single parents as well as multi-generational, all of this neighborhood-typical household’s ages contribute to the characterization of the estimated visit. Specifically, let’s say a neighborhood's typical household tends to have equal distributions of people in age segments 0-17, 35-44, and 75+. If we observe visits to a bar from this neighborhood, the percentage of visits by age segment at the bar would be 33.3% for each of the three age segments.
JSON Schema
All metrics reported as percentages are rounded to the nearest tenth of a percent, where 25.1 is 25.1%.
Percent Visits
Percent of visits by a variety of dimensions, including by day of the week and hour of the day, demographic segments, and home locations. Some of these dimensions are mutually exclusive groups, and some of them overlap. These differences determine whether all possible categories within the groups are reported and what the sum of the percentages should equal. The bulleted list highlights these differences, and the JSON sample below demonstrates the format of the object.
The daily_dwell_bins measure the total time spent in a day by a panel member, regardless of the number of times coming and going. For example, when an individual spends 3.5 hours at work, leaves for lunch, and returns for another 4.5 hours, their daily dwell will be 8 hours.
{
"days": [
{
"day": "su",
"percent": 0.15505222850949532,
"visits": 835,
"hours": [0.0015, 0.0027, 0.0041, ...]
},
{
"day": "mo",
"percent": 0.465464654646,
"visits": 835,
"hours": [0.0011, 0.0121, 0.0900, ...]
},
{
"day": "fr",
"percent": 0.564651463131111646,
"visits": 835,
"hours": [0.0255, 0.0002, 0.0054, ...]
},
...
],
"daily_dwell_bins": [
{
"id": "persons_000_030min",
"description": "Less than 30 minutes",
"value": 0.5456
},
{
"id": "persons_030_060min",
"description": "30 minutes to 59 minutes",
"value": 0.2342
},
{
"id": "persons_060_120min",
"description": "1 hour to 1 hour 59 minutes",
"value": 0.1689
},
{
"id": "persons_120_240min",
"description": "2 hours to 3 hours 59 minutes",
"value": 0.0272
},
{
"id": "persons_240_plus",
"description": "4 hours or more",
"value": 0.0241
}
],
"segment": {
"basic_demographics": [
{
"category": "age_plus",
"segments": [
{
"id": "age_00plus",
"description": "All Persons",
"value": 1.000,
"index": 1.0
},
{
"id": "age_18plus",
"description": "Population, Age 18+",
"value": 0.7862,
"index": 0.9796
},
...
]
},
{
"category": "age",
"segments": [
{
"id": "age_00t17",
"description": "Population, Age 0 - 17",
"value": 0.031,
"index": 0.3
},
{
"id": "age_18t24",
"description": "Population, Age 18 - 24",
"value": 0.052,
"index": 1022.3
},
...
]
},
...
],
...
},
"home": {
"state_province": [
{
"id": "50",
"alias": "VT",
"description": "Vermont",
"value": 0.252
},
{
"id": "33",
"alias": "NH",
"description": "New Hampshire",
"value": 0.137
},
...
],
...
}
}Small Mutually-Exclusive Dimensions
The following dimensions have mutually exclusive groups and include a small enough set of groups that all of the groups are reported. In these cases, the sum of all of the values will generally equal 100, except in the case of rounding error.
daySpecial Note: Some places may return NULL values for certain hours. Measurement during these hours are being suppressed at these places for privacy purposes.daily_dwell_binssegment:basic_demographics:ageSee the Household Demographics and Privacy section for details on how this is estimated.segment:basic_demographics:hh_incomesegment:basic_demographics:raceSee the Household Demographics and Privacy section for details on how this is estimated.segment:basic_demographics:genderSee the Household Demographics and Privacy section for details on how this is estimated.segment:basic_demographics:ethnicitySee the Household Demographics and Privacy section for details on how this is estimated.segment:basic_demographics:prizmhome:state_provinceLabeled by 2-digit FIPS code (including leading zeros).home:dmaLabeled by DMA identifier.
Large, Mutually-Exclusive Dimensions
The following dimensions also have mutually exclusive groups, but there are too many groups to report percentages for all the groups. In these cases, the groups representing the top 75th percentile of all visits are reported (with a minimum of 10 groups). Also, any segment with an index value greater than 1.05 is included. Accordingly, the sum of all the values will NOT equal 100, but the sum will be at least 75.
home:metro_areaLabeled by core-based statistical area (CBSA) identifier in the United States.home:countyLabeled by 5-digit county FIPS code (including leading zeros).home:postal_codeLabeled by 5-digit postal code.home:census_neighborhoodLabeled by block group's 12-digit FIPS code (including leading zeros) in the United States and by dissemination area's 8-digit identifier in Canada.
Overlapping Dimensions
The following dimensions have overlapping groups.
segment:basic_demographics:age_plussegment:consumer:alcoholsegment:consumer:automotivesegment:consumer:commuting_and_transportationsegment:consumer:digital_video_displayssegment:consumer:environmentsegment:consumer:financialsegment:consumer:food_and_beveragessegment:consumer:healthsegment:consumer:items_in_the_homesegment:consumer:mri_apparel_and_jewelrysegment:consumer:mri_home_improvementssegment:consumer:mri_psychographicssegment:consumer:restaurantssegment:consumer:retail_shoppingsegment:consumer:sports_and_leisuresegment:consumer:telecommunicationssegment:consumer:travelsegment:consumer:voting
Historical Summary
A history of activities, visits, dropoffs, and passbys over time, beginning with January 2019. The history is reported in three arrays — month, year, and week — each labeled using ISO 8601: yyyy-mm for month, yyyy for year, and yyyy-Www for week. visit_observations reports the number of visits observed directly in the sample during the reported period.
monthreports the activity measured within each calendar month and is the basis for time-based analysis.yearreports per-year figures.activities,visits,dropoffs, andpassbysare the average of that year's monthly values (not an annual sum), whilevisit_observationsis the total observed over the year. The current year is reported year-to-date, andweek_countgives the number of weeks the year contributes.weekreports, for each week, the value of its month.visits,activities,dropoffs, andpassbysare therefore identical for every week within the same month, and the month'svisit_observationsis divided among its weeks.
In the example below (a real place), August 2025 has four weeks (2025-W32 through 2025-W35). Each week reports the August month figures (visits = 5769, activities = 6838, and so on), and the month's 202 visit_observations is divided among its four weeks (≈ 51 each). The year entry for 2025 reports the average of the monthly visits (5812) and the total observations for the year (2460).
{
"year": [
{
"id": "2026",
"imputed": false,
"activities": 6061,
"visit_observations": 918,
"visits": 5168,
"dropoffs": 893,
"passbys": 1463,
"week_count": 22
},
{
"id": "2025",
"imputed": false,
"activities": 6850,
"visit_observations": 2460,
"visits": 5812,
"dropoffs": 1038,
"passbys": 1559,
"week_count": 52
},
...
],
"month": [
{
"id": "2025-08",
"imputed": false,
"activities": 6838,
"visit_observations": 202,
"visits": 5769,
"dropoffs": 1069,
"passbys": 1476
},
{
"id": "2025-07",
"imputed": false,
"activities": 6544,
"visit_observations": 196,
"visits": 5524,
"dropoffs": 1020,
"passbys": 1481
},
...
],
"week": [
{
"id": "2025-W35",
"imputed": false,
"activities": 6838,
"visit_observations": 51,
"visits": 5769,
"dropoffs": 1069,
"passbys": 1476,
"week_start": "2025-08-25"
},
{
"id": "2025-W34",
"imputed": false,
"activities": 6838,
"visit_observations": 51,
"visits": 5769,
"dropoffs": 1069,
"passbys": 1476,
"week_start": "2025-08-18"
},
{
"id": "2025-W33",
"imputed": false,
"activities": 6838,
"visit_observations": 51,
"visits": 5769,
"dropoffs": 1069,
"passbys": 1476,
"week_start": "2025-08-11"
},
{
"id": "2025-W32",
"imputed": false,
"activities": 6838,
"visit_observations": 51,
"visits": 5769,
"dropoffs": 1069,
"passbys": 1476,
"week_start": "2025-08-04"
},
...
]
}