# European Auction Scraper: Troostwijk, Vavato & Surplex (`bostomate/european-auction-scraper`) Actor

Scrape live industrial & liquidation auction lots from Troostwijk, Vavato, Surplex and other TBAuctions brands. bids, closing times, locations and true all-in price estimates.

- **URL**: https://apify.com/bostomate/european-auction-scraper.md
- **Developed by:** [Tommy Bos](https://apify.com/bostomate) (community)
- **Categories:** Automation, E-commerce, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## European Auction Scraper — Troostwijk, Vavato & Surplex

### What is European Auction Scraper?

European Auction Scraper extracts **live industrial and liquidation auction lots** from the biggest European online auction platforms of the TBAuctions group — **Troostwijk Auctions, Vavato and Surplex** — through one actor, one input, one dataset. Together these platforms typically carry **75,000+ open lots**: machinery, forklifts, tools, vehicles, warehouse equipment, IT hardware, office furniture and full bankruptcy inventories across the Netherlands, Belgium, Germany and the rest of Europe.

Instead of checking three auction sites (or paying for three separate scrapers), you get a single normalized feed of every open lot with its **current bid, bid count, closing time, location and lot URL** — plus something no other auction scraper offers: an optional **all-in price estimate** (bid + buyer premium + VAT) straight from the platform's own fee calculator, so you know what a lot would *actually* cost, not just its hammer price.

### What can you do with it?

- **Source resale inventory**: find underpriced forklifts, machines, tools or e-bikes before they close.
- **Price research**: build datasets of realized auction interest (bids, followers) per category.
- **Deal monitoring**: schedule runs with a `closingWithinHours` window and get lots closing today.
- **Market analysis**: track supply by country, category keyword or platform over time.

### Input

| Field | What it does |
|---|---|
| `platforms` | Which platforms to scrape. Default: Troostwijk (TWK), Vavato (VAVATO), Surplex (SPX) — the brands with the bulk of live inventory. Ten more TBAuctions brands are selectable. |
| `keyword` | Case-insensitive filter over lot title + description (e.g. `forklift`, `Makita`). |
| `maxItems` | Cap on returned lots — you pay per returned lot, never per page fetched. |
| `closingWithinHours` | Only lots closing within N hours (0 = off). Lots are scanned in closing-time order. |
| `countryCodes` | Only lots located in these countries (e.g. `NL`, `BE`, `DE`). |
| `includeFees` | Adds `allInPriceEstimate` (bid + buyer premium + VAT) for lots with a bid. |
| `maxPagesPerPlatform` | Search depth (100 lots/page). Raise it for deep keyword searches. |

Example input:

```json
{
    "platforms": ["TWK", "VAVATO", "SPX"],
    "keyword": "forklift",
    "maxItems": 100,
    "closingWithinHours": 48,
    "countryCodes": ["NL", "BE"],
    "includeFees": true
}
````

### Output

One dataset item per lot:

```json
{
    "platform": "TWK",
    "platformName": "Troostwijk Auctions",
    "displayId": "A1-47915-1",
    "title": "1999 Massey Ferguson 6245 Four Wheel Tractor",
    "description": "Runs and drives, 6800 hours...",
    "currentBid": 9000.0,
    "currency": "EUR",
    "bidsCount": 12,
    "followersCount": 41,
    "closesAt": "2026-07-06T17:01:00+00:00",
    "minutesToClose": 512,
    "city": "Wien",
    "countryCode": "at",
    "imageUrl": "https://...jpg",
    "lotUrl": "https://www.troostwijkauctions.com/l/1999-massey-ferguson-6245...",
    "allInPriceEstimate": 11812.5,
    "allInPriceCurrency": "EUR",
    "buyerPremiumPercent": 19.0,
    "vatPercent": 21.0
}
```

### Pricing

You are charged **per returned lot** (pay-per-event) — filtering, pagination and fee lookups are included. A 100-lot run costs a few cents. Tip: use `maxItems` to control spend precisely; the actor stops the moment your budget or cap is reached.

### FAQ

**Is scraping auction lots legal?** The actor only reads publicly available lot listings — no login, no personal data, no paywalled content. Auction lots are business inventory, not personal information.

**Why is a lot's bid so low?** Online auctions concentrate bidding in the final minutes (platforms use a 2–6 minute soft-close). A bid seen hours before close is not a price signal — use `closingWithinHours` for meaningful prices.

**What is `allInPriceEstimate`?** The platform's own estimate of the total you would pay at the current bid: bid + buyer premium + VAT/BTW. Typically 25–45% above the hammer price — this is the number that matters for resale math.

**Why do some platforms return zero lots?** Ten smaller TBAuctions brands are selectable but hold little or no inventory on the shared storefront most of the time. Troostwijk, Vavato and Surplex carry the volume. For brands without verified lot-page URLs, `lotUrl` is `null` rather than a guessed link.

**Can it search by keyword server-side?** The storefront API has no keyword search, so the actor filters fetched pages (closing-soonest first). For deep searches raise `maxPagesPerPlatform` (up to 40 pages = 4,000 lots per platform).

**Looking for consumer marketplaces instead?** Try our monitors: [Marktplaats Monitor](https://apify.com/bostomate/marktplaats-monitor) (NL/BE classifieds), [Kleinanzeigen Monitor](https://apify.com/bostomate/kleinanzeigen-monitor) (German classifieds), or the [AutoScout24 Price Monitor](https://apify.com/bostomate/autoscout-price-monitor) for used-car price drops across 7 European markets.

### Disclaimer

This is an independent tool, not affiliated with or endorsed by TBAuctions, Troostwijk Auctions, Vavato, Surplex or any of their brands. All trademarks belong to their owners. The actor reads only publicly accessible listing data and collects no personal data.

# Actor input Schema

## `platforms` (type: `array`):

Which TBAuctions-group platforms to scrape. Troostwijk (TWK), Vavato (VAVATO) and Surplex (SPX) carry the bulk of live inventory (~79k open lots combined). The other brands are valid but often have little or no inventory on this storefront.

## `keyword` (type: `string`):

Only return lots whose title or description contains this text (case-insensitive). Leave empty for all lots. Filtering happens across fetched pages - raise 'Max pages per platform' to search deeper into the catalog.

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

Stop after this many lots (you are only charged per returned lot).

## `closingWithinHours` (type: `integer`):

Only lots that close within N hours. 0 = no closing-time filter. Auction bids are only meaningful near close (2-6 min soft-close), so for price research use a narrow window.

## `countryCodes` (type: `array`):

Only lots located in these ISO country codes (e.g. NL, BE, DE). Empty = all countries.

## `includeFees` (type: `boolean`):

For lots with a bid, also fetch the platform's own estimated full price (bid + buyer premium + VAT) - the number you would actually pay. Capped at the first 100 results to keep runs fast.

## `maxPagesPerPlatform` (type: `integer`):

How deep to paginate each platform (100 lots per page, sorted by closing time). Raise this when using a keyword filter to search deeper.

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

Optional. The storefront API is public and normally needs no proxy; configure one only if your runs get blocked.

## Actor input object example

```json
{
  "platforms": [
    "TWK",
    "VAVATO",
    "SPX"
  ],
  "keyword": "forklift",
  "maxItems": 50,
  "closingWithinHours": 0,
  "countryCodes": [],
  "includeFees": false,
  "maxPagesPerPlatform": 10
}
```

# 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 = {
    "keyword": "forklift"
};

// Run the Actor and wait for it to finish
const run = await client.actor("bostomate/european-auction-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 = { "keyword": "forklift" }

# Run the Actor and wait for it to finish
run = client.actor("bostomate/european-auction-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 '{
  "keyword": "forklift"
}' |
apify call bostomate/european-auction-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "European Auction Scraper: Troostwijk, Vavato & Surplex",
        "description": "Scrape live industrial & liquidation auction lots from Troostwijk, Vavato, Surplex and other TBAuctions brands. bids, closing times, locations and true all-in price estimates.",
        "version": "0.1",
        "x-build-id": "cgrAAPCZR9N9Gagjz"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/bostomate~european-auction-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-bostomate-european-auction-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/bostomate~european-auction-scraper/runs": {
            "post": {
                "operationId": "runs-sync-bostomate-european-auction-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/bostomate~european-auction-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-bostomate-european-auction-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "platforms": {
                        "title": "Auction platforms",
                        "type": "array",
                        "description": "Which TBAuctions-group platforms to scrape. Troostwijk (TWK), Vavato (VAVATO) and Surplex (SPX) carry the bulk of live inventory (~79k open lots combined). The other brands are valid but often have little or no inventory on this storefront.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "TWK",
                                "VAVATO",
                                "SPX",
                                "BVA",
                                "AUK",
                                "EPIC",
                                "KVK_FI",
                                "KVK_DK",
                                "KVK_SE",
                                "HT",
                                "BMA",
                                "DAB",
                                "PS"
                            ],
                            "enumTitles": [
                                "Troostwijk Auctions",
                                "Vavato",
                                "Surplex",
                                "BVA Auctions",
                                "Auksjonen.no",
                                "Epic Auctions",
                                "Klaravik Finland",
                                "Klaravik Denmark",
                                "Klaravik Sweden",
                                "Hilco Trading",
                                "BMA Auctions",
                                "DAB",
                                "PS Auction"
                            ]
                        },
                        "default": [
                            "TWK",
                            "VAVATO",
                            "SPX"
                        ]
                    },
                    "keyword": {
                        "title": "Keyword filter",
                        "type": "string",
                        "description": "Only return lots whose title or description contains this text (case-insensitive). Leave empty for all lots. Filtering happens across fetched pages - raise 'Max pages per platform' to search deeper into the catalog."
                    },
                    "maxItems": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Stop after this many lots (you are only charged per returned lot).",
                        "default": 50
                    },
                    "closingWithinHours": {
                        "title": "Closing within (hours)",
                        "minimum": 0,
                        "maximum": 720,
                        "type": "integer",
                        "description": "Only lots that close within N hours. 0 = no closing-time filter. Auction bids are only meaningful near close (2-6 min soft-close), so for price research use a narrow window.",
                        "default": 0
                    },
                    "countryCodes": {
                        "title": "Country filter",
                        "type": "array",
                        "description": "Only lots located in these ISO country codes (e.g. NL, BE, DE). Empty = all countries.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeFees": {
                        "title": "Include all-in price estimate",
                        "type": "boolean",
                        "description": "For lots with a bid, also fetch the platform's own estimated full price (bid + buyer premium + VAT) - the number you would actually pay. Capped at the first 100 results to keep runs fast.",
                        "default": false
                    },
                    "maxPagesPerPlatform": {
                        "title": "Max pages per platform",
                        "minimum": 1,
                        "maximum": 40,
                        "type": "integer",
                        "description": "How deep to paginate each platform (100 lots per page, sorted by closing time). Raise this when using a keyword filter to search deeper.",
                        "default": 10
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional. The storefront API is public and normally needs no proxy; configure one only if your runs get blocked."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
