- Data
- MCP server
- Auctions
- Distressed assets: repeatedly unsold lots
Distressed assets: repeatedly unsold lots
distressed_assetsProperties that keep going to auction and NEVER SELL — the distress screen.
Same call over REST
Auction distressed/v1/auctions/distressedNot connected yet? Connect your assistant. Sign in with your MarketCode account; no API key needed.
Reference
What distressed_assets answers
The clearest distress signal in the warehouse: a vendor who wants out and a market that has said no more than once, both on the public record. Ranked by how many separate auctions the lot has failed at, then by how long it has been on the circuit.
READ guide_to_avm BEFORE CALLING ANY ROW AN OPPORTUNITY. It is the latest guide divided by our AVM, and it is the difference between the two reasons a lot fails: * above 1.0 — guided ABOVE our estimate. It keeps failing because it is priced wrong. That is a repricing conversation, not a discount. * 0.5-1.0 — guided below estimate and repeatedly unsold. The cohort worth a call. * below ~0.5 — check the lease before anything else. A flat guided at a fraction of a freehold estimate is usually short lease, ground rent or a garage, not a bargain.
max_guide_to_avm filters on that ratio; 0.8 keeps only lots guided at least 20% below estimate. Lots with no guide or no AVM are EXCLUDED when it is set, because an unknown ratio is not a low one.
Rows are grouped by ADDRESS, not UPRN. Flat-level UPRN matching in this table collapses separate flats onto one id — five flats in one Nottingham block share a single UPRN — so a per-UPRN count over-reports. uprn is returned for onward lookups but is not what rows are counted by, and for a subdivided building it may name a neighbouring unit.
Geography is postcode district or area, not area_id — the auction table carries postcodes and the UPRN join is too weak to filter on.
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 distressed_assets
Use the MarketCode tool distressed_assets with {"postcode_area":"SE","limit":3} and show me the result.{
"country": "UK",
"data": {
"data": [
{
"address": "16 Orlop Street, Greenwich, London, SE10 9AB",
"postcode_full": "SE10 9AB",
"postcode_district": "SE10",
"postcode_area": "SE",
"is_commercial": null,
"url": "http://auctions.savills.co.uk/component/bidding/8-october-2024-156/16-orlop-street-greenwich-london-se10-9ab-13265",
"distinct_auctions": 8,
"first_seen": "2023-11-21",
"last_seen": "2024-10-08",
"days_on_circuit": 322,
"n_auctioneers": 1,
"uprn": 100020991691,
"latest_guide": 600000,
"guide_date": "2024-10-08",
"estimated_value": 457988,
"guide_to_avm": 1.31
},
{
"address": "29 Menlo Gardens, Beulah Hill, Upper Norwood, SE19 3DT",
"postcode_full": "SE19 3DT",
"postcode_district": "SE19",
"postcode_area": "SE",
"is_commercial": null,
"url": "http://auctions.savills.co.uk/component/bidding/15--16-september-2026-242/29-menlo-gardens-beulah-hill-upper-norwood-se19-3dt-24542",
"distinct_auctions": 5,
"first_seen": "2026-06-09",
"last_seen": "2026-09-15",
"days_on_circuit": 98,
"n_auctioneers": 1,
"uprn": 100020651456,
"latest_guide": null,
"guide_date": null,
"estimated_value": 227151,
"guide_to_avm": null
},
{
"address": "Former Public Conveniences, Robson Road, West Norwood, London SE27 9LA",
"postcode_full": "SE27 9LA",
"postcode_district": "SE27",
"postcode_area": "SE",
"is_commercial": null,
"url": "http://auctions.savills.co.uk/component/bidding/24--25-november-2025-197/former-public-conveniences-robson-road-west-norwood-london-se27-9la-19903",
"distinct_auctions": 4,
"first_seen": "2025-06-17",
"last_seen": "2025-11-25",
"days_on_circuit": 161,
"n_auctioneers": 1,
"uprn": 100021884727,
"latest_guide": 150000,
"guide_date": "2025-11-25",
"estimated_value": 248592,
"guide_to_avm": 0.603
}
],
"meta": {
"returned": 3,
"min_auctions": 3,
"years": 3,
"coverage": {
"with_guide": 2,
"with_avm": 3,
"with_guide_to_avm": 2
},
"grouping": "Grouped by ADDRESS, not UPRN. Flat-level UPRN matching in this table is unreliable — five different flats in one Nottingham block share a single UPRN — so a pe…",
"note": "distinct_auctions counts separate auction DATES, not catalogue rows. guide_to_avm above 1.0 means the lot is guided above our estimate, which is usually why it…"
}
},
"credits_charged": 0
}A real response, captured from production and trimmed: arrays to three items, long strings shortened, volatile keys dropped.
Inputs
Arguments distressed_assets takes
| Name | Type | Required | Description |
|---|---|---|---|
| postcode_district | string | No | |
| postcode_area | string | No | |
| min_auctions | integer | No | Default: 3 |
| years | integer | No | Default: 3 |
| max_guide_to_avm | number | No | |
| is_commercial | boolean | No | |
| limit | integer | No | Default: 50 |
| offset | integer | No | Default: 0 |
Response
What comes back
| Field | Type | Example |
|---|---|---|
| country | string | UK |
| data | object | |
| data.data | array | |
| data.data[].address | string | 16 Orlop Street, Greenwich, London, SE10 9AB |
| data.data[].postcode_full | string | SE10 9AB |
| data.data[].postcode_district | string | SE10 |
| data.data[].postcode_area | string | SE |
| data.data[].is_commercial | null | |
| data.data[].url | string | http://auctions.savills.co.uk/component/bidding/ |
| data.data[].distinct_auctions | integer | 8 |
| data.data[].first_seen | string | 2023-11-21 |
| data.data[].last_seen | string | 2024-10-08 |
| data.data[].days_on_circuit | integer | 322 |
| data.data[].n_auctioneers | integer | 1 |
| data.data[].uprn | integer | 100020991691 |
| data.data[].latest_guide | integer | 600000 |
| data.data[].guide_date | string | 2024-10-08 |
| data.data[].estimated_value | integer | 457988 |
| data.data[].guide_to_avm | number | 1.31 |
| data.meta | object | |
| data.meta.returned | integer | 3 |
| data.meta.min_auctions | integer | 3 |
| data.meta.years | integer | 3 |
| data.meta.coverage | object | |
| data.meta.coverage.with_guide | integer | 2 |
| data.meta.coverage.with_avm | integer | 3 |
| data.meta.coverage.with_guide_to_avm | integer | 2 |
| data.meta.grouping | string | Grouped by ADDRESS, not UPRN. Flat-level UPRN ma |
| data.meta.note | string | distinct_auctions counts separate auction DATES, |
| 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 distressed_assets in your assistant
Ask your assistant in plain English, for example:
"Use the MarketCode tool distressed_assets 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","limit":3}The connect steps for Claude, ChatGPT, Codex, Cursor and Claude Code are on the MCP page.
Skills
Skills that use distressed_assets
- 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.
- Site and unit sourcing: A shortlist of land or units matching your criteria, scored, with the registered owner resolved for each and a recipient list ready for outreach.
Price and licence
What it costs, and where the data comes from
distressed_assets 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 distressed_assets
- Search land or units by criteria8 credits
sourcing_searchFind land parcels or residential units matching investment criteria — the sourcing tool. Give a `location` (place or area name) or a `bbox`.Same product - Owners of sourced parcels5 credits
sourcing_ownersResolve registered owners for parcels returned by `sourcing_search`.Same product - Titles held by a company3 credits
ownership_by_companyTitles held by a company, by Companies House number. Useful for mapping aSame product - Proprietor profile5 credits
owner_profileWhat the Land Registry shows for one proprietor: titles held, company status, country of incorporation, directors and PSCs where known.Same product - Long-held, high-equity properties8 credits
long_held_high_equityLong-held properties in an area carrying a large paper gain — the classic off-market cohort, ordered by gain rather than by value.Same product - Site appraisal dossier5 credits
site_appraisalEverything known about ONE site, assembled and judged — the site dossier.Same product
FAQ
Questions about distressed_assets
How much does `distressed_assets` cost?
+
distressed_assets 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 `distressed_assets`?
+
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 `distressed_assets` 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 distressed_assets in your assistant.
30-minute call. We'll connect your assistant live on a real address.