Property Price and Sales (US)
Overview
A decade of residential property in ten American metros at transaction grain. The metros are real; everything below them is generated: 321 districts in each metro's own naming idiom, 60 builders, 1,536 projects, and every price, rent, rate and volume. The decade is the American one, stated generically: steady years to 2019, the 2020 spring that collapses transaction volume while the urban exodus begins, a cheap-money boom through 2021 into 2022 with the sunbelt hottest, then a mortgage-rate lockdown into 2024 that collapses volume while prices plateau, and a thaw into 2026. An invented national mortgage-rate series ships as its own table and is the stated volume mechanism: high-rate months carry materially less volume, the cash share of financing rises with the rate, and the build asserts both. The exodus is measurable: suburban and fringe districts outgrow the core from 2020 and keep part of the gain, and the suburban share of volume rises in 2021 in every metro. Transactions carry project, district, property type, bedrooms, area with its unit, price in dollars, price per square foot, buyer profile, financing and sale type. The metro price index is the exact median price per square foot of that month's transactions, the annual summary is the exact transaction aggregate, and the build re-verifies both; district indices and rents with gross yields sit on the same geography. Built for price-index analytics, market-cycle modelling, affordability studies, ETL pipelines and BI logic. The licence and disclosure sections state the provenance of the data.
Row Counts by Table
Counted from the files that ship, not estimated.
| Table | Rows |
|---|---|
| pru_metros | 10 |
| pru_districts | 321 |
| pru_developers | 60 |
| pru_projects | 1,536 |
| pru_transactions | 415,989 |
| pru_price_index | 1,260 |
| pru_district_index | 40,446 |
| pru_rents | 121,146 |
| pru_supply_pipeline | 330 |
| pru_mortgage_rates | 126 |
| pru_metro_annual | 110 |
Table Relationships
One parent record and seven child tables, each joined back on the same key.
Schema
Every table ships with typed columns, referential integrity, and documentation.
| Column | Type | Description |
|---|---|---|
| metro_code | varchar(8) | Metro key. Primary key. The ten metros are the only real geography in the dataset. |
| metro_name | varchar(16) | The metro in words. |
| state_code | varchar(8) | Two-letter state of the metro core. |
| market_tier | varchar(24) | coastal_prime, sunbelt_growth, heartland_value or mountain_west, the axis price levels and yields follow. |
| customary_area_unit | varchar(16) | SQFT everywhere: the unit the American trade press quotes. The documented unit-mixing defect states a small share of areas in SQM. |
| metro_description | varchar(144) | What is generated below this metro. |
| Column | Type | Description |
|---|---|---|
| district_id | varchar(16) | District key. Primary key. Every district is a generated name in the metro idiom; one is renamed mid-series into a second id. |
| metro_code | varchar(8) | The metro the district sits in. |
| district_name | varchar(24) | Generated district name. Collisions with real neighbourhood names of the ten metros are a build failure. |
| zone_type | varchar(16) | core, inner, suburban or fringe. The urban exodus is measured across this axis. |
| land_area_km2 | numeric(6,2) | Generated land area in square kilometres. |
| price_factor | numeric(5,2) | Price multiple of the district against the metro base level. |
| Column | Type | Description |
|---|---|---|
| developer_id | varchar(8) | Builder key. Primary key. |
| developer_name | varchar(40) | Generated builder name. Collisions with real homebuilders and brokerages are a build failure. |
| home_metro_code | varchar(8) | The metro the builder is based in. |
| founded_year | integer | Year the builder was founded. |
| ownership_type | varchar(16) | listed, private or family_owned. |
| Column | Type | Description |
|---|---|---|
| project_id | varchar(8) | Project key. Primary key. |
| district_id | varchar(16) | The district the project sits in. |
| developer_id | varchar(8) | The builder of the project. |
| project_name | varchar(32) | Generated project name from the district name and a generic suffix. |
| project_type | varchar(32) | condominium, apartment, mixed_use, townhome_community or single_family_community. |
| total_units | integer | Units in the project or community. |
| completion_year | integer | Year the project completes; sales before it are presales. |
+2 more columns in pru_projects. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| transaction_id | varchar(16) | Transaction key. Primary key. A few pairs are exact double-posts, on purpose. |
| project_id | varchar(8) | The project the unit belongs to. |
| district_id | varchar(16) | The district of the project, denormalised. |
| metro_code | varchar(8) | The metro, denormalised. |
| year_month | varchar(16) | Month of the transaction, 2016-01 to 2026-06. Import as text: spreadsheets convert values like 2021-05 to dates. |
| property_type | varchar(24) | single_family, condo or townhome. |
| bedrooms | integer | Bedroom count of the unit. |
+8 more columns in pru_transactions. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| index_id | varchar(8) | Index row key. Primary key. |
| metro_code | varchar(8) | The metro the index measures. |
| year_month | varchar(16) | Month of the index. Import as text. |
| median_psf_usd | numeric(8,2) | The exact median price per square foot of the month transactions, in dollars. Re-verified by the build. |
| transaction_count | integer | Transactions behind the median that month. |
| yoy_change_pct | numeric(5,1) | Change against the same month one year earlier, in percent. Empty in the first year. |
| Column | Type | Description |
|---|---|---|
| district_index_id | varchar(16) | District index key. Primary key. |
| district_id | varchar(16) | The district the index measures. |
| year_month | varchar(16) | Month of the index. Import as text. |
| index_psf_usd | numeric(8,2) | Modelled price per square foot for the district, in dollars. Suburban and fringe districts visibly outgrow the core from 2020. |
| Column | Type | Description |
|---|---|---|
| rent_id | varchar(16) | Rent row key. Primary key. |
| district_id | varchar(16) | The district the rent measures. |
| year_month | varchar(16) | Month of the rent. One metro is deliberately missing two months. Import as text. |
| bedroom_type | varchar(16) | 1BR, 2BR or 3BR. |
| median_monthly_rent_usd | integer | Median monthly rent in dollars. |
| gross_yield_pct | numeric(5,2) | Gross rental yield in percent, inverse to the price level. |
| Column | Type | Description |
|---|---|---|
| supply_id | varchar(8) | Supply row key. Primary key. |
| metro_code | varchar(8) | The metro. |
| year | integer | Completion year. |
| segment | varchar(24) | single_family, multifamily or townhome. |
| units_completing | integer | Units completing that year in the segment. |
| Column | Type | Description |
|---|---|---|
| rate_id | varchar(8) | Rate row key. Primary key. |
| year_month | varchar(16) | Month of the rate. Import as text. |
| rate_30yr_pct | numeric(5,2) | The invented national thirty-year mortgage rate in percent. No published rate is reproduced. |
| rate_15yr_pct | numeric(5,2) | The invented national fifteen-year mortgage rate in percent. |
| Column | Type | Description |
|---|---|---|
| annual_id | varchar(8) | Annual row key. Primary key. |
| metro_code | varchar(8) | The metro. |
| year | integer | Calendar year. |
| transaction_count | integer | The exact transaction count for the year. Re-verified by the build. |
| median_psf_usd | numeric(8,2) | The exact median price per square foot for the year, in dollars. |
Sample Data
A snapshot of real rows from the dataset (values are fully synthetic).
| transaction_id | project_id | metro_code | year_month | property_type | bedrooms | area_value | area_unit | price_usd | price_psf_usd | financing_type |
|---|---|---|---|---|---|---|---|---|---|---|
| TX000001 | PJ0101 | NYC | 2016-01 | townhome | 3 | 1781 | SQFT | 1911800 | 1073.47 | mortgage |
| TX000002 | PJ0126 | NYC | 2016-01 | single_family | 2 | 1164 | SQFT | 1064500 | 914.48 | mortgage |
| TX000003 | PJ0153 | NYC | 2016-01 | single_family | 4 | 2630 | SQFT | 1684200 | 640.38 | mortgage |
Version History
| v1.0.0 | 2026-08-11 | First release. Ten metros on the American decade, 415,989 transactions, exact monthly price indices, district indices, rents with yields, supply pipeline and an invented mortgage-rate series, 2016-01 to 2026-06. |
Related Datasets
Property Price and Sales (ASIA)
Real Estate DevelopmentA residential property dataset for ten Asian cities: Singapore, Tokyo, Hong Kong, Jakarta, Bangkok, Kuala Lumpur, Seoul, Taipei, Manila and Ho Chi Minh City, with 444,957 transactions, exact monthly price indices, rents, supply and policy events from 2016 to mid 2026, each city on its own market cycle.
Property Price and Sales (EU)
Real Estate DevelopmentA residential property dataset for ten European cities: London, Paris, Berlin, Madrid, Amsterdam, Dublin, Lisbon, Warsaw, Stockholm and Milan, with 393,404 transactions in four local currencies plus a US dollar column, exact monthly price indices, rents, supply and policy events from 2016 to mid 2026, each city on its own market cycle.