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"
const res = await fetch(
"https://api.homedata.co.uk/epc-checker/10093609154/",
{ headers: { Authorization: "Api-Key YOUR_API_KEY" } }
);
const epc = await res.json();
console.log(epc.current_energy_rating); // "B"
console.log(epc.current_energy_efficiency); // 84
import requests
res = requests.get(
"https://api.homedata.co.uk/epc-checker/10093609154/",
headers={"Authorization": "Api-Key YOUR_API_KEY"},
)
epc = res.json()
print(epc["current_energy_rating"]) # "B"
print(epc["current_energy_efficiency"]) # 84
{
"uprn": 10093609154,
"current_energy_efficiency": 84,
"potential_energy_efficiency": 84,
"current_energy_rating": "B",
"potential_energy_rating": "B",
"last_epc_date": "2020-07-28",
"epc_floor_area": 59,
"construction_age_band": "2007-2011",
"epc_id": "1813679032512020072814144822200478"
}
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.
EPC by UPRN1 token
The latest certificate for that UPRN, in the fields below.
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
curl https://api.homedata.co.uk/epc-checker/UPRN_FROM_STEP_1/ \ -H "Authorization: Api-Key YOUR_API_KEY"
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.
| Field | Type | What it is |
|---|---|---|
| uprn | integer | The property UPRN you asked for. |
| current_energy_rating | string|null | Current EPC rating as the A–G letter. |
| current_energy_efficiency | integer|null | Current energy efficiency score, 1–100 (the SAP score on the certificate). |
| potential_energy_rating | string|null | The A–G letter the home could reach with the recommended improvements. |
| potential_energy_efficiency | integer|null | The score the home could reach with the recommended improvements, 1–100. |
| last_epc_date | string|null | Date the latest certificate was lodged, YYYY-MM-DD. Certificates are valid for 10 years. |
| epc_floor_area | float|null | Total floor area in square metres, from the assessor’s survey. |
| construction_age_band | string|null | Build period band from the certificate, e.g. "2007-2011". |
| epc_id | string|null | Certificate 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.
OKThe EPC record. A UPRN with no certificate on the register comes back with the EPC fields null.invalid_uprnThe UPRN is empty or malformed. Costs nothing.insufficient_tokensYour balance is lower than the call costs. Top up and retry.INVALID_API_KEYNo key, or a wrong or revoked one. Send it as Authorization: Api-Key YOUR_API_KEY.not_foundWe hold no record of that UPRN. Final, so don’t retry. Costs nothing.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.
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.