Skip to main content
29M UK properties, one API call. Get an API key →

Property datasets

UK property data, ready for your model.

29M UK properties, each keyed by its UPRN, so energy, sales, listings, risk and area all join on one column. Pull them into a dataframe from 59 endpoints, or take a file for a whole area.

29MUK properties, by UPRN
36.6Maddresses indexed
26 yrsof listing events, since 2000
23MEPC certificates on file
7licensed and official sources
Live status →

In a notebook

From a list of addresses to a dataframe

Match each address to its UPRN, then pull the record. A match that fails returns a reason and costs nothing.

import pandas as pd, requests

API = "https://api.homedata.co.uk"
headers = {"Authorization": "Api-Key YOUR_API_KEY"}

def uprn(address, postcode):
    r = requests.get(f"{API}/address/match/", params={"address": address, "postcode": postcode}, headers=headers)
    if r.status_code == 422:                    # no match, or several: no charge
        return None
    r.raise_for_status()                        # a bad key or a rate limit stops here
    return str(r.json()["uprn"])                # kept as text, so a UPRN never becomes 1.0e11

def record(u):
    r = requests.get(f"{API}/property/{u}/base/", headers=headers)
    r.raise_for_status()
    return r.json()

homes = pd.read_csv("addresses.csv")            # address, postcode
homes["uprn"] = [uprn(a, p) for a, p in zip(homes.address, homes.postcode)]
data = pd.json_normalize([record(u) for u in homes.uprn.dropna()])

Prefer to ask in plain English? The Homedata MCP server puts the same data inside Claude, Codex and other AI tools.

At scale

A whole area as one file

Call the API one property at a time, or take a file for a list or a whole area. Tell us the area and the fields, and how you will use them.

Start with a sample

Get a key and pull your first records today, or tell us the area you need as a file.