# BidSpotter Scraper - Industrial Auction Lots & Live Bids (`crawloop/bidspotter-scraper`) Actor

Scrape BidSpotter industrial auction lots: current bids, opening prices, reserves, lot numbers, auctioneer, images, and catalogue metadata. Keyword search, for-sale categories, catalogue URLs, or lot pages — dealers, liquidators, and appraisers.

- **URL**: https://apify.com/crawloop/bidspotter-scraper.md
- **Developed by:** [Andrej Kiva](https://apify.com/crawloop) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Features:** Limited permissions
- **Stats:** 6 total users, 1 monthly users, 96.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 listings rows

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/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

## BidSpotter Scraper — Industrial Auction Lots & Live Bids

> **Disclaimer:** Unofficial tool — not affiliated with, sponsored by, or endorsed by BidSpotter or its affiliates. Data is read from publicly accessible pages only. No login. You are responsible for complying with applicable law (including GDPR where personal data appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.

> **Crawloop Used Machinery Marketplace Suite** — Structured extraction for industrial auctions and used equipment. Built for B2B sourcing, dealer intelligence, and auction price monitoring.

#### Industrial auction scrapers

| IronPlanet | GovPlanet | Ritchie Bros | BidSpotter | NetBid | AuctionTime | Purple Wave |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| [IronPlanet Scraper](https://apify.com/crawloop/ironplanet-scraper) | [GovPlanet Scraper](https://apify.com/crawloop/govplanet-scraper) | [Ritchie Bros Auction Scraper](https://apify.com/crawloop/rbauction-scraper) | BidSpotter Scraper ◄── you are here | [NetBid Scraper](https://apify.com/crawloop/netbid-scraper) | [AuctionTime Scraper](https://apify.com/crawloop/auctiontime-scraper) | [Purple Wave Auctions Scraper](https://apify.com/crawloop/purplewave-scraper) |

| Troostwijk | Surplex | MachineryTrader | TractorHouse |
| :--- | :--- | :--- | :--- |
| [Troostwijk Scraper](https://apify.com/crawloop/troostwijk-scraper) | [Surplex Scraper](https://apify.com/crawloop/surplex-scraper) | [MachineryTrader Scraper](https://apify.com/crawloop/machinerytrader-scraper) | [TractorHouse Scraper](https://apify.com/crawloop/tractorhouse-scraper) |

**BidSpotter scraper** for industrial, commercial, plant, and machinery auctions. Extract **live bids**, **opening prices**, **reserves**, lot numbers, auctioneer, images, and catalogue metadata into JSON. Use keyword lot search, for-sale categories, catalogue URLs, or lot detail pages — a practical **BidSpotter API alternative** for Python, Node.js, and MCP workflows on Apify.

### When to use this Actor

Use the **BidSpotter Scraper** when you need:

- **Live lot bids & reserves** — `currentBid`, `openingPrice`, `reserve`, `totalBids`, status
- **Catalogue discovery** — timed/live auction catalogues with auctioneer and category counts
- **Keyword lot search** — queries like `CNC`, `forklift`, `excavator` across the marketplace
- **Category browse** — metalworking, food & beverage, construction, vehicles, farm equipment paths
- **Lot enrichment** — full description, image gallery, and bid history in `details` mode
- **US + UK coverage** — BidSpotter.com (`com`) or BidSpotter.co.uk (`co.uk`)

Ideal for machinery dealers, liquidators, asset recovery teams, appraisers, and researchers tracking industrial auction inventory.

Combine with [NetBid Scraper](https://apify.com/crawloop/netbid-scraper), [IronPlanet Scraper](https://apify.com/crawloop/ironplanet-scraper), [Ritchie Bros Auction Scraper](https://apify.com/crawloop/rbauction-scraper), [Troostwijk Scraper](https://apify.com/crawloop/troostwijk-scraper), and [Surplex Scraper](https://apify.com/crawloop/surplex-scraper) for a multi-house auction intelligence pipeline.

### Used Machinery Auction Pipeline

```
Input sources                         Extraction                 Output
─────────────────────────────        ──────────────────        ──────────────────

  Keyword search (/search-results) ─► listings (cards)  ──►  bid, reserve, image
  Catalogue URL  (/catalogue-id-…) ─► details (lot PDP) ──►  description, gallery
  For-sale URL   (/for-sale/…)     ─►                      ──►  auctioneer, dates
  Lot URL        (/lot-{uuid})

  Join with Surplex + Troostwijk ──► cross-house price benchmarking
```

### Key Features

- **Keyword lot search** — `searchQueries` hit BidSpotter lot search results with bids and reserves.
- **Catalogue & for-sale targeting** — Scrape specific auction catalogues or industrial category URLs.
- **Deep lot enrichment** — In `details` mode, open each lot page for description, images, and bid history.
- **Catalogue browser** — List current timed/live auctions with auctioneer, dates, and categories.
- **Dual site support** — North America (`com`) and UK/Europe (`co.uk`).
- **AWS WAF handling** — Camoufox browser + Apify residential proxies (required for reliable runs).
- **Structured JSON export** — Stable fields for CRM, comps, and monitoring pipelines.

### Input Parameters

| Parameter | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `mode` | String | `"search"` | `catalogues`, `catalogue_urls`, `search`, `for_sale`, or `lot_urls`. |
| `scrapeMode` | String | `"listings"` | `listings` for card-level rows or `details` for lot-page enrichment. |
| `searchQueries` | Array | `["cnc"]` | Keywords for `search` mode. |
| `startUrls` | Array | `[]` | Catalogue, for-sale, or lot URLs (mode-dependent). |
| `site` | String | `"com"` | `com` or `co.uk`. |
| `auctionType` | String | `""` | Optional `Timed` / `Live` filter for catalogues mode. |
| `maxCatalogues` | Integer | `5` | Cap catalogues processed (`0` = unlimited). |
| `maxPages` | Integer | `3` | Max list pages per source (`0` = unlimited). |
| `maxItems` | Integer | `50` | Max dataset rows (`0` = unlimited). |
| `concurrency` | Integer | `2` | Parallel detail fetches (1–5). |
| `proxyConfiguration` | Object | residential | Apify Proxy — **RESIDENTIAL recommended**. |

#### Input example — keyword search

```json
{
  "mode": "search",
  "scrapeMode": "listings",
  "searchQueries": ["cnc", "forklift"],
  "site": "com",
  "maxPages": 2,
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

#### Input example — catalogue lots

```json
{
  "mode": "catalogue_urls",
  "scrapeMode": "details",
  "startUrls": [
    {
      "url": "https://www.bidspotter.com/en-us/auction-catalogues/eamagroup/catalogue-id-eama-g11606"
    }
  ],
  "maxPages": 3,
  "maxItems": 50
}
```

### Output fields

| Field | Description |
| :--- | :--- |
| `type` | `lot` or `catalogue` |
| `lotId` / `lotNumber` | Lot UUID and display number |
| `catalogueId` / `auctionId` | Catalogue reference and auction UUID |
| `title` / `description` | Lot or catalogue text |
| `openingPrice` / `currentBid` / `reserve` | Pricing fields |
| `currency` / `totalBids` / `lotClosed` / `status` | Bid state |
| `auctionHouse` / `auctionType` / `location` | Auction context |
| `startDate` / `endDate` | Timing (ISO when available) |
| `imageUrl` / `images` / `bidHistory` | Media and history |
| `url` / `searchQuery` / `scrapedAt` | Provenance |

#### Output example

```json
{
  "type": "lot",
  "lotId": "ca989b95-402c-4dae-a2e4-b4970044bef1",
  "lotNumber": "999",
  "catalogueId": "eama-g11606",
  "title": "2021 JCB 8008 CTS 1T MICRO EXCAVATOR",
  "openingPrice": 6900,
  "currentBid": 1200,
  "reserve": 7600,
  "currency": "GBP",
  "totalBids": 3,
  "auctionType": "Timed",
  "auctionHouse": "EAMA Group",
  "url": "https://www.bidspotter.com/en-us/auction-catalogues/eamagroup/catalogue-id-eama-g11606/lot-ca989b95-402c-4dae-a2e4-b4970044bef1",
  "scrapedAt": "2026-08-05T12:00:00Z"
}
```

### Use cases

- Monitor BidSpotter industrial lots for CNC, metalworking, food processing, and material handling
- Benchmark opening prices and reserves across auctioneers
- Feed dealer CRM / sourcing pipelines with structured lot JSON
- Track timed auction endings for bid alerts
- Combine BidSpotter lots with Surplex/Troostwijk for cross-market comps

### Integration examples

#### Node.js

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/bidspotter-scraper').call({
  mode: 'search',
  scrapeMode: 'listings',
  searchQueries: ['cnc'],
  maxItems: 50,
  proxyConfiguration: { useApifyProxy: true, apifyProxyGroups: ['RESIDENTIAL'] },
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 5));
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")
run = client.actor("crawloop/bidspotter-scraper").call(
    run_input={
        "mode": "search",
        "scrapeMode": "listings",
        "searchQueries": ["forklift"],
        "maxItems": 50,
        "proxyConfiguration": {
            "useApifyProxy": True,
            "apifyProxyGroups": ["RESIDENTIAL"],
        },
    }
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item.get("title"), item.get("currentBid"), item.get("currency"))
```

#### cURL

```bash
curl -s -X POST "https://api.apify.com/v2/acts/crawloop~bidspotter-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode":"search","searchQueries":["excavator"],"maxItems":20,"proxyConfiguration":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}}'
```

### MCP and AI assistants

Use this Actor from AI tools via [Apify MCP](https://docs.apify.com/platform/integrations/mcp).
Connect your Apify account, then call this Actor by its Store ID / name.

Example prompts:

- "Run BidSpotter Scraper for searchQueries CNC and forklift, return the top 20 lots as JSON"
- "Scrape BidSpotter catalogue lots for a given catalogue-id URL in details mode"
- "Chain BidSpotter Scraper then IronPlanet Scraper to compare industrial auction lots with weekly heavy-equipment auctions"

### Suite next step

After BidSpotter lot discovery, run [NetBid Scraper](https://apify.com/crawloop/netbid-scraper) for European insolvency auctions, [IronPlanet Scraper](https://apify.com/crawloop/ironplanet-scraper) or [Ritchie Bros Auction Scraper](https://apify.com/crawloop/rbauction-scraper) for heavy-equipment auctions, or [Surplex Scraper](https://apify.com/crawloop/surplex-scraper) and [Troostwijk Scraper](https://apify.com/crawloop/troostwijk-scraper) for EU plant closures.

### FAQ

**Is this a BidSpotter API?**\
No official public API is required. This Actor scrapes publicly available catalogue and lot pages and returns structured JSON for Python, Node.js, and MCP clients.

**Why residential proxies?**\
BidSpotter sits behind AWS WAF. Datacenter IPs often receive Human Verification pages. Use Apify RESIDENTIAL groups.

**Catalogue-only vs lots?**\
`mode: catalogues` returns auction catalogue cards. Use `search`, `catalogue_urls`, or `for_sale` for lot-level bids and prices.

**Does it cover BidSpotter.co.uk?**\
Yes — set `site: "co.uk"`.

### Related Actors

| Actor | Role |
| :--- | :--- |
| BidSpotter Scraper ◄── you are here | Industrial auction lots (US/UK) |
| [NetBid Scraper](https://apify.com/crawloop/netbid-scraper) | European insolvency auctions |
| [IronPlanet Scraper](https://apify.com/crawloop/ironplanet-scraper) | Weekly online heavy-equipment auctions |
| [GovPlanet Scraper](https://apify.com/crawloop/govplanet-scraper) | US government and military surplus |
| [Ritchie Bros Auction Scraper](https://apify.com/crawloop/rbauction-scraper) | Sold hammer prices and regional auctions |
| [Surplex Scraper](https://apify.com/crawloop/surplex-scraper) | EU industrial auction lots |
| [Troostwijk Scraper](https://apify.com/crawloop/troostwijk-scraper) | EU industrial auction lots |
| [MachineryTrader Scraper](https://apify.com/crawloop/machinerytrader-scraper) | US heavy-equipment asking prices |
| [TractorHouse Scraper](https://apify.com/crawloop/tractorhouse-scraper) | US and EU farm equipment |

# Actor input Schema

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

Catalogue pages (/auction-catalogues/.../catalogue-id-...), lot pages (.../lot-{uuid}), for-sale category pages, or search-results URLs. Used by catalogue_urls, lot_urls, and for_sale modes.

## `mode` (type: `string`):

What to scrape: current auction catalogues, lots inside catalogues, keyword lot search, for-sale category browse, or specific lot URLs.

## `scrapeMode` (type: `string`):

listings — card-level fields from list/search pages (title, bids, reserve, image). details — also open each lot page for full description, image gallery, and bid history when available.

## `searchQueries` (type: `array`):

Keywords for search mode (e.g. CNC, forklift, excavator). Each query hits /search-results?searchTerm=...

## `site` (type: `string`):

BidSpotter.com (North America / Global Auction Platform en-us) or BidSpotter.co.uk (Europe en-gb).

## `auctionType` (type: `string`):

Optional filter when browsing catalogues.

## `maxCatalogues` (type: `integer`):

Maximum catalogues to process (catalogues / catalogue_urls). 0 = unlimited.

## `maxPages` (type: `integer`):

Maximum list pages to paginate per catalogue/search/category. 0 = unlimited.

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

Maximum dataset rows to output. 0 = unlimited.

## `concurrency` (type: `integer`):

Parallel detail-page fetches (details mode).

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

Apify proxy configuration. RESIDENTIAL strongly recommended — BidSpotter uses AWS WAF.

## Actor input object example

```json
{
  "startUrls": [],
  "mode": "search",
  "scrapeMode": "listings",
  "searchQueries": [
    "cnc"
  ],
  "site": "com",
  "auctionType": "",
  "maxCatalogues": 5,
  "maxPages": 3,
  "maxItems": 50,
  "concurrency": 2,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Default dataset items (catalogues and/or lots with bids, reserves, images).

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("crawloop/bidspotter-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("crawloop/bidspotter-scraper").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 '{}' |
apify call crawloop/bidspotter-scraper --silent --output-dataset

```

## MCP server setup

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

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/HfiF9k902Kx0fvFyo/builds/dX8gYT7KlhCn31Dic/openapi.json
