- Data
- MCP server
- Auctions
- Auction statistics by district
Auction statistics by district
auction_statsQuarterly UK auction statistics by postcode district: lots offered, lots sold, the sale rate, and average guide, achieved and net yield.
Same call over REST
Auction stats/v1/auctions/statsNot connected yet? Connect your assistant. Sign in with your MarketCode account; no API key needed.
Reference
What auction_stats answers
Use this for the shape of a local auction market over time — is it clearing, are yields moving, is stock rising. For individual comparables use auction_lots.
READ n_guide AND n_achieved BEFORE COMPARING THE AVERAGES. They are computed over DIFFERENT POPULATIONS: a guide price is published for most lots, a hammer price by a minority of auctioneers. Subtracting one average from the other does not give an uplift, a discount, or any meaningful number — the two sets are not the same lots.
Each row carries a comparable flag that is false when the two populations are too unbalanced for the difference to mean anything. When it is false, report the two figures separately with their counts, and say why.
quarter_from/quarter_to are the first day of a quarter (2024-01-01, 2024-04-01, ...). UK only.
Inputs
Before you call it
- postcode_district
- Give a postcode district ("SW11") or a postcode area ("SW"). Auction records carry a postcode rather than an area id, so there is no
area_idpath here and no lookup to make first.
Example
An example call to auction_stats
Use the MarketCode tool auction_stats with {"postcode_district":"SE15","limit":4} and show me the result.{
"country": "UK",
"data": {
"data": [
{
"auction_quarter": "2026-07-01",
"postcode_district": "SE15",
"is_commercial": null,
"lots_offered": 4,
"lots_sold": 1,
"sale_rate_pct": 25,
"n_guide": 0,
"avg_guide_gbp": null,
"n_achieved": 0,
"avg_achieved_gbp": null,
"n_yield": 0,
"avg_net_yield_pct": null,
"comparable": false
},
{
"auction_quarter": "2026-07-01",
"postcode_district": "SE15",
"is_commercial": false,
"lots_offered": 2,
"lots_sold": 1,
"sale_rate_pct": 50,
"n_guide": 2,
"avg_guide_gbp": 318750,
"n_achieved": 0,
"avg_achieved_gbp": null,
"n_yield": 0,
"avg_net_yield_pct": null,
"comparable": false
},
{
"auction_quarter": "2026-04-01",
"postcode_district": "SE15",
"is_commercial": false,
"lots_offered": 2,
"lots_sold": 0,
"sale_rate_pct": 0,
"n_guide": 2,
"avg_guide_gbp": 395000,
"n_achieved": 0,
"avg_achieved_gbp": null,
"n_yield": 0,
"avg_net_yield_pct": null,
"comparable": false
},
"… 1 more"
],
"meta": {
"returned": 4,
"note": "avg_guide_gbp and avg_achieved_gbp are averages over DIFFERENT populations — n_guide and n_achieved say how many lots sit behind each. `comparable` is false wh…"
}
},
"credits_charged": 0
}A real response, captured from production and trimmed: arrays to three items, long strings shortened, volatile keys dropped.
Inputs
Arguments auction_stats takes
| Name | Type | Required | Description |
|---|---|---|---|
| postcode_district | string | No | |
| quarter_from | string | No | |
| quarter_to | string | No | |
| is_commercial | boolean | No | |
| limit | integer | No | Default: 200 |
Response
What comes back
| Field | Type | Example |
|---|---|---|
| country | string | UK |
| data | object | |
| data.data | array | |
| data.data[].auction_quarter | string | 2026-07-01 |
| data.data[].postcode_district | string | SE15 |
| data.data[].is_commercial | null | |
| data.data[].lots_offered | integer | 4 |
| data.data[].lots_sold | integer | 1 |
| data.data[].sale_rate_pct | integer | 25 |
| data.data[].n_guide | integer | 0 |
| data.data[].avg_guide_gbp | null | |
| data.data[].n_achieved | integer | 0 |
| data.data[].avg_achieved_gbp | null | |
| data.data[].n_yield | integer | 0 |
| data.data[].avg_net_yield_pct | null | |
| data.data[].comparable | boolean | false |
| data.meta | object | |
| data.meta.returned | integer | 4 |
| data.meta.note | string | avg_guide_gbp and avg_achieved_gbp are averages |
| credits_charged | integer | 0 |
Fields observed in the example response above; a field the example did not exercise is not listed.
Usage
How to run auction_stats in your assistant
Ask your assistant in plain English, for example:
"Use the MarketCode tool auction_stats for <address or area>.
Show the result and the credits charged."
The arguments the assistant will send, for the example on this page:
{"postcode_district":"SE15","limit":4}The connect steps for Claude, ChatGPT, Codex, Cursor and Claude Code are on the MCP page.
Price and licence
What it costs, and where the data comes from
auction_stats 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.
Sources
- UK auction houses
Auction catalogues and results (Allsop, Savills, Acuitus, Barnett Ross, Agents Property Auction)
Published catalogues and results, collected and matched by MarketCode · UK
Related
Tools used with auction_stats
- Auction lotsFree
auction_lotsIndividual UK auction lots: the guide price a lot was marketed at, whether it sold, the HAMMER PRICE where the auctioneer published one, and the net yield where quoted.Named in the description - Resolve an area nameFree
area_resolveResolve an area name or code ("Hackney", "E5") to its area_id, centroidSame product - Market facts for an areaFree
market_factsPrice, rent, yield and days-on-market by geography × asset class ×Same product - Rank areas on a market metricFree
market_rankingRank areas against each other on a market metric — one row per area at the latest period. Defaults to turnover_rate, which is sales as a share of the stock that could have sold: the liquidity measure, as opposed to transaction count, which measures market size.Same product - 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 product - 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 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.
- Guide price and hammer price: The price a lot is marketed at before auction (the guide) and the price it sells for under the hammer (the achieved price); most auctioneers publish the first and few publish the second.
FAQ
Questions about auction_stats
How much does `auction_stats` cost?
+
auction_stats 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 `auction_stats`?
+
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?
+
Read from UK auction houses catalogues and results. Coverage is the UK.
Does `auction_stats` 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 auction_stats in your assistant.
30-minute call. We'll connect your assistant live on a real address.