# UK House Price Index API: Average Prices by Area (`tabulary/uk-house-price-index-stats`) Actor

Monthly UK House Price Index statistics from HM Land Registry's official linked-data API, by country, region or local authority: average price, index value and change over time, with no address-level data.

- **URL**: https://apify.com/tabulary/uk-house-price-index-stats.md
- **Developed by:** [Tabulary](https://apify.com/tabulary) (community)
- **Categories:** Real estate
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.05 / 1,000 hpi records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does UK House Price Index API do?

This tool returns the **UK house price index** straight from HM Land Registry's official
[UK House Price Index linked-data API](https://landregistry.data.gov.uk/app/ukhpi), the same
**land registry house prices** dataset used by lenders, surveyors and property analysts. Give it
one or more country, region or local authority names and it returns monthly **uk property price
data**: average price, the index value, month-on-month and year-on-year change, and sales volume,
broken down by property type. Every figure is a published statistic — there is no address, street
name or individual sale record anywhere in the output.

### What you get

- **Average price** for the area, overall and split by detached, semi-detached, terraced and
  flat/maisonette.
- **House price index** value and the percentage change versus the previous month and the same
  month a year earlier.
- **Sales volume** (completed transaction count) for the area and month, where published — HM
  Land Registry adds this a couple of months after the price figures, so it is `null` for the
  most recent 1-2 months.
- Export to JSON, CSV or Excel, or query it from AI agents through the Apify MCP server.

### How much does it cost?

You pay per record saved, with no monthly fee: **$1.50 per 1,000 records** on Apify's free plan,
and 10-40% less on paid Apify plans. Each run also costs $0.001 to start. Apify's free plan
includes $5 of credit every month, enough for about 3,300 records. Prices as of October 2026; the
price shown on this page is the one that applies.

| Use | Records | Cost on the free plan |
|---|---|---|
| 3 areas, last 24 months each (the default) | 72 | about $0.11 |
| One area, full history back to 1995 | about 380 | about $0.57 |
| 10 local authorities, last 12 months each | 120 | about $0.18 |

Set **Maximum cost per run** to cap any run; the Actor stops cleanly at the cap and keeps
everything it saved.

### Ready-made inputs

```json
{ "areas": ["england", "london", "camden"], "monthsBack": 24 }
```

```json
{ "areas": ["wales", "scotland", "northern-ireland"], "monthsBack": 12 }
```

```json
{ "areas": ["manchester", "leeds", "birmingham"], "monthsBack": 0 }
```

The third example sets `monthsBack` to `0`, which returns each area's full history back to
January 1995.

Or open these as ready-made examples:

- [House prices in England, London and Camden, last 24 months](https://apify.com/tabulary/uk-house-price-index-stats/examples/hpi-england-london-camden)
- [House price index for Wales, Scotland and Northern Ireland](https://apify.com/tabulary/uk-house-price-index-stats/examples/hpi-wales-scotland-northern-ireland)
- [Latest house prices in Manchester, Leeds and Birmingham](https://apify.com/tabulary/uk-house-price-index-stats/examples/hpi-manchester-leeds-birmingham)

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `areas` | array of strings | required | HM Land Registry area slugs: a country (`england`, `wales`, `scotland`, `northern-ireland`, `united-kingdom`, `england-and-wales`), a region (`london`, `north-east`) or a local authority (`camden`, `manchester`). Find the exact slug for any area in the [official search tool](https://landregistry.data.gov.uk/app/ukhpi/browse) — it appears in the page's URL. |
| `monthsBack` | integer | `24` | How many of the most recent months to return per area. `0` returns full history back to January 1995 (up to 500 months). |

### Output

One dataset item per area per month. A real item from a local test run:

```json
{
  "area": "camden",
  "areaLabel": "Camden",
  "refMonth": "2026-06",
  "averagePrice": 828563,
  "averagePriceDetached": 3591643,
  "averagePriceSemiDetached": 2127906,
  "averagePriceTerraced": 1568991,
  "averagePriceFlatMaisonette": 683974,
  "housePriceIndex": 96.2,
  "percentageChange": -1.5,
  "percentageAnnualChange": -7.6,
  "salesVolume": 104
}
```

`area` is the slug you supplied; `areaLabel` is a human-readable version of it (derived from the
slug, not an official name). `refMonth` is `YYYY-MM`. Prices are in GBP. Any field is `null` when
HM Land Registry has not published that breakdown for the area and month (small areas can have
too few sales of a given property type to publish a figure, and `salesVolume` lags the price
figures by 1-2 months).

### Use it from AI agents

Add the Actor to Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server
(`https://mcp.apify.com?tools=tabulary/uk-house-price-index-stats`). Ask in plain language, for
example: "How has the average house price in Camden changed over the last two years?" The agent
fills in the input and gets structured records back.

### Use it from code

```bash
curl -X POST "https://api.apify.com/v2/acts/tabulary~uk-house-price-index-stats/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"areas": ["england", "london", "camden"], "monthsBack": 24}'
```

The same works with the Apify Python and JavaScript clients. See the API tab for details.

### Data source and limits

- Source: HM Land Registry's [UK House Price Index](https://landregistry.data.gov.uk/app/ukhpi)
  linked-data API, documented at [landregistry.data.gov.uk/app/ukhpi/doc/ukhpi](https://landregistry.data.gov.uk/app/ukhpi/doc/ukhpi).
  Licensed under the [Open Government Licence v3.0](https://www.gov.uk/guidance/about-the-price-paid-data),
  which permits commercial reuse and redistribution with attribution.
- Covers England, Wales, Scotland, Northern Ireland and about 440 regions and local authorities.
  It does not cover individual postcodes, postcode districts or streets — HM Land Registry only
  publishes the index at local-authority level and above, and this tool returns nothing finer
  than that. There is no address, name or other personal data in the source or in this tool's
  output.
- The Actor identifies itself with a custom User-Agent, makes at most one request per second per
  area, and backs off and retries on rate-limit or server errors. If HM Land Registry's API is
  down, the run fails with a clear error rather than returning invented data.
- Not affiliated with or endorsed by HM Land Registry or His Majesty's Government.

### Other Tabulary tools

Clean data from official and public sources, priced per result:

- [Airport METAR & TAF Weather](https://apify.com/tabulary/airport-weather-metar-taf)
- [EU Tenders API: TED Public Procurement Notices](https://apify.com/tabulary/eu-ted-tenders)
- [Company Job Postings: Greenhouse, Lever, Ashby & Workable](https://apify.com/tabulary/multi-ats-job-postings)
- [Remote Jobs API: RemoteOK & Jobicy Postings](https://apify.com/tabulary/remote-jobs-feed)
- [SAM.gov Federal Contract Opportunities](https://apify.com/tabulary/sam-gov-contract-notices)
- [UK Gender Pay Gap Reports API: Employer Filings](https://apify.com/tabulary/uk-gender-pay-gap-reports)
- [UK Modern Slavery Statement Registry API](https://apify.com/tabulary/uk-modern-slavery-statements)
- [UK Tenders API: Contracts Finder & Find a Tender](https://apify.com/tabulary/uk-public-tenders)

### FAQ

**Is this data official?** Yes. Every figure comes directly from HM Land Registry's own UK House
Price Index API, unmodified except for renaming fields and dropping unpublished ones.

**Can I get individual sale prices or addresses?** No. This tool only returns the pre-aggregated
index, which HM Land Registry publishes with no address field at all. For individual transactions
without addresses, see HM Land Registry's separate Price Paid Data download.

**How fresh is it?** HM Land Registry publishes a new month's figures partway through the
following month. This tool always reflects whatever is currently live on their API.

**Something broke?** Open an issue on the Issues tab. The Actor is tested daily.

### Changelog

- **2026-10-24:** first version: UK House Price Index by country, region or local authority,
  with average price, index value, change and sales volume.

### About Tabulary

This tool is part of [Tabulary](https://apify.com/tabulary): clean tables from official public
sources. Every Tabulary tool uses the source's official API or open data where one exists,
collects no personal data, and is tested on Apify every day. Questions or ideas? Open an issue on
the Issues tab.

# Actor input Schema

## `areas` (type: `array`):

HM Land Registry area slugs, lowercase with hyphens, e.g. "england", "london", "camden". Find the exact slug for any country, region or local authority in the official search tool at landregistry.data.gov.uk/app/ukhpi/browse (it appears in the page's URL).

## `monthsBack` (type: `integer`):

How many of the most recent months to return for each area. 0 returns full history back to January 1995 (up to 500 months).

## Actor input object example

```json
{
  "areas": [
    "england",
    "london",
    "camden"
  ],
  "monthsBack": 24
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "areas": [
        "england",
        "london",
        "camden"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tabulary/uk-house-price-index-stats").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "areas": [
        "england",
        "london",
        "camden",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("tabulary/uk-house-price-index-stats").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "areas": [
    "england",
    "london",
    "camden"
  ]
}' |
apify call tabulary/uk-house-price-index-stats --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tabulary/uk-house-price-index-stats"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OrF93URpojAqldUYT/builds/6i7rD0plP8YveEZKW/openapi.json
