- Data
- MCP server
- Auctions
- Auction lots
Auction lots
auction_lotsIndividual UK auction lots from five auction houses, Allsop back to 1999: the guide price, whether the lot sold, the hammer price where the auctioneer published one, and the net yield where quoted. Free.
Same call over REST
Auction lots/v1/auctions/lotsNot connected yet? Connect your assistant. Sign in with your MarketCode account; no API key needed.
Reference
What auction_lots answers
What lots were marketed at and what they made. A listings portal tells you a property went to auction; this tells you the guide price, whether it sold, the hammer price where the auctioneer published one and the net yield where quoted, for every lot from Allsop, Savills, Acuitus, Barnett Ross and Agents Property Auction, matched to an address and a UPRN where the catalogue allows. Nothing else on the market sells achieved auction outcomes through an API. It is free.
The full description, as the assistant reads it
Five auction houses, Allsop back to 1999. Nothing else on the market sells achieved auction outcomes through an API — a listings portal tells you a property went to auction, not what it made.
Use this for: what did comparable lots actually sell for, is a guide price realistic, what yields are commercial lots trading at, how does a district's auction market behave. For asking-price or private-treaty sales use market_volume_series or property_history instead — auction is a different market and the prices are not interchangeable.
Coverage is a real constraint, not a caveat: about a quarter of lots carry an achieved price and a fifth a net yield, because most auctioneers publish a guide and never the result. Set with_achieved_price or with_yield to restrict to lots that can answer an outcomes question, and read meta.coverage on the way out so a thin result reads as thin.
auctioneer is one of: allsop, savills, acuitus, barnettross, agentsproperty. Acuitus is the one that publishes net yield beside the achieved price, so filter to it when yield is the question.
Dates are ISO (YYYY-MM-DD). UK only.
Reference
When to use it, and when not to
Use it for the individual lots: what comparable lots actually made, whether a guide is realistic, what yields commercial lots are trading at, how a district's auction market behaves lot by lot. For the quarterly shape of a district's auction market use auction_stats; for lots measured against the valuation of the same property use auction_comps and auction_discount; for lots that keep failing to sell, the distress screen is distressed_assets. For private-treaty sales use market_volume_series or property_history; auction is a different market and the prices are not interchangeable.
Inputs
Before you call it
A postcode_district ("SW11") or postcode_area ("SW"); auction records carry a postcode, not an area id. Dates are ISO (YYYY-MM-DD). auctioneer is one of allsop, savills, acuitus, barnettross, agentsproperty. Set with_achieved_price or with_yield when the question is about outcomes, and use offset with limit to page.
- 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_lots
Use the MarketCode tool auction_lots with {"postcode_area":"SE","sold_only":true,"with_achieved_price":true,"limit":3} and show me the result.{
"country": "UK",
"data": {
"data": [
{
"auctioneer": "savills",
"auction_date": "2026-08-18",
"auction_quarter": "2026-07-01",
"auction_lot_number": "10",
"address": "217A Westcombe Hill, Kidbrooke, London, SE3 7DR",
"postcode_full": "SE3 7DR",
"postcode_district": "SE3",
"postcode_area": "SE",
"uprn": 100021015933,
"tenure": null,
"property_type_raw": null,
"is_commercial": null,
"guide_price_lower_gbp": null,
"guide_price_upper_gbp": null,
"achieved_price_gbp": 280000,
"annual_rent_gbp": null,
"net_yield_pct": null,
"status_canonical": "sold",
"sold": true,
"url": "http://auctions.savills.co.uk/component/bidding/18-august-2026-240/217a-westcombe-hill-kidbrooke-london-se3-7dr-24268"
},
{
"auctioneer": "savills",
"auction_date": "2026-08-18",
"auction_quarter": "2026-07-01",
"auction_lot_number": "117",
"address": "19 Redwing Path, Thamesmead, London, SE28 0DL",
"postcode_full": "SE28 0DL",
"postcode_district": "SE28",
"postcode_area": "SE",
"uprn": 100020997974,
"tenure": null,
"property_type_raw": null,
"is_commercial": null,
"guide_price_lower_gbp": null,
"guide_price_upper_gbp": null,
"achieved_price_gbp": 179000,
"annual_rent_gbp": null,
"net_yield_pct": null,
"status_canonical": "sold",
"sold": true,
"url": "http://auctions.savills.co.uk/component/bidding/18-august-2026-240/19-redwing-path-thamesmead-london-se28-0dl-23877"
},
{
"auctioneer": "savills",
"auction_date": "2026-08-18",
"auction_quarter": "2026-07-01",
"auction_lot_number": "122",
"address": "Flat C, 67 Shakespeare Road, London, SE24 0LA",
"postcode_full": "SE24 0LA",
"postcode_district": "SE24",
"postcode_area": "SE",
"uprn": 10094958484,
"tenure": null,
"property_type_raw": null,
"is_commercial": null,
"guide_price_lower_gbp": null,
"guide_price_upper_gbp": null,
"achieved_price_gbp": 322000,
"annual_rent_gbp": null,
"net_yield_pct": null,
"status_canonical": "sold",
"sold": true,
"url": "http://auctions.savills.co.uk/component/bidding/18-august-2026-240/flat-c-67-shakespeare-road-london-se24-0la-24233"
}
],
"meta": {
"total": 688,
"returned": 3,
"offset": 0,
"has_more": true,
"coverage": {
"lots_returned": 3,
"with_achieved_price": 3,
"with_net_yield": 0
},
"note": "guide_price and achieved_price describe different populations: most auctioneers publish a guide, few publish the hammer price. Do not treat the difference betw…"
}
},
"credits_charged": 0
}A real response, captured from production and trimmed: arrays to three items, long strings shortened, volatile keys dropped.
Inputs
Arguments auction_lots takes
| Name | Type | Required | Description |
|---|---|---|---|
| postcode_district | string | No | |
| postcode_area | string | No | |
| auctioneer | string | No | |
| date_from | string | No | |
| date_to | string | No | |
| is_commercial | boolean | No | |
| sold_only | boolean | No | Default: false |
| with_achieved_price | boolean | No | Default: false |
| with_yield | boolean | No | Default: false |
| limit | integer | No | Default: 100 |
| offset | integer | No | Default: 0 |
Response
What comes back
| Field | Type | Example |
|---|---|---|
| country | string | UK |
| data | object | |
| data.data | array | |
| data.data[].auctioneer | string | savills |
| data.data[].auction_date | string | 2026-08-18 |
| data.data[].auction_quarter | string | 2026-07-01 |
| data.data[].auction_lot_number | string | 10 |
| data.data[].address | string | 217A Westcombe Hill, Kidbrooke, London, SE3 7DR |
| data.data[].postcode_full | string | SE3 7DR |
| data.data[].postcode_district | string | SE3 |
| data.data[].postcode_area | string | SE |
| data.data[].uprn | integer | 100021015933 |
| data.data[].tenure | null | |
| data.data[].property_type_raw | null | |
| data.data[].is_commercial | null | |
| data.data[].guide_price_lower_gbp | null | |
| data.data[].guide_price_upper_gbp | null | |
| data.data[].achieved_price_gbp | integer | 280000 |
| data.data[].annual_rent_gbp | null | |
| data.data[].net_yield_pct | null | |
| data.data[].status_canonical | string | sold |
| data.data[].sold | boolean | true |
| data.data[].url | string | http://auctions.savills.co.uk/component/bidding/ |
| data.meta | object | |
| data.meta.total | integer | 688 |
| data.meta.returned | integer | 3 |
| data.meta.offset | integer | 0 |
| data.meta.has_more | boolean | true |
| data.meta.coverage | object | |
| data.meta.coverage.lots_returned | integer | 3 |
| data.meta.coverage.with_achieved_price | integer | 3 |
| data.meta.coverage.with_net_yield | integer | 0 |
| data.meta.note | string | guide_price and achieved_price describe differen |
| 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
- Coverage is a constraint, not a caveat. About a quarter of lots carry an achieved price and a fifth a net yield, because most auctioneers publish a guide and never the result. Read
meta.coverageso a thin result reads as thin. - Acuitus is the one that publishes yield beside the price. Filter to it when yield is the question.
- Guide and achieved are different populations. A guide is published for most lots, a hammer price by a minority of auctioneers; averaging one against the other gives no meaningful number.
auction_statsflags when the two are comparable. - Bedrooms and type come from the matched unit, not the catalogue. The catalogue populates property type on 12% of sold lots and tenure on none.
Usage
How to run auction_lots in your assistant
Ask your assistant in plain English, for example:
"Use the MarketCode tool auction_lots 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","sold_only":true,"with_achieved_price":true,"limit":3}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_lots 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_lots
- 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.Pairs with this - Auction comparablesFree
auction_compsAuction comparables on ACHIEVED prices, each against our valuation.Pairs with this - Auction discount to valuationFree
auction_discountHow far below our valuation UK auction actually clears — the one auction number nobody else can produce.Pairs with this - Distressed assets: repeatedly unsold lotsFree
distressed_assetsProperties that keep going to auction and NEVER SELL — the distress screen.Pairs with this - Monthly transaction volumeFree
market_volume_seriesMonthly transaction VOLUME for a postcode district, postcode area orNamed in the description - Sold-price historyFree
property_historySold-price history for a property, with per-sale detail.Named in the description
Glossary
Terms used here
- Gross yield: Annual rent as a percentage of price, before costs; net yield deducts costs. MarketCode computes gross yield from listing rents and prices and reports net yield only where an auctioneer quoted one.
- 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.
- Distressed asset: A property that has gone to auction more than once and never sold; on the public record, a vendor who wants out and a market that has said no.
FAQ
Questions about auction_lots
How much does `auction_lots` cost?
+
auction_lots 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_lots`?
+
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_lots` 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.
What is the difference between a guide price and a reserve?
+
The guide is published and signals where bidding is expected to start; the reserve is the seller's confidential minimum, at or near the guide. A lot that does not reach its reserve is unsold, and the platform records that.
Why does a lot show sold but no price?
+
Because the auctioneer published the result as sold without the figure. About a quarter of lots carry an achieved price; with_achieved_price restricts to those.
How is this different from auction_comps?
+
auction_comps returns lots with an achieved price against the valuation of the same property, so each is a comparable measured against value rather than a bare price. This tool returns the lots themselves, sold or not, priced or not, with the filters to find them.
Try auction_lots in your assistant.
30-minute call. We'll connect your assistant live on a real address.