Europe Distressed Property Scraper icon

Europe Distressed Property Scraper

Distressed-property leads across Europe: German ZVG foreclosure auctions, Polish KRZ restructuring proceedings, and Spanish BOE judicial auctions in…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Europe Distressed Property Scraper at a glance

Europe Distressed Property Scraper is a ready-to-run Apify actor from abotapi for collecting real estate data. Its documented output includes record id, country, source, title and distress type, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.40 per 1,000 results on the Apify Free plan and from $1.80 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Real Estate, Automation, Developer Tools
Pricing
$2.40 per 1,000 results (Free plan), from $1.80 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
37 options

Distressed-property leads across Europe: German ZVG foreclosure auctions, Polish KRZ restructuring proceedings, and Spanish BOE judicial auctions in one run, with detail enrichment, resume, and incremental change tracking.

What Europe Distressed Property Scraper can do

  • Three registers, one actor. Walk the German ZVG foreclosure auction portal, the Polish KRZ restructuring register, and the Spanish BOE judicial auction portal. Each lane keeps its own native filters, and every record comes back normalized to one schema.
  • Detail enrichment built in. Every record can be opened on its source page for the full description, case numbers, parties, valuations, auction dates, and attached documents (appraisals, official announcements, photos).
  • Made for recurring monitoring. Resume an interrupted run from its ID, or let incremental mode remember what you already scraped and return only NEW and UPDATED records, with EXPIRED markers when a record leaves the source.
  • Search the way each register wants. German state, city and auction-date windows; Polish entity, identifier and case-signature lookups; Spanish auction status and deadline ranges. Or just paste links and let URL mode sort them out.
  • Honest by design. If a register refuses every request the run fails loudly instead of returning an empty dataset that looks like "no results". A genuine empty search says so.

Choose what to collect

These inputs let you configure Europe Distressed Property Scraper - Foreclosures & Auctions. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestringHow to discover records. 'search' walks the selected country lanes with your filters. 'url' reads only the links you paste into urls. Pasted links are ignored in search mode; the run log tells you when that happens.

Choices: search, url

countryarrayWhich registers to walk, in order. Germany = ZVG foreclosure auction portal. Poland = KRZ restructuring register (entity search). Spain = BOE judicial auctions. Each selected lane uses its own filters below.
deLandstringGerman federal state code for the foreclosure search: bw, by, be (Berlin), bb, hb, hh, he, mv, ni, nw, rp, sl, sn, st, sh, th. The portal requires one.

Choices: bw, by, be, bb, hb, hh, he, mv, ni, nw, rp, sl, sn, st, sh, th

deLandsarraySearch several German states in one run. Pick 'all' for all 16. When set, it replaces the single state above. The single-state field keeps working.
deCourtstringRestrict to one court (Amtsgericht) of the selected state, by the town the portal lists, e.g. 'Charlottenburg' in Berlin or 'München' in Bavaria. Umlaut spellings (Köln, Koeln) both work. A name that matches no court is reported in the run log. Empty = whole state.
deObjectTypestringPortal object-type token. Leave empty for all.

Choices: , grundstueck, eigentuemer, fwgel

deStreetstringStreet filter, e.g. 'Uhlandstraße'.
Show 30 more inputs
More input fields
InputWhat it controls
dePostalCodestringPostal code filter, e.g. '10717'.
deCitystringCity filter, e.g. 'Berlin'.
deAuctionTypestringPortal art selector: -1 = all, 0-8 = specific kinds of enforcement sale.

Choices: , -1, 0, 1, 2, 3, 4, 5, 6, 7, 8

deAuctionDateFromstringOnly auctions on/after this date. Format YYYY-MM-DD.
deAuctionDateTostringOnly auctions on/before this date. Format YYYY-MM-DD.
deSortstringSort the foreclosure list: by auction date (default), by last update, or by case number.

Choices: 2, 1, 3

plEntityNamestringCompany (or other entity) name to search in the restructuring register, e.g. 'ALFA'. The register matches broadly; expect many results for short names.
plIdentifierstringOptional exact identifier to combine with the entity name: KRS or NIP for entities, PESEL for persons.
plCaseSignaturestringExact case signature (sygnatura) when you know it, e.g. 'III KRZ 12/26'. Results are limited without other filters.
plSoleTraderNamestringFirm name for sole traders with business activity (JDG).
plFirstNamestringFirst name of a natural person / sole trader.
plLastNamestringLast name of a natural person / sole trader (with first name).
esAuctionStatusstringAuction lifecycle filter. EJ = ongoing, PU = upcoming with bid, SU = without bid phase, CA = concluded/awarded... Leave empty for all.

Choices: , EJ, PU, SU, CA, FS

esDeadlineFromstringAuction conclusion date on/after this date. Format YYYY-MM-DD.
esDeadlineTostringAuction conclusion date on/before this date. Format YYYY-MM-DD.
esStartFromstringAuction start date on/after this date. Format YYYY-MM-DD.
esStartTostringAuction start date on/before this date. Format YYYY-MM-DD.
urlsarrayPasted links to read in URL mode: a German foreclosure record page (index.php?button=showZvg&zvg_id=...&land_abk=...) or a Spanish auction page (detalleSubasta.php?idSub=SUB-..., any tab, with or without ver, also under /reg/). Several tabs of one auction return one record. Search form pages and Polish register links cannot be read from a link (use search mode); they are skipped with a warning. Left untouched, this field holds one example per supported shape.
fetchDetailsbooleanOpen each result's detail page (full description, attachments, parties, values). Adds one request per record; disable for fast listing-only runs.
maxItemsintegerStop after this many results in total across all countries. Default 50; 0 = no limit (the German register alone holds thousands of auctions, so set a number you are happy to pay for).
maxPagesintegerStop each search walk after this many result pages. 0 = walk until the natural end. Max items always applies too.
resumeFromRunIdstringContinue a previous run: only records not already in that run's dataset are pushed. Leave empty for a fresh run.
incrementalModebooleanTrack records across scheduled runs with the same scope: only NEW or UPDATED records are returned (UNCHANGED suppressed), and records that disappear are marked EXPIRED. Mutually exclusive with Resume.
stateKeystringName for the incremental baseline when you want to share one baseline across different filter variants. Leave empty to derive it from the scope automatically.
emitUnchangedbooleanIn incremental mode, also return records that did not change (marked UNCHANGED).
emitExpiredbooleanIn incremental mode, also return records seen previously that no longer appear (marked EXPIRED).
ignoreFieldsForChangesarrayAdvanced: record fields that should never count as a change (in addition to the built-in ignore list). Example: ["updatedAt"].
mcpConnectorsarrayOptionally send a summary of each returned property to connected apps. Authorize a connector under Apify > Settings > Integrations, then select it here. Notion creates a page per record; other connectors receive a best-effort write or digest. Leave empty to skip. Dataset results are unaffected.
notionParentPageUrlstringURL or ID of the Notion page where record pages should be created. Required for Notion; ignored by other connectors.
maxNotifyListingsintegerMaximum number of records written to each connector. Does not affect dataset output.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

recordIdRecord ID (text)
countryCountry (text)
sourceSource (text)
titleTitle (text)
distressTypeDistress type (text)
caseNumberCase no. (text)
auctionDateAuction (text)
deadlineAtDeadline (text)
locationLocation (text)
valueAmountValue (number)
valueCurrencyCCY (text)
valueTextValue (text) (text)
Show 19 more fields
statusStatus (text)
urlURL (link)
changeTypeChange (incremental mode) (text)
firstSeenAtFirst seen (date)
lastSeenAtLast seen (date)
courtCourt (text)
stateNameState (text)
objectTypeObject type (text)
propertyTypeProperty type (text)
areaSqmArea (m²) (number)
pricePerSqmEurPrice per m² (EUR) (number)
daysUntilAuctionDays until auction (number)
isNewSinceLastRunNew since last run (boolean)
descriptionDescription (text)
partiesParties (text)
attachmentsAttachments (text)
detailsDetails (text)
areaBasisArea basis (text)
changedFieldsChanged fields (text)

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "recordId": "es:boe:SUB-JA-2026-000000",
  "country": "es",
  "source": "boe",
  "title": "Sample commercial unit, ground floor, Sampletown",
  "distressType": "judicial_auction",
  "caseNumber": "0000 0000 00 0000 00",
  "proceedingId": "SUB-JA-2026-000000",
  "publishedAt": "2026-09-01",
  "deadlineAt": "2026-10-11",
  "location": {
    "address": "Calle Muestra 1",
    "city": "Sampletown",
    "region": "Sample",
    "country": "es"
  },
  "valueAmount": 125887.5,
  "valueCurrency": "EUR",
  "status": "Celebrándose",
  "parties": [
    {
      "role": "authority",
      "name": "Sample Court"
    }
  ],
  "description": "Sample auction description.",
  "attachments": [
    {
      "label": "Documento 1",
      "url": "https://subastas.boe.es/verDocumento.php?..."
    }
  ],
  "url": "https://subastas.boe.es/detalleSubasta.php?idSub=SUB-JA-2026-000000",
  "raw": {}
}

Ways to use this data

  • Who: Investors and buyers hunting below-market property across EU foreclosure and judicial-auction channels.
  • Who: Restructuring and insolvency professionals tracking proceedings by company name or identifier in Poland.
  • Who: Lead-generation teams feeding distressed-property signals into CRM systems and alerting pipelines on a schedule.
  • Who: Analysts comparing distressed inventory levels across European markets from one dataset.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Europe Distressed Property Scraper return?

The documented output for Europe Distressed Property Scraper includes record id, country, source, title, distress type, case no., auction and deadline. Availability of each field depends on the source page and the selected mode.

How much does Europe Distressed Property Scraper cost?

It costs $2.40 per 1,000 results on the Apify Free plan and from $1.80 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new or changed records on a schedule?

Yes. Use incremental mode: the actor remembers its baseline per scope and returns only what changed (NEW, UPDATED), with optional EXPIRED markers for records that left the source. Use stateKey to share one baseline across slightly different filter variants.

Why does a run return fewer records than I expected?

Max items (50 by default) stops the run once the cap is reached, walking the selected country lanes in order; raise it or set it to 0 to collect everything. Narrow filter combinations (a single German city, an exact Polish case signature) can also simply match few records; clear a filter to widen the search.

What does each country return?

Germany: every foreclosure auction the register lists for the chosen state, with the property address, appraised value, auction date and attached documents (appraisal, announcement). German rows also carry court, state name, object type, auction type, area, price per square metre (when the listing states an area) and days until the auction; incremental mode adds an is-new flag (the equivalent of a new-auctions-only switch). Hamburg and Mecklenburg-Vorpommern currently list no auctions (an empty state is reported as an empty result, not as a connection problem). Spain: judicial and tax-office auctions with value, deadline, authority and lot details; the "all statuses" choice is too wide for the portal, so pick one status. Poland: insolvency and restructuring proceedings of companies and sole traders found by name or identifier. These are signals about the owner, not a property list, and only entities whose name contains your search words are returned.

How current are the German and Spanish lists?

Both registers are read live on every run, so you see what is published that day. Dates are the portal's own: the auction date for Germany and the closing date of bidding for Spain.

Ready to collect with Europe Distressed Property Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.