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

GET/api/v1/property/attributes

Costs 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 headerMeaning
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

NameRequiredTypeDescription
uprnNostringUnique Property Reference Number. Use this, or postcode and address.
postcodeNostringUK postcode. Required with address when uprn is omitted.
addressNostringFirst 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.