Replacing getAddress.io? Free drop-in replacement →
GET /api/comparables/{uprn}/ PostGIS spatial search Growth plan required

Recent Comparable Sales for Any UK Property

Find the nearest comparable sales for any UK property. 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.

Free tier: 100 requests/month. No credit card required.

UPRN in. Comps out.

One request returns up to 200 comparable properties within 0.5 miles, ordered by distance. Filter by bedrooms, property type, or event type (sold / listed / all).

Sold prices from Land Registry transactions
Active UK property listings — updated daily
Distance in metres from the reference property
Filter by bedrooms, property type, date range
24-hour cache — fast repeated calls on same UPRN
Request
curl "https://api.homedata.co.uk/api/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
Response 200 OK
{
  "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 PostGIS 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. Comparable sold prices within 0.5 miles in the last 12 months is the standard RICS benchmark.

📊

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

JavaScript — AVM pattern
const data = await fetch(
  `https://api.homedata.co.uk/api/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 — resolve address first
# Step 1: resolve address to UPRN (2 calls — no auth needed)
curl -G "https://api.homedata.co.uk/api/address/find/" \
  --data-urlencode "q=14 Maple Street M20"
# → { "suggestions": [{ "uprn": 100022612238, ... }] }

# Step 2: get comparables for that UPRN
curl "https://api.homedata.co.uk/api/comparables/100022612238/" \
  -H "Authorization: Api-Key YOUR_API_KEY"

Get your free API key

100 requests/month on the free tier. No credit card. From signup to first comparable in under 5 minutes.