Data catalogue/ Prices & transactions/ Property comparables
Property comparables
Comparable sold properties for an address: automatically. Proximity search returns the closest sales with similar characteristics, filtered by bedrooms, property type, and date range.
Each comparable carries the full Homedata listing-event chain (Added, Reduced, Sold STC, Withdrawn, Re-listed) matched to a UPRN and a normalised address. Queryable by date range over 30 years.
What's included
Proximity-based search
Finds the nearest sold properties to any UPRN in England and Wales using spatial queries: sorted by distance from the subject property.
Characteristic filtering
Filter by number of bedrooms, property type (Detached, Semi-Detached, Terraced, Flat), and date range. Stack filters to narrow to truly comparable sales.
Sale & listing data
Each comparable includes sold price, sale date, asking price, days on market, and current listing status where available.
Distance from subject
Each result includes metres-from-subject so you can see exactly how close the comparable is to your target property.
Configurable lookback
Defaults to the past 12 months. Pass custom start_date and end_date to extend or narrow the window. Return up to 200 comparables per request.
Example comparable
Who uses comparable sales data
Surveyors & valuers
Automate the evidence-gathering stage of a RICS Red Book valuation. Pull comparables for any instruction in seconds, filtered to match property type and timeframe.
AVM platforms
Feed comparable sales data into automated valuation models. Get spatially-ranked sold prices for training or real-time AVM scoring.
Mortgage lenders
Desktop valuations and property due diligence. Pull local comparable sales at application stage to sense-check declared purchase prices.
Estate agents
Build market appraisal reports automatically. Generate a comparables pack for any address before the vendor meeting: 20 nearest recent sales, formatted and filtered.
Property investors
Due diligence before purchase offers. Understand recent sale prices for equivalent properties in any area to validate asking price or build a counter-offer.
Conveyancers
Transaction due diligence for buyer and lender clients. Pull recent comparable sales at the same stage you'd pull Land Registry data: same API call.
The API
API endpoint
Pass any UPRN in England and Wales and get back nearby comparable sales: sorted by distance. Filter by bedrooms and property type to narrow to true comparables. Returns up to 200 results per request.
Arranged per customer, not self-serve.
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.
- GET /comparables/{uprn}/
- uprn: path param, required. The UPRN of the subject property.
- bedrooms: optional. Filter to matching bedroom count (repeatable: bedrooms=3&bedrooms=4 ).
- property_type: optional. Detached, Semi-Detached, Terraced, or Flat (repeatable).
- count: optional. Number of results (default 20, max 200).
- start_date / end_date: optional. Date range in YYYY-MM-DD. Defaults to past 12 months.
- event_type: optional. all (default), sold , or listed .
- Beta endpoint. Response times vary by location density: typically 3–18 seconds. Not recommended for real-time user-facing requests; best suited to background jobs, valuation pipelines, and report generation. We're working on caching to bring this down.
# Arranged per customer, not self-serve. curl "https://api.homedata.co.uk/comparables/100023336956/?bedrooms=3&property_type=Terraced" \ -H "Authorization: Api-Key YOUR_API_KEY"
# Arranged per customer, not self-serve.
import requests
response = requests.get(
"https://api.homedata.co.uk/comparables/100023336956/",
params={"bedrooms": 3, "property_type": "Terraced", "count": 20},
headers={"Authorization": "Api-Key YOUR_API_KEY"}
)
data = response.json()
for comp in data["comparables"]:
print(f"{comp['address']}: £{comp['latest_sale']['price']:,} ({comp['distance_m']:.0f}m)")
// Arranged per customer, not self-serve.
const response = await fetch(
"https://api.homedata.co.uk/comparables/100023336956/?bedrooms=3&property_type=Terraced",
{ headers: { "Authorization": "Api-Key YOUR_API_KEY" } }
);
const data = await response.json();
data.comparables.forEach(c =>
console.log(`${c.address}: £${c.latest_sale?.price?.toLocaleString()} (${Math.round(c.distance_m)}m)`)
);
More in Prices & transactions
Start building today.
Pay as you go, 100 tokens = £1, first top-up matched. Get your key and test with real data.