Docs for AI

Machine-readable API documentation designed for AI assistants, large language models, and automated integrations.

What is the OpenAPI format?

A standardised JSON schema that describes our API endpoints, parameters, and responses. Use this with tools that support OpenAPI specs, such as ChatGPT's custom GPT builder, or for generating API client libraries.

OpenAPI Specification

{
  "openapi": "3.1.0",
  "info": {
    "title": "PropertyData API",
    "description": "Comprehensive UK property market data API. Provides prices, rents, sold prices, crime statistics, flood risk, planning applications, and much more. Note: This schema includes our 30 most popular endpoints. For access to all endpoints, use the API directly or our MCP Server.",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://api.propertydata.co.uk"
    }
  ],
  "components": {
    "schemas": {},
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  },
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "paths": {
    "/sold-prices-per-sqf": {
      "get": {
        "operationId": "getSoldPricesPerSqf",
        "summary": "Get local property sold prices per square foot",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          },
          {
            "name": "town",
            "in": "query",
            "description": "UK town name",
            "schema": { "type": "string" }
          },
          {
            "name": "points",
            "in": "query",
            "description": "Number of comparable properties",
            "schema": { "type": "integer" }
          },
          {
            "name": "min_sqf",
            "in": "query",
            "description": "Minimum square footage filter",
            "schema": { "type": "integer" }
          },
          {
            "name": "max_sqf",
            "in": "query",
            "description": "Maximum square footage filter",
            "schema": { "type": "integer" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/prices": {
      "get": {
        "operationId": "getPrices",
        "summary": "Get live local asking prices",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode (full, sector or district)",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          },
          {
            "name": "town",
            "in": "query",
            "description": "UK town name",
            "schema": { "type": "string" }
          },
          {
            "name": "bedrooms",
            "in": "query",
            "description": "Filter by number of bedrooms (0-10)",
            "schema": { "type": "integer" }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Property type (flat, terraced, semi-detached, detached, house)",
            "schema": { "type": "string" }
          },
          {
            "name": "points",
            "in": "query",
            "description": "Number of comparable properties to analyse (15-100, default 20)",
            "schema": { "type": "integer" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/freeholds": {
      "get": {
        "operationId": "getFreeholds",
        "summary": "Get local freehold titles with headline info",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/rents": {
      "get": {
        "operationId": "getRents",
        "summary": "Get live local long-let asking rents",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          },
          {
            "name": "town",
            "in": "query",
            "description": "UK town name",
            "schema": { "type": "string" }
          },
          {
            "name": "bedrooms",
            "in": "query",
            "description": "Filter by number of bedrooms",
            "schema": { "type": "integer" }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Property type",
            "schema": { "type": "string" }
          },
          {
            "name": "points",
            "in": "query",
            "description": "Number of comparable properties",
            "schema": { "type": "integer" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/title": {
      "get": {
        "operationId": "getTitle",
        "summary": "Get address, type and ownership information by title number",
        "parameters": [
          {
            "name": "title_number",
            "in": "query",
            "description": "Land Registry title number",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/crime": {
      "get": {
        "operationId": "getCrime",
        "summary": "Get local crime statistics",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          },
          {
            "name": "town",
            "in": "query",
            "description": "UK town name",
            "schema": { "type": "string" }
          },
          {
            "name": "radius",
            "in": "query",
            "description": "Search radius in kilometres (0.1-3, default 0.4)",
            "schema": { "type": "number" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/planning-applications": {
      "get": {
        "operationId": "getPlanningApplications",
        "summary": "Get local planning applications",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "Full UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          },
          {
            "name": "category",
            "in": "query",
            "description": "Filter by application category",
            "schema": { "type": "string" }
          },
          {
            "name": "max_age",
            "in": "query",
            "description": "Maximum age of applications in days (14-1500)",
            "schema": { "type": "integer" }
          },
          {
            "name": "decision_rating",
            "in": "query",
            "description": "Filter by outcome (positive, negative, neutral)",
            "schema": { "type": "string" }
          },
          {
            "name": "results",
            "in": "query",
            "description": "Number of results to return (10-200)",
            "schema": { "type": "integer" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/flood-risk": {
      "get": {
        "operationId": "getFloodRisk",
        "summary": "Get flood risk assessment for English locations",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "Full UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/council-tax": {
      "get": {
        "operationId": "getCouncilTax",
        "summary": "Get council tax information for a postcode",
        "description": "Returns council tax by band (A-H, plus I for Wales) and individual property bands. Not available in Northern Ireland.",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "Full UK postcode",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/yields": {
      "get": {
        "operationId": "getYields",
        "summary": "Determine local rental yields",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          },
          {
            "name": "town",
            "in": "query",
            "description": "UK town name",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/schools": {
      "get": {
        "operationId": "getSchools",
        "summary": "Get nearby schools",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          },
          {
            "name": "town",
            "in": "query",
            "description": "UK town name",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/build-cost": {
      "get": {
        "operationId": "getBuildCost",
        "summary": "Calculate building costs for construction",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          },
          {
            "name": "town",
            "in": "query",
            "description": "UK town name",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/household-income": {
      "get": {
        "operationId": "getHouseholdIncome",
        "summary": "Get average household income for an area",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          },
          {
            "name": "town",
            "in": "query",
            "description": "UK town name",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/valuation-sale": {
      "get": {
        "operationId": "getValuationSale",
        "summary": "Get sale valuation for a property",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "Full UK postcode",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "name": "internal_area",
            "in": "query",
            "description": "Internal area in square feet",
            "schema": { "type": "integer" }
          },
          {
            "name": "property_type",
            "in": "query",
            "description": "Property type",
            "schema": { "type": "string" }
          },
          {
            "name": "construction_date",
            "in": "query",
            "description": "Construction date or period",
            "schema": { "type": "string" }
          },
          {
            "name": "bedrooms",
            "in": "query",
            "description": "Number of bedrooms",
            "schema": { "type": "integer" }
          },
          {
            "name": "bathrooms",
            "in": "query",
            "description": "Number of bathrooms",
            "schema": { "type": "integer" }
          },
          {
            "name": "finish_quality",
            "in": "query",
            "description": "Finish quality",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/demographics": {
      "get": {
        "operationId": "getDemographics",
        "summary": "Get local population demographics data",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          },
          {
            "name": "town",
            "in": "query",
            "description": "UK town name",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/area-type": {
      "get": {
        "operationId": "getAreaType",
        "summary": "Determine area type (rural or urban)",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "town",
            "in": "query",
            "description": "UK town name",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/prices-per-sqf": {
      "get": {
        "operationId": "getPricesPerSqf",
        "summary": "Get live local asking prices per square foot",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          },
          {
            "name": "town",
            "in": "query",
            "description": "UK town name",
            "schema": { "type": "string" }
          },
          {
            "name": "points",
            "in": "query",
            "description": "Number of comparable properties",
            "schema": { "type": "integer" }
          },
          {
            "name": "min_sqf",
            "in": "query",
            "description": "Minimum square footage filter",
            "schema": { "type": "integer" }
          },
          {
            "name": "max_sqf",
            "in": "query",
            "description": "Maximum square footage filter",
            "schema": { "type": "integer" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/internet-speed": {
      "get": {
        "operationId": "getInternetSpeed",
        "summary": "Get internet speeds for a UK postcode",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "Full UK postcode",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/sold-prices": {
      "get": {
        "operationId": "getSoldPrices",
        "summary": "Get local property sold prices",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          },
          {
            "name": "town",
            "in": "query",
            "description": "UK town name",
            "schema": { "type": "string" }
          },
          {
            "name": "bedrooms",
            "in": "query",
            "description": "Filter by number of bedrooms",
            "schema": { "type": "integer" }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Property type",
            "schema": { "type": "string" }
          },
          {
            "name": "points",
            "in": "query",
            "description": "Number of comparable properties",
            "schema": { "type": "integer" }
          },
          {
            "name": "max_age",
            "in": "query",
            "description": "Maximum age of sold prices in months",
            "schema": { "type": "integer" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/title-use-class": {
      "get": {
        "operationId": "getTitleUseClass",
        "summary": "Get predicted planning use class for a title",
        "parameters": [
          {
            "name": "title_number",
            "in": "query",
            "description": "Land Registry title number",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/demand": {
      "get": {
        "operationId": "getDemand",
        "summary": "Determine local property sales demand",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          },
          {
            "name": "town",
            "in": "query",
            "description": "UK town name",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/growth": {
      "get": {
        "operationId": "getGrowth",
        "summary": "Get up to 7-year capital growth data",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          },
          {
            "name": "town",
            "in": "query",
            "description": "UK town name",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/valuation-rent": {
      "get": {
        "operationId": "getValuationRent",
        "summary": "Get rental valuation for a property",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "Full UK postcode",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "name": "internal_area",
            "in": "query",
            "description": "Internal area in square feet",
            "schema": { "type": "integer" }
          },
          {
            "name": "property_type",
            "in": "query",
            "description": "Property type",
            "schema": { "type": "string" }
          },
          {
            "name": "bedrooms",
            "in": "query",
            "description": "Number of bedrooms",
            "schema": { "type": "integer" }
          },
          {
            "name": "bathrooms",
            "in": "query",
            "description": "Number of bathrooms",
            "schema": { "type": "integer" }
          },
          {
            "name": "finish_quality",
            "in": "query",
            "description": "Finish quality",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/uprn-title": {
      "get": {
        "operationId": "getUprnTitle",
        "summary": "Lookup a title number from a UPRN",
        "parameters": [
          {
            "name": "uprn",
            "in": "query",
            "description": "Unique Property Reference Number",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/uprn": {
      "get": {
        "operationId": "getUprn",
        "summary": "Get property information from UPRN",
        "parameters": [
          {
            "name": "uprn",
            "in": "query",
            "description": "Unique Property Reference Number",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/address-match-uprn": {
      "get": {
        "operationId": "getAddressMatchUprn",
        "summary": "Match an address to its UPRN",
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "description": "Full UK property address including postcode",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/conservation-area": {
      "get": {
        "operationId": "getConservationArea",
        "summary": "Check if location is within a conservation area",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          },
          {
            "name": "town",
            "in": "query",
            "description": "UK town name",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/stamp-duty-calculator": {
      "get": {
        "operationId": "getStampDutyCalculator",
        "summary": "Calculate SDLT payable on a property transaction",
        "parameters": [
          {
            "name": "price",
            "in": "query",
            "description": "Purchase price",
            "required": true,
            "schema": { "type": "integer" }
          },
          {
            "name": "buyer_type",
            "in": "query",
            "description": "Buyer type (first_time, home_mover, additional, non_resident)",
            "schema": { "type": "string" }
          },
          {
            "name": "country",
            "in": "query",
            "description": "Country (england, wales, scotland)",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/demand-rent": {
      "get": {
        "operationId": "getDemandRent",
        "summary": "Determine local property rental demand",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          },
          {
            "name": "town",
            "in": "query",
            "description": "UK town name",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/rents-hmo": {
      "get": {
        "operationId": "getRentsHmo",
        "summary": "Get live local HMO room rental prices",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "UK postcode",
            "schema": { "type": "string" }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Latitude,longitude coordinates",
            "schema": { "type": "string" }
          },
          {
            "name": "town",
            "in": "query",
            "description": "UK town name",
            "schema": { "type": "string" }
          },
          {
            "name": "points",
            "in": "query",
            "description": "Number of comparable rooms to analyse",
            "schema": { "type": "integer" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    }
  }
}

Direct link: /openapi.json

How PropertyData can help you

PropertyData investor illustration

Be a smarter property investor using data

Some of the ways property investors use PropertyData to boost their returns

I'm an investor
PropertyData data illustration

Make data-driven development decisions

How property developers can use market research in decision-making

I'm a developer
PropertyData clients illustration

Save time and impress your clients with data

How agents can use PropertyData to gain an edge on the competition

I'm an agent

Limit reached

Sorry, you've reached your monthly search limit.

Upgrade your plan for more searches.

Upgrade

Upgrade to download PDFs

There are many places in PropertyData to export data as well-formatted PDF files, including Local Data, Plot Map, Valuations, property reports and more.

  Download PDFs Branded PDFs
Basic
Standard
Pro
Unlimited
Start your free trial now

Transparent data promise

Where does the raw data come from?

Property listings seen on rightmove.co.uk, zoopla.co.uk and onthemarket.com.

How often is the data updated?

The data is updated in near real-time.

What time period does the data cover?

This is a real-time market snapshot - the data covers currently listed properties. Once properties are removed from the portal, they are soon removed from this tab.

How is the raw data processed?

Duplicates from multiple sources are matched and reconciled as far as possible. Listings with obvious errors, where price or number or bedrooms appear out of range, are discarded.

What are the statistics used?

Averages shown are the interquartile mean, a type of average that is insensitive to outliers while being its own distinct parameter. The 80% range means that 80% of the listed properties fall inside this range.

Where does the raw data come from?

Property listings seen on rightmove.co.uk, zoopla.co.uk and onthemarket.com.

How do you know the square footage of properties?

We use proprietary technology to read the square footage of properties from agent floorplans. Although we cannot determine the square footage for all properties, we can usually get sufficient coverage. Agents are sometimes known to inflate square footage, and this should be borne in mind as a weakness of this data.

How often is the data updated?

The data is updated in near real-time.

What time period does the data cover?

This is a real-time market snapshot - the data covers currently listed properties. Once properties are removed from the portal, they are soon removed from this tab.

How is the raw data processed?

Duplicates from multiple sources are matched and reconciled as far as possible. Listings with obvious errors, where price or number or bedrooms appear out of range, are discarded.

What are the statistics used?

The average shown is the interquartile mean, a type of average that is insensitive to outliers while being its own distinct parameter. The 80% range means that 80% of the listed properties fall inside this range.

Where does the raw data come from?

Property "price paid" data provided by the Land Registry.

How often is the data updated?

Once per month when released by the Land Registry, typically towards the end of each calendar month covering up to the end of the previous calendar month.

What time period does the data cover?

You can customise the time period using the filter at the top of the view. The default time period is up to 9 months back from today's date. The latest data covers the period up to 2025-12-24, although some sales that took place before this date may still be added in the coming months.

How is the raw data processed?

No additional processes are applied to this data.

What are the statistics used?

Averages shown are the interquartile mean, a type of average that is insensitive to outliers while being its own distinct parameter. The 80% range means that 80% of the listed properties fall inside this range.

Where does the raw data come from?

Property "price paid" data provided by the Land Registry, and Energy Performance Certificate (EPC) data provided by MHCLG.

How do you know the square footage of properties?

We match the Land Registry data to EPC data provided by MHCLG. Due to the fact that not all properties sold have had an EPC and vagaries of addressing in the UK, we are not able to determine the square footage of all properties, but we can usually get sufficient coverage.

How often is the data updated?

The private paid data is updated once per month when released by the Land Registry, typically towards the end of each calendar month covering up to the end of the previous calendar month. The energy performance certificate database is updated monthly.

What time period does the data cover?

You can customise the time period using the filter at the top of the view. The default time period is up to 9 months back from today's date. The latest data covers the period up to 2025-12-24, although some sales that took place before this date may still be added in the coming months.

How is the raw data processed?

No additional processes are applied to this data.

What are the statistics used?

The average shown is the interquartile mean, a type of average that is insensitive to outliers while being its own distinct parameter. The 80% range means that 80% of the listed properties fall inside this range.

Where does the raw data come from?

Property listings seen on rightmove.co.uk, zoopla.co.uk and onthemarket.com.

How often is the data updated?

The data is updated in near real-time.

What time period does the data cover?

This is a real-time market snapshot - the data covers currently listed properties. Once properties are removed from the portal, they are soon removed from this tab.

How is the raw data processed?

Duplicates from multiple sources are matched and reconciled as far as possible. Listings with obvious errors, where price or number or bedrooms appear out of range, are discarded.

What are the statistics used?

The average shown is the interquartile mean, a type of average that is insensitive to outliers while being its own distinct parameter. The 80% range means that 80% of the listed properties fall inside this range.

Where does the raw data come from?

Room let listings on SpareRoom, the UK's biggest room letting website.

How often is the data updated?

The data is updated in near real-time.

What time period does the data cover?

This is a real-time market snapshot - the data covers currently listed properties. Once properties are removed from SpareRoom, they are soon removed from this tab.

How is the raw data processed?

Listings with obvious errors, where price or number or bedrooms appear out of range, are discarded.

What are the statistics used?

The average shown is the interquartile mean, a type of average that is insensitive to outliers while being its own distinct parameter. The 80% range means that 80% of the listed properties fall inside this range.

Where does the raw data come from?

Property listings seen on rightmove.co.uk, zoopla.co.uk and onthemarket.com.

How often is the data updated?

The data is updated in near real-time.

What time period does the data cover?

This is a real-time market snapshot - the data covers currently listed properties. Once properties are removed from the portal, they are soon removed from this tab.

How is the raw data processed?

Duplicates from multiple sources are matched and reconciled as far as possible. Listings with obvious errors, where price or number or bedrooms appear out of range, are discarded. Yields are calculated by comparing only properties with the same number of bedrooms, e.g. 3-bedroom properties for rent with 3-bedroom properties for sale.

What is the yield calculation used?

The calculation used is (average_weekly_asking_rent * 52 / average_asking_price), expressed as a percentage. It is a top-line gross yield, meaning no expenses are considered.

What are the statistics used?

The average shown is the interquartile mean, a type of average that is insensitive to outliers while being its own distinct parameter. The 80% range means that 80% of the listed properties fall inside this range.

Where does the raw data come from?

Property listings seen on rightmove.co.uk, zoopla.co.uk and onthemarket.com.

How often is the data updated?

The data is updated in near real-time.

What time period does the data cover?

This is a real-time market snapshot - the data covers currently listed properties. Once properties are removed from Zoopla, Rightmove or Spareroom, they are soon removed from this tab.

How is the raw data processed?

Duplicates from multiple sources are matched and reconciled as far as possible. Yields are calculated by comparing only properties with the same number of bedrooms, e.g. 3-bedroom properties for rent with 3-bedroom properties for sale. For the SpareRoom data, hypothetical properties consisting of two to six average double rooms with shared bathrooms are used to derived average rent. For all sources, listings with obvious errors, where price or number or bedrooms appear out of range, are discarded.

What is the yield calculation used?

The calculation used is (average_weekly_asking_rent * 52 / average_asking_price), expressed as a percentage. It is a top-line gross yield, meaning no expenses are considered.

What are the statistics used?

The average shown is the interquartile mean, a type of average that is insensitive to outliers while being its own distinct parameter. The 80% range means that 80% of the listed properties fall inside this range.

Where does the raw data come from?

Property "price paid" data provided by the Land Registry.

How often is the data updated?

Once per month when released by the Land Registry, typically towards the end of each calendar month covering up to the end of the previous calendar month.

Zoopla Zed-index

What time period does the data cover?

The data covers transactions in the last six years

How is the raw data processed?

No additional processes are applied to this data.

What are the statistics used?

The average shown is the interquartile mean, a type of average that is insensitive to outliers while being its own distinct parameter. The 80% range means that 80% of the listed properties fall inside this range.

Where does the raw data come from?

Property listings seen on rightmove.co.uk, zoopla.co.uk and onthemarket.com.

How often is the data updated?

The listings data is updated in near real-time. The Land Registry data is updated once per month when released, typically towards the end of each calendar month covering up to the end of the previous calendar month.

What time period does the data cover?

The price paid data shown goes back to January 2015. The listings data is a real-time market snapshot - the data covers currently listed properties. Once properties are removed from the portal, they are soon removed from this tab.

How is the raw data processed?

Duplicates from multiple sources are matched and reconciled as far as possible. Listings with obvious errors, where price or number or bedrooms appear out of range, are discarded.

What are the calculations used?

Average sales per month are for the last 3 finalised months. Turnover is average sales per month divided by total for sale. Inventory is 100 divided by turnover.

Where does the raw data come from?

Property listings seen on rightmove.co.uk, zoopla.co.uk and onthemarket.com.

How often is the data updated?

The listings data is updated in near real-time. The Land Registry data is updated once per month when released, typically towards the end of each calendar month covering up to the end of the previous calendar month.

What time period does the data cover?

This is a real-time market snapshot - the data covers currently listed properties. Once properties are removed from the portal, they are soon removed from this tab.

How is the raw data processed?

Duplicates from multiple sources are matched and reconciled as far as possible. Listings with obvious errors, where price or number or bedrooms appear out of range, are discarded.

Where does the raw data come from?

We receive data on the extent and corporate ownership of all land titles in England & Wales from the Land Registry.

How often is the data updated?

The data is updated once per month when released, typically in the first few days of each calendar month.

What time period does the data cover?

This is an ownership snapshot - the data represents ownership as recorded by the Land Registry at the last monthly export.

How is the raw data processed?

No additional processes are applied to this data.

Where does the raw data come from?

We source different expert forecasts Savills, Knight Frank, OBR

How often is the data updated?

The data is updated annually when new forecasts are released, typically towards the beginning of the year.

How is the raw data processed?

We calculate a consensus forecast using a simple mean average.

Where does the raw data come from?

Quoting rent data is a proprietary data set based on the 2026 Valuation Office Agency (VOA) rateable values, combined with floor area data from MHCLG, adjusted for current market conditions.

What does "Quoting Rent" mean?

Quoting Rent reflects the estimated headline rent a property would achieve, based on official valuations adjusted for current conditions. This is the "face value" rent before any incentives such as rent-free periods, stepped rents or capital contributions are taken into account.

How is the floor area determined?

Floor areas are derived from MCHLG data. We use NIA (Net Internal Area) for retail, offices and leisure; GIA (Gross Internal Area) for industrial.

How often is the data updated?

The VOA data is based on the 2026 rating list, which is turn is based on 2024 comparables. This will be updated when a newer rating list is available. MCHLG data is updated regularly as new certificates are issued.

How is the raw data processed?

Multiple data sources are matched and reconciled. Properties are grouped by type, and outliers are excluded from averages.

What are the statistics used?

Averages shown are the interquartile mean, a type of average that is insensitive to outliers while being its own distinct parameter.

Where does the raw data come from?

This tab combines data from multiple sources. The bedroom distribution comes from property listings on rightmove.co.uk, zoopla.co.uk and onthemarket.com. Internal area and energy scores come from Energy Performance Certificate (EPC) data provided by MHCLG. Property type data comes from the Office for National Statistics Census.

How often is the data updated?

The bedroom distribution from listings is updated in near real-time. The EPC data is updated monthly. The Census data is updated when new census results are released.

What time period does the data cover?

The bedroom distribution is a real-time market snapshot of currently listed properties. The EPC data covers certificates issued since the scheme began. The Census data is from the most recent census.

How is the raw data processed?

For listings data, duplicates from multiple sources are matched and reconciled. Listings with obvious errors are discarded. EPC and Census data is aggregated to the selected area.

Where does the raw data come from?

Tenure type and occupancy data comes from the Office for National Statistics Census.

How often is the data updated?

The data is updated when new census results are released, typically every 10 years.

What time period does the data cover?

The data is from the most recent census.

How is the raw data processed?

Census data is aggregated to the selected area. National averages are provided for comparison.

Where does the raw data come from?

Property listings seen on rightmove.co.uk and onthemarket.com.

How often is the data updated?

The data is updated in near real-time.

What time period does the data cover?

This is a real-time market snapshot - the data covers currently listed properties. Once properties are removed from the portal, they are soon removed from this tab.

How is the raw data processed?

Agent names are normalised across sources. Listings are grouped by agent and ranked by number of live listings.

Where does the raw data come from?

Property listings seen on rightmove.co.uk and onthemarket.com.

How often is the data updated?

The data is updated in near real-time.

What time period does the data cover?

This is a real-time market snapshot - the data covers currently listed properties. Once properties are removed from the portal, they are soon removed from this tab.

How is the raw data processed?

Agent names are normalised across sources. Listings are grouped by agent and ranked by number of live listings.

Total Floor Area (TFA)

Total Floor Area is a measurement defined by MHCLG (Ministry of Housing, Communities and Local Government).

TFA includes all habitable rooms, kitchens, bathrooms, internal corridors, hallways, and built-in storage.

TFA excludes garages, external stores, and unheated conservatories.