Replacing getAddress.io? Free drop-in replacement →
← Back to Our Data
Beta

Property Comparables

Comparable sold properties for any UK address — automatically. PostGIS proximity search returns the closest sales with similar characteristics, filtered by bedrooms, property type, and date range.

What's included

Proximity-based search

Finds the nearest sold properties to any UPRN using PostGIS 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

Subject: 14 Maple Avenue, Bristol BS8
3-bed terraced · comparables within 500m
8 Elm Road, BS8 2QJ
Terraced · 3 bed · 142m away
£590,000
Sold
Feb 2024
Asking
£595,000
Days
31
23 Oak Street, BS8 1TR
Terraced · 3 bed · 289m away
£567,000
Sold
Jan 2024
Asking
£580,000
Days
44
29M+
UK properties indexed for spatial lookup

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.

API endpoint

Beta

Pass any UPRN 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.

GET /api/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.
cURL
curl "https://api.homedata.co.uk/api/comparables/100023336956/?bedrooms=3&property_type=Terraced" \
  -H "Authorization: Api-Key YOUR_API_KEY"
Python
import requests

response = requests.get(
    "https://api.homedata.co.uk/api/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)")
JavaScript
const response = await fetch(
  "https://api.homedata.co.uk/api/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)`)
);

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.