Methodology
How We Collect and Present Data
Every data point on CostMapper comes from a publicly available, government or institutional source. Here's exactly how it works.
Data Sources
- Fields used
- Median household income, Median home value, Population
- Update frequency
- Annual (5-year rolling average)
- Coverage
- All U.S. places with population ≥ 5,000
- Fields used
- Current typical home value, Home value trends
- Update frequency
- Monthly
- Coverage
- Most U.S. cities and ZIP codes
- Fields used
- Regional price index, Inflation baseline
- Update frequency
- Monthly
- Coverage
- U.S. national and 4 census regions
How Data Gets to the Page
Each month, we run an automated ingestion pipeline that fetches the latest releases from each source above. Census ACS data is pulled via the Census API. Zillow data is downloaded from their public CSV releases. BLS CPI data is fetched via the BLS public API.
Incoming records are matched to existing city entries by slug (a URL-safe version of city name + state abbreviation). New data is merged into each city's record — Census fields, Zillow fields, and BLS fields are stored separately and combined on the page.
City pages are statically pre-rendered at build time and revalidated daily. This means the data you see is always current within 24 hours of a new pipeline run.
Limitations
Census ACS 5-year estimates are rolling averages — they reflect conditions over a 5-year period, not a single point in time. For rapidly changing markets, Zillow's monthly ZHVI is a more current indicator of home values.
Small cities (population under 5,000) are excluded from our dataset because Census sample sizes at that scale carry high margins of error.
Cost of living is inherently personal — lifestyle, family size, and individual spending habits matter enormously. Our data provides a useful benchmark, not a guarantee.
Questions about our data? Email hello@costmapper.org.