Recent comparable sales in England and Wales
Find the nearest comparable sales for a property in England and Wales. Pass a UPRN: get back nearby sold and listed properties ordered by geographic proximity, with sold price, bedrooms, property type, and days on market. Built for AVMs, valuations, and market analysis.
The standalone comparables endpoint is arranged per customer rather than sold self-serve. The same comparable evidence is included in the complete property profile, a flat 50 tokens.
UPRN in. Comps out.
One request returns comparable properties within 2 miles, ordered by distance. The count parameter defaults to 20, with a maximum of 200. There is no pagination. An empty result still counts as a call.
# Arranged per customer, not self-serve. curl "https://api.homedata.co.uk/comparables/100022612238/" \ -H "Authorization: Api-Key YOUR_API_KEY" # Optional filters: # ?bedrooms=3&property_type=Terraced&count=10 # ?event_type=sold&start_date=2024-01-01&end_date=2024-12-31
{
"reference_uprn": 100022612238,
"filters": {
"bedrooms": [3],
"property_type": ["Terraced"],
"count": 10,
"start_date": "2024-03-14",
"end_date": "2025-03-14",
"event_type": "all"
},
"comparables": [
{
"uprn": 100022677605,
"address": "14 Maple Street, M20 2BH",
"bedrooms": 3,
"property_type": "Terraced",
"distance_meters": 83.4,
"sold_let_date": "2024-11-08",
"sold_let_price": 312000,
"transaction_type": "Sale",
"is_complete": true,
"listing_price": null,
"latest_listing": null,
"latest_sale": {
"sold_let_date": "2024-11-08",
"sold_let_price": 312000,
"is_complete": true
}
}
// ... more comparables
],
"total_results": 8,
"response_time_seconds": 0.043
}
Response fields
Each comparable object contains sale and listing data where available.
Top-level
| Field | Type | Description |
|---|---|---|
| reference_uprn | integer | The reference property UPRN |
| filters | object | Applied filters (bedrooms, type, dates) |
| comparables | array | Nearby properties, ordered by distance |
| total_results | integer | Number of comparables returned |
| response_time_seconds | float | Query execution time in seconds |
Each comparable
| Field | Type | Description |
|---|---|---|
| uprn | integer | Unique Property Reference Number |
| address | string | Full address string |
| bedrooms | integer | Number of bedrooms |
| property_type | string | Detached / Semi-Detached / Terraced / Flat |
| distance_meters | float | Distance from reference property in metres |
| sold_let_date | date | Date of completion (null if listed only) |
| sold_let_price | integer | Achieved sale price in GBP |
| transaction_type | string | Sale or Rental |
| is_complete | boolean | true if sale has completed |
| listing_price | integer | null | Asking price if currently listed |
| latest_listing | object | null | Latest listing details (status, source) |
| latest_sale | object | null | Most recent sale record |
Query parameters
All parameters are optional. Combine freely.
| Parameter | Type | Default | Description |
|---|---|---|---|
| bedrooms | integer (repeatable) | – | Filter by bedrooms. Repeat for multiple: ?bedrooms=3&bedrooms=4 |
| property_type | string (repeatable) | – | Detached, Semi-Detached, Terraced, or Flat. Repeat for multiple. |
| count | integer | 20 | Number of comparables to return. Max 200. |
| start_date | date | 1 year ago | Start of date window (YYYY-MM-DD) |
| end_date | date | today | End of date window (YYYY-MM-DD) |
| event_type | string | all | all (sold or listed), sold (completions only), listed (new listings only) |
Who uses comparables data
Comparables are the foundation of any property valuation workflow.
Automated valuations
AVMs use nearby sold prices as the input signal. Our API returns pre-ranked comparables ready for a median or weighted model.
Mortgage underwriting
Lenders need evidence of market value. Retrieve comparable sold prices within 2 miles and use the start and end date filters to focus on the period you need.
Estate agent tools
Instant comparable report at point of valuation. Show vendors supporting evidence for the asking price recommendation.
Property investment
Check recent sold prices before making an offer. Filter to matching property type and bedroom count for like-for-like comparison.
Practical patterns
Common integrations in production.
Calculate median comparable price
// Arranged per customer, not self-serve.
const data = await fetch(
`https://api.homedata.co.uk/comparables/${uprn}/?bedrooms=3&event_type=sold`,
{ headers: { "Authorization": "Api-Key YOUR_API_KEY" } }
).then(r => r.json());
const prices = data.comparables
.filter(c => c.sold_let_price)
.map(c => c.sold_let_price)
.sort((a, b) => a - b);
const mid = Math.floor(prices.length / 2);
const median = prices.length % 2
? prices[mid]
: (prices[mid - 1] + prices[mid]) / 2;
console.log(`Median comp price: £${median.toLocaleString()}`);
Two-step: address → comparables
curl --get "https://api.homedata.co.uk/address/match/" \ --data-urlencode "address=10 Downing Street" \ --data-urlencode "postcode=SW1A 2AA" \ -H "Authorization: Api-Key YOUR_API_KEY" # 200: address-level retrieve body plus address_resolution; 5 tokens. # 422: reason no_match or multiple_matches; never charged. # Use the returned UPRN for further property data.
Talk to us about comparables
The standalone comparables endpoint is arranged per customer rather than sold self-serve. If you want the same evidence self-serve today, it is included in the complete property profile: a flat 50 tokens, pay as you go, 100 tokens = £1.