Property intelligence
Property Attributes API
Get the construction age band, habitable rooms, built form, property type and floor area for one home, by UPRN or by postcode and address.
Endpoint
/api/v1/property/attributesCosts 1 credit. If a postcode and address match several homes, the response has multipleResults and one entry per home. No EPC returns 404 and is not charged. constructionYears gives the age band as a year range; from or to is null for open-ended bands such as "before 1900".
Billing details in the response
Successful chargeable JSON responses include a top-level billing object. The endpoint examples on this page focus on the endpoint-specific data, so this repeated block may not be shown in every example.
"billing": {
"mode": "prepaid",
"creditsCharged": 1,
"creditsRemaining": 1999,
"creditsRefreshAt": "2026-08-14T09:30:00.000Z"
}| Field or header | Meaning |
|---|---|
| billing.creditsCharged X-Credits-Charged | Credits charged by this call. Failed and non-chargeable calls return 0 in the header. |
| billing.creditsRemaining X-Credits-Remaining | The credit balance after the call. |
| billing.creditsRefreshAt X-Credits-Refresh-At | The next monthly credit refresh as an ISO 8601 timestamp. Trial and non-renewing balances return null and omit the header. |
All authenticated API-key calls expose the billing headers, including validation errors and zero-credit status or management requests. Only successful chargeable JSON responses add the billing object to the response body.
When credits run out
If your balance is lower than the cost of a request, the API returns HTTP 402 and charges nothing. The error includes the credits needed, your balance and a link to change plan.
{
"statusCode": 402,
"statusMessage": "Payment Required",
"data": {
"success": false,
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "This request costs 35 API credits. Upgrade your plan or wait for your monthly refresh: https://propertyinsights.co.uk/billing",
"required": 35,
"available": 12,
"upgradeUrl": "https://propertyinsights.co.uk/billing"
}
}
}Parameters
| Name | Required | Type | Description |
|---|---|---|---|
| uprn | No | string | Unique Property Reference Number. Use this, or postcode and address. |
| postcode | No | string | UK postcode. Required with address when uprn is omitted. |
| address | No | string | First line of the address. Required with postcode when uprn is omitted. |
Source and coverage
- Source
- Latest domestic Energy Performance Certificate from the GOV.UK EPC register, read live
- Coverage
- England and Wales homes with a domestic EPC
Homes that have never had an EPC are not covered. Age bands and room counts are recorded by the energy assessor, not measured from building records.
Example request
curl -X GET "https://propertyinsights.co.uk/api/v1/property/attributes?postcode=ZZ1%201ZZ&address=12%20Sample%20Road" \
-H "x-api-key: YOUR_API_KEY"Example response
{
"success": true,
"data": {
"source": "EPC",
"result": {
"uprn": "100000000001",
"address": "12 Sample Road, Exampletown",
"postcode": "ZZ1 1ZZ",
"propertyType": "House",
"builtForm": "Semi-Detached",
"constructionAgeBand": "England and Wales: 1930-1949",
"constructionYears": {
"from": 1930,
"to": 1949
},
"habitableRooms": 5,
"heatedRooms": 5,
"floorAreaSqm": 96,
"floorAreaSqft": 1033,
"epc": {
"certificateNumber": "0000-0000-0000-0000-0001",
"currentRating": "D",
"inspectionDate": "2024-05-14",
"lodgementDate": "2024-05-16"
}
}
}
}OpenAPI specification
Authentication, parameters, billing headers and response schemas are also published in the machine-readable OpenAPI documents in JSON and YAML.