Authentication
Send X-RapidAPI-Key and X-RapidAPI-Host on RapidAPI. A direct call sends X-API-Key.
GET /v1/reports/health is public and returns {"status":"ok","version":"1.0.0","service":"property-report-api"}.
Report
GET /v1/reports
Send uprn or address. If both are sent, uprn is used. A section is null when that property has no row for it. An empty list is not used.
| Parameter | Type | Values |
|---|---|---|
uprn | string | Unique property reference number, digits only. Example 100012345678. |
address | string | A UK address that includes the postcode. Example 10 High Street, London W5 2AB. URL-encode the value. |
GET /v1/reports?uprn=100012345678 GET /v1/reports?address=10%20High%20Street%2C%20London%20W5%202AB
The same UPRN can be served from a short-lived cache, so a repeat call within an hour can return the previous file.
A UPRN made only of digits is accepted even when this service holds nothing for it. The response is then 200 and every section is null. An address that does not match is 404, and no report is returned.
data always has these keys:
| Field | Meaning |
|---|---|
uprn | The reference number the report was built for. |
epc | Energy certificate, or null. address1, address2, address3 and postcode are the matched certificate address. |
listing | Latest listing for this UPRN, or null. |
planning | Up to 20 planning applications, newest start_date first, or null. |
sold_prices | Up to 8 Land Registry sales, newest first, or null. England and Wales. |
amenities | Nearest places for the certificate or listing postcode, or null. |
area | Local authority figures, or null when the postcode has no authority code. |
attribution | Licence line for the file. See Attribution. |
The report does not include company ownership.
Address match
The address is matched to an energy-certificate address for that postcode. Send the building number and the street. A street name on its own can match a different property on that street.
The postcode is the last UK postcode in the string, for example W5 2AB, SW1A 1AA or EC1A 1BB. Spaces and case do not matter. An address with no postcode, or a postcode with no property text, is 400.
Listing
The latest listing stored for this UPRN. It can already be off the market. on_market is true only while that listing is still active.
| Field | Meaning |
|---|---|
property_id | Listing id. |
source_type | Channel code stored on the listing. |
display_address, post_code, out_code | Address on the listing. |
price | Asking price in pounds, or the advertised rent figure. |
bedrooms, bathrooms | Counts from the listing. May be null. |
type | Property type stored on the listing. |
tenure | Tenure stored on the listing. May be null. |
floor_area | Floor area stored on the listing, in square metres. |
transaction_type | Stored sale or rent marker, for example buy or rent. |
first_visible_date, listing_update_date, property_off_market_date | ISO 8601 timestamps, or null. |
chain_free | true, false, or null. |
pending_lease_years | Remaining lease in years, or null. |
on_market | true when this listing is currently active. |
Energy certificate
The latest lodged certificate for this UPRN. Dates are the text stored on the certificate, usually YYYY-MM-DD. Costs are pounds per year. Floor area is square metres. Efficiency numbers are the certificate scores.
| Field | Meaning |
|---|---|
uprn, address1, address2, address3, postcode | Certificate identity and address. |
current_energy_rating, potential_energy_rating | Bands, for example C and B. |
current_energy_efficiency, potential_energy_efficiency | Current and potential scores. |
property_type, built_form | Certificate property type and built form. |
inspection_date, lodgement_date | Inspection and lodgement dates. |
total_floor_area | Total floor area, square metres. |
main_heating_controls, energy_tariff | Heating controls and tariff text. |
heating_cost_current, heating_cost_potential | Current and potential heating cost, pounds per year. |
hot_water_cost_current, lighting_cost_current | Current hot-water and lighting cost, pounds per year. |
co2_emissions_current | Current CO2 emissions on the certificate. |
local_authority | Authority code stored on the certificate. |
Planning
Applications matched to this UPRN, at most 20, ordered by start_date descending. Dates and the decision text are stored as text.
| Field | Meaning |
|---|---|
reference | Council application reference. |
address, postcode, uprn | Site as recorded on the application. |
area_name | Planning authority name. |
description | Proposal text. |
app_type, app_size, app_state | Type, size and state stored on the application. |
start_date, decided_date | Received and decided dates. |
decision | Decision text. |
Sold prices
HM Land Registry price paid transactions for this property, at most 8, newest transaction_date first. Sales are read for the postcode, then kept when the house number and street match, or when the sale already carries this UPRN. An older sale often has no UPRN. These are completed sales in England and Wales. They are not rents.
| Field | Meaning |
|---|---|
price_paid | Price paid, pounds. |
transaction_date | YYYY-MM-DD. |
address_1, address_2, street, town, post_code | Address on the transaction. address_2 is the flat or unit when the sale has one. |
Amenities
Nearest places for the property postcode. The certificate postcode is used when the certificate exists. Otherwise the listing postcode is used. The report asks for the nearest 3 of every kind, with no distance cap. This call has no kinds or radius_m parameter.
distance_m is straight-line metres, not a walking or driving distance. name can be null. Each list is nearest first. A kind with nothing nearby is an empty list.
{
"postcode": "W5 2AB",
"location": { "lat": 51.513, "lon": -0.305 },
"amenities": {
"gp": [
{ "name": "Example Surgery", "distance_m": 89, "lat": 51.5125, "lon": -0.306, "source": "osm", "ref": "n3" }
]
},
"attribution": "© OpenStreetMap contributors (ODbL). Contains public sector information licensed under the Open Government Licence v3.0."
}
Kinds: school, college, university, train_station, tube_station, bus_stop, int_airport, hospital, pharmacy, gp, dentist, supermarket, restaurant, pub, nursery, playground, parking, community_centre, place_of_worship, place_of_worship_christianity, place_of_worship_islam, place_of_worship_hinduism, place_of_worship_buddhism, place_of_worship_judaism, place_of_worship_sikhism, place_of_worship_multifaith, care_home, nursing_home.
source is osm, cqc, or care-inspectorate. ref identifies the place in that source. Neither value is stable enough to store as a key.
Local authority
Figures for the local authority of the property postcode. A metric is null when that authority has no row. Percentages are numbers, not strings with a % sign.
| Field | Meaning |
|---|---|
laua | Local authority code, for example E09000007. |
ward | Ward code for the postcode, or null. |
sale_price_change_12m_pct | Change in mean asking sale price over the last 12 monthly observations, percent. |
asking_rent_change_12m_pct | Change in mean asking rent over the last 12 monthly observations, percent. This is asking rent, not a rent achieved at completion. |
gross_yield_pct | Gross yield: annualised asking rent divided by asking sale price, percent. |
hpi_change_12m_pct | UK House Price Index 12-month change for this authority code. |
asking_vs_achieved_sale_pct | Average of (asking price − price paid) / asking price × 100 for sales in the last year. A positive number means the asking price was above the price paid. This is a sale comparison. There is no achieved-rent figure. |
asking_vs_achieved_sales | Number of sales in that average. England and Wales. |
sale_days_on_market | Average days from listing to sale for homes added in the latest month. England only. |
let_days_on_market | Average days from listing to let for homes added in the latest month. England only. |
article4_listing_pct | Share of current residential sale listings in this authority that are flagged inside an Article 4 direction. |
inside_article_four | true or false for this property’s own listing. Present when the listing has the flag. |
planning_approval_pct | Share of decided applications approved by the planning authority named on this property’s applications, over five years. Present when that authority has a summary. |
planning_decided | Number of decided applications in that rate. |
planning_authority | Authority name used for the approval rate. |
lsoa, msoa | Lower and middle layer area codes for the postcode. |
income | Annual income for the middle-layer area: total_annual_income, net_annual_income, and net income before and after housing. Pounds. This is the area, not this household. |
deprivation | Index of Multiple Deprivation for the lower-layer area: rank, percentile, and decile. Decile 1 is the most deprived tenth. |
population | Local authority population, median age, people per square kilometre, and the share aged 16 to 64 and 65 or over. ethnicity_2011 is the stored 2011 census mix. |
classification | Output area classification codes and summary for the postcode’s output area. |
crime | total and by_type for crimes recorded against this postcode. Null when the postcode has no rows in the held statistics. |
flood_risk | Flood risk text stored for the postcode, or absent. |
Attribution
Show data.attribution wherever you display a report. When amenities are included, also show data.amenities.attribution. Both are a licence condition.
The amenities line is: © OpenStreetMap contributors (ODbL). Contains public sector information licensed under the Open Government Licence v3.0.
Sold prices contain HM Land Registry data © Crown copyright and database right. Energy certificates and the house price index contain public sector information licensed under the Open Government Licence v3.0.
Example
{
"data": {
"uprn": "100012345678",
"epc": {
"uprn": "100012345678",
"address1": "10 High Street",
"address2": "",
"address3": "",
"postcode": "W5 2AB",
"current_energy_rating": "C",
"potential_energy_rating": "B",
"current_energy_efficiency": 72,
"potential_energy_efficiency": 84,
"property_type": "House",
"built_form": "Mid-Terrace",
"inspection_date": "2024-06-01",
"lodgement_date": "2024-06-12",
"total_floor_area": 86,
"main_heating_controls": "Programmer, room thermostat and TRVs",
"energy_tariff": "Single",
"heating_cost_current": 640,
"heating_cost_potential": 410,
"hot_water_cost_current": 120,
"lighting_cost_current": 80,
"co2_emissions_current": 3.2,
"local_authority": "Ealing"
},
"listing": {
"property_id": 175004483,
"source_type": "RM",
"display_address": "10 High Street",
"post_code": "W5 2AB",
"out_code": "W5",
"price": 650000,
"bedrooms": 3,
"bathrooms": 1,
"type": "Terraced",
"tenure": "Freehold",
"floor_area": 86,
"transaction_type": "buy",
"first_visible_date": "2026-07-22T00:00:00+00:00",
"listing_update_date": "2026-08-06T00:00:00+00:00",
"property_off_market_date": null,
"chain_free": true,
"pending_lease_years": null,
"on_market": true
},
"planning": [
{
"reference": "241234FUL",
"address": "10 High Street",
"postcode": "W5 2AB",
"uprn": "100012345678",
"area_name": "Ealing",
"description": "Single storey rear extension",
"app_type": "Full",
"app_size": "Small",
"app_state": "Permitted",
"start_date": "2024-03-01",
"decision": "Approved",
"decided_date": "2024-05-20"
}
],
"sold_prices": [
{
"price_paid": 510000,
"transaction_date": "2019-04-12",
"address_1": "10",
"street": "HIGH STREET",
"town": "LONDON",
"post_code": "W5 2AB"
}
],
"amenities": null,
"area": {
"sale_price_change_12m_pct": 1.2,
"asking_rent_change_12m_pct": 3.4,
"gross_yield_pct": 4.8,
"hpi_change_12m_pct": 2.1,
"asking_vs_achieved_sale_pct": -3.4,
"asking_vs_achieved_sales": 840,
"sale_days_on_market": 42,
"let_days_on_market": 18,
"article4_listing_pct": 6.5,
"laua": "E09000009",
"ward": "E05013526",
"inside_article_four": false,
"planning_approval_pct": 71.2,
"planning_decided": 1200,
"planning_authority": "Ealing"
},
"attribution": "Contains public sector information licensed under the Open Government Licence v3.0."
}
}
Errors
| Status | Body | When |
|---|---|---|
| 400 | {"error":"send uprn or address"} | Neither parameter was sent. |
| 400 | {"error":"uprn must be digits"} | uprn contains a character other than 0–9. |
| 400 | {"error":"address must include a UK postcode"} | The address has no postcode. |
| 400 | {"error":"address must include a property as well as the postcode"} | The address is only a postcode. |
| 401 | {"error":"unauthorized"} | The caller is not authorised. Health and this page are exempt. |
| 404 | {"error":"no property matched that address"} | The address did not match a certificate. No report is returned. |