# Ritchie Bros. Scraper — Global Auction Equipment​‌​ (`rastriq/rbauction-scraper`) Actor

Mine Ritchie Bros. live and closed auctions for high-value commercial intelligence: sold prices, open lots and date-filtered inventory. Generate dealer and end-buyer leads, benchmark resale values and time outreach to active market windows.

- **URL**: https://apify.com/rastriq/rbauction-scraper.md
- **Developed by:** [Rastriq — Structured data from the world](https://apify.com/rastriq) (community)
- **Categories:** AI, E-commerce, Agents
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.90 / 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

## Ritchie Bros. Auction Scraper — Equipment Prices & Lots

Extract auction data from **Ritchie Bros.**, one of the world's largest marketplaces for used commercial and heavy equipment. Capture live and closed lots, realized prices and date-filtered inventory as a structured feed.

### What this Actor does

- Scrapes listings across the categories you choose — by slug, by full URL, or via automatic discovery from catalog seeds.
- Captures both open lots and closed results with sold prices.
- Filters by auction date, manufacturer, keyword, sale event and status.
- Returns one normalized record per lot, ready for analysis or your CRM.

### Input

| Field | Type | Description |
|---|---|---|
| `inputMode` | string | Define categories by slug, by URL, or auto-discover from seeds |
| `categorySlugs` / `categoryUrls` | string/array | Categories to scrape |
| `manufacturers` | array | Filter by make / manufacturer |
| `freeText` | string | Keyword filter |
| `date_from` / `date_to` | string | Filter by auction end date |
| `listing_statuses` | string | Filter by auction status (open / closed) |
| `max_items` | integer | Cap total listings extracted |

> Quick test: pick one category and set `max_items` to 50.

### Output

Each lot includes make, model, year, category, equipment/lot ID, auction date, location, sold price or current bid, currency, listing URL, images and a snapshot timestamp. See the Output tab for the full schema.

### Use cases

- **Resale value benchmarking** — track realized auction prices by make, model and year.
- **Market timing** — monitor open lots and upcoming sale events.
- **Lead generation** — surface active buyers and sellers of high-value equipment.
- **Inventory intelligence** — feed date-filtered auction data into your pipeline.

### FAQ

**Live or historical?** Both — filter by status and date to get open lots or closed results.

**How often should I run it?** Schedule it around sale events, or run daily for a rolling view.

### Legal

This Actor collects only publicly available auction data — the same information any visitor can see in a browser. It does not access private or personal account data. You are responsible for complying with the website's terms and applicable law.

# Actor input Schema

## `inputMode` (type: `string`):

Choose how to define which categories to scrape:<br><ul><li><b>Category selection</b> — the list below is pre-filled with all known categories; delete the ones you don't want (recommended)</li><li><b>Category URLs</b> — paste full <code>https://www.rbauction.com/cp/…</code> URLs</li><li><b>Discover</b> — the actor crawls seed pages and collects all <code>/cp/</code> links automatically</li></ul>
## `categorySlugs` (type: `string`):

One slug per line (the part after /cp/ in the URL). Leave empty to scrape ALL 35 known categories. Delete lines you don't need, or add new slugs manually.
## `categoryUrls` (type: `array`):

Full RBAuction category URLs, one per line. Each must contain <code>/cp/</code>. You can embed filters in the URL (e.g. <code>?listingStatuses=Sold</code>). Use this for any category not covered by the list above.
## `discoverSeeds` (type: `string`):

One URL per line. The actor fetches each seed page, collects all <code>/cp/{slug}</code> links found, and scrapes them. This list is fully editable.
## `includeSeedCategories` (type: `boolean`):

When discovering, also scrape the seed pages themselves — not just the categories linked from them.
## `maxDiscoveredCategories` (type: `integer`):

Limit how many <code>/cp/</code> categories are discovered from seeds. Set to <code>0</code> for unlimited.
## `storeCategoryInventory` (type: `boolean`):

Save a log of all <code>/cp/</code> slugs found during this run to the key-value store (key: <code>CATEGORY_INVENTORY</code>). Each entry includes: slug, URL, anchor text, parent seed, first seen timestamp.
## `listing_statuses` (type: `string`):

Filter listings by auction status. Overrides any <code>listingStatuses</code> parameter already in the URL. Leave empty to keep each URL's own filter.
## `date_from` (type: `string`):

Only include listings whose auction ended <b>on or after</b> this date. Accepts <code>YYYY-MM-DD</code> or relative values like <code>30 days</code> or <code>3 months</code>. Leave empty for no lower bound.
## `date_to` (type: `string`):

Only include listings whose auction ended <b>on or before</b> this date. Accepts <code>YYYY-MM-DD</code> or relative values. Leave empty for no upper bound.
## `manufacturers` (type: `array`):

Filter by manufacturer name. Passed as <code>?manufacturers=</code> in the page URL. Examples: <code>Caterpillar</code>, <code>Komatsu</code>, <code>John Deere</code>. Leave empty for all brands.
## `freeText` (type: `string`):

Free-text keyword filter. Passed as <code>?freeText=</code>. Useful for filtering by location name, model suffix, or any term visible in listings. Example: <code>Nisku</code>, <code>D6T</code>.
## `saleEventIDs` (type: `array`):

Limit results to specific sale events by their UUID. Passed as <code>?saleEventIDs=</code>. Find event IDs in the URL when browsing a sale on rbauction.com.
## `sortBy` (type: `string`):

Sort order for listing results within each category page. Passed as <code>?sortBy=</code>.
## `max_items` (type: `integer`):

Maximum total listings to extract across all categories. Each RBAuction page returns up to 60 items. The actor stops as soon as this limit is reached.
## `maxPagesPerCategory` (type: `integer`):

Maximum number of pages (60 items each) to scrape per category. Set to <code>0</code> for unlimited depth.
## `startOffset` (type: `integer`):

Number of items to skip at the start of each category. Use to resume a partial run. Must be a multiple of 60 (e.g. 0, 60, 120, 180…).
## `stopWhenNoNewAssets` (type: `boolean`):

Stop paginating a category when a full page returns zero new (unseen) items. Recommended when revisiting partially-scraped categories.
## `delaySeconds` (type: `number`):

Base delay between page requests. Actual delay is randomised ±30% around this value. Increase to reduce load on the server.
## `cookies` (type: `string`):

Paste your rbauction.com session cookies as a JSON array. <b>Required to unlock sold prices and GraphQL enrichment.</b><br><br>How to export:<ol><li>Install <a href='https://chromewebstore.google.com/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm' target='_blank'>Cookie-Editor</a> in Chrome</li><li>Log in to rbauction.com</li><li>Click the extension → <b>Export (JSON)</b></li><li>Paste the result here</li></ol>
## `enrich_graphql` (type: `boolean`):

When enabled and cookies are provided, each item is enriched via RBAuction's internal API: confirmed hammer price, reserve price, bid count, currency, and exact sold timestamp. Adds ~0.5 s per item.

## Actor input object example

```json
{
  "inputMode": "slugs",
  "categorySlugs": "construction\nagriculture\ntrucks---trailers\nforklifts-and-warehouse-equipment\ncranes\nmotors\nconsumer-items\nexcavators\nwheel-loaders\ncompact-track-loaders\nskid-steer-loaders\nbackhoe-loaders\nbulldozers-tractor-de-cadenas\ncrawler-loaders\narticulated-dump-trucks\ndump-trucks\ntruck-tractors\nagricultural-tractors\nforklifts\nscissor-lifts\ngenerators-and-power-equipment\nvan-trailers\nutility-trailers\ntravel-trailer\npickup-trucks\nmotorcycles\ncontainers\nportable-structures\nskid-steer-attachments\nexcavator-attachments\nproduct-and-fuel-tanks\ntools\nparts\nlandscaping-equipment\nmulcher-attachment",
  "categoryUrls": [
    "https://www.rbauction.com/cp/truck-tractors?listingStatuses=Sold",
    "https://www.rbauction.com/cp/wheel-loaders"
  ],
  "discoverSeeds": "https://www.rbauction.com/cp/industries\nhttps://www.rbauction.com/cp/construction\nhttps://www.rbauction.com/cp/agriculture\nhttps://www.rbauction.com/cp/trucks---trailers\nhttps://www.rbauction.com/cp/forklifts-and-warehouse-equipment\nhttps://www.rbauction.com/cp/cranes\nhttps://www.rbauction.com/cp/motors\nhttps://www.rbauction.com/cp/consumer-items",
  "includeSeedCategories": true,
  "maxDiscoveredCategories": 50,
  "storeCategoryInventory": false,
  "listing_statuses": "Sold",
  "date_from": "2024-01-01",
  "date_to": "2024-12-31",
  "manufacturers": [
    "Caterpillar",
    "Komatsu"
  ],
  "freeText": "Nisku",
  "saleEventIDs": [
    "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  ],
  "sortBy": "",
  "max_items": 500,
  "maxPagesPerCategory": 0,
  "startOffset": 0,
  "stopWhenNoNewAssets": true,
  "delaySeconds": 1.5,
  "cookies": "[{\"name\": \"session\", \"value\": \"...\", \"domain\": \".rbauction.com\"}]",
  "enrich_graphql": true
}
````

# Actor output Schema

## `adId` (type: `string`):

Adid

## `advertiserId` (type: `string`):

Advertiserid

## `asset_description` (type: `string`):

Asset description

## `auctionAd` (type: `string`):

Auctionad

## `buying_format` (type: `string`):

Buying format

## `buying_platform` (type: `string`):

Buying platform

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

Category

## `condition` (type: `string`):

Condition

## `country` (type: `string`):

Country

## `countryManufactuer` (type: `string`):

Countrymanufactuer

## `dailyRent` (type: `string`):

Dailyrent

## `deliveryDate` (type: `string`):

Deliverydate

## `email` (type: `string`):

Email

## `features` (type: `string`):

Features

## `gql_bid_count` (type: `string`):

Gql bid count

## `gql_currency` (type: `string`):

Gql currency

## `gql_min_price` (type: `string`):

Gql min price

## `gql_sold_price` (type: `string`):

Gql sold price

## `gql_sold_time` (type: `string`):

Gql sold time

## `hours` (type: `string`):

Hours

## `images` (type: `string`):

Images

## `industry` (type: `string`):

Industry

## `item_id` (type: `string`):

Item id

## `latitude` (type: `string`):

Latitude

## `listing_status` (type: `string`):

Listing status

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

Location

## `location_region` (type: `string`):

Location region

## `location_state` (type: `string`):

Location state

## `longitude` (type: `string`):

Longitude

## `manufacturer` (type: `string`):

Manufacturer

## `marketplace` (type: `string`):

Marketplace

## `model` (type: `string`):

Model

## `moneda` (type: `string`):

Moneda

## `motorManufacturer` (type: `string`):

Motormanufacturer

## `motorPower` (type: `string`):

Motorpower

## `motorType` (type: `string`):

Motortype

## `payload` (type: `string`):

Payload

## `price` (type: `string`):

Price

## `priceEURO` (type: `string`):

Priceeuro

## `pubishDate` (type: `string`):

Pubishdate

## `sale_event_id` (type: `string`):

Sale event id

## `seller` (type: `string`):

Seller

## `serialNumber` (type: `string`):

Serialnumber

## `snapshot_at` (type: `string`):

Snapshot at

## `source` (type: `string`):

Source

## `subcategory` (type: `string`):

Subcategory

## `telephoneNumber` (type: `string`):

Telephonenumber

## `url` (type: `string`):

Url

## `weight` (type: `string`):

Weight

## `year` (type: `string`):

Year

# 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 = {
    "categorySlugs": `construction
agriculture
trucks---trailers
forklifts-and-warehouse-equipment
cranes
motors
consumer-items
excavators
wheel-loaders
compact-track-loaders
skid-steer-loaders
backhoe-loaders
bulldozers-tractor-de-cadenas
crawler-loaders
articulated-dump-trucks
dump-trucks
truck-tractors
agricultural-tractors
forklifts
scissor-lifts
generators-and-power-equipment
van-trailers
utility-trailers
travel-trailer
pickup-trucks
motorcycles
containers
portable-structures
skid-steer-attachments
excavator-attachments
product-and-fuel-tanks
tools
parts
landscaping-equipment
mulcher-attachment`,
    "discoverSeeds": `https://www.rbauction.com/cp/industries
https://www.rbauction.com/cp/construction
https://www.rbauction.com/cp/agriculture
https://www.rbauction.com/cp/trucks---trailers
https://www.rbauction.com/cp/forklifts-and-warehouse-equipment
https://www.rbauction.com/cp/cranes
https://www.rbauction.com/cp/motors
https://www.rbauction.com/cp/consumer-items`
};

// Run the Actor and wait for it to finish
const run = await client.actor("rastriq/rbauction-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 = {
    "categorySlugs": """construction
agriculture
trucks---trailers
forklifts-and-warehouse-equipment
cranes
motors
consumer-items
excavators
wheel-loaders
compact-track-loaders
skid-steer-loaders
backhoe-loaders
bulldozers-tractor-de-cadenas
crawler-loaders
articulated-dump-trucks
dump-trucks
truck-tractors
agricultural-tractors
forklifts
scissor-lifts
generators-and-power-equipment
van-trailers
utility-trailers
travel-trailer
pickup-trucks
motorcycles
containers
portable-structures
skid-steer-attachments
excavator-attachments
product-and-fuel-tanks
tools
parts
landscaping-equipment
mulcher-attachment""",
    "discoverSeeds": """https://www.rbauction.com/cp/industries
https://www.rbauction.com/cp/construction
https://www.rbauction.com/cp/agriculture
https://www.rbauction.com/cp/trucks---trailers
https://www.rbauction.com/cp/forklifts-and-warehouse-equipment
https://www.rbauction.com/cp/cranes
https://www.rbauction.com/cp/motors
https://www.rbauction.com/cp/consumer-items""",
}

# Run the Actor and wait for it to finish
run = client.actor("rastriq/rbauction-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 '{
  "categorySlugs": "construction\\nagriculture\\ntrucks---trailers\\nforklifts-and-warehouse-equipment\\ncranes\\nmotors\\nconsumer-items\\nexcavators\\nwheel-loaders\\ncompact-track-loaders\\nskid-steer-loaders\\nbackhoe-loaders\\nbulldozers-tractor-de-cadenas\\ncrawler-loaders\\narticulated-dump-trucks\\ndump-trucks\\ntruck-tractors\\nagricultural-tractors\\nforklifts\\nscissor-lifts\\ngenerators-and-power-equipment\\nvan-trailers\\nutility-trailers\\ntravel-trailer\\npickup-trucks\\nmotorcycles\\ncontainers\\nportable-structures\\nskid-steer-attachments\\nexcavator-attachments\\nproduct-and-fuel-tanks\\ntools\\nparts\\nlandscaping-equipment\\nmulcher-attachment",
  "discoverSeeds": "https://www.rbauction.com/cp/industries\\nhttps://www.rbauction.com/cp/construction\\nhttps://www.rbauction.com/cp/agriculture\\nhttps://www.rbauction.com/cp/trucks---trailers\\nhttps://www.rbauction.com/cp/forklifts-and-warehouse-equipment\\nhttps://www.rbauction.com/cp/cranes\\nhttps://www.rbauction.com/cp/motors\\nhttps://www.rbauction.com/cp/consumer-items"
}' |
apify call rastriq/rbauction-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Ritchie Bros. Scraper — Global Auction Equipment​‌​",
        "description": "Mine Ritchie Bros. live and closed auctions for high-value commercial intelligence: sold prices, open lots and date-filtered inventory. Generate dealer and end-buyer leads, benchmark resale values and time outreach to active market windows.",
        "version": "0.8",
        "x-build-id": "N1UmCIy5QIX3AO40j"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/rastriq~rbauction-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-rastriq-rbauction-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/rastriq~rbauction-scraper/runs": {
            "post": {
                "operationId": "runs-sync-rastriq-rbauction-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/rastriq~rbauction-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-rastriq-rbauction-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": {
                    "inputMode": {
                        "title": "Scraping mode",
                        "enum": [
                            "slugs",
                            "urls",
                            "discover"
                        ],
                        "type": "string",
                        "description": "Choose how to define which categories to scrape:<br><ul><li><b>Category selection</b> — the list below is pre-filled with all known categories; delete the ones you don't want (recommended)</li><li><b>Category URLs</b> — paste full <code>https://www.rbauction.com/cp/…</code> URLs</li><li><b>Discover</b> — the actor crawls seed pages and collects all <code>/cp/</code> links automatically</li></ul>",
                        "default": "slugs"
                    },
                    "categorySlugs": {
                        "title": "Categories to scrape",
                        "type": "string",
                        "description": "One slug per line (the part after /cp/ in the URL). Leave empty to scrape ALL 35 known categories. Delete lines you don't need, or add new slugs manually."
                    },
                    "categoryUrls": {
                        "title": "Category URLs",
                        "type": "array",
                        "description": "Full RBAuction category URLs, one per line. Each must contain <code>/cp/</code>. You can embed filters in the URL (e.g. <code>?listingStatuses=Sold</code>). Use this for any category not covered by the list above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "discoverSeeds": {
                        "title": "Catalog seeds",
                        "type": "string",
                        "description": "One URL per line. The actor fetches each seed page, collects all <code>/cp/{slug}</code> links found, and scrapes them. This list is fully editable."
                    },
                    "includeSeedCategories": {
                        "title": "Include seed pages as categories",
                        "type": "boolean",
                        "description": "When discovering, also scrape the seed pages themselves — not just the categories linked from them.",
                        "default": true
                    },
                    "maxDiscoveredCategories": {
                        "title": "Max categories to discover",
                        "minimum": 0,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Limit how many <code>/cp/</code> categories are discovered from seeds. Set to <code>0</code> for unlimited.",
                        "default": 50
                    },
                    "storeCategoryInventory": {
                        "title": "Save category inventory",
                        "type": "boolean",
                        "description": "Save a log of all <code>/cp/</code> slugs found during this run to the key-value store (key: <code>CATEGORY_INVENTORY</code>). Each entry includes: slug, URL, anchor text, parent seed, first seen timestamp.",
                        "default": false
                    },
                    "listing_statuses": {
                        "title": "Listing status",
                        "enum": [
                            "",
                            "Sold",
                            "Open"
                        ],
                        "type": "string",
                        "description": "Filter listings by auction status. Overrides any <code>listingStatuses</code> parameter already in the URL. Leave empty to keep each URL's own filter.",
                        "default": "Sold"
                    },
                    "date_from": {
                        "title": "Auction date from",
                        "type": "string",
                        "description": "Only include listings whose auction ended <b>on or after</b> this date. Accepts <code>YYYY-MM-DD</code> or relative values like <code>30 days</code> or <code>3 months</code>. Leave empty for no lower bound."
                    },
                    "date_to": {
                        "title": "Auction date to",
                        "type": "string",
                        "description": "Only include listings whose auction ended <b>on or before</b> this date. Accepts <code>YYYY-MM-DD</code> or relative values. Leave empty for no upper bound."
                    },
                    "manufacturers": {
                        "title": "Make / Manufacturer filter",
                        "type": "array",
                        "description": "Filter by manufacturer name. Passed as <code>?manufacturers=</code> in the page URL. Examples: <code>Caterpillar</code>, <code>Komatsu</code>, <code>John Deere</code>. Leave empty for all brands.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "freeText": {
                        "title": "Keyword search",
                        "type": "string",
                        "description": "Free-text keyword filter. Passed as <code>?freeText=</code>. Useful for filtering by location name, model suffix, or any term visible in listings. Example: <code>Nisku</code>, <code>D6T</code>."
                    },
                    "saleEventIDs": {
                        "title": "Sale event ID filter",
                        "type": "array",
                        "description": "Limit results to specific sale events by their UUID. Passed as <code>?saleEventIDs=</code>. Find event IDs in the URL when browsing a sale on rbauction.com.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sortBy": {
                        "title": "Sort order",
                        "enum": [
                            "",
                            "newest",
                            "oldest",
                            "priceAsc",
                            "priceDesc"
                        ],
                        "type": "string",
                        "description": "Sort order for listing results within each category page. Passed as <code>?sortBy=</code>.",
                        "default": ""
                    },
                    "max_items": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Maximum total listings to extract across all categories. Each RBAuction page returns up to 60 items. The actor stops as soon as this limit is reached.",
                        "default": 500
                    },
                    "maxPagesPerCategory": {
                        "title": "Max pages per category",
                        "minimum": 0,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of pages (60 items each) to scrape per category. Set to <code>0</code> for unlimited depth.",
                        "default": 0
                    },
                    "startOffset": {
                        "title": "Start offset",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Number of items to skip at the start of each category. Use to resume a partial run. Must be a multiple of 60 (e.g. 0, 60, 120, 180…).",
                        "default": 0
                    },
                    "stopWhenNoNewAssets": {
                        "title": "Stop when no new items found",
                        "type": "boolean",
                        "description": "Stop paginating a category when a full page returns zero new (unseen) items. Recommended when revisiting partially-scraped categories.",
                        "default": true
                    },
                    "delaySeconds": {
                        "title": "Delay between requests (seconds)",
                        "minimum": 0.5,
                        "maximum": 15,
                        "type": "number",
                        "description": "Base delay between page requests. Actual delay is randomised ±30% around this value. Increase to reduce load on the server.",
                        "default": 1.5
                    },
                    "cookies": {
                        "title": "Session cookies (JSON)",
                        "type": "string",
                        "description": "Paste your rbauction.com session cookies as a JSON array. <b>Required to unlock sold prices and GraphQL enrichment.</b><br><br>How to export:<ol><li>Install <a href='https://chromewebstore.google.com/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm' target='_blank'>Cookie-Editor</a> in Chrome</li><li>Log in to rbauction.com</li><li>Click the extension → <b>Export (JSON)</b></li><li>Paste the result here</li></ol>"
                    },
                    "enrich_graphql": {
                        "title": "Enrich with GraphQL data",
                        "type": "boolean",
                        "description": "When enabled and cookies are provided, each item is enriched via RBAuction's internal API: confirmed hammer price, reserve price, bid count, currency, and exact sold timestamp. Adds ~0.5 s per item.",
                        "default": true
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
