Links

Consumer Spending

Weekly US consumer spending estimates for thousands of companies

Overview

A representative panel of US consumer spending by zip codes within major metro areas, top CBSAs, and states. This product includes consumer spending estimates for thousands of companies and is based on anonymous transactions from millions of credit and debit cards across financial institutions.
Measures include:
  • Sales ($), transactions (#), and average order values ($)
  • Historical customer retention rates (%)
  • Year-over-year (%) sales, transactions, average order values
Our Consumer Spending product is tiered so customers pay only for the geography levels they need. On Snowflake Marketplace, you will see two Consumer Spending listings. All geography levels, including zip codes, top CBSAs, and states are available in the core Consumer Spending listing. A subset of geography levels, including top CBSAs and states (no zip codes) are available in the Consumer Spending - State/CBSA Levels listing.

Key Attributes

Geographic Coverage
US
Entity Level
Company, MCC, NAICS industry, MARTS level
Time Granularity
Weekly, Monthly, Quarterly, 4-5-4 Retail Calendar Months
Update Frequency
Weekly on Monday, with data through the previous Thursday
Lag
4 days
History
Since January 1, 2019

Description

The data is available at the company, NAICS (North American Industry Classification System), MARTS (Advanced Monthly Retail Trade Survey) and MCC (Merchant Category Code) levels. Additionally, the data is cut by demographics including both age ranges and income brackets. Data can also be broken down by channel (offline vs. online spend) and geographies — grouped by consumer billing address and merchant location. Geographies covered include US zip codes within major metro areas, the top 100 core-based statistical areas (CBSAs) as measured by population, and states. Data is aggregated to weekly, monthly and quarterly periods as well as 4-5-4 retail calendar periods. All Cybersyn products follow the EAV (entity, attributes, value) model with a unified schema. Entities are tangible objects (e.g. geography, company). Entities may have characteristics (i.e. descriptors of the entity) in an index table and values (i.e. statistics, measure) in a timeseries table. Refer to Cybersyn Concepts for more details.
This content is for informational purposes only and should not be construed as investment or financial advice or an offer for the purchase of any securities. Cybersyn is not a financial advisor. None of the information we share constitutes an opinion, endorsement or recommendation about any securities or investments. Content we share is based on our own research and analysis, and we make no representations or guarantees as to the accuracy or completeness of the information. Any projections we make about current or future revenue or company performance are provided for informational purposes only and do not constitute investment advice. Any decisions made based on content we provide are the sole responsibility of the individual making those decisions. You should consult a licensed financial advisor before making any investment decisions.

Data Dictionary

Entity Relationship Diagram

The following ERD is for the core Consumer Spending product. Use the "Zoom In" feature to view.

Notes & Methodology

Sales/revenue and transaction value calculations

Because our estimates are based on a panel of consumer spending, the values for ‘Sales’ and ‘Transaction’ measures are not meant to be complete projections of the entirety of US spending; however, the relative sizing of these values should be accurate.
For example, the sales/revenue value for Chipotle will not necessarily match with company-reported numbers in public financial statements, but the measure of spend should be correct relative to peer and industry measure (e.g. Chipotle’s market share relative to McDonald’s; Chipotle’s share of spend as a percent of overall food service industry).

Year-over-year definitions

Sales/Revenue YoY: The year-over-year change in total dollar value of sales in USD in a given period.
Transactions YoY: The year-over-year change in the number of sales transactions for a given period. Each purchase an individual makes counts as 1 transaction.
AOV YoY: The year-over-year change in average order value in USD. This is also known as the average cart size for an online order. Note that this differs from a pure “average price” measure because the quantity of items purchased is not factored in. Calculated as 'Sales / Transactions'

Categorization

Merchant category codes (MCCs) are assigned to merchants by card processors based on the types of products that the company sells. Cybersyn maps these MCCs to North American Industry Classification System (NAICS) codes to create industry-level aggregations that are directly comparable to the US Census Bureau’s Advance Monthly Retail Sales Survey (MARTS) estimates.

Spend by company

Company-level estimates are for the lowest level of company or subsidiary available. For example, transactions at Whole Foods are mapped to Whole Foods Market Inc rather than Amazon Inc. In cases where a company subsidiary does not exist for a particular merchant, the transactions are mapped to the overarching top-level holding company.

User selection and inclusion

A cohort approach is taken to ensure data quality and to limit the panel of consumer cards to only card users that have a sufficient level of historical data. To be included in the panel, a card must have been active for at least 24 months. "Active" is defined as having at least $1 of sales in a given month. This allows Cybersyn to create like-for-like sales growth estimates that are independent of fluctuations in the size of the underlying consumer panel.

4-5-4 retail calendar

The 4-5-4 retail calendar is a standardized accounting and reporting calendar system used by many retailers, where each fiscal year is divided into 13 weeks, aiming to align with shifts in weekends and holidays to facilitate more accurate financial comparisons.
A 4-5-4 retail year is typically 52 weeks, but every 5-6 years, there is a 53-week year. The 53-week years since 2010 have been 2012, 2017, and 2023.

Purchase geographies

Consumer Spending - Including Zip Codes: Geographies are grouped both by consumer billing address and merchant location. In the core Consumer Spending product, consumer billing addresses are down to the zip code level. Today, merchant locations are down to the CBSA and state levels. Merchant location zip codes will be added in the near future.
Consumer Spending - State/CBSA Levels Only: Geographies are grouped both by consumer billing address (i.e. where the spender lives: PURCHASER_PRIMARY_GEO_ID) and merchant location (i.e. where the physical store is located: PURCHASE_LOCATION_GEO_ID).
Estimates for merchant location only include offline (i.e. in-store) transactions. Store location details are only available for a portion of brick and mortar retailers. Stores are grouped into the most granular geography level that we are able to parse. For example, some offline transactions do not have a parsable state, so these transactions will be included in the overall US “Offline” channel estimate but will not be included in an estimate for a particular state or CBSA PURCHASE_LOCATION_GEO_ID.
Crosses of COMPANY_ID x PURCHASER_PRIMARY_GEO_ID / PURCHASE_LOCATION_GEO_ID x VARIABLE that do not meet a minimum number of average monthly transactions are excluded from our estimates. For example, spend for Retailer ABC by residents of New York City for the 18-24 demographic might be available while the same estimate may not be available for Akron, OH due to a smaller sample size. This is especially common for companies that operate regionally.
Due to estimate size constraints, the cross of PURCHASER_PRIMARY_GEO_ID x PURCHASE_LOCATION_GEO_ID x VARIABLE is not currently made available.

Example Use Cases & Queries

The sample queries below are applicable to the core Consumer Spending listing that includes zip codes. Visit Snowflake Marketplace for sample queries specific to the Consumer Spending - State/CBSA Level listing.
Find the top zip codes in a city where consumers spend the most at a given merchant
Determine which zip codes in the Denver area had the highest amount of consumer spending at DoorDash in 2023
SELECT
consumer_geo_name AS zip_code,
SUM(value) AS sales
FROM cybersyn.consumer_spending_merchant_timeseries AS ts
INNER JOIN cybersyn.geography_relationships AS geo
ON
ts.consumer_geo_id = geo.geo_id
AND geo.related_level = 'City'
AND geo.related_geo_name = 'Denver'
WHERE
ts.member_age = 'All Age Brackets'
AND ts.member_income = 'All Income Brackets'
AND ts.channel = 'All Channels'
AND ts.consumer_geo_level = 'CensusZipCodeTabulationArea'
AND ts.merchant_geo_level = 'Country'
AND ts.merchant_geo_name = 'United States'
AND ts.measure = 'Sales'
AND ts.frequency = 'Month'
AND ts.company_name = 'DOORDASH, INC.’
AND ts.date >= '2023-01-01'
AND ts.date <= '2023-12-31'
GROUP BY zip_code
ORDER BY sales DESC
LIMIT 20
Determine which zip codes in Manhattan had the highest amount of consumer spending at Lululemon in 2023
SELECT
consumer_geo_name AS zip_code,
SUM(value) AS sales
FROM cybersyn.consumer_spending_merchant_timeseries AS ts
INNER JOIN cybersyn.geography_relationships AS geo
ON
ts.consumer_geo_id = geo.geo_id
AND geo.related_level = 'County'
AND geo.related_geo_name = 'Manhattan'
WHERE
ts.member_age = 'All Age Brackets'
AND ts.member_income = 'All Income Brackets'
AND ts.channel = 'All Channels'
AND ts.consumer_geo_level = 'CensusZipCodeTabulationArea'
AND ts.merchant_geo_level = 'Country'
AND ts.merchant_geo_name = 'United States'
AND ts.measure = 'Sales'
AND ts.frequency = 'Month'
AND ts.company_name = 'LULULEMON ATHLETICA INC.’
AND ts.date >= '2023-01-01'
AND ts.date <= '2023-12-31'
GROUP BY zip_code
ORDER BY sales DESC
LIMIT 20
Analyze customer retention in a given demographic
Find the 2 year spend retention for Uber Eats and DoorDash customers between 25-34.
SELECT company_name, member_age, member_income, consumer_geo_name,
periods_since_first_purchase, value
FROM cybersyn.consumer_spending_merchant_retention_timeseries
WHERE company_name IN ('UBER EATS', 'DOORDASH, INC.')
AND measure = 'User Retention'
AND member_age ILIKE '25-34'
AND member_income = 'All Income Brackets'
AND consumer_geo_name = 'United States'
AND periods_since_first_purchase <= 24;
Track consumer spend by industry or sector and channel across CBSAs in a given state
Measure the monthly offline (i.e. brick and mortar) consumer spend for all of the Retail Sales segment by purchases in different CBSAs in California.
SELECT ts.aggregation_name AS series_name,
states.related_geo_name AS state,
ts.merchant_geo_name AS cbsa,
ts.channel,
ts.measure,
ts.unit,
ts.frequency,
ts.date,
ts.value
FROM cybersyn.consumer_spending_industry_timeseries AS ts
JOIN cybersyn.geography_relationships AS states
ON (ts.merchant_geo_id = states.geo_id)
WHERE ts.aggregation_type = 'MARTS Segment'
AND ts.aggregation_name = 'Retail Sales: Retail Trade and Food Services'
AND ts.measure = 'Sales_YoY'
AND ts.frequency = 'Month'
AND ts.channel = 'Offline'
AND ts.member_income = 'All Income Brackets'
AND ts.member_age = 'All Age Brackets'
AND ts.consumer_geo_name = 'United States'
AND ts.merchant_geo_level = 'CensusCoreBasedStatisticalArea'
AND states.related_level = 'State'
AND states.related_geo_name = 'California'
ORDER BY ts.merchant_geo_name, ts.date
Study demographic factors impacting consumer activity in different geographies
Determine how age impacted dining spend for different consumer groups from the states of New York and Florida.
SELECT ts.consumer_geo_name,
ts.member_age,
ts.aggregation_name,
ts.measure,
ts.frequency,
ts.date,
ts.value
FROM cybersyn.consumer_spending_industry_timeseries AS ts
JOIN cybersyn.geography_relationships AS states
ON (ts.consumer_geo_id = states.geo_id)
WHERE ts.aggregation_type = 'MARTS Segment'
AND ts.aggregation_name = 'Retail Sales: Food Services and Drinking Places'
AND ts.measure = 'Sales_YoY'
AND ts.frequency = 'Month'
AND ts.member_income = 'All Income Brackets'
AND ts.member_age IN ('18-24',
'25-34',
'35-44',
'45-54',
'55-64',
'65+')
AND ts.date >= '2020-01-01'
AND ts.merchant_geo_id = 'country/USA'
AND ts.consumer_geo_level = 'State'
AND ts.consumer_geo_name IN ('New York', 'Florida')
AND ts.channel = 'All Channels'
AND states.related_level = 'Country'
AND states.related_geo_name = 'United States';
Analyze market share changes between two companies
Compare market share of Chipotle vs. McDonald’s for the 18-24 age demographic.
WITH spend_data AS (
SELECT company_name, date, value
FROM cybersyn.consumer_spending_merchant_timeseries
WHERE member_age = '18-24'
AND member_income = 'All Income Brackets'
AND frequency = 'Month'
AND measure = 'Sales'
AND channel = 'All Channels'
AND consumer_geo_level = 'Country'
AND consumer_geo_name = 'United States'
AND merchant_geo_level = 'Country'
AND merchant_geo_name = 'United States'
), mcd AS (
SELECT date, value AS mcdonalds_sales
FROM spend_data
WHERE company_name = 'MCDONALDS CORP'
), cmg AS (
SELECT date, value AS chipotle_sales
FROM spend_data
WHERE company_name = 'CHIPOTLE MEXICAN GRILL INC'
)
SELECT mcd.date,
mcdonalds_sales,
chipotle_sales,
mcdonalds_sales / (mcdonalds_sales + chipotle_sales) AS mcdonalds_market_share,
chipotle_sales / (mcdonalds_sales + chipotle_sales) AS chipotle_market_share
FROM mcd
JOIN cmg ON (mcd.date = cmg.date)
ORDER BY date
Compare average transaction sizes across companies
Compare and contrast how Kroger and Aldi’s average order values (AOV) evolved before and after the height of the Covid-19 pandemic.
SELECT company_name, date, value
FROM cybersyn.consumer_spending_merchant_timeseries
WHERE member_age = 'All Age Brackets'
AND member_income = 'All Income Brackets'
AND channel = 'All Channels'
AND consumer_geo_level = 'Country'
AND consumer_geo_name = 'United States'
AND merchant_geo_level = 'Country'
AND merchant_geo_name = 'United States'
AND frequency = 'Month'
AND measure = 'AOV'
), aldi AS (
SELECT date, value AS aldi_aov
FROM spend_data
WHERE company_name = 'ALDI INC'
), kroger AS (
SELECT date, value AS kroger_aov
FROM spend_data
WHERE company_name = 'KROGER CO'
)
SELECT aldi.date,
aldi_aov,
kroger_aov
FROM aldi
JOIN kroger ON (aldi.date = kroger.date)
WHERE aldi.date >= '2019-01-01'
ORDER BY date
Track consumer spend by industry or sector
Measure the overall consumer spend for all of the Retail Sales segment.
SELECT aggregation_name AS series_name,
date,
value,
measure,
frequency
FROM cybersyn.consumer_spending_industry_timeseries AS ts
WHERE aggregation_type = 'MARTS Segment'
AND aggregation_name = 'Retail Sales: Retail Trade and Food Services'
AND measure = 'Sales_YoY'
AND frequency = 'Month'
AND member_income = 'All Income Brackets'
AND member_age = 'All Age Brackets'
AND consumer_geo_id = 'country/USA'
AND merchant_geo_id = 'country/USA'
ORDER BY ts.date
Identify pricing trends across industries
Determine which types of stores are seeing the largest year-over-year increases in average order value (AOV) this quarter.
SELECT
aggregation_name,
date,
value,
measure,
frequency
FROM cybersyn.consumer_spending_industry_timeseries
WHERE aggregation_type = 'MCC'
AND aggregation_name IN (
'Fast Food Restaurants',
'Eating Places And Restaurants',
'Men’s And Women’s Clothing Stores',
'Grocery Stores, Supermarkets',
'Drug Stores And Pharmacies',
'Sporting Goods Stores',
'Department Stores',
'Hardware Stores',
'Furniture, Home Furnishings, And Equipment Stores, Exceptappliances'
)
AND measure = 'AOV_YoY'
AND frequency = 'Quarter'
AND member_income = 'All Income Brackets'
AND member_age = 'All Age Brackets'
AND consumer_geo_id = 'country/USA'
AND merchant_geo_id = 'country/USA'
QUALIFY ROW_NUMBER() OVER (PARTITION BY aggregation_name ORDER BY date DESC) = 1
ORDER BY value DESC;
Study demographic factors impacting consumer activity
Determine how age impacted dining spend for different consumer groups.
SELECT
member_age,
aggregation_name,
measure,
frequency,
date,
value
FROM cybersyn.consumer_spending_industry_timeseries
WHERE aggregation_type = 'MARTS Segment'
AND aggregation_name = 'Retail Sales: Food Services and Drinking Places'
AND measure = 'Sales_YoY'
AND frequency = 'Month'
AND member_income = 'All Income Brackets'
AND member_age IN ('18-24',
'25-34',
'35-44',
'45-54',
'55-64',
'65+')
AND date >= '2020-01-01'
AND consumer_geo_id = 'country/USA'
AND merchant_geo_id = 'country/USA'
Benchmark company performance against industries and competitors
Compare Chipotle’s sales performance to that of McDonald’s and of the broader fast food category
SELECT
company_name,
NULL::VARCHAR AS aggregation_name,
measure,
frequency,
member_age,
member_income,
channel,
consumer_geo_level,
consumer_geo_id,
consumer_geo_name,
merchant_geo_level,
merchant_geo_id,
merchant_geo_name,
date,
value,
unit
FROM cybersyn.consumer_spending_merchant_timeseries
WHERE company_name IN ('CHIPOTLE MEXICAN GRILL INC', 'MCDONALDS CORP')
UNION
SELECT
NULL::VARCHAR AS company_name,
aggregation_name,
measure,
frequency,
member_age,
member_income,
channel,
consumer_geo_level,
consumer_geo_id,
consumer_geo_name,
merchant_geo_level,
merchant_geo_id,
merchant_geo_name,
date,
value,
unit
FROM cybersyn.consumer_spending_industry_timeseries
WHERE aggregation_type = 'MCC' AND aggregation_name = 'Fast Food Restaurants'

Releases & Changelog

11/22/23 - Added spend by geography for states and top 100 CBSAs. Added online/offline spend breakdown
Expanded the granularity of values in the CONSUMER_SPENDING_TIMESERIES table to include breakdown by geography. Geographies are grouped both by purchaser primary location (i.e. where the spender lives) and purchase location (i.e. where the physical store is located). The data covers US states and the top 100 core-based statistical areas (“CBSAs”) as measured by population.
  • Purchaser geographies are represented in the PURCHASER_PRIMARY_GEO_ID and PURCHASER_PRIMARY_GEO_NAME fields
  • Purchase location geographies are represented in PURCHASE_LOCATION_GEO_ID and PURCHASE_LOCATION_GEO_NAME fields
  • PURCHASER_PRIMARY_GEO_ID and PURCHASER_PRIMARY_GEO_ID can be used to join the data with Cybersyn’s geography tables such as the GEOGRAPHY_INDEX based on the GEO_ID field
Added purchase channels covering online and offline spend.
  • Purchase channels are reflected in the CHANNEL field in the CONSUMER_SPENDING_ATTRIBUTES table and included in the VARIABLE_NAME values in the CONSUMER_SPENDING_TIMESERIES table
Note that data for “purchase location” geographies only includes offline spend.
11/20/23 - Added aggregations by NAICS codes and by 4-5-4 retail months
Expanded the CONSUMER_SPENDING_TIMESERIES and the CONSUMER_SPENDING_ATTRIBUTES tables to include aggregations by NAICS (North American Industry Classification System) and 4-5-4 retail calendar months.
Deprecated MCC_CODE, MCC_CODE_DESCRIPTION and MART_VARIABLE fields in the the CONSUMER_SPENDING_ATTRIBUTES table and replaced them with AGGREGATION_TYPE and AGGREGATION_VALUE.The newly added fields can be used to filter to a desired level of aggregation including to the NAICS, MARTS Segment, and MCC levels.
Additionally, the following fields were added in anticipation of upcoming dataset expansions. Note that these fields only contain total values for now. Future iterations of the product will include more granular cuts of data.
  • Added COMPANY_NAME, PURCHASER_PRIMARY_GEO_ID, PURCHASER_PRIMARY_GEO_NAME, PURCHASE_LOCATION_GEO_ID, and PURCHASE_LOCATION_GEO_NAME to CONSUMER_SPENDING_TIMESERIES
  • Added CHANNEL to CONSUMER_SPENDING_ATTRIBUTES
11/6/23 - Added nominal value projections (dollar-level figures)
Expanded values in the CONSUMER_SPENDING_TIMESERIES table to include nominal estimates. New measures include estimates for revenue ($), transactions (#), and average order value ($). These newly added variables build on the existing year-over-year (%) estimates for those measures already in the table.
Nominal values can be used to measure market share or compare average transaction amounts across retailers. Because these estimates are based on a panel of consumer spending, they are not meant to be projections of the entirety of US spending but they are accurate as a measure of relative spend. For example, the sum of all Chipotle spend will not equal the company's actual spend but Chipotle's market share relative to McDonald's should be correct.
The newly-added variables in the timeseries table include matching variables in the CONSUMER_SPENDING_ATTRIBUTES table with the new variables being MEASURE values of Revenue, Transactions, and AOV.
11/3/23 - Added CALENDAR_INDEX table
Added the calendar_index table which compiles common calendars into a single table. Each calendar type has a unique CALENDAR_ID, which allows users to select which calendar type they want to use. Individual periods within each calendar type include period start and end dates.
The calendar_index currently includes regular calendar periods (days, weeks, months, quarters, and years) and 4-5-4 retail calendar periods (4-5-4 retail months, quarters, and years).
The 4-5-4 retail calendar is a standardized accounting and reporting calendar system used by many retailers, where each fiscal year is divided into 13 weeks, aiming to align with seasonal variations and facilitate more accurate financial comparisons.
10/11/23 - Added company-level estimates; Added COMPANY_INDEX table
Added year-over-year estimates for company-level spend, transaction, and AOV to the CONSUMER_SPENDING_TIMESERIES. Company-level information is identified with the company_id field.
The company_id is a unique identifier assigned by Cybersyn to each company and is joinable to the COMPANY_INDEX, which provides company names and other helpful identifiers such as CIK, LEI, PermID, and more. Note that when the company_id is null, then the row represents data for all companies.

Errata & Future Improvements

We note known issues and planned future improvements. If you would like to submit a bug report or feature request, email us at [email protected]
  • Expand to add more geography levels and combinations of consumer billing address and merchant location.
  • Add points of interest

Terms

Customers are subject to the Cybersyn terms of service.
Last modified 7h ago