- Data
- MCP server
- Auctions
- Auction discount to valuation
Auction discount to valuation
auction_discountHow far below our valuation UK auction actually clears — the one auction number nobody else can produce.
Same call over REST
Auction discount/v1/auctions/discountNot connected yet? Connect your assistant. Sign in with your MarketCode account; no API key needed.
Reference
What auction_discount answers
An achieved hammer price against an automated valuation of the SAME property. EIG covers 530+ auctioneers to our six and sells API data, but runs no AVM; we have less auction data and the valuation. The join is the product, not the feed.
Nationally over the last 24 months the median lot cleared at about 0.66 of our estimate — a ~34% discount — and 87% of lots sold below it. The spread by district is large and real: PR2 clears near 47% below, N1 under 8%.
READ by_year BEFORE QUOTING THE HEADLINE, and read meta.sufficient. Every AVM in the warehouse shares ONE snapshot date, so this ratio is an auction discount only where the sale and the valuation are close in time. The series sits near 0.65 from 2021 and falls to ~0.44 in 2016-2019 — that fall is house-price growth sitting between the hammer and the estimate, not a deeper discount. Widening months past about 60 measures the market, not the auction.
min_lots suppresses the headline where too few lots match; a median over three sales is not a market rate, and meta.sufficient says which you got.
Geography is by POSTCODE, not area_id — auction lots carry a postcode.
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_discount
Use the MarketCode tool auction_discount with {"postcode_area":"SE","months":24} and show me the result.{
"country": "UK",
"data": {
"data": {
"n_lots": 208,
"p25": 0.744,
"median_ratio": 0.903,
"p75": 1.162,
"n_below_avm": 128,
"median_achieved": 300000,
"median_avm": 334457,
"first_lot": "2024-09-24",
"last_lot": "2026-08-18",
"avm_snapshot": "2026-09-06T05:32:15.024740",
"discount_pct": 9.7,
"pct_below_avm": 61.5
},
"by_year": [
{
"year": 2020,
"n_lots": 54,
"median_ratio": 0.864
},
{
"year": 2021,
"n_lots": 43,
"median_ratio": 1.113
},
{
"year": 2022,
"n_lots": 53,
"median_ratio": 0.84
},
"… 4 more"
],
"meta": {
"months": 24,
"min_lots": 20,
"sufficient": true,
"note": "median_ratio is the achieved price as a share of our AVM; discount_pct is (1 - that), so 34 means auction cleared 34% below the estimate.",
"drift_warning": "Every AVM shares one snapshot date, so this ratio is an auction discount only where the sale and the valuation are close in time. `by_year` shows the whole ser…",
"coverage": "Six auction houses, and only lots we could match to a UPRN that also carries a valuation. Not the whole UK auction market — EIG covers 530+ auctioneers."
}
},
"credits_charged": 0
}A real response, captured from production and trimmed: arrays to three items, long strings shortened, volatile keys dropped.
Inputs
Arguments auction_discount takes
| Name | Type | Required | Description |
|---|---|---|---|
| postcode_district | string | No | |
| postcode_area | string | No | |
| months | integer | No | Default: 24 |
| is_commercial | boolean | No | |
| min_lots | integer | No | Default: 20 |
Response
What comes back
| Field | Type | Example |
|---|---|---|
| country | string | UK |
| data | object | |
| data.data | object | |
| data.data.n_lots | integer | 208 |
| data.data.p25 | number | 0.744 |
| data.data.median_ratio | number | 0.903 |
| data.data.p75 | number | 1.162 |
| data.data.n_below_avm | integer | 128 |
| data.data.median_achieved | integer | 300000 |
| data.data.median_avm | integer | 334457 |
| data.data.first_lot | string | 2024-09-24 |
| data.data.last_lot | string | 2026-08-18 |
| data.data.avm_snapshot | string | 2026-09-06T05:32:15.024740 |
| data.data.discount_pct | number | 9.7 |
| data.data.pct_below_avm | number | 61.5 |
| data.by_year | array | |
| data.by_year[].year | integer | 2020 |
| data.by_year[].n_lots | integer | 54 |
| data.by_year[].median_ratio | number | 0.864 |
| data.meta | object | |
| data.meta.months | integer | 24 |
| data.meta.min_lots | integer | 20 |
| data.meta.sufficient | boolean | true |
| data.meta.note | string | median_ratio is the achieved price as a share of |
| data.meta.drift_warning | string | Every AVM shares one snapshot date, so this rati |
| data.meta.coverage | string | Six auction houses, and only lots we could match |
| 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_discount in your assistant
Ask your assistant in plain English, for example:
"Use the MarketCode tool auction_discount for <address or area>.
Show the result and the credits charged."
The arguments the assistant will send, for the example on this page:
{"postcode_area":"SE","months":24}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_discount 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
- 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
How the model or index is built, and where it is weak, is on the methodology page.
Related
Tools used with auction_discount
- Auction comparablesFree
auction_compsAuction comparables on ACHIEVED prices, each against our valuation.Same category - 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.Same category - Auction statistics by districtFree
auction_statsQuarterly UK auction statistics by postcode district: lots offered, lots sold, the sale rate, and average guide, achieved and net yield.Same category - Distressed assets: repeatedly unsold lotsFree
distressed_assetsProperties that keep going to auction and NEVER SELL — the distress screen.Same category
FAQ
Questions about auction_discount
How much does `auction_discount` cost?
+
auction_discount 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_discount`?
+
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 UK auction houses catalogues and results. Coverage is the UK. The methodology page describes how the model or index is built.
Does `auction_discount` 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_discount in your assistant.
30-minute call. We'll connect your assistant live on a real address.