Replacing getAddress.io? Free drop-in replacement →
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 — deprivation score, crime rate, average sale price, 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
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
  }
}

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

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["property_prices"]["avg_sale_price"])
print(profile["schools"]["within_1km"])

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.