If you want to build anything with UK house price data, four free datasets do most of the work: HM Land Registry Price Paid Data, the EPC register, ONS Census 2021 and OpenStreetMap. This post covers what each one contains, how they are licensed, where they join badly, and what a street-level result looks like using postcode district CR5 (Coulsdon, in the London Borough of Croydon) as a worked example.
I run Door Number, a free property information site built on these datasets. Everything below was checked on 8 November 2026.
What does each dataset contain?
| Dataset | Publisher | What you get | Licence |
|---|---|---|---|
| Price Paid Data | HM Land Registry | Every residential sale in England and Wales: price, date, postcode, property type, new build flag, freehold or leasehold, address parts | Open Government Licence v3.0 |
| EPC register | MHCLG | Energy certificates: floor area, construction age band, built form, energy rating, UPRN | Open Government Licence (check the terms on address fields) |
| Census 2021 | ONS | Population, households, tenure, travel, by output area and local authority | Open Government Licence v3.0 |
| OpenStreetMap | OSM contributors | Roads, buildings, shops, schools, transport | Open Database Licence (ODbL), credit "© OpenStreetMap contributors" |
Price Paid Data records property type as a single letter (D detached, S semi-detached, T terraced, F flat or maisonette, O other), tenure as F or L, and a record status of A (added), C (changed) or D (deleted), so a correct import has to handle updates and deletions, not only inserts. HM Land Registry has announced that it will add UPRNs to Price Paid Data from 28 August 2026, which should make joins to the EPC register far easier.
Where do the datasets join badly?
Price Paid Data has no stable identifier for a property, so matching a sale to an EPC means matching addresses: the PAON (house number or name), SAON (flat), street and postcode. Typical failure modes:
- Flats written "Flat 3, 12 High Road" in one dataset and "3 12 High Road" in another
- House names instead of numbers
- Properties with no EPC at all, because certificates only exist when a property was sold, let or improved
- Several certificates for one property, so you need the most recent
In the CR5 dataset (2,672 addresses), 265 (10%) have no construction age band on the EPC register.
What do you learn once the joins are done?
A worked example from CR5, using sales since 1 January 2019 (1,398 sales):
- Median sold price, all property types: £500,000
- Detached £690,000 (413 sales), semi-detached £530,000 (412), flat £300,000 (328)
- 33% of addresses (876 of 2,672) were built 1930 to 1949, according to the EPC construction age band
Because the median is driven by the mix of property types, comparing two areas by their overall median can mislead. The neighbouring district CR8 (Purley and Kenley) has a lower overall median than CR5 (£455,000 against £500,000) even though detached homes, semis and flats each sell for more there, because flats are 44% of its sales against 23% in CR5.
What mistakes should you avoid?
- Do not treat Price Paid Data as complete. It excludes some transactions, such as non-market sales, and recent months are filled in over time.
- Do not rank streets on tiny samples. A median from three sales moves a long way on one transaction; require a minimum count and show it.
- Do not mix property types in one comparison. Group by detached, semi-detached, terraced and flat first.
- Do state the period. A median since 2019 will not match a 12-month figure.
Sources
HM Land Registry Price Paid Data, EPC register (MHCLG), ONS Census 2021, OpenStreetMap, all as above. Street-level tables for CR5 are published at doornumber.co.uk/postcode-district/cr5/streets, and the data sources and licensing page lists every dataset used: doornumber.co.uk/data-sources.
About the author: Ashleigh Giles runs Door Number, which publishes house prices and local information from open UK data, with sources credited on every page.
Top comments (0)