Land Registry Price Paid UK
Pricing
from $5.00 / 1,000 results
Land Registry Price Paid UK
Scrapes the UK HM Land Registry Price Paid Data. Search by address, postcode, town or street and filter by date range, price, property type, and estate type. Covers residential property sales in England and Wales from 1995 onwards.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
No-Code Venture
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
An Apify Actor that scrapes UK HM Land Registry Price Paid Data. Search for residential property sale prices in England and Wales by address, postcode, town, or street, with optional filters for date range, price, property type, estate type, and new-build status.
Data covers over 24 million transactions dating back to January 1995, updated monthly.
What it does
- Look up sold prices by exact address (postcode + building number)
- Search by area (town, street, or district)
- Filter by date range, price range, property type, and estate type
- Optionally restrict to new-build properties only
- Handles pagination to retrieve large result sets
Input
Address
At least one of street or town must be provided. Postcode alone is not supported as it causes server-side timeouts — use it as an additional narrowing filter alongside street or buildingName.
| Field | Type | Description | Default |
|---|---|---|---|
postcode | string | UK postcode (e.g. SW1A 1AA). Case-insensitive. | — |
buildingName | string | House number or building name (PAON). Combined with postcode for exact property. | — |
unitName | string | Flat or unit number (SAON). Use with buildingName to pinpoint a specific flat. | — |
street | string | Street name. Case-insensitive. | — |
locality | string | Locality (not always present in the data). | — |
town | string | Town or city name. Case-insensitive. | — |
district | string | District (not always present in the data). | — |
county | string | County (not always present in the data). | — |
Filters
| Field | Type | Options / Format | Default |
|---|---|---|---|
dateFrom | string | YYYY-MM-DD — earliest transaction date. Data available from 1995-01-01. | — |
dateTo | string | YYYY-MM-DD — latest transaction date. | — |
minPrice | integer | Minimum sale price in GBP (inclusive). | — |
maxPrice | integer | Maximum sale price in GBP (inclusive). | — |
propertyTypes | array | detached, semi-detached, terraced, flat-maisonette, otherPropertyType | [] (all) |
estateType | string | freehold or leasehold. Leave empty for both. | — |
newBuild | array | "true" (new builds), "false" (not new build). Leave empty for all. | [] (all) |
Performance
| Field | Type | Description | Default |
|---|---|---|---|
maxResults | integer | Total maximum records to fetch across all pages. Set to 0 for no limit. Use with caution on broad queries. | 1000 |
maxConcurrency | integer | Maximum parallel requests. | 5 |
maxRequestsPerMinute | integer | Rate limit cap. Lower if getting 429 errors. | 120 |
proxyConfiguration | object | Apify proxy settings. | disabled |
Pagination
| Field | Type | Description | Default |
|---|---|---|---|
enablePagination | boolean | Fetch results across multiple pages using OFFSET. Each page fires a separate request and billing event. | false |
pageSize | integer | Records per request when pagination is enabled. Has no effect when pagination is disabled. Keep between 10–500 for best results. | 100 |
When pagination is disabled, maxResults maps directly to the SPARQL LIMIT — one request, one page.
When pagination is enabled, each request fetches up to pageSize records. The last page is automatically trimmed so the total never exceeds maxResults. Pages continue until fewer than pageSize records are returned (no more data) or maxResults is reached.
Example — exact property lookup
{"buildingName": "129","street": "HARBOUR ROAD","postcode": "BD6 3QX"}
Example — all sales on a street
{"street": "DOWNING STREET","town": "LONDON"}
Example — area search with filters and pagination
{"town": "MANCHESTER","dateFrom": "2020-01-01","dateTo": "2024-12-31","propertyTypes": ["semi-detached", "terraced"],"estateType": "freehold","minPrice": 100000,"maxPrice": 400000,"maxResults": 5000,"enablePagination": true,"pageSize": 200}
Example — new builds only in an area
{"town": "LONDON","newBuild": ["true"],"dateFrom": "2018-01-01"}
Output
The dataset stores one JSON object per transaction, ordered by transaction date descending.
{"transactionId": "237B17FE-B9CF-22AC-E063-4804A8C0EA3A","transaction": {"price": 285000,"date": "2024-05-10","propertyType": "semi-detached","estateType": "freehold","newBuild": false},"address": {"unitName": null,"buildingName": "129","street": "HARBOUR ROAD","locality": "WIBSEY","town": "BRADFORD","district": "BRADFORD","county": "WEST YORKSHIRE","postcode": "BD6 3QX"}}
Top level
| Field | Type | Description |
|---|---|---|
transactionId | string | Unique transaction GUID assigned by Land Registry |
transaction object
| Field | Type | Description |
|---|---|---|
price | number | Sale price in GBP |
date | string | Transaction date (YYYY-MM-DD) |
propertyType | string | detached, semi-detached, terraced, flat-maisonette, otherPropertyType |
estateType | string | freehold or leasehold |
newBuild | boolean | Whether the property was a new build at time of sale |
address object
| Field | Type | Description |
|---|---|---|
unitName | string | Flat / unit number (SAON, may be null) |
buildingName | string | House number or building name (PAON) |
street | string | Street name |
locality | string | Locality (may be null) |
town | string | Town or city |
district | string | District (may be null) |
county | string | County (may be null) |
postcode | string | UK postcode |
Pay Per Event Billing
This Actor uses Apify's Pay Per Event pricing — you only pay for what actually runs.
| Event | Charged by | Description |
|---|---|---|
apify-actor-start | Apify (auto) | Once per run start |
apify-default-dataset-item | Apify (auto) | Once per result record pushed |
land-registry-query | Custom | Once per SPARQL query fired (including pagination pages) |
retry-event | Custom | Once per retry on a failed request |
event-proxy | Custom | Once per run when using Apify Proxy (no group) |
event-proxy-group | Custom | Once per run when using a proxy group (e.g. RESIDENTIAL) |
You can cap total spend in the Apify Console when starting a run via Max total charge (USD) or Max paid dataset items.
Data source
Data is sourced from the HM Land Registry Price Paid Data, published under the Open Government Licence v3.0.
- Covers residential property sales in England and Wales only
- Updated monthly, with records from January 1995 onwards
- Based on data collected at the time of registration — may not reflect the most recent information
Additional licensing terms apply when re-publishing address data. See the HM Land Registry website for details.