# taly Auction Lots Scraper — Up to 88% Below Market Value (`ayrtondavoli97/aste-objects-scraper`) Actor

AI-powered Italian judicial & industrial auction intelligence engine. Find Italian properties at 30-70% below market value from judicial auctions. Filter by region, property type, price range and auction date

- **URL**: https://apify.com/ayrtondavoli97/aste-objects-scraper.md
- **Developed by:** [Francesco Ayrton Davoli](https://apify.com/ayrtondavoli97) (community)
- **Categories:** AI, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Italy Auction Lots Scraper — Judicial, Industrial & Liquidation

Find profitable Italian auction lots at **up to 88% below market value**. Aggregates real-time data from 4 major Italian platforms with built-in market discount calculation, opportunity scoring and logistics risk assessment.

> **Sources:** Fallco Aste · AsteGiudiziarie.it · IndustrialDiscount.it · Gobid.it
> **Categories:** Vehicles · Machinery · Electronics · Furniture · Jewellery · Stock · Nautical · Art

***

### Data quality

| Field | Coverage | Notes |
|---|---|---|
| `title` | 100% | Cleaned and normalized |
| `url` | 100% | Direct link to lot |
| `effective_price` | 99% | Best available: current bid > min bid > base price |
| `auction_end` | 99% | ISO 8601 deadline |
| `images` | 100% | At least one image per lot |
| `tribunal` | 100% | Court reference for judicial lots |
| `opportunity_score` | 100% | AI-scored 0–100 |
| `appraised_value` | 100% | Market reference (see below) |
| `item_location` | 77% | Exact location; remaining 23% have tribunal city hint |
| `discount_vs_reference_pct` | ~57% | Only shown when auction price is ≥12% of market reference |

***

### What you get

#### Core fields

| Field | Description | Example |
|---|---|---|
| `title` | Lot description | "BMW 320d 2018 - 87.000 km" |
| `category` | Normalized category | `vehicles` |
| `effective_price` | Best available price (EUR) | `4500` |
| `base_price` | Starting auction price | `5500` |
| `min_bid` | Minimum bid accepted | `4500` |
| `current_price` | Live bid if available | `4800` |
| `auction_end` | Deadline ISO 8601 | `2025-07-15T18:00:00Z` |
| `auction_phase` | `active` / `upcoming` / `closed` | `active` |
| `item_location` | Where the lot is | `Milano, Lombardia` |
| `tribunal` | Court reference | `Tribunale di Milano` |
| `url` | Direct link to lot | `https://...` |
| `primary_image` | Main image URL | `https://...` |
| `source` | Platform | `astegiudiziarie` / `industrialdiscount` / `fallco` |

#### Market discount fields *(unique to this actor)*

| Field | Description | Example |
|---|---|---|
| `appraised_value` | Market reference value (EUR) | `16000` |
| `appraised_value_source` | How the reference was determined | `market_reference_table` |
| `discount_vs_reference_pct` | % discount vs market reference | `72` |
| `market_reference_make_model` | Vehicle make/model matched | `bmw 320` |

> `discount_vs_reference_pct` is only populated when the auction price is ≥12% of market reference. Prices below this threshold are typically distressed multi-round judicial auctions where showing a discount figure would be misleading.

#### Intelligence fields

| Field | Description |
|---|---|
| `opportunity_score` | 0–100 score. Higher = better deal |
| `opportunity_label` | `strong_opportunity` / `interesting` / `watch` / `risky` |
| `buyer_action` | Recommended action: `priority_shortlist`, `shortlist`, `watchlist`, `verify_pickup_location_before_bidding`, `avoid_unless_parts_or_repair` |
| `deal_confidence` | 0–100 confidence in the score |
| `logistics_risk` | `low` / `medium` / `high` |
| `estimated_resale_difficulty` | `easy` / `moderate` / `hard` |
| `risk_flags` | Array of identified risks |
| `score_reasons` | Why this lot scored this way |
| `data_quality_score` | 0–100 completeness score |
| `premium_notes` | Plain-English notes for the buyer |

***

### Input

#### Quick start — use a preset

| Preset | Best for |
|---|---|
| `maximum_coverage` | Full market discovery across all sources |
| `electronics` | Computers, servers, smartphones, IT equipment |
| `vehicles` | Cars, vans, trucks, motorcycles, trailers |
| `resale_friendly` | Lots best suited for resale and arbitrage |
| `stock_resale` | Inventories, warehouse goods, liquidation bundles |
| `custom` | Full manual control |

```json
{
  "preset": "vehicles",
  "maxItems": 500
}
```

#### Custom mode

```json
{
  "preset": "custom",
  "sources": ["astegiudiziarie", "industrialdiscount", "fallco"],
  "category": "vehicles",
  "keywords": ["BMW", "Mercedes"],
  "minPrice": 2000,
  "maxPrice": 25000,
  "maxItems": 300
}
```

#### Fetch court appraisal values *(AsteGiudiziarie only)*

For AsteGiudiziarie lots, enable `fetchAppraisals` to retrieve the official tribunal appraisal (`valore di stima`) from each lot's detail page. This gives the most accurate reference value — set by a court-appointed appraiser.

```json
{
  "preset": "vehicles",
  "fetchAppraisals": true,
  "maxAppraisals": 50,
  "maxItems": 100
}
```

#### All parameters

| Parameter | Type | Description | Default |
|---|---|---|---|
| `preset` | select | Search preset | `quick_qa` |
| `sources` | array | `fallco`, `astegiudiziarie`, `industrialdiscount`, `gobid` | auto |
| `category` | select | `all`, `vehicles`, `machinery`, `electronics`, `furniture`, `jewelry`, `stock`, `nautical`, `art`, `other` | `all` |
| `keywords` | string\[] | Filter by keyword in title/description | — |
| `minPrice` | number | Minimum price (EUR) | — |
| `maxPrice` | number | Maximum price (EUR) | — |
| `maxItems` | integer | Max lots to return | `25` |
| `fetchAppraisals` | boolean | Fetch tribunal appraisal values from AGI detail pages | `false` |
| `maxAppraisals` | integer | Max AGI detail pages to fetch | `50` |

***

### Sources

**Fallco Aste** — Multi-portal Italian auction network covering vehicles, machinery and general lots from court-mandated liquidations.

**AsteGiudiziarie.it** — Italy's main judicial auction aggregator. Court-ordered procedures across all Italian tribunals. Supports `fetchAppraisals` for tribunal appraisal values.

**IndustrialDiscount.it** — Specialized industrial and liquidation marketplace. Best for machinery, production equipment and warehouse stock.

**Gobid.it** — General Italian auction platform. Best-effort support; may be affected by Cloudflare protection depending on runtime.

***

### How market references work

For vehicles, the actor matches make and model from the lot title against a lookup table of 50+ Italian market medians (Quattroruote / AutoScout24 aggregated, 2024). Year is extracted from the title for age-adjusted pricing.

For AsteGiudiziarie lots with `fetchAppraisals: true`, the official tribunal appraisal replaces the table estimate.

`discount_vs_reference_pct` is suppressed when the auction price is below 12% of the reference value — this indicates a highly distressed auction where the discount figure would not be meaningful.

***

### Use cases

**Liquidation traders & resellers** — find vehicles and equipment at 40–88% below market value. Use `opportunity_label: strong_opportunity` to shortlist.

**Vehicle dealers** — monitor judicial auctions for vehicles at 60–80% below book value. Filter by `category: vehicles` and price range.

**Industrial equipment buyers** — source used machinery at liquidation prices. Filter by `machinery` category.

**Data aggregators** — structured, normalized lot data from 4 sources in one unified JSON schema with deduplication and scoring.

***

### Data freshness

Lots are fetched live at run time. Schedule runs daily or weekly to track new lots and monitor auction deadlines.

# Actor input Schema

## `preset` (type: `string`):

Choose a ready-made configuration. The default Quick QA preset is intentionally small so Apify automated quality checks finish within 5 minutes. Select Maximum coverage only for full production scraping.

## `sources` (type: `array`):

Auction platforms to scrape. The default uses IndustrialDiscount only for a fast QA-safe run. Use the Maximum coverage preset for the broadest dataset.

## `startUrls` (type: `array`):

Optional Fallco/Fallco Aste search, category, homepage, or listing URLs. Leave empty for automatic multi-portal, multi-category discovery.

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

Optional words to match in title, description, URL, tribunal, location, or procedure.

## `category` (type: `string`):

Optional category filter inferred from the lot text.

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

Maximum number of normalized lots to save. The default is intentionally small for automated QA. Increase it for production runs.

## `maxPagesPerCategory` (type: `integer`):

How many paginated Fallco search pages to try for each portal/category discovery URL.

## `maxDetailPages` (type: `integer`):

How many Fallco lot detail pages to open for richer prices, descriptions, categories, images, and possible location cues. Keep 0 for fast QA runs.

## `agiRegions` (type: `array`):

Optional Italian regions to query on AsteGiudiziarie.it. Leave empty for all regions, capped by Max AsteGiudiziarie regions.

## `maxAgiRegions` (type: `integer`):

Maximum number of regions to query on AsteGiudiziarie.it when regions are left empty. Keep 1 for fast QA runs.

## `agiRequirePhotos` (type: `boolean`):

If true, asks AsteGiudiziarie.it for records with photos only. False gives wider coverage.

## `maxIndustrialPages` (type: `integer`):

How many IndustrialDiscount search result pages to fetch from the public search API. Each page can return up to 250 lots. Keep 1 for fast QA runs.

## `minPrice` (type: `integer`):

Optional minimum base/current/effective price in EUR.

## `maxPrice` (type: `integer`):

Optional maximum base/current/effective price in EUR.

## `fetchAppraisals` (type: `boolean`):

When enabled, fetches the official court appraisal value (perizia) from each AsteGiudiziarie lot detail page. Adds discount\_vs\_reference\_pct to output. Slower — adds ~1s per AGI lot.

## `maxAppraisals` (type: `integer`):

Maximum number of AsteGiudiziarie detail pages to fetch for appraisal values. Only used when fetchAppraisals is enabled.

## Actor input object example

```json
{
  "preset": "quick_qa",
  "sources": [
    "industrialdiscount"
  ],
  "startUrls": [],
  "keywords": [],
  "category": "all",
  "maxItems": 25,
  "maxPagesPerCategory": 1,
  "maxDetailPages": 0,
  "agiRegions": [],
  "maxAgiRegions": 1,
  "agiRequirePhotos": false,
  "maxIndustrialPages": 1,
  "fetchAppraisals": false,
  "maxAppraisals": 50
}
```

# Actor output Schema

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

Default dataset containing normalized and enriched auction lot records.

# 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 = {
    "startUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("ayrtondavoli97/aste-objects-scraper").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 = { "startUrls": [] }

# Run the Actor and wait for it to finish
run = client.actor("ayrtondavoli97/aste-objects-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": []
}' |
apify call ayrtondavoli97/aste-objects-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=ayrtondavoli97/aste-objects-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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