- Data
- REST API
- Market data
- Market commercial index
Market commercial index
GET /v1/market/commercial-indexRepeat-sales CAPITAL index for UK commercial property, quarterly, 1995Q1 = 100.
Same call over MCP
Commercial capital indexcommercial_index_seriesAuthenticate with an API key from the API & MCP Hub. The same call is available as an MCP tool at the same price.
Reference
What GET /v1/market/commercial-index returns
Three families exist and nothing else: national ALL; national x sector for the sectors that passed the level gate (OFFICE, RETAIL, HOTEL, HOLIDAY_LET); and local authority x ALL for the 19 authorities with enough pooled repeat sales. There is deliberately NO local x sector series — a local sector cell is too thin to carry an index — so for "office values in Manchester" call twice, sector="OFFICE" (national) and area="Manchester" (ALL), and present the two side by side; each is real.
area: omit for national; a local authority NAME ("Manchester", "South Hams") for the city scope. sector: omit for ALL, or a sector name. start / end: "2015", "2015Q1", "2015-Q1" or "2015-06"; end is inclusive.
provenance.method is repeat_sales for the raw estimator and repeat_sales_shrunk where thin quarters were blended toward the national increment; n_pairs per quarter is the straddle count, and a quarter with few pairs is carried by the blend. An empty series with available_sectors means the area exists but that sector is not published for it; an unknown area is an error naming the nearest matches.
This is a capital-value index. For RENTS use commercial_rent_index_series; the two are not interchangeable (capital = rent / yield, and yields moved). UK only.
Inputs
Before you call it
- sector
- Sectors follow the VOA classification (OFFICE, RETAIL, INDUSTRIAL_WAREHOUSE, HOTEL and so on). Omit the argument for all sectors; the response names the sectors published for an area when the one you asked for is not.
Request
Calling GET /v1/market/commercial-index
curl "https://api.marketcode.ai/v1/market/commercial-index?sector=OFFICE&limit=6" \
-H "Authorization: Bearer $MARKETCODE_API_KEY"Send your API key as a Bearer token. Every response carries credits_charged and credits_remaining.
Inputs
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| sector | Query | string | No | ALL (default) | OFFICE | RETAIL | HOTEL | HOLIDAY_LET |
| area | Query | string | No | Omit for national; else a local authority NAME |
| from | Query | string | No | YYYYQn, YYYY-Qn, YYYY-MM or YYYY |
| to | Query | string | No | Last quarter (inclusive) |
| limit | Query | integer | No | Default: 200 |
Response
What GET /v1/market/commercial-index returns for a real request
curl "https://api.marketcode.ai/v1/market/commercial-index?sector=OFFICE&limit=6" \
-H "Authorization: Bearer $MARKETCODE_API_KEY"{
"country": "UK",
"query": {
"sector": "OFFICE",
"from": "2022",
"limit": 6
},
"data": {
"scope": "national",
"sector": "OFFICE",
"area": {
"area_key": "NATIONAL",
"area_name": "National"
},
"frequency": "quarterly",
"series": [
{
"period": "2025Q2",
"value": 386.95694289407993,
"yoy_pct": 10.305182039822425,
"n_pairs": 46
},
{
"period": "2025Q3",
"value": 421.2215887689076,
"yoy_pct": 0.4333821756687728,
"n_pairs": 33
},
{
"period": "2025Q4",
"value": 421.6408820011818,
"yoy_pct": -0.13427158657365323,
"n_pairs": 25
},
"… 3 more"
],
"provenance": {
"source_table": "marts_facts.commercial_index",
"kind": "capital_value",
"method": "repeat_sales_shrunk",
"base": "1995Q1 = 100",
"n_periods": 6,
"n_pairs_total": 3666,
"first_period": "2025Q2",
"last_period": "2026Q3",
"built_at": "2026-08-31T22:04:19.549422",
"available_sectors": null
},
"notes": [
"method is repeat_sales_shrunk: thin quarters are blended toward the national increment (empirical Bayes), so turns the cell did not observe follow the national…"
],
"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.
Response
Response fields
| Field | Type | Example |
|---|---|---|
| country | string | UK |
| query | object | |
| query.sector | string | OFFICE |
| query.from | string | 2022 |
| query.limit | integer | 6 |
| data | object | |
| data.scope | string | national |
| data.sector | string | OFFICE |
| data.area | object | |
| data.area.area_key | string | NATIONAL |
| data.area.area_name | string | National |
| data.frequency | string | quarterly |
| data.series | array | |
| data.series[].period | string | 2025Q2 |
| data.series[].value | number | 386.95694289407993 |
| data.series[].yoy_pct | number | 10.305182039822425 |
| data.series[].n_pairs | integer | 46 |
| data.provenance | object | |
| data.provenance.source_table | string | marts_facts.commercial_index |
| data.provenance.kind | string | capital_value |
| data.provenance.method | string | repeat_sales_shrunk |
| data.provenance.base | string | 1995Q1 = 100 |
| data.provenance.n_periods | integer | 6 |
| data.provenance.n_pairs_total | integer | 3666 |
| data.provenance.first_period | string | 2025Q2 |
| data.provenance.last_period | string | 2026Q3 |
| data.provenance.built_at | string | 2026-08-31T22:04:19.549422 |
| data.provenance.available_sectors | null | |
| 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.
Price and licence
What it costs, and where the data comes from
Market commercial index 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
Endpoints used with Market commercial index
- Commercial rent indexFree
commercial_rent_index_seriesCommercial RENT index from the VOA rating lists — FOUR points, one per list (2010 / 2017 / 2023 / 2026), each dated at that list's antecedent valuation date (2008-04-01, 2015-04-01, 2021-04-01, 2024-04-01), with the 2010 list = 100.Named in the description - 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.Same category - Asking-rent index (portal listings, ONS-validated)Free
asking_rent_index_seriesHedonic ASKING-RENT index for one postcode district, local authority or Great Britain, from portal lettings, 2022M01 = 100, with bands and SEs. This is the residential rent index; commercial_rent_index_series is the VOA one for commercial property.Same category - Index forecast h1–h7 with bandsFree
market_forecastThe published house-price index forecast for a postcode district or local authority: the last SETTLED index point as the anchor, then up to seven forecast periods with `lo`/`hi` bands, plus the method and publication grain behind them. Seven is the horizon the index publishes — nothing beyond it is offered, and a forecast is a projection of the smoothed repeat-sales index, not a valuation of any property. UK only.Same category - House price index seriesFree
market_index_seriesThe published house-price INDEX for one postcode district or local authority: the level per month (base period = 100), the forecast tail flagged, and provenance saying how the index was built.Same category - Gross yield on two bases, by monthFree
market_yieldsGross rental yield for an area and bedroom band on two bases, by month, with n: `gross_yield_asking` (asking rent ÷ asking price, same area, band and month) and `gross_yield_avm_median` (asking rent ÷ our valuation of the same listed units; `gross_yield_avm_n` behind it). Null where a month is too thin to publish — say so rather than averaging around it. `latest` is the most recent month with a figure. The basis sentence comes with it. UK only.Same category
FAQ
Questions about Market commercial index
How much does `commercial_index_series` cost?
+
Market commercial index 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.
How do I authenticate?
+
Send your API key as a Bearer token in the Authorization header. Keys are created in the API & MCP Hub, shown once and revocable. Every response carries the credits charged and your remaining balance.
Is there an MCP version?
+
Yes. The commercial_index_series tool on the MarketCode MCP server is the same call at the same price, signed in with OAuth rather than a key, so Claude, ChatGPT, Codex and Cursor can run it in a conversation.
Where does the data come from?
+
Computed by MarketCode from HM Land Registry price paid data. Coverage is the UK. The methodology page describes how the model or index is built.
Does `commercial_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.
Try Market commercial index on a real address.
30-minute call. We'll provision a key and walk through the endpoint on your use case.