- Data
- MCP server
- Market data
- House price index series
House price index series
market_index_seriesThe published repeat-sales house price index for any postcode district or local authority, monthly from 1995, with the forecast tail flagged and provenance saying whether the series is local or national. Free.
Same call over REST
Market index series/v1/market/index-seriesNot connected yet? Connect your assistant. Sign in with your MarketCode account; no API key needed.
Reference
What market_index_series answers
The trend, as an index. A repeat-sales index is built from pairs of sales of the same property, so it measures price change without being pulled around by which properties happened to sell that month; it is the method behind the main official indices and behind this one. It is published monthly from 1995 for every district and authority with enough pairs, base period = 100.
Use it to carry a known price to today: price(t2) = price(t1) × value(t2) / value(t1). It is the same series that shapes the back-series in valuation_full, so a value carried with it and a value read from the model agree by construction.
The full description, as the assistant reads it
Use this for "how has W14 moved since 2015", "what is the trend in Camden", or to carry a known price to today: price(t2) = price(t1) x value(t2) / value(t1). It is the same series that shapes valuation_full's back-series (provenance.series_basis matches its series_basis). For PRICES by cohort use market_facts; for sale COUNTS use market_volume_series. value is an index level, never a price.
area_code is a postcode district ("W14"; a full postcode is truncated) with area_type="district", or a local authority NAME ("Camden", "Manchester" — not a GSS code) with area_type="lad". An unknown area is an error naming the nearest matches; read them back to the user.
start / end are periods: "2015", "2015-06" or "2015-Q2"; end is inclusive. limit keeps the most recent N periods inside the bounds (the default returns the whole monthly series, 1995 to present).
READ provenance BEFORE QUOTING A MOVE. index_method is repeat_sales_area where the area carries its own repeat-sales index, and repeat_sales_national where the area was too thin and the pipeline published the NATIONAL index against it — the turns are then national, not local, and you must say so. last_settled_period is the last month the registry has filled; points after it carry is_forecast=true with lo/hi bands. tx_n per point is the cube's UPRN-matched sample, not the registry's count.
The index is published monthly. frequency="quarterly" returns an empty series with a note wherever no quarterly rows exist. UK only.
Reference
When to use it, and when not to
Use it for "how has W14 moved since 2015", "what is the trend in Camden", and for adjusting an old comparable to today. For prices by cohort use market_facts; for the count of sales use market_volume_series; for the asking side, which leads this by months, use asking_price_index_series. The value is an index level, never a price.
Inputs
Before you call it
area_code is a postcode district ("W14"; a full postcode is truncated) with area_type "district", or a local authority name ("Camden", "Manchester", not a GSS code) with area_type "lad". An unknown area returns an error naming the nearest matches; read them back rather than guessing. start and end are periods ("2015", "2015-06", "2015-Q2"), end inclusive; limit keeps the most recent N periods. Over REST the same bounds are spelled from and to.
- area_code
- The area code is a postcode district ("W14") with
area_typeset to district, or a local authority name ("Camden", not a GSS code) witharea_typeset to lad. No lookup is needed. An unknown area returns an error naming the nearest matches; read them back rather than guessing.
Example
An example call to market_index_series
Use the MarketCode tool market_index_series with {"area_code":"SE22","area_type":"district","limit":6} and show me the result.{
"country": "UK",
"query": {
"area_code": "SE22",
"area_type": "district",
"frequency": "monthly",
"limit": 6,
"include_forecast": true
},
"data": {
"area": {
"level": "district",
"area_type": "Postcode District",
"area_code": "SE22",
"area_name": "se22",
"area_id": "1520d540-4a9e-4fa2-abda-607791b5b7c3"
},
"frequency": "monthly",
"series": [
{
"period": "2026-07",
"value": 1148.88,
"lo": 1104.368485,
"hi": 1210.511228,
"is_forecast": true,
"yoy_pct": -1.26,
"tx_n": 11
},
{
"period": "2026-08",
"value": 1148.88,
"lo": 1103.073967,
"hi": 1212.289274,
"is_forecast": true,
"yoy_pct": -1.74,
"tx_n": null
},
{
"period": "2026-09",
"value": 1033.72,
"lo": 921.47131,
"hi": 1135.963963,
"is_forecast": true,
"yoy_pct": -10.43,
"tx_n": null
},
"… 3 more"
],
"provenance": {
"source_table": "marts_facts.area_facts",
"cohort": {
"asset_class": "Residential",
"asset_subtype": "ALL",
"bedroom_band": "all",
"hmo_flag": "all"
},
"index_method": "repeat_sales_area",
"index_decision": "repeat_sales;grain=district;settled_end=unknown",
"series_basis": "repeat_sales_area:district:SE22",
"base_period": "1995-01",
"base_value": 100,
"n_periods": 6,
"n_settled": 0,
"n_forecast": 6,
"first_period": "2026-07",
"last_settled_period": null,
"last_period": "2026-12",
"tx_n_meaning": "UPRN-matched, non-anomalous sales the cube attributes to the period — a sample size, not the registry's count. For volume use /market/volume-series.",
"built_at": "2026-09-06T09:18:11.698874",
"build_version": "v1.index.2026-08-30"
},
"notes": [
"6 trailing point(s) are forecast rows (is_forecast=true, with lo/hi bands); the last settled period is unknown."
],
"source": "robosapien",
"cached": true,
"time_ms": 0.4
},
"credits_charged": 0
}A real response, captured from production and trimmed: arrays to three items, long strings shortened, volatile keys dropped.
Inputs
Arguments market_index_series takes
| Name | Type | Required | Description |
|---|---|---|---|
| area_code | string | Yes | |
| area_type | string | No | One of: district, ladDefault: district |
| frequency | string | No | One of: monthly, quarterlyDefault: monthly |
| start | string | No | |
| end | string | No | |
| limit | integer | No | Default: 400 |
| include_forecast | boolean | No | Default: true |
Response
What comes back
| Field | Type | Example |
|---|---|---|
| country | string | UK |
| query | object | |
| query.area_code | string | SE22 |
| query.area_type | string | district |
| query.frequency | string | monthly |
| query.limit | integer | 6 |
| query.include_forecast | boolean | true |
| data | object | |
| data.area | object | |
| data.area.level | string | district |
| data.area.area_type | string | Postcode District |
| data.area.area_code | string | SE22 |
| data.area.area_name | string | se22 |
| data.area.area_id | string | 1520d540-4a9e-4fa2-abda-607791b5b7c3 |
| data.frequency | string | monthly |
| data.series | array | |
| data.series[].period | string | 2026-07 |
| data.series[].value | number | 1148.88 |
| data.series[].lo | number | 1104.368485 |
| data.series[].hi | number | 1210.511228 |
| data.series[].is_forecast | boolean | true |
| data.series[].yoy_pct | number | -1.26 |
| data.series[].tx_n | integer | 11 |
| data.provenance | object | |
| data.provenance.source_table | string | marts_facts.area_facts |
| data.provenance.cohort | object | |
| data.provenance.cohort.asset_class | string | Residential |
| data.provenance.cohort.asset_subtype | string | ALL |
| data.provenance.cohort.bedroom_band | string | all |
| data.provenance.cohort.hmo_flag | string | all |
| data.provenance.index_method | string | repeat_sales_area |
| data.provenance.index_decision | string | repeat_sales;grain=district;settled_end=unknown |
| data.provenance.series_basis | string | repeat_sales_area:district:SE22 |
| data.provenance.base_period | string | 1995-01 |
| data.provenance.base_value | integer | 100 |
| data.provenance.n_periods | integer | 6 |
| data.provenance.n_settled | integer | 0 |
| data.provenance.n_forecast | integer | 6 |
| data.provenance.first_period | string | 2026-07 |
| data.provenance.last_settled_period | null | |
| data.provenance.last_period | string | 2026-12 |
| data.provenance.tx_n_meaning | string | UPRN-matched, non-anomalous sales the cube attri |
| data.provenance.built_at | string | 2026-09-06T09:18:11.698874 |
| data.provenance.build_version | string | v1.index.2026-08-30 |
| data.notes | array | |
| data.source | string | robosapien |
| data.cached | boolean | true |
| data.time_ms | number | 0.4 |
| credits_charged | integer | 0 |
Fields observed in the example response above; a field the example did not exercise is not listed.
Reference
Things that catch people out
- Read
provenance.index_methodbefore quoting a move.repeat_sales_areameans the area carries its own index.repeat_sales_nationalmeans the area was too thin and the national index was published against it: the turns are national, not local, and you must say so. - The right-hand edge is a forecast.
last_settled_periodis the last month the registry has filled; points after it carryis_forecast: truewithloandhibands. Quote the band with the point. tx_nis a sample, not the registry count. It is the cube's UPRN-matched sample per point. For counts usemarket_volume_series.- Quarterly is not resampled. The index is published monthly; asking for quarterly returns an empty series with a note where no quarterly rows exist.
Usage
How to run market_index_series in your assistant
Ask your assistant in plain English, for example:
"Use the MarketCode tool market_index_series for <address or area>.
Show the result and the credits charged."
The arguments the assistant will send, for the example on this page:
{"area_code":"SE22","area_type":"district","limit":6}The connect steps for Claude, ChatGPT, Codex, Cursor and Claude Code are on the MCP page.
Skills
Skills that use market_index_series
- Property research: A sourced answer to any UK property question: the right tool for the job, the credit cost stated first, the wording rules that keep an estimate an estimate.
- Valuation report: An indicative valuation for one address: the range, the comparables and adjustments, the index position, the EPC, flood and planning context, and the reasoning, with every figure cited to the tool it came from.
- Area insights: A market brief for any UK area: the published indices, volumes, listing stock, agent activity and auction outcomes, compared and ranked against neighbours.
- Deal analysis: A first-pass appraisal of a site or asset: plot utilisation, planning position, market evidence, value and a residual against the cost assumptions you supply.
Price and licence
What it costs, and where the data comes from
market_index_series is free over MCP and over REST, and the two surfaces share one credit balance. Free calls need a signed-in account or an API key and appear in your usage, but they never touch your balance.
Credits are granted on sign-up and bought in packs; the pricing page lists every call.
Computed by MarketCode from
- HM Land Registry
Price Paid Data
Open Government Licence v3 · England and Wales
How the model or index is built, and where it is weak, is on the methodology page.
Related
Tools used with market_index_series
- Asking-price index (portal listings)Free
asking_price_index_seriesHedonic ASKING-PRICE index for one postcode district, local authority or Great Britain, from portal listings (Rightmove ~95%), 2022M01 = 100, with 80% bands and posterior standard errors, smoothed toward the parent geography.Pairs with this - Market facts for an areaFree
market_factsPrice, rent, yield and days-on-market by geography × asset class ×Pairs with this - Monthly transaction volumeFree
market_volume_seriesMonthly transaction VOLUME for a postcode district, postcode area orPairs with this - Full valuation with back-seriesFree
valuation_fullFull valuation block for a property: the value and its range, a monthlyPairs with this - Resolve an address to a UPRN8 credits
address_resolveResolve free-text address to canonical record (UPRN for UK).Same product - Property summary4 credits
property_summaryOne-call summary of a property: what it is, what building it belongs to,Same product
Glossary
Terms used here
- Postcode district, area and sector: The parts of a UK postcode: the area ("SW"), the district ("SW11") and the sector ("SW11 1"); most MarketCode area statistics are published at district grain.
- Local authority district (LAD): The council area a property sits in: about 360 in Great Britain, the second geography MarketCode publishes indices and rankings for.
- Price Paid Data: HM Land Registry's record of every registered residential sale in England and Wales since 1995: price, date, address, type, tenure and whether it was a standard market sale.
- Registration lag: The weeks to months between a sale completing and HM Land Registry registering it, which makes the most recent months of any sold-price series incomplete.
- Repeat-sales index: A price index built from pairs of sales of the same property, so it measures price change without being pulled by which properties happened to sell; the method behind MarketCode's sold-price and commercial capital indices.
- Forecast tail: The points at the end of an index series that fall after the last settled month, projected rather than measured, flagged is_forecast with a lower and upper band.
- Read-only tool: A tool annotated on the server as never changing anything, so an assistant can call it without a confirmation step; every MarketCode tool is read-only.
FAQ
Questions about market_index_series
How much does `market_index_series` cost?
+
market_index_series is free over MCP and over REST, and the two surfaces share one credit balance. Free calls need a signed-in account or an API key and appear in your usage, but they never touch your balance.
Which assistants can run `market_index_series`?
+
Any MCP client: Claude (claude.ai, Claude Desktop, Claude Code), ChatGPT in developer mode, Codex and Cursor, each documented on the MCP page. You sign in with your MarketCode account over OAuth; there is no key to paste, and the connection is read-only.
Where does the data come from?
+
Computed by MarketCode from HM Land Registry price paid data. Coverage is England and Wales. The methodology page describes how the model or index is built.
Does `market_index_series` change anything?
+
No. The tool is annotated read-only on the server, so it never writes to your data or ours and an assistant can call it without a confirmation step.
Why does a small area show the national index?
+
Because a repeat-sales index needs enough pairs of sales to be stable, and a thin district does not have them. Rather than publish noise or nothing, the national series is published against the area with the method field saying so. Pages that show it say the turns are national.
Why is the latest month a forecast?
+
HM Land Registry registers sales weeks to months after completion, so the most recent months are incomplete. The settled series stops at the last filled month and the tail is projected with a band; as registrations arrive, the tail settles.
Can I use this to revalue a portfolio?
+
Yes, as the time adjustment: carry each property's last sale to today by the ratio of index levels. For a value that also reflects the property's own attributes and the local comparables, use valuation_full, which uses this same index for its back-series.
Try market_index_series in your assistant.
30-minute call. We'll connect your assistant live on a real address.