This map shows the average price per m² of houses in each Middle layer Super Output Area (MSOA) in England & Wales — a finer geography than postcode districts, with 6,856 areas shown.
Data is aggregated from LSOA-level records matched to Energy Performance Certificates via UPRN. This tier covers transactions up to January 2022 (~60% of all sales). All prices are adjusted to Mar 2026 pounds using the ONS CPI index.
| MSOA | £/m² |
|---|
| MSOA | £/m² |
|---|
The underlying dataset is available as a CSV file, licensed under the
Open Government Licence
v3.0.
A machine-readable index with row counts and file sizes is available as
data.json.
Coverage caveat: This dataset is derived from UPRN tier-1 matches only, covering transactions from January 1995 to January 2022 (~60% of all sales). Post-2022 sales are not included in this MSOA view.
One row per MSOA. 6,856 areas.
Download CSV| Column | Type | Description |
|---|---|---|
msoa21cd |
string | ONS 2021 MSOA code (e.g. E02000001) |
msoa21nm |
string | ONS 2021 MSOA name (e.g. City of London 001) |
num_sales |
integer | Number of residential sales matched to an EPC record |
total_floor_area |
float | Total floor area of matched properties (m²) |
total_price |
float | Total transaction value of matched sales (£) |
price_per_sqm |
integer | Nominal price per m² = total_price / total_floor_area (£) |
adj_price_per_sqm |
integer | CPI-adjusted price per m², base January 2026 (£), using ONS CPI series D7BT |
One row per LSOA. The underlying geography from which MSOA figures are aggregated. Coverage caveat applies: UPRN tier-1 only (~60% of all sales, 1995–Jan 2022).
Download CSV| Column | Type | Description |
|---|---|---|
LSOA21CD |
string | ONS 2021 LSOA code (e.g. E01000001) |
num_sales |
integer | Number of residential sales matched to an EPC record |
total_floor_area |
float | Total floor area of matched properties (m²) |
total_price |
float | Total transaction value of matched sales (£) |
price_per_sqm |
integer | Nominal price per m² = total_price / total_floor_area (£) |
adj_price_per_sqm |
integer | CPI-adjusted price per m², base January 2026 (£), using ONS CPI series D7BT |
Sale prices are taken from HM Land Registry's Price Paid dataset (standard residential sales to individuals, Jan 1995–Mar 2026). Floor area per property is taken from Energy Performance Certificates.
Each sale is matched to its EPC via the Unique Property Reference Number (UPRN) using the UBDC Price Paid–UPRN lookup table, which covers transactions up to January 2022. Post-2022 sales are not included in this MSOA view. The price per m² for each MSOA is the total transaction value of all matched LSOA-level sales divided by their total floor area — not a mean of per-property ratios. MSOAs with fewer than 10 matched sales are excluded.
MSOA boundaries are the December 2021 boundaries for England and Wales, sourced from the ONS Open Geography Portal. LSOA→MSOA lookup is the ONS LSOA21→MSOA21 lookup table.
The map uses the same hybrid colour scale as the postcode district view. The first seven colour bands use quantile breaks, dividing the 6,856 MSOAs into roughly equal groups. The top two bands use fixed thresholds: £5,000/m² and £10,000/m².
First stable release. v1.0.0 marks the point at which this analysis is considered ready for public use and the author commits to semantic versioning from this release onwards. Future patch releases will update data vintages; minor releases will change methodology; major releases will change the output schema or geography.
The district CSV now includes a property_type column. Each postcode district has one ALL row (the previous single row) plus one row per property type: D detached, F flat/maisonette, S semi-detached, T terraced, O other. Consumers relying on one-row-per-district must filter to property_type = ALL.
price_per_sqm_yearly_postcode_district.csv — annual aggregates perdistrict, enabling the year-range filter on the web map.
price_per_sqm_lsoa.csv — LSOA-level aggregation (promoted fromexperimental); used to derive the new MSOA choropleth.
price_per_sqm_msoa.csv — MSOA-level aggregation derived from LSOA data;covers UPRN tier-1 matches only (~60% of sales, 1995–Jan 2022).
A second map view aggregates price per m² to Middle Super Output Area level, giving finer geographic resolution than postcode districts across England and Wales. Coverage is limited to tier-1 UPRN-matched records.
A fourth matching tier recovers rural named properties where PPD has no street field. When paon contains no digits, PPD is keyed on (postcode, normalise_addr(paon)) and matched against EPC (postcode, normalise_addr(ADDRESS1)), ignoring ADDRESS2. Only 1:1 matches on both sides are accepted to limit false positives.
Three fixes applied to both the Python normaliser and the DuckDB macro:
| Fix | Gain | Issue |
|---|---|---|
Hyphens treated as word separators (CROSS-O-THE-HANDS → CROSS O THE HANDS) |
+2,428 records | #114 |
Article "THE" stripped as whole word (THE OLD RECTORY → OLD RECTORY) |
+4,995 records | #113 |
| Compound words canonicalised (FARM HOUSE → FARMHOUSE, etc.) | +342 records | #115 |
Gains measured on the March 2026 dataset.
E20 (Queen Elizabeth Olympic Park / East Village, Stratford) was created by Royal Mail after our Geolytix boundary snapshot and has no polygon. All E20 records are now folded into the geographically contiguous E15, recovering 884 previously lost sales.
| Metric | Value |
|---|---|
| Districts included | 2,276 |
| Total matched sales | 16,577,000 |
| Median real adj price | £3,058/m² |
| Most expensive | W1S — £35,462/m² (real Jan-2026 £) |
| Least expensive | TS2 — £733/m² (real Jan-2026 £) |
| Top 5 | W1S, WC2A, WC2R, W1B, W1K |
| Bottom 5 | DN31, CF43, BD3, TS1, TS2 |
---
| Source | v0.1.0 | v0.2.0 |
|---|---|---|
| HM Land Registry PPD | to Jan 2026 (~22.5M rows) | to March 2026 (~29.3M rows) |
| EPC bulk export | per-LA ZIPs, epc.opendatacommunities.org | single monolithic CSV, get-energy-performance-data.communities.gov.uk (March 2026) |
| UBDC PPD→UPRN lookup | unchanged — covers to Jan 2022 | unchanged |
| ONS CPI | D7BT Jan 1988–Jan 2026 | unchanged |
The EPC source changed to the new MHCLG GOV.UK One Login API (single 5.7 GB CSV). Four CSV parsing issues were encountered and fixed; see research/epc-csv-data-quality.md.
All sale prices are now inflation-adjusted to January 2026 pounds before aggregation, using ONS CPI All Items monthly series D7BT. The headline column is adj_price_per_sqm; nominal price_per_sqm is retained as a reference.
| Tier | Count | Share |
|---|---|---|
| Tier 1 — UPRN exact match | 9,255,768 | 31.6% |
| Tier 2 — address normalisation | 7,321,554 | 25.0% |
| Unmatched | 12,705,953 | 43.4% |
| Total PPD sales | 29,283,275 |
Match rate dropped from 76.9% (v0.1.0) to 56.6% because the PPD gained ~6.8M post-Jan-2022 rows outside the UBDC lookup window. The absolute matched count is broadly unchanged (~16.6M vs ~17.3M).
| Metric | Value |
|---|---|
| Districts included | 2,277 |
| Total matched sales | 16,577,322 |
| Median real adj price | £3,058/m² |
| Most expensive | W1S — £35,462/m² |
| Least expensive | TS2 — £733/m² |
---
First versioned release.
| Source | Coverage | Licence |
|---|---|---|
| HM Land Registry Price Paid Data | Standard residential sales, Aug 2007–Jan 2026 | OGL v3.0 |
| DLUHC Energy Performance Certificates | All domestic lodgements, England & Wales | OGL v3.0 |
| UBDC PPD–UPRN lookup | Transactions to Jan 2022 | Open data, University of Glasgow |
| GeoLytix postcode district boundaries | — | OGL v3.0 |
Price per m² = Σ(sale_price) / Σ(floor_area_m²) per postcode district. Sales matched to EPCs via UPRN (tier 1), address normalisation (tier 2), then postcode-median floor area fallback (tier 3). Districts with fewer than 10 matched sales excluded.
| Metric | Value |
|---|---|
| Total sales | 22,503,694 |
| Matched with floor area | ~77% |
| Districts included | 2,279 |
| Median price per m² | £1,986 |
| Data range | Aug 2007–Jan 2026 |
| Most expensive | W1S — £24,184/m² |
| Least expensive | TS2 — £504/m² |
Price Paid data produced by HM Land Registry © Crown copyright 2026, licensed under the Open Government Licence v3.0. EPC data © Crown copyright DLUHC, licensed under the Open Government Licence v3.0. UBDC PPD–UPRN lookup published as open data by the Urban Big Data Centre, University of Glasgow. Contains Ordnance Survey data © Crown copyright and database right 2026. MSOA boundaries © Office for National Statistics, licensed under the Open Government Licence v3.0. Contains National Statistics data © Crown copyright and database right 2026. Map tiles © CARTO, data © OpenStreetMap contributors.