# Bring a Trailer Car Auctions Scraper (`crawlerbros/bring-a-trailer-scraper`) Actor

Scrape Bring a Trailer (bringatrailer.com) the premier online auction site for enthusiast vehicles. Search active auctions, browse by make, get full listing details, or explore completed auction results with final sale prices.

- **URL**: https://apify.com/crawlerbros/bring-a-trailer-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 7 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 1,000 results

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

Learn more: https://docs.apify.com/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

## Bring a Trailer Car Auctions Scraper

Extract active and completed auction listings from **[Bring a Trailer](https://bringatrailer.com)** (BaT) — the premier online marketplace for enthusiast and collector vehicles. Search by keyword, browse by make, get full listing details, or explore recently sold auction results with final prices.

### What You Can Scrape

- **Active auctions** — live listings with current bids and countdown timers
- **Completed results** — recently sold vehicles with final sale prices
- **Make-specific listings** — all auctions (past and present) for a specific manufacturer
- **Full listing details** — mileage, transmission, seller info, all photos, lot number
- **Featured auctions** — currently spotlighted vehicles on the BaT homepage

### Key Features

- No API key or login required — Bring a Trailer is publicly accessible
- Extracts structured JSON data embedded in page source
- Parses year, make, model from listing titles automatically
- Supports bid and year filtering to narrow results
- Returns images, seller profiles, auction status, and end dates

---

### Input Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `mode` | Select | What to scrape (see modes below) |
| `searchQuery` | String | Keyword search — make, model, or year (mode=search) |
| `make` | String | Car manufacturer slug, e.g. `porsche`, `bmw`, `ferrari` (mode=byMake) |
| `startUrls` | Array | One or more full listing URLs (mode=getListing) |
| `minYear` | Integer | Filter: only listings from this year or newer |
| `maxYear` | Integer | Filter: only listings from this year or older |
| `minBid` | Number | Filter: only listings with current bid ≥ this amount (USD) |
| `maxBid` | Number | Filter: only listings with current bid ≤ this amount (USD) |
| `sold` | Boolean | In mode=results: only include listings that sold (exclude no-reserve-not-met) |
| `maxItems` | Integer | Maximum number of results to return (default: 20, max: 500) |

#### Modes

| Mode | Description |
|------|-------------|
| `search` | Search active and completed auctions by keyword (make, model, year) |
| `byMake` | Browse all BaT listings for a specific manufacturer |
| `getListing` | Fetch full details for one or more listing URLs |
| `results` | Browse recently completed auction results |
| `featured` | Currently active/featured auctions on the BaT homepage |

---

### Output Format

Each record in the dataset contains:

| Field | Type | Description |
|-------|------|-------------|
| `listingId` | String | Unique listing identifier |
| `title` | String | Full listing title, e.g. "1993 Porsche 911 Carrera 2 Coupe 5-Speed" |
| `year` | Integer | Vehicle model year (parsed from title) |
| `make` | String | Manufacturer (parsed from title), e.g. "Porsche" |
| `model` | String | Model name (parsed from title), e.g. "911 Carrera 2 Coupe 5-Speed" |
| `currentBid` | Float | Current or final bid amount in USD |
| `currency` | String | Always "USD" |
| `bidCount` | Integer | Number of bids placed (detail pages only) |
| `auctionStatus` | String | `active`, `sold`, or `no_sale` |
| `endDate` | String | Auction end date/time in ISO 8601 format |
| `location` | String | Seller location (city, state or country) |
| `mileage` | Integer | Odometer reading in miles (detail pages only) |
| `transmission` | String | Transmission type (detail pages only) |
| `sellerName` | String | BaT username of the seller (detail pages only) |
| `sellerProfileUrl` | String | URL to seller's BaT profile (detail pages only) |
| `description` | String | Listing description / excerpt |
| `images` | Array | List of image URLs |
| `noReserve` | Boolean | True if listed without a reserve price |
| `lotNumber` | String | BaT lot number (detail pages only) |
| `url` | String | Full URL to the listing page |
| `scrapedAt` | String | ISO 8601 timestamp when the record was scraped |

---

### Example Output

```json
{
  "listingId": "112822555",
  "title": "1999 Porsche 911 Carrera Cabriolet 6-Speed",
  "year": 1999,
  "make": "Porsche",
  "model": "911 Carrera Cabriolet 6-Speed",
  "currentBid": 19750.0,
  "currency": "USD",
  "auctionStatus": "sold",
  "endDate": "2026-05-16T18:51:05+00:00",
  "location": "US",
  "description": "This 1999 Porsche 911 Carrera cabriolet was specified in Glacier White...",
  "images": [
    "https://bringatrailer.com/wp-content/uploads/2026/04/1999_porsche_911-carrera-cabriolet_..."
  ],
  "noReserve": true,
  "url": "https://bringatrailer.com/listing/1999-porsche-911-carrera-cabriolet-164/",
  "scrapedAt": "2026-05-17T10:00:00+00:00"
}
````

***

### Use Cases

- **Market research** — track historical sale prices for specific makes/models
- **Price benchmarking** — compare asking prices against BaT recent results
- **Auction monitoring** — track active listings for vehicles of interest
- **Investment analysis** — analyze trends in collector car valuations
- **Inventory sourcing** — identify vehicles for resale or collection

***

### FAQs

**Do I need an account or API key?**
No. Bring a Trailer's auction listings are publicly accessible without login.

**How current is the data?**
Active auction data is scraped in real time. Completed result prices are from the most recently ended auctions.

**How many results can I get?**
Up to 500 records per run. Completed listings paginate 24–36 items per page; the actor automatically paginates to reach your `maxItems` limit.

**Can I filter by year range?**
Yes — use `minYear` and `maxYear` to restrict results to specific model years.

**What does "no\_sale" mean?**
BaT auctions with a reserve price that was not met end without a sale. These are marked `auctionStatus: "no_sale"`.

**Can I scrape multiple makes at once?**
Use mode=search with a broad query, or run the actor multiple times with different `make` values using mode=byMake.

**What image URLs are returned?**
The actor returns direct WordPress media URLs from bringatrailer.com. These are publicly accessible.

***

### Data Source

Data is sourced from [bringatrailer.com](https://bringatrailer.com), a Hearst Autos property. BaT is the leading online auction platform for enthusiast vehicles, with over 240,000 completed auctions.

# Actor input Schema

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

What to scrape.

## `searchQuery` (type: `string`):

Keyword to search (make, model, year). Used in mode=search. Examples: 'porsche 911', 'bmw e30', '1967 mustang'.

## `make` (type: `string`):

Car manufacturer for mode=byMake. Examples: porsche, bmw, ferrari, ford, toyota. Use the make slug as it appears in the BaT URL (e.g. 'porsche' for bringatrailer.com/porsche/).

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

One or more listing page URLs for mode=getListing. Example: https://bringatrailer.com/listing/1993-porsche-911-carrera-2-coupe-26/

## `minYear` (type: `integer`):

Only include listings from this year or newer.

## `maxYear` (type: `integer`):

Only include listings from this year or older.

## `minBid` (type: `number`):

Only include listings with a current bid at or above this amount.

## `maxBid` (type: `number`):

Only include listings with a current bid at or below this amount.

## `sold` (type: `boolean`):

In mode=results: if true, only include listings that sold (exclude no-sale results).

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

Maximum number of listings to return.

## Actor input object example

```json
{
  "mode": "search",
  "searchQuery": "porsche",
  "startUrls": [],
  "sold": false,
  "maxItems": 20
}
```

# Actor output Schema

## `listings` (type: `string`):

Dataset containing all scraped auction listings.

# 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 = {
    "mode": "search",
    "searchQuery": "porsche",
    "startUrls": [],
    "sold": false,
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/bring-a-trailer-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 = {
    "mode": "search",
    "searchQuery": "porsche",
    "startUrls": [],
    "sold": False,
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/bring-a-trailer-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 '{
  "mode": "search",
  "searchQuery": "porsche",
  "startUrls": [],
  "sold": false,
  "maxItems": 20
}' |
apify call crawlerbros/bring-a-trailer-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Bring a Trailer Car Auctions Scraper",
        "description": "Scrape Bring a Trailer (bringatrailer.com) the premier online auction site for enthusiast vehicles. Search active auctions, browse by make, get full listing details, or explore completed auction results with final sale prices.",
        "version": "1.0",
        "x-build-id": "ZH4MlnWlJemTNijHy"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~bring-a-trailer-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-bring-a-trailer-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/crawlerbros~bring-a-trailer-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-bring-a-trailer-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/crawlerbros~bring-a-trailer-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-bring-a-trailer-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",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "byMake",
                            "getListing",
                            "results",
                            "featured"
                        ],
                        "type": "string",
                        "description": "What to scrape.",
                        "default": "search"
                    },
                    "searchQuery": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Keyword to search (make, model, year). Used in mode=search. Examples: 'porsche 911', 'bmw e30', '1967 mustang'."
                    },
                    "make": {
                        "title": "Car make",
                        "type": "string",
                        "description": "Car manufacturer for mode=byMake. Examples: porsche, bmw, ferrari, ford, toyota. Use the make slug as it appears in the BaT URL (e.g. 'porsche' for bringatrailer.com/porsche/)."
                    },
                    "startUrls": {
                        "title": "Listing URLs (mode=getListing)",
                        "type": "array",
                        "description": "One or more listing page URLs for mode=getListing. Example: https://bringatrailer.com/listing/1993-porsche-911-carrera-2-coupe-26/",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "minYear": {
                        "title": "Min year filter",
                        "minimum": 1900,
                        "maximum": 2025,
                        "type": "integer",
                        "description": "Only include listings from this year or newer."
                    },
                    "maxYear": {
                        "title": "Max year filter",
                        "minimum": 1900,
                        "maximum": 2025,
                        "type": "integer",
                        "description": "Only include listings from this year or older."
                    },
                    "minBid": {
                        "title": "Min current bid (USD)",
                        "minimum": 0,
                        "type": "number",
                        "description": "Only include listings with a current bid at or above this amount."
                    },
                    "maxBid": {
                        "title": "Max current bid (USD)",
                        "minimum": 0,
                        "type": "number",
                        "description": "Only include listings with a current bid at or below this amount."
                    },
                    "sold": {
                        "title": "Include sold only",
                        "type": "boolean",
                        "description": "In mode=results: if true, only include listings that sold (exclude no-sale results).",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of listings to return.",
                        "default": 20
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
