# Auctions Radar: Bank, Court & Government Auctions, Scored (`tacps126/auctions-radar`) Actor

Foreclosure, court and bank auctions from Germany, Spain, Italy and India in one format: price, valuation, debts, area, possession, dates, documents and photos. Every lot scored against similar lots and your budget, place and dates; price history and alerts.

- **URL**: https://apify.com/tacps126/auctions-radar.md
- **Developed by:** [Tapaswai Choudhary](https://apify.com/tacps126) (community)
- **Categories:** Real estate, Business, Automation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.00 / 1,000 lots

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Auctions Radar: Bank, Court & Government Auctions, Scored

Foreclosure, court, tax and bank auctions from **Germany, Spain, Italy and India** in one clean format: price, valuation, debts on the property, area, price per m², possession, dates, deposit, documents and photos. Every lot is **scored against similar lots nearby** and against **your budget, place and dates**, with plain-word reasons, price history and new-lot alerts.

**Built for** property investors and flippers, auction buyers and brokers, valuers and lenders, distressed-asset funds, relocation and buying agents, car and equipment traders, researchers and AI agents.

**At a glance**

- **Price:** $15 per 1,000 lots until 1 December 2026, then $5 per 1,000 lots. Free plan: up to 50 lots per run.
- **First run:** the prefilled input returns 50 scored lots from all four countries in about 20 seconds.

| score | country | kind | city | price | verdict |
|---|---|---|---|---|---|
| 100 | IT | land | Siracusa | 12,000 EUR | 1st of 9 in land, IT. 15% below the typical price per m² of 5 similar lots; vacant. |
| 100 | IN | house | Guskara | 1,940,000 INR | 1st of 5 in house, West Bengal. 53% below the typical price per m² of 5 similar lots; the bank holds physical possession. |
| 98.3 | DE | agricultural | Steingaden | 37,300 EUR | 1st of 7 in agricultural, DE. Expert valuation report published. |

### Where the lots come from

| Country | Auctions | Assets |
|---|---|---|
| Germany | Court foreclosure auctions (Zwangsversteigerung), all 16 states | Homes, flats, land, commercial |
| Spain | Official public auctions: courts, tax agency, social security and other bodies | Property, vehicles, other goods |
| Italy | Court sales from the national sales portal | Property, vehicles, other goods |
| India | Bank auctions of repossessed assets (SARFAESI and others), all states | Property, vehicles |

### What you get

| Field | Meaning |
|---|---|
| `title`, `url`, `image`, `images`, `documents` | The lot, its official page, photos and documents (valuation reports, notices) |
| `source`, `sourceName`, `country`, `seller`, `saleType`, `caseNumber`, `lotNumber` | Who sells it and under which case |
| `kind`, `category`, `description` | Apartment, house, commercial, industrial, land, agricultural, parking, vehicle or other |
| `address`, `city`, `district`, `region`, `postcode`, `latitude`, `longitude`, `distanceKm` | Where it is, and how far from your place |
| `price`, `minimumBid`, `valuation`, `currency`, `priceConverted` | Starting price, lowest accepted bid, official valuation; price in your budget currency |
| `encumbrances`, `totalCost`, `discountToValuation` | Debts that stay with the property, price plus debts, and the discount to valuation |
| `areaSqm`, `pricePerSqm`, `rooms` | Size and price per m² |
| `auctionStart`, `auctionDate`, `daysLeft`, `status`, `depositDeadline` | When bidding opens and closes |
| `deposit`, `bidIncrement`, `financingAvailable` | What you must put down to bid |
| `possession`, `viewing`, `ownership` | Vacant or occupied, whether you can visit, what is sold |
| `previousAttempts`, `reserveCut` | Earlier failed sales and how far the price has dropped since the first one |
| `vehicle` | Make, model, year, mileage, fuel, registration and condition, for vehicles |
| `score`, `rank`, `headline` | 0 to 100, its place in this run, and a one-line verdict |
| `scoring` | Quality, standing, fit, strengths, watch-outs, peer group, rank among peers, peer median price per m² and how this lot compares |

### How the scoring works

- **Compared with its peers.** A flat in Milan is measured against other flats in Milan, a Tata truck against other Tata trucks. When a town has too few lots, the region or country is used, and the output says which group was used and how many lots were in it.
- **Never across markets.** Lots are only compared within the same country, currency and kind of asset, so a Mumbai flat never sets the bar for a Berlin one.
- **Signals.** Price per m², price, discount to valuation, how far the reserve has been cut, possession, clear title (no debts carried over), how much information and paperwork is published, time to the auction, deposit size and bank financing. Vehicles use year, mileage and condition.
- **Your requirements.** Budget (with optional flex), distance from your place, area and auction window give a fit score. `fitWeight` sets how much fit counts against quality (default 30%).
- **Profiles.** `balanced`, `bargainHunter` (cheapest for what you get), `lowRisk` (vacant, clear title, full paperwork) and `quickDeal` (soon, vacant, financing). Or set your own `weights` per signal.
- **Honest about gaps.** A lot with missing fields is scored on what is known, and `scoring.coverage` shows how much was known.

### How to use it

Flats and houses within 25 km of Milan, under 250,000 EUR, best value first:

```json
{
  "countries": ["IT"],
  "assetTypes": ["apartment", "house"],
  "location": "Milano",
  "radiusKm": 25,
  "budgetMax": 250000,
  "profile": "bargainHunter",
  "maxItems": 50
}
```

Vacant property in Madrid and Valencia with no debts to inherit, as a weekly alert:

```json
{
  "countries": ["ES"],
  "regions": ["Madrid", "Valencia"],
  "vacantOnly": true,
  "profile": "lowRisk",
  "onlyNew": true
}
```

Bank auctions in Kerala and Karnataka from 20 to 80 lakh, priced in rupees:

```json
{
  "countries": ["IN"],
  "regions": ["Kerala", "Karnataka"],
  "budgetMin": 2000000,
  "budgetMax": 8000000,
  "budgetCurrency": "INR"
}
```

German foreclosures in Bavaria in the next 60 days, with price-change tracking:

```json
{
  "countries": ["DE"],
  "regions": ["Bayern"],
  "auctionWithinDays": 60,
  "monitorName": "bavaria-watch",
  "changesOnly": true
}
```

### Alerts and monitoring

- **Only new.** Each run returns only lots earlier runs did not deliver.
- **Changes only.** With a `monitorName`, each run returns new lots and lots whose price, date or status changed, with `changeType` and `priceHistory`.
- Schedule it and send results to Slack, email, Google Sheets or a webhook.

### AI insights (optional)

Turn on `aiInsights` for a short read of the top lots: what stands out, risks to check before bidding and questions for the seller. Use Apify's AI with no key, or your own.

### Pricing

**$15 per 1,000 lots** until 1 December 2026, then **$5 per 1,000 lots**, plus a small start fee per run. AI insights, when you turn them on, are $0.01 each. On the Apify free plan a run returns up to 50 lots.

### Good to know

- Prices, valuations and dates are what the official portal shows when the run reads it. Always read the official notice and documents before you bid.
- German lots show the court's valuation; the lowest accepted first bid is half of it.
- Spanish lots can carry debts that stay with the property. `totalCost` adds them to the price, and the score counts them.
- Indian lots leave out the names of borrowers and owners.
- This Actor reads public auction listings only. It does not bid, register or sign in.
- Want another country or portal? **Contact tacps126@gmail.com**.

# Actor input Schema

## `countries` (type: `array`):

Auction portals to read. Each is the official public source for its country.

## `assetTypes` (type: `array`):

Empty = all property and vehicles.

## `regions` (type: `array`):

Names as used locally or in English, e.g. Bayern, Berlin, Madrid, Malaga, Lombardia, Kerala, Maharashtra. Narrows the portals' own searches, so more of the matching lots are read.

## `location` (type: `string`):

E.g. Milano, 10629, Pune. Alone it matches the lot's address; with a radius it is the centre.

## `radiusKm` (type: `number`):

Only lots within this distance of the town or postcode above. Lots without a known position are left out.

## `budgetMin` (type: `number`):

Lowest total cost (price plus debts that pass to the buyer).

## `budgetMax` (type: `number`):

Highest total cost (price plus debts that pass to the buyer).

## `budgetCurrency` (type: `string`):

Prices in other currencies are converted with the European Central Bank's daily reference rates.

## `budgetFlex` (type: `number`):

Share a lot may be outside the budget and still be shown (scored lower), e.g. 0.1 for 10%.

## `minAreaSqm` (type: `number`):

Lots with a known smaller area are left out.

## `maxAreaSqm` (type: `number`):

Lots with a known larger area are left out.

## `auctionWithinDays` (type: `integer`):

Only lots whose bidding closes in the next N days.

## `minDaysLeft` (type: `number`):

Leave out lots closing sooner than this, too late to prepare a bid (Italian offers are due the day before the sale). 0 keeps all.

## `vacantOnly` (type: `boolean`):

Only lots stated as vacant, or in the bank's physical possession.

## `keywords` (type: `array`):

Any of these words in the title or description, e.g. garden, terrace, garage.

## `excludeKeywords` (type: `array`):

Leave out lots that mention any of these words, e.g. share, usufruct.

## `profile` (type: `string`):

What matters most when ranking.

## `weights` (type: `object`):

Optional weight per signal, replacing the profile's: pricePerSqm, price, discount, reserveCut, possession, clearTitle, information, timing, deposit, financing, year, mileage, condition. 0 switches one off, e.g. {"pricePerSqm": 4, "possession": 3}.

## `fitWeight` (type: `number`):

Share of the score that measures fit to your budget, radius and area (the rest is the lot's quality against similar lots).

## `sortBy` (type: `string`):

Order of the results.

## `maxItems` (type: `integer`):

Most lots returned, best first.

## `scanPerSource` (type: `integer`):

How many lots each portal is read for before scoring. More gives a better comparison and takes longer; only returned lots are charged.

## `includeUnscheduled` (type: `boolean`):

India: also bank listings that have no auction date set yet.

## `saleHistory` (type: `boolean`):

Italy: look up the court's earlier attempts to sell each lot and the price cuts since.

## `onlyNew` (type: `boolean`):

Each run returns only lots that earlier runs with the same search did not deliver.

## `changesOnly` (type: `boolean`):

Return only lots that are new or whose price, status or date changed since the last run, with the old and new values. Schedule it to catch price cuts.

## `monitorName` (type: `string`):

Optional name for the history, so several monitors can run side by side. Setting one also keeps each lot's price history.

## `tenantId` (type: `string`):

Optional label used to keep separate histories for different clients or teams.

## `proxyConfiguration` (type: `object`):

Optional. Leave as is unless runs are refused.

## `aiInsights` (type: `boolean`):

Add an `insight` to each lot: deal rating at the current bid, risks to check and a note on a sensible maximum bid; with a profile, how well it fits you.

## `aiProfile` (type: `string`):

What you buy, e.g. "Investor in Bavaria, buys vacant flats under 250,000 EUR to rent out". Adds a fit score.

## `aiLanguage` (type: `string`):

Insights are written in this language, whatever the source language.

## `maxInsights` (type: `integer`):

Insights are added to the first N lots (in the sort order).

## `aiProvider` (type: `string`):

Which AI does the analysis. Apify needs no key: the model's tokens are billed to your Apify account by Apify's AI gateway (a fraction of a cent per call with the default model). Any other provider uses your own key and bills you there.

## `aiApiKey` (type: `string`):

Your own key for the provider above (not needed for Apify). Sent only to that provider, never stored.

## `aiModel` (type: `string`):

Model name. Apify: an OpenRouter id like anthropic/claude-sonnet-... or google/gemini-... (default: the newest Claude Haiku listed, a light model since it runs once per result). Anthropic: default claude-opus-5-5. Others: required.

## `aiBaseUrl` (type: `string`):

Only for "Other OpenAI-compatible API", e.g. http://localhost:11434/v1 for Ollama.

## `debug` (type: `boolean`):

Save extra diagnostics with the run (for support requests).

## Actor input object example

```json
{
  "countries": [
    "DE",
    "ES",
    "IT",
    "IN"
  ],
  "budgetCurrency": "EUR",
  "budgetFlex": 0,
  "minDaysLeft": 1,
  "vacantOnly": false,
  "profile": "balanced",
  "fitWeight": 0.3,
  "sortBy": "score",
  "maxItems": 50,
  "scanPerSource": 80,
  "includeUnscheduled": false,
  "saleHistory": true,
  "onlyNew": false,
  "changesOnly": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "aiInsights": false,
  "aiLanguage": "English",
  "maxInsights": 25,
  "aiProvider": "apify",
  "debug": false
}
```

# Actor output Schema

## `results` (type: `string`):

The produced items (default dataset items).

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "countries": [
        "DE",
        "ES",
        "IT",
        "IN"
    ],
    "maxItems": 50,
    "scanPerSource": 80,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("tacps126/auctions-radar").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "countries": [
        "DE",
        "ES",
        "IT",
        "IN",
    ],
    "maxItems": 50,
    "scanPerSource": 80,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("tacps126/auctions-radar").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "countries": [
    "DE",
    "ES",
    "IT",
    "IN"
  ],
  "maxItems": 50,
  "scanPerSource": 80,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call tacps126/auctions-radar --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tacps126/auctions-radar"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/XaaG4Bl7pAYVpF8Mo/builds/CneOvVOIpgbeiLvtT/openapi.json
