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

NameDescriptionTypeExample
place_idUnique and persistent identifier of this place or region defined by a data collection polygon (also sometimes called point or place of interest).Integer356698
nameName of the place.StringTarget
street_addressStreet address of the place.String3600 S Louise Ave
cityCity of the place.StringSioux Falls
stateState or province of the place.StringSD
postal_codePostal delivery code of the place. In the US, this is the ZIP code.String57106
locationLatitude and longitude of the placeJSON {String: String}{"lat":43.51214, "lon":-96.7693}
marketA 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_idUnique identifier of the place type.Integer12
place_typeDescription of the place type.StringRetail
place_audit_statusAudit status of the place.StringReviewed
place_modified_dateThe last date the place's metadata, polygon, or audit status were modified, ISO 8601 with yyyy-mm-dd.Date2023-05-11
published_dateThe 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.Date2025-08-01
activitiesEstimated 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.Integer72408
visitsEstimated 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.Integer56576
dropoffsEstimated 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.Integer15832
passbysEstimated 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.Integer7007
staysEstimated 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.Integer0
visits_ci90% 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_observationsThe number of visits observed directly in the sample, summed over the 12-month window used to compute the annualized estimate (see published_date).Integer10117
imputedA 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.Booleanfalse
visits_avg_dwellAverage 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_thresholdThe 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_personAverage 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_personsThe 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.Integer47940
visits_unique_long_tripsThe 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.Integer14367
passbys_travel_modePass-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_radiusActivities, 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_visitsPercent 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": {...}}
historyA 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": [{...}]}
certifiedTrue if the place's metrics meet Motionworks certification criteria.Booleantrue
percentilePercentile 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.

  • day Special 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_bins
  • segment:basic_demographics:age See the Household Demographics and Privacy section for details on how this is estimated.
  • segment:basic_demographics:hh_income
  • segment:basic_demographics:race See the Household Demographics and Privacy section for details on how this is estimated.
  • segment:basic_demographics:gender See the Household Demographics and Privacy section for details on how this is estimated.
  • segment:basic_demographics:ethnicity See the Household Demographics and Privacy section for details on how this is estimated.
  • segment:basic_demographics:prizm
  • home:state_province Labeled by 2-digit FIPS code (including leading zeros).
  • home:dma Labeled 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_area Labeled by core-based statistical area (CBSA) identifier in the United States.
  • home:county Labeled by 5-digit county FIPS code (including leading zeros).
  • home:postal_code Labeled by 5-digit postal code.
  • home:census_neighborhood Labeled 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_plus
  • segment:consumer:alcohol
  • segment:consumer:automotive
  • segment:consumer:commuting_and_transportation
  • segment:consumer:digital_video_displays
  • segment:consumer:environment
  • segment:consumer:financial
  • segment:consumer:food_and_beverages
  • segment:consumer:health
  • segment:consumer:items_in_the_home
  • segment:consumer:mri_apparel_and_jewelry
  • segment:consumer:mri_home_improvements
  • segment:consumer:mri_psychographics
  • segment:consumer:restaurants
  • segment:consumer:retail_shopping
  • segment:consumer:sports_and_leisure
  • segment:consumer:telecommunications
  • segment:consumer:travel
  • segment: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.

  • month reports the activity measured within each calendar month and is the basis for time-based analysis.
  • year reports per-year figures. activities, visits, dropoffs, and passbys are the average of that year's monthly values (not an annual sum), while visit_observations is the total observed over the year. The current year is reported year-to-date, and week_count gives the number of weeks the year contributes.
  • week reports, for each week, the value of its month. visits, activities, dropoffs, and passbys are therefore identical for every week within the same month, and the month's visit_observations is 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"
    },
    ...
  ]
}