200+ features for every GB postcode

Send a postcode, get back demographics, deprivation, crime, housing, broadband, and access scores. Plug the result into models for risk, pricing, or lead qualification.

See a sample response

What's in the response

Each call returns these field groups for any GB postcode. Field shape is stable across endpoints, so model code stays unchanged when you switch from single lookup to batch.

GB-wide coverage
Quarterly refresh
No personal data
OGL-compatible licensing

Demographics & households

Census 2021

Age bands, household composition, tenure mix, and dependants from Census 2021. Twenty plus columns covering who lives there and how they live.

Deprivation & income

IMD / WIMD / SIMD GB-wide

IMD score and decile for England, plus WIMD for Wales and SIMD for Scotland. Income, employment, education, health, and crime sub-domains exposed individually.

Housing & property

Land Registry

Council tax bands, EPC energy ratings, tenure mix, and rolling median price paid from HM Land Registry. Useful for mortgage and catchment work.

Crime & risk signals

Monthly refresh

Recorded offences within a one kilometre radius, broken out by category and rolling 12 month trend. Sourced from police.uk monthly drops.

police.uk open data

Broadband & mobile

Ofcom Connected Nations

Median fixed-line download speed, FTTP availability, and 4G/5G outdoor coverage from Ofcom Connected Nations.

Access & travel time

OS Open Roads

Drive time to nearest GP, A&E, primary school, secondary school, supermarket, and train station. Computed against Ordnance Survey Open Roads.

What a response looks like

A realistic shape for a single postcode. Field groups mirror the schema docs. Every group ships with an as_of date so you can audit freshness.

Request

GET /api/postcode/SW1A1AA HTTP/1.1
Host: scoring.akilima.tech
Authorization: Bearer ak_pcint_***

Response

200 OK
{
  "postcode": "SW1A 1AA",
  "geography": {
    "region": "London",
    "country": "England",
    "rural_urban": "A1 - Major conurbation",
    "lsoa": "E01004736",
    "lat": 51.5014,
    "lon": -0.1419
  },
  "demographics": {
    "population": 412,
    "households": 198,
    "median_age": 42.6,
    "single_person_pct": 0.48,
    "tenure_owned_pct": 0.31
  },
  "deprivation": {
    "imd_decile": 8,
    "imd_income_decile": 9,
    "imd_employment_decile": 9,
    "imd_crime_decile": 4
  },
  "housing": {
    "median_price_paid": 1850000,
    "council_tax_band_mode": "H",
    "epc_median_band": "C"
  },
  "crime_1km_12m": {
    "all_offences_per_1000": 78.2,
    "burglary_per_1000": 4.1,
    "violence_per_1000": 22.3,
    "trend": "declining"
  },
  "connectivity": {
    "median_download_mbps": 412,
    "fttp_available": true,
    "outdoor_5g_pct": 0.99
  },
  "access_minutes": {
    "gp": 2,
    "primary_school": 3,
    "train_station": 4,
    "a_and_e": 7
  },
  "risk": {
    "composite_score": 0.18,
    "flood_zone": "1"
  },
  "as_of": {
    "demographics": "2021-03-21",
    "crime": "2026-04-01",
    "housing": "2026-03-31"
  }
}

Three endpoints, one schema

Lookup, batch, or risk-only. Each call returns the same field shape so model code stays unchanged when you switch.

GET
/api/postcode/{postcode}

Single postcode lookup. Returns the full feature vector with provenance and as-of dates per group.

POST
/api/postcode/batch

Up to 1,000 postcodes per call. Same field shape as the single endpoint, returned as an array.

GET
/api/postcode/{postcode}/risk

Risk-only subset. Crime rates, deprivation deciles, flood zone, and a composite score. Cheaper per call.

Where teams use it

Postcode features sit alongside the features you already have, in models you already run.

Lead qualification

Score inbound enquiries before sales picks up the phone. Use deprivation deciles, income proxies, and access scores as model features.

Insurance pricing

Add postcode-level risk signals to motor, home, and contents pricing models without licensing a separate dataset.

Fraud and KYC

Flag postcodes that diverge from a customer's declared profile. Crime trend, mobility, and demographic mismatches make useful features.

Catchment and site selection

Quantify catchment for retail, healthcare, or service sites. Build models on access times, household composition, and density.

Mortgage and credit risk

Use property mix, EPC ratings, and IMD income sub-domain to enrich credit decisions. Postcode features sit alongside applicant features.

Geographic experimentation

Stratify A/B tests by postcode profile so you can read effects across deprivation deciles or rural-urban splits.

Sources and coverage

Every column comes from an attributed UK open-data source. Every response cites which one and how fresh it is.

Source Covers Refresh
ONS Census 2021 Demographics, households, tenure Decadal
MHCLG English IMD 2019 Deprivation deciles and sub-domains Periodic
Welsh Government WIMD Welsh deprivation deciles Periodic
Scottish Government SIMD Scottish deprivation deciles Periodic
HM Land Registry Price Paid Property prices Monthly
police.uk Recorded crime within radius Monthly
Ofcom Connected Nations Broadband and mobile coverage Biannual
OS Open Roads Drive times to amenities Biannual
Environment Agency Flood risk zone Quarterly

Coverage

1.7M+ live GB postcodes. England, Scotland, Wales.

Cadence

Monthly for crime and pricing. Quarterly for the full vector.

No PII

Aggregates only. Smallest attributed unit is the postcode (around 15 households).

How it fits

  • Send a postcode

    One GET call, or a batch of up to 1,000 in a POST. Auth is a scoped bearer token.

  • Get the feature vector

    Demographics, deprivation, housing, crime, connectivity, access, risk. Same shape on every call.

  • Score in your model

    Plug the response into your existing pipeline. Cache hits are free. Bulk usage rolls over to the dataset licence.

Questions buyers ask

Does it cover Northern Ireland?

No. Coverage is Great Britain only. NI uses a separate postcode authority and deprivation framework, and several of the upstream sources do not extend there. Get in touch if you need NI and we will scope it out.

How fresh is the data?

Crime and Land Registry pricing refresh monthly. Connectivity and Open Roads refresh twice a year. Census-derived columns are decadal. Each response includes an as_of block per group so you can audit freshness directly.

Is any of it personal data?

No. Every column is a postcode-level aggregate. The smallest unit attributed is the postcode itself, around 15 households on average. Nothing in the response identifies a person.

Can I license the full dataset rather than call the API?

Yes. We deliver the same schema as Parquet or CSV with monthly diffs. Pricing depends on the slice and refresh cadence you need.

Can I add custom features?

Often, yes. If you have a public source you want enriched onto every postcode (a flood model, a brand catchment, a custom risk score), we can add it as a private extension column for your account.

What about the open data licences underneath?

We respect each upstream licence. Most sources are OGL v3.0 with attribution. Ordnance Survey content is delivered under OS OpenData terms. Sources are attributed in every response and in our docs.

Get a token or a sample file

Tell us the slice you need. We can send a sample CSV or issue a scoped API token within a working day.