---
title: "A full profile of one property, from its address or UPRN"
method: GET
path: "/property"
---

# A full profile of one property, from its address or UPRN

`GET /property`

## Request

- Base URL: `https://api.propertydata.co.uk`
- URL: `https://api.propertydata.co.uk/property`
- Auth: HTTP bearer

Send exactly one of uprn or address. Returns sections (identity, title, building, sales, estimate, council_tax, constraints), each with a data_status describing our data, not the property: found, none_found, not_covered (outside the dataset's coverage) or unavailable (temporary failure; retry). The estimate is indexed: the last sale adjusted by local house price inflation, blended with EPC floor area x local sold price per sq ft. Costs 20 credits per call; 10 if any section is unavailable; 1 when no single property matches (error 4601 lists the candidate UPRNs). Coverage: England, Wales and Scotland (partial) only, not Northern Ireland.

## Query parameters

- `uprn` string
- `address` string

## Response `200`

Property profile by section

- object
  - `status` string
  - `api_calls_cost` integer
  - `uprn` string
  - `data` object
    - `identity` object
      - `data_status` 'found' | 'none_found' | 'not_covered' | 'unavailable'
      - `uprn` string
      - `address` string
      - `address_parts` object
      - `lat` string
      - `lng` string
      - `classification_code` string
      - `classification` string
      - `use_class` string
    - `title` object
      - `data_status` 'found' | 'none_found' | 'not_covered' | 'unavailable'
      - `titles` object[]
        - `title_number` string
        - `title_class` string
        - `tenure` string
        - `ownership` object
      - `registered_leases` object[]
    - `building` object
      - `data_status` 'found' | 'none_found' | 'not_covered' | 'unavailable'
      - `epc_certificate` string
      - `energy_rating` string
      - `energy_score` integer
      - `internal_area_sqf` integer
      - `habitable_rooms` integer
      - `estimated_bedrooms` integer
      - `property_type` string
      - `construction_age_band` string
      - `main_fuel` string
      - `floor_level` string
      - `epc_occupancy` string
    - `sales` object
      - `data_status` 'found' | 'none_found' | 'not_covered' | 'unavailable'
      - `transactions` object[]
        - `date` string
        - `price` integer
        - `transaction_id` string
    - `estimate` object
      - `data_status` 'found' | 'none_found' | 'not_covered' | 'unavailable'
      - `estimate` integer
      - `confidence` string
      - `method` object
    - `council_tax` object
      - `data_status` 'found' | 'none_found' | 'not_covered' | 'unavailable'
      - `band` string
      - `annual_charge` integer
    - `constraints` object: flood_risk, conservation_area, green_belt, aonb, national_park and listed_buildings_nearby, each an object with its own data_status

## Other responses

- `4XX`: Error response. Common codes: X02 missing key (400), X03 invalid key (422), X04 credit limit exceeded (403), X06/X07 missing or invalid location input (400/422), X08 insufficient data for location (404), X13 free trial limit exceeded (403), X14 rate limited (429), X20 server busy, retry after 60 seconds (503).

---

[API](https://skmtc.dev/propertydata/apis/propertydata-api.md) · [All operations](https://skmtc.dev/propertydata/apis/propertydata-api/llms.txt) · [OpenAPI document](https://skmtc.dev/propertydata/apis/propertydata-api/revisions/38ab011f2f4c?raw)
