US metro housing-supply heat (monthly, Realtor.com)
Downloads are disabled for this dataset: its license prohibits commercial use. The documentation, schema and sample rows stay available here.
Monthly US metro housing-supply intelligence from Realtor.com Economic Research's Inventory Core Metrics (keyless public CSV, 925 CBSAs metro + micro, 2016-07 -> present: median listing price, active/new/pending listings, median days on market, price-cut share, pending ratio). Per (month, metro): 12-month changes of price, inventory, new/pending supply and days on market; trailing-12-month z-scores of inventory scarcity, sales velocity, price-cut pressure and absorption; a documented 0-100 seller-heat index (thin inventory + fast sales + rising prices + strong absorption) with heat tiers and per-month cross-sectional percentiles; seller's/buyer's market flags; inventory-surge, price-cut-wave and stale-market flags. Upstream gaps fail the ingest loud, never imputed. The supply-side complement to the ZHVI value-momentum and ZORI rent panels: hot seller's markets read as confident household balance sheets (Shopify demand, HubSpot territory heat), loosening markets as affordability stress and churn risk (Stripe) — joinable on ISO month + metro. Realtor.com data reused with required attribution; commercial_use=no.
- Rows
- 113,775
- Columns
- 38
- Source cadence
- Monthly
- Last refreshed
- Oct 1, 2026
- Theme
- housing
| Column | Type | Description |
|---|---|---|
| month | string | Reference month as month-end ISO date (e.g. 2026-09-30 for the file's 202609 vintage). Hub convention. (unit: ISO date (month-end)) |
| country_code | string | ISO alpha-3 country code (USA for every row). (unit: ISO 3166-1 alpha-3) |
| metro_key | string | Stable metro join key: slug of the Realtor.com CBSA title (e.g. 'new-york-newark-jersey-city-ny-nj'). Primary join key with month. (unit: code) |
| metro_name | string | Realtor.com CBSA title as published. (unit: name) |
| cbsa_code | string | 5-digit CBSA code as published (stable numeric id). (unit: code) |
| state_codes | string | Comma-joined 2-letter state codes parsed from the CBSA title suffix ('' when unparseable). (unit: code) |
| household_rank | integer | Realtor.com's household-count rank of the CBSA (1 = New York-Newark-Jersey City). (unit: rank) |
| median_listing_price_usd | float | Median listing price of active inventory, dollars. (unit: USD) |
| active_listing_count | float | Count of active listings. (unit: count) |
| median_days_on_market | float | Median days on market of active inventory (null where not published). (unit: days) |
| new_listing_count | float | Count of new listings entering the market that month. (unit: count) |
| pending_listing_count | float | Count of pending listings (under contract; null where not published — observed for small/micro CBSAs). (unit: count) |
| price_reduced_share | float | Share of active listings with a price reduction, percent (as reported by Realtor.com; null where not published). (unit: share) |
| median_listing_price_psf_usd | float | Median listing price per square foot, dollars (null where not published). (unit: USD/sqft) |
| total_listing_count | float | Total listing count (active + pending) as published (null where not published). (unit: count) |
| pending_ratio | float | Pending listings as a share of total listings, as published (null where not published). (unit: share) |
| price_increased_share | float | Share of active listings with a price increase, percent (as reported by Realtor.com; null where not published). (unit: share) |
| quality_flag | float | Realtor.com's own per-row data-quality flag as published (0.0/1.0; null where not computed). Rows are kept regardless; consumers may filter. (unit: flag) |
| price_yoy_pct | float | 12-month percent change of median_listing_price_usd; null for the first 12 months of each metro. (unit: percent) |
| active_yoy_pct | float | 12-month percent change of active_listing_count. (unit: percent) |
| new_yoy_pct | float | 12-month percent change of new_listing_count. (unit: percent) |
| pending_yoy_pct | float | 12-month percent change of pending_listing_count. (unit: percent) |
| dom_yoy_pct | float | 12-month percent change of median_days_on_market. (unit: percent) |
| z12_active | float | Trailing-12-month z-score of active_listing_count (window includes the current month; sample std; null when the window is short or std is zero). Negative = unusually thin supply. (unit: z-score) |
| z12_dom | float | Trailing-12-month z-score of median_days_on_market. Negative = unusually fast sales. (unit: z-score) |
| z12_price_reduced_share | float | Trailing-12-month z-score of price_reduced_share. (unit: z-score) |
| z12_pending_ratio | float | Trailing-12-month z-score of pending_ratio (absorption). (unit: z-score) |
| seller_heat_index | float | Documented 0-100 composite: 100*(0.35*minmax(clip(-z12_active,-3,3)) + 0.25*minmax(clip(-z12_dom,-3,3)) + 0.25*minmax(clip(price_yoy_pct,-15,15)) + 0.15*minmax(clip(z12_pending_ratio,-3,3))). High = thin inventory AND fast sales AND rising prices AND strong absorption (a seller's market). Null when any input is null. (unit: 0-100) |
| heat_tier | string | Bucket of seller_heat_index: very_high >= 80, high >= 65, moderate >= 45, low >= 30, very_low < 30. (unit: categorical) |
| heat_percentile | float | Per-month cross-sectional percentile of seller_heat_index across scored metros: 1-(rank-1)/n with dense rank descending (1.0 = hottest market that month). Null when the month has < 10 scored metros. (unit: 0-1) |
| sellers_market_flag | integer | 1 when seller_heat_index >= 70. (unit: 0/1) |
| buyers_market_flag | integer | 1 when seller_heat_index <= 30. (unit: 0/1) |
| inventory_surge_flag | integer | 1 when active_listing_count equals its trailing-12-month maximum (a supply wave); null until 12 observations exist. (unit: 0/1) |
| price_cut_wave_flag | integer | 1 when price_reduced_share is at or above its trailing-12-month 75th percentile (sellers capitulating); null until 12 observations exist. (unit: 0/1) |
| stale_market_flag | integer | 1 when median_days_on_market is at or above its trailing-12-month 90th percentile (demand stalling); null until 12 observations exist. (unit: 0/1) |
| as_of | string | Latest month in the fetched panel (YYYY-MM-DD, month-end), identical across rows and across runs on the same vintage (ingest idempotency anchor). (unit: ISO date) |
| source_file | string | Upstream filename the row was parsed from. (unit: filename) |
| row_hash | string | Deterministic 16-hex row id: sha256('REALTORINV|<metro_key>|<month>'). (unit: hash) |
First 10 sample rows — a preview, not the complete dataset.
| month | country_code | metro_key | metro_name | cbsa_code | state_codes | household_rank | median_listing_price_usd | active_listing_count | median_days_on_market | new_listing_count | pending_listing_count | price_reduced_share | median_listing_price_psf_usd | total_listing_count | pending_ratio | price_increased_share | quality_flag | price_yoy_pct | active_yoy_pct | new_yoy_pct | pending_yoy_pct | dom_yoy_pct | z12_active | z12_dom | z12_price_reduced_share | z12_pending_ratio | seller_heat_index | heat_tier | heat_percentile | sellers_market_flag | buyers_market_flag | inventory_surge_flag | price_cut_wave_flag | stale_market_flag | as_of | source_file | row_hash |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2016-07-31 | USA | aberdeen-sd | Aberdeen, SD | 10100 | SD | 680 | 190,650 | 173 | 59 | 48 | — | 0.214 | 79 | 173 | — | 0 | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 2026-09-30 | RDC_Inventory_Core_Metrics_Metro_History.csv | b778d04edc92e9f9 |
| 2016-08-31 | USA | aberdeen-sd | Aberdeen, SD | 10100 | SD | 680 | 194,425 | 164 | 65 | 44 | — | 0.193 | 80 | 164 | — | 0 | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 2026-09-30 | RDC_Inventory_Core_Metrics_Metro_History.csv | 91082fa63e9435e6 |
| 2016-09-30 | USA | aberdeen-sd | Aberdeen, SD | 10100 | SD | 680 | 192,925 | 154 | 79 | 48 | — | 0.176 | 79 | 154 | — | 0 | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 2026-09-30 | RDC_Inventory_Core_Metrics_Metro_History.csv | 38fd3ccf2aca8cd0 |
| 2016-10-31 | USA | aberdeen-sd | Aberdeen, SD | 10100 | SD | 680 | 189,900 | 147 | 85 | 36 | — | 0.218 | 80 | 147 | — | 0.021 | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 2026-09-30 | RDC_Inventory_Core_Metrics_Metro_History.csv | 3eff0b464dceb515 |
| 2016-11-30 | USA | aberdeen-sd | Aberdeen, SD | 10100 | SD | 680 | 189,900 | 139 | 91 | 34 | — | 0.081 | 82 | 139 | — | 0 | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 2026-09-30 | RDC_Inventory_Core_Metrics_Metro_History.csv | 1b700f98a5b65ebf |
| 2016-12-31 | USA | aberdeen-sd | Aberdeen, SD | 10100 | SD | 680 | 189,900 | 138 | 97 | 36 | — | 0.052 | 82 | 138 | — | 0 | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 2026-09-30 | RDC_Inventory_Core_Metrics_Metro_History.csv | 505d168ae10b1545 |
| 2017-01-31 | USA | aberdeen-sd | Aberdeen, SD | 10100 | SD | 680 | 192,400 | 134 | 98 | 16 | — | 0.143 | 85 | 134 | — | 0 | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 2026-09-30 | RDC_Inventory_Core_Metrics_Metro_History.csv | 666e3ac80171d86a |
| 2017-02-28 | USA | aberdeen-sd | Aberdeen, SD | 10100 | SD | 680 | 189,700 | 128 | 106 | 34 | — | 0.086 | 83 | 128 | — | 0 | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 2026-09-30 | RDC_Inventory_Core_Metrics_Metro_History.csv | 95cb6ed7b77fe333 |
| 2017-03-31 | USA | aberdeen-sd | Aberdeen, SD | 10100 | SD | 680 | 186,400 | 125 | 108 | 28 | — | 0.092 | 82 | 125 | — | 0 | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 2026-09-30 | RDC_Inventory_Core_Metrics_Metro_History.csv | 2b9e59e67d90b5fc |
| 2017-04-30 | USA | aberdeen-sd | Aberdeen, SD | 10100 | SD | 680 | 184,900 | 129 | 84 | 64 | — | 0.162 | 82 | 129 | — | 0 | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 2026-09-30 | RDC_Inventory_Core_Metrics_Metro_History.csv | e78053d3d892401d |
Profiled Oct 1, 2026 from snapshot 20261001T045509Z-265b80586bbc
Measured- Completeness
- 94.7%
- Rows
- 113,775
- Columns
- 38
- Columns with gaps
- 22
| Column | Missing | Distinct | Range | Distribution |
|---|---|---|---|---|
| monthvarchar | 0% | 116 | — |
|
| country_codevarchar | 0% | 1 | — |
|
| metro_keyvarchar | 0% | 776 | — |
|
| metro_namevarchar | 0% | 987 | — |
|
| cbsa_codevarchar | 0% | 914 | — |
|
| state_codesvarchar | 0% | 109 | — |
|
| household_rankbigint | 0% | 1,097 | 1 → 925median 463 | 2,214 outside 1st–99th percentile |
| median_listing_price_usddouble | 0% | 24,270 | 19,900 → 5,972,500median 253,225 | 2,270 outside 1st–99th percentile |
| active_listing_countdouble | 0% | 7,522 | 0 → 69,708median 226 | 2,261 outside 1st–99th percentile |
| median_days_on_marketdouble | 0.01% | 225 | 3 → 322median 62 | 2,026 outside 1st–99th percentile |
| new_listing_countdouble | 0% | 3,784 | 0 → 27,262median 86 | 2,166 outside 1st–99th percentile |
| pending_listing_countdouble | 2.4% | 6,187 | 0 → 28,578median 79 | 1,550 outside 1st–99th percentile |
| price_reduced_sharedouble | 0% | 3,175 | 0 → 0.6667median 0.128 | 2,271 outside 1st–99th percentile |
| median_listing_price_psf_usddouble | 0% | 1,084 | 22 → 1,912median 134 | 2,199 outside 1st–99th percentile |
| total_listing_countdouble | 0% | 9,597 | 1 → 83,124median 321 | 2,246 outside 1st–99th percentile |
| pending_ratiodouble | 2.4% | 38,433 | 0 → 2median 0.2962 | 2,220 outside 1st–99th percentile |
| price_increased_sharedouble | 0% | 1,195 | 0 → 0.3815median 0.0013 | 1,137 outside 1st–99th percentile |
| quality_flagdouble | 9.8% | 2 | 0 → 1median 0 | |
| price_yoy_pctdouble | 9.8% | 107,740 | -74.18 → 483.08median 5.15 | 2,054 outside 1st–99th percentile |
| active_yoy_pctdouble | 9.8% | 51,007 | -100 → 9,200median -1.53 | 2,053 outside 1st–99th percentile |
| new_yoy_pctdouble | 9.9% | 17,438 | -100 → 3,700median 0 | 2,084 outside 1st–99th percentile |
| pending_yoy_pctdouble | 13% | 33,524 | -100 → 476,000median 0.7634 | 1,929 outside 1st–99th percentile |
| dom_yoy_pctdouble | 9.8% | 5,308 | -87.96 → 747.37median -1.06 | 2,055 outside 1st–99th percentile |
| z12_activedouble | 8.9% | 132,980 | -3.12 → 3.17median -0.1028 | 2,072 outside 1st–99th percentile |
| z12_domdouble | 9% | 121,654 | -3.02 → 2.95median -0.2054 | 2,072 outside 1st–99th percentile |
| z12_price_reduced_sharedouble | 9% | 82,750 | -2.98 → 3.18median -0 | 2,072 outside 1st–99th percentile |
| z12_pending_ratiodouble | 13.2% | 102,710 | -3.15 → 3.18median 0.0699 | 1,978 outside 1st–99th percentile |
| seller_heat_indexdouble | 13.8% | 813 | 9 → 91.7median 54.4 | 1,933 outside 1st–99th percentile |
| heat_tiervarchar | 13.8% | 4 | — |
|
| heat_percentiledouble | 13.8% | 15,903 | 0.5624 → 1median 0.8165 | 1,978 outside 1st–99th percentile |
| sellers_market_flagbigint | 13.8% | 2 | 0 → 1median 0 | |
| buyers_market_flagbigint | 13.8% | 2 | 0 → 1median 0 | |
| inventory_surge_flagbigint | 8.9% | 2 | 0 → 1median 0 | |
| price_cut_wave_flagbigint | 8.9% | 2 | 0 → 1median 0 | |
| stale_market_flagbigint | 9% | 2 | 0 → 1median 0 | |
| as_ofvarchar | 0% | 1 | — |
|
| source_filevarchar | 0% | 1 | — |
|
| row_hashvarchar | 0% | 113,229 | — |
|
- Current
20261001T045509Z-265b80586bbc · sha256 265b80586bbc…
113,775 rows · first snapshot
Point any LLM at the metadata endpoint — the documentation above is machine-readable too (JSON-LD + Croissant).
curl "https://datazimuts.com/v1/datasets/realtor_metro_inventory_intel/us_metro_housing_supply_monthly" | jq '{title, rows, columns_count, license}'import requests
ds = requests.get("https://datazimuts.com/v1/datasets/realtor_metro_inventory_intel/us_metro_housing_supply_monthly").json()
print(ds["title"], ds["rows"], "rows")
# Sample rows for an LLM context window
for row in ds.get("sample_rows", [])[:5]:
print(row)API endpoint: https://datazimuts.com/v1/datasets/realtor_metro_inventory_intel/us_metro_housing_supply_monthly
Tip: fetch /llms.txt for the full machine-readable catalog.
Where this data comes from and what was made from it. Other people's work shows as counts; only shared projects are named.
Cite this snapshot
Pinned to snapshot 20261001T045509Z-265b80586bbc and its content hash, so readers get exactly the data you used.
Realtor.com Economic Research. (2026). US metro housing-supply heat (monthly, Realtor.com) [Data set, snapshot 20261001T045509Z-265b80586bbc, sha256 265b80586bbc]. Datazimuts. Retrieved 2026-10-01, from https://datazimuts.com/en/datasets/realtor_metro_inventory_intel/us_metro_housing_supply_monthly?snapshot=20261001T045509Z-265b80586bbc
@misc{dz_realtor_metro_inventory_intel_us_metro_h_265b8058,
title = {{US metro housing-supply heat (monthly, Realtor.com)}},
author = {{Realtor.com Economic Research}},
year = {2026},
publisher = {Datazimuts},
howpublished = {\url{https://datazimuts.com/en/datasets/realtor_metro_inventory_intel/us_metro_housing_supply_monthly?snapshot=20261001T045509Z-265b80586bbc}},
note = {Snapshot 20261001T045509Z-265b80586bbc, sha256 265b80586bbcbe6c59165d121635ee1319781f5e9db30b36c669d76dd1b5eaa8; accessed 2026-10-01}
}Embed a table or a chart
Paste this into any page. The embed is pinned to the same snapshot, follows the reader's light or dark setting, and always shows the source, license and a link back.
<iframe src="https://datazimuts.com/embed/chart?dataset=realtor_metro_inventory_intel%2Fus_metro_housing_supply_monthly&lang=en&theme=auto&snapshot=20261001T045509Z-265b80586bbc&x=month&y=household_rank&agg=avg" title="US metro housing-supply heat (monthly, Realtor.com)" width="100%" height="380" style="border:0" loading="lazy"></iframe>
Ask about this dataset. Answers come only from its catalog record, measured profile and change history, and list the facts they used.