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

Developers/ EPC API

The EPC API for lookups by UPRN or address

One GET returns a home’s EPC register record as JSON: current and potential rating, score, floor area, construction age and certificate date. Send a UPRN, or resolve an address to one first. Authenticate with your API key.

GET /epc-checker/{uprn}/ · 1 token (1p) a call · England and Wales

curl https://api.homedata.co.uk/epc-checker/10093609154/ \
  -H "Authorization: Api-Key YOUR_API_KEY"

Quick start. Swap YOUR_API_KEY for your own key.

Request

By UPRN or by address

The EPC endpoint takes a UPRN. If you only have an address, match it to its UPRN first, then ask for the EPC: two calls, both with the same key.

GET/epc-checker/{uprn}/

EPC by UPRN1 token

The latest certificate for that UPRN, in the fields below.

GET/address/match/

Address to UPRN5 tokens

Pass an address and postcode, get back the matched address and its UPRN. No match costs nothing.

curl --get https://api.homedata.co.uk/address/match/ \
  --data-urlencode "address=10 Downing Street" \
  --data-urlencode "postcode=SW1A 2AA" \
  -H "Authorization: Api-Key YOUR_API_KEY"
# 200: the matched address with its uprn
# 422: no_match or multiple_matches, costs nothing

Run this on your own key.

100 tokens = £1 · Top up from £20 · First payment matched 100%.

Response

The fields you get back

Every field but the UPRN can be null. The *_rating fields are the A–G letters; the *_energy_efficiency fields are the 1–100 scores behind them.

FieldTypeWhat it is
uprnintegerThe property UPRN you asked for.
current_energy_ratingstring|nullCurrent EPC rating as the A–G letter.
current_energy_efficiencyinteger|nullCurrent energy efficiency score, 1–100 (the SAP score on the certificate).
potential_energy_ratingstring|nullThe A–G letter the home could reach with the recommended improvements.
potential_energy_efficiencyinteger|nullThe score the home could reach with the recommended improvements, 1–100.
last_epc_datestring|nullDate the latest certificate was lodged, YYYY-MM-DD. Certificates are valid for 10 years.
epc_floor_areafloat|nullTotal floor area in square metres, from the assessor’s survey.
construction_age_bandstring|nullBuild period band from the certificate, e.g. "2007-2011".
epc_idstring|nullCertificate reference on the register.

Errors and coverage

What comes back when it can’t answer

Branch on the HTTP status first, then on error.code, compared without case. Only a served response is charged.

200 · OKThe EPC record. A UPRN with no certificate on the register comes back with the EPC fields null.
400 · invalid_uprnThe UPRN is empty or malformed. Costs nothing.
402 · insufficient_tokensYour balance is lower than the call costs. Top up and retry.
403 · INVALID_API_KEYNo key, or a wrong or revoked one. Send it as Authorization: Api-Key YOUR_API_KEY.
404 · not_foundWe hold no record of that UPRN. Final, so don’t retry. Costs nothing.
5xx · server errorRetry with backoff. Costs nothing.

Coverage: the EPC register for England and Wales, 23M certificates, with new ones pulled in every night. Scotland and Northern Ireland keep their own registers and are not included.

Pricing

Pay per call from your token wallet

No subscription. Top up your wallet and each served call takes its tokens. 100 tokens = £1.

EPC lookupGET /epc-checker/{uprn}/
1 token · 1p
Address to UPRNGET /address/match/
5 tokens · 5p
Errors, no match, unknown UPRNAny 4xx except 402, and any 5xx
Costs nothing

The dataset

Need the whole dataset?

Coverage, update cadence, sample records and bulk CSV files are on the data page.

Get an API key

Sign up, top up your wallet and make your first EPC call in minutes.