Free UK property data API Start free →
GET /api/postcode-profile/ 1.7M postcodes Pro plan required

50+ Attributes for Any UK Postcode — One API Call

Pass a UK postcode. Get back a complete area profile — ONS Census 2021 demographics, deprivation index, sold price history, nearby school count, public transport links, and broadband speed. All in one call, instead of five.

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

Five calls, reduced to one.

Building a property portal, mortgage app, or area comparison tool? You used to stitch together deprivation, crime, price trends, schools, transport, and broadband separately — six round-trips, six response schemas to parse.

The Postcode Profile endpoint bundles all of that into a single structured response. One call, consistent schema, cached at the postcode level.

deprivation_score IMD rank + decile
crime_rate Police UK monthly avg
avg_sale_price Land Registry 12m avg
schools_within_1km GIAS count + Ofsted avg
transport_stops NaPTAN within 500m
broadband_avg_download Ofcom median Mbps
census ONS Census 2021 demographics
cURL
curl "https://api.homedata.co.uk/api/postcode-profile/" \
  -G \
  --data-urlencode "postcode=SW1A 2AA" \
  -H "Authorization: Api-Key YOUR_API_KEY"
Response — 200 OK
{
  "postcode": "SW1A 2AA",
  "area": "City of Westminster",
  "deprivation": {
    "imd_rank": 26542,
    "imd_decile": 9,
    "income_score": 0.041,
    "crime_score": 0.193
  },
  "crime": {
    "monthly_avg": 4.2,
    "rate_per_1000": 8.1,
    "latest_month": "2024-11"
  },
  "property_prices": {
    "avg_sale_price": 1240000,
    "median_sale_price": 895000,
    "transactions_12m": 47,
    "currency": "GBP"
  },
  "schools": {
    "within_1km": 6,
    "ofsted_outstanding": 2,
    "ofsted_good": 3
  },
  "transport": {
    "stops_500m": 12,
    "nearest_tube": "Westminster",
    "nearest_rail": "Victoria"
  },
  "broadband": {
    "avg_download_mbps": 148.3,
    "full_fibre_available": true
  },
  "census": {
    "source": "ONS Census 2021",
    "msoa_code": "E02000001",
    "tenure": {
      "owned_outright_pct": 28.4,
      "owned_mortgage_pct": 14.2,
      "private_rented_pct": 47.1
    },
    "age_bands": {
      "age_0_15_pct": 10.3,
      "age_16_29_pct": 24.7,
      "age_30_44_pct": 28.9
    },
    "ethnicity": {
      "white_british_pct": 38.2,
      "asian_pct": 14.6
    },
    "car_availability": {
      "no_car_pct": 52.3,
      "one_car_pct": 30.1
    }
  }
}

Built for area comparison use cases

One endpoint does the heavy lifting. You focus on the UI.

Property portals

Show area scores on listing pages — deprivation, transport, and schools at a glance. One call per listing, cached at the postcode level.

Mortgage & lending

Area risk scoring for underwriting. Deprivation, crime, and price trend data in a single structured payload. No stitching required.

Relocation tools

Compare areas side-by-side. School quality, commute links, safety scores, and price context — everything buyers ask about, pre-assembled.

Response fields

Field Type Description
deprivation.imd_rankintegerIMD 2019 national rank (1=most deprived, 32,844=least)
deprivation.imd_decileinteger1–10 decile (1=most deprived 10%)
crime.monthly_avgfloatAverage monthly crime incidents at this location (Police UK)
property_prices.avg_sale_priceintegerAverage sold price in this outcode over last 12 months (£)
schools.within_1kmintegerGIAS-registered schools within 1km of postcode centroid
schools.ofsted_outstandingintegerOfsted Outstanding-rated schools within 1km
transport.stops_500mintegerNaPTAN public transport stops within 500m
broadband.avg_download_mbpsfloatOfcom median download speed for this postcode (Mbps)
broadband.full_fibre_availablebooleanWhether FTTP is available at this postcode
census.sourcestringData source: "ONS Census 2021" (England & Wales; null for Scotland)
census.msoa_codestringONS MSOA area code covering this postcode (e.g. E02000001)
census.tenure.*_pctfloatTenure breakdown: owned outright, owned with mortgage, shared ownership, social rented, private rented, rent free (% of households)
census.age_bands.*_pctfloatAge distribution: 0–15, 16–29, 30–44, 45–64, 65+ (% of usual residents)
census.ethnicity.*_pctfloatEthnic group breakdown: White British, White other, Mixed, Asian, Black, other (% of usual residents)
census.car_availability.*_pctfloatHousehold car ownership: no car, one car, two or more cars (% of households)
census.occupation_ns_sec.*_pctfloatNS-SeC occupation: managerial/professional, intermediate, routine/manual, never worked (% of residents 16+)

Code examples

Python

import requests

res = requests.get(
    "https://api.homedata.co.uk/api/postcode-profile/",
    params={"postcode": "SW1A 2AA"},
    headers={"Authorization": "Api-Key YOUR_API_KEY"}
)
profile = res.json()
print(profile["sold_prices"]["median_sold_price"])
print(profile["schools"]["total"])
# Census 2021 demographics
census = profile.get("census") or {}
print(census.get("tenure", {}).get("private_rented_pct"))
print(census.get("ethnicity", {}).get("white_british_pct"))

JavaScript

const res = await fetch(
  "https://api.homedata.co.uk/api/postcode-profile/"
  + "?postcode=" + encodeURIComponent("SW1A 2AA"),
  { headers: { "Authorization": "Api-Key YOUR_API_KEY" } }
);
const profile = await res.json();
console.log(profile.transport.stops_500m);

Replace five API calls with one

Free tier included. No credit card. Takes two minutes to integrate.