# Cars & Bids Scraper (`solidcode/carsandbids-com-scraper`) Actor

\[💰 $10 / 1K] Extract live and past car auctions from Cars & Bids — current bids, final sold prices, reserve status, mileage, VIN, specs, photos, and seller location. Search by make/model or filter by body style, transmission, model year, and mileage. Optional full bid history and comments.

- **URL**: https://apify.com/solidcode/carsandbids-com-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 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.
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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

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

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Cars & Bids Scraper

Pull live and completed car auctions from Cars & Bids at scale — current high bids, final sale prices, reserve status, decoded VIN specs, seller location, photo galleries, full bid ladders, and comment threads. Built for enthusiast-car dealers, collector-market analysts, valuation teams, and auction-alert builders who need structured Cars & Bids data without watching the site refresh all day.

### Why This Scraper?

- **Live bids and completed sale prices in one run** — the current high bid and time remaining on auctions running right now, or the final price and outcome (sold, sold after auction, reserve not met, no bids, canceled) from an archive of roughly 39,000 finished auctions.
- **The full bid ladder, not just the headline number** — every individual bid with bidder name, amount, and timestamp, so you can reconstruct exactly how a price moved in the closing minutes.
- **Comment threads with seller replies flagged** — author, text, timestamp, upvote count, a seller flag, and who each reply answered, capped at 100 per auction by default so one 400-comment listing does not swamp your export.
- **Decoded specs instead of a parsed title** — VIN, engine, drivetrain, transmission plus gearbox detail, body style, exterior and interior colour, and title status straight from the listing record.
- **A maximum-mileage limit the site itself does not offer** — Cars & Bids has no odometer filter; set one here and listings are checked against their stated mileage as each page is read.
- **No Reserve filtering that keeps your chosen sort order** — combine No Reserve-only with lowest mileage, newest model year, or any other order instead of being forced into the site's own No Reserve view.
- **Eight body styles and two transmissions, combinable with a model-year range** — coupe, convertible, hatchback, sedan, SUV/crossover, truck, van/minivan, and wagon, each stackable with a year window and one of six sort orders.
- **Six entry points, no link-building** — the live homepage, the past-auctions archive, the featured and trending feeds, a plain-text make/model search, or a single auction URL. Filters already present in a pasted link are carried through untouched.
- **Exact result counts** — ask for 8 auctions and you get 8 rows, not a rounded-up page of 100, so small test runs stay cheap.

### Use Cases

**Collector Market Analysis**
- Track realised sale prices by make, model, and model year across the completed archive
- Compare No Reserve results against reserve auctions in the same segment
- Measure how mileage and title status move final prices
- Build a price index for a nameplate from every auction it has appeared in

**Dealer & Inventory Sourcing**
- Watch live auctions for a target make and model with the current bid and time left
- Surface low-mileage examples under a set odometer ceiling
- Filter to manual-transmission cars in a specific model-year window
- Spot No Reserve listings likely to trade below market

**Valuation & Appraisal**
- Assemble comparable sales with VIN, mileage, colour, and title status attached
- Feed sold and sold-after-auction prices into pricing models
- Separate reserve-not-met outcomes from genuine sales so your comps stay clean
- Attach seller city, state, and country to spot regional price differences

**Audience & Content Research**
- Rank auctions by view count, watcher count, comment count, and bid count
- Pull full comment threads to study what enthusiasts flag on a given model
- Track which listings the featured and trending feeds promote
- Mine seller write-ups, highlights, modifications, and known flaws for editorial angles

**Monitoring & Alerts**
- Run a saved make/model search on a schedule and alert on new listings
- Watch a single auction URL for bid movement into the final hours
- Trigger a notification whenever a No Reserve example of your target car appears
- Feed new results straight into a spreadsheet, CRM, or dashboard

### Getting Started

#### Browse Live Auctions

The simplest possible run — the auctions on right now:

```json
{
    "maxResults": 50
}
````

#### Search by Make and Model

```json
{
    "searchQueries": ["Porsche 911", "Toyota Land Cruiser"],
    "auctionStatus": "past",
    "maxResults": 200
}
```

#### Filtered Hunt for Low-Mileage Manuals

```json
{
    "auctionStatus": "past",
    "bodyStyle": ["coupe", "wagon"],
    "transmission": "manual",
    "yearFrom": 1995,
    "yearTo": 2005,
    "maxMileage": 60000,
    "noReserveOnly": true,
    "sortBy": "lowest_mileage",
    "maxResults": 100
}
```

#### Everything Turned On

```json
{
    "startUrls": [
        "https://carsandbids.com/past-auctions/",
        "https://carsandbids.com/auctions/3xN9qKmL/2018-porsche-911-gt3"
    ],
    "searchQueries": ["BMW M3"],
    "auctionStatus": "all",
    "sortBy": "newest",
    "maxResults": 500,
    "includeDetails": true,
    "includeBidHistory": true,
    "includeComments": true,
    "maxCommentsPerAuction": 50
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | array | `[]` | Cars & Bids links: the live homepage, `/past-auctions/`, the featured or trending pages, a search results page, or a single auction URL. Filters already in the link are kept. Single auction links always come back fully detailed. |
| `searchQueries` | array | `[]` | Plain-text searches such as `"Porsche 911"`, `"Toyota Land Cruiser"`, or just `"BMW"`. Each one is run for you — no link building required. |

Leave both empty to collect the auctions running right now.

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `auctionStatus` | string | `"live"` | `live` (Live auctions (running now)), `past` (Past auctions (completed results)), or `all` (Both live and past). Pasted links keep their own status. |
| `bodyStyle` | array | `[]` (all) | Any of `coupe`, `convertible`, `hatchback`, `sedan`, `suv`, `truck`, `van`, `wagon` — shown as Coupe, Convertible, Hatchback, Sedan, SUV / Crossover, Truck, Van / Minivan, Wagon. Each selection is collected separately and merged, so several styles take a little longer. |
| `transmission` | string | *(both)* | `automatic` (Automatic / automated) or `manual` (Manual (stick shift)). |
| `noReserveOnly` | boolean | `false` | Keep only No Reserve auctions — these sell to the highest bidder with no minimum price. Honoured alongside any sort order; on a non-default sort the check runs as pages are read, and the run stops early if 20 pages in a row contain no No Reserve auction. |
| `yearFrom` | integer | *(none)* | Only cars from this model year or newer. |
| `yearTo` | integer | *(none)* | Only cars from this model year or older. |
| `maxMileage` | integer | *(none)* | Only cars at or below this odometer reading in miles. Listings whose odometer is unreadable ("No Odometer", "N/A") are left out, and the run stops early if 20 pages in a row contain no match. |
| `sortBy` | string | `"default"` | `default` (Ending soonest (most recently ended for past auctions)), `listed` (Newly listed (live auctions only)), `newest` (Newest model year), `oldest` (Oldest model year), `lowest_mileage` (Lowest mileage), `highest_mileage` (Highest mileage). |

#### Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum auctions across all links, searches, and pasted auction links. You get this number exactly when no mileage limit is running; with `maxMileage` (or No Reserve-only on a non-default sort) a run can finish up to one page — 100 auctions — over. `0` means unlimited. |
| `includeDetails` | boolean | `false` | Open each auction for the full write-up, every photo, decoded specs, seller name and type, highlights, equipment, modifications, known flaws, service and ownership history, and the bid, comment, view, and watcher counts. Richer but slower. Auctions are detailed in groups of 100 with a 4-minute allowance per group; anything not reached in time keeps its basic information and the run log says how many. |
| `includeBidHistory` | boolean | `false` | Collect every individual bid — bidder, amount, timestamp — and fill in the bid count. |
| `includeComments` | boolean | `false` | Collect the comment thread — author, text, timestamp, upvotes, seller replies — and fill in the comment count. |
| `maxCommentsPerAuction` | integer | `100` | Cap how many comments are kept per auction. The true comment count is still reported. `0` keeps every comment, up to 5,000 per auction. |

### Output

Each auction is one row. Fields marked below as detail-only stay empty unless you switch on the option named next to them.

```json
{
    "url": "https://carsandbids.com/auctions/3xN9qKmL",
    "auctionId": "3xN9qKmL",
    "title": "2004 Subaru Impreza WRX STI",
    "year": 2004,
    "make": "Subaru",
    "model": "Impreza WRX STI",
    "auctionStatus": "past",
    "soldStatus": "sold",
    "noReserve": false,
    "featured": true,
    "isNotable": false,
    "endsAt": "2026-07-18T21:00:00Z",
    "timeLeft": null,
    "location": "Bellevue, WA 98004",
    "city": "Bellevue",
    "state": "WA",
    "country": "US",
    "currentBid": 42500,
    "currentBidFormatted": "$42,500",
    "soldPrice": 42500,
    "soldPriceFormatted": "$42,500",
    "currency": "USD",
    "bidCount": 37,
    "commentCount": 84,
    "viewCount": 21943,
    "watcherCount": 612,
    "mileage": 70900,
    "mileageText": "70,900 Miles Shown (5-digit odo)",
    "vin": "JF1GD70614L512345",
    "engine": "2.5L Turbocharged Flat-4",
    "drivetrain": "4WD / AWD",
    "transmission": "Manual",
    "transmissionDetails": "6-Speed Manual",
    "bodyStyle": "Sedan",
    "exteriorColor": "World Rally Blue",
    "interiorColor": "Black",
    "titleStatus": "Clean (Washington)",
    "sellerName": "boxer_fan",
    "sellerType": "Private Party",
    "isNotACar": false,
    "description": "I bought this STI in 2016 from the original owner...",
    "highlights": ["6-speed manual", "STI Pink badging", "Recent timing belt"],
    "highlightedPoints": ["No accidents reported", "2 owners"],
    "equipment": ["Momo steering wheel", "Recaro front seats"],
    "modifications": ["Cobb AccessPort", "Invidia catback exhaust"],
    "knownFlaws": ["Rock chips on the hood", "Small scuff on rear bumper"],
    "serviceHistory": ["Timing belt at 68,000 miles", "New clutch in 2024"],
    "ownershipHistory": "Two owners from new, both in Washington.",
    "otherItemsIncluded": ["Two keys", "Owner's manual"],
    "thumbnailUrl": "https://media.carsandbids.com/.../photo-01.jpg",
    "imageUrls": ["https://media.carsandbids.com/.../photo-01.jpg", "..."],
    "photoCount": 148,
    "videoUrl": "https://media.carsandbids.com/.../manifest/video.m3u8",
    "bids": [
        { "bidder": "rally_dave", "amount": 42500, "createdAt": "2026-07-18T20:58:11Z" }
    ],
    "comments": [
        {
            "author": "gc8_guy",
            "text": "That gold BBS setup is period perfect.",
            "createdAt": "2026-07-17T14:02:55Z",
            "isSeller": false,
            "replyTo": null,
            "upvotes": 12
        }
    ]
}
```

#### Core Auction Fields

| Field | Type | Description |
|-------|------|-------------|
| `url` | string | Link to the auction page |
| `auctionId` | string | Cars & Bids auction identifier |
| `title` | string | Full listing title, e.g. "2004 Subaru Impreza WRX STI" |
| `year` | number | Model year |
| `make` | string | Manufacturer |
| `model` | string | Model name |
| `auctionStatus` | string | `live` for auctions still to finish (including ones queued to open and ones in last-second bidding), `past` for finished ones |
| `soldStatus` | string | `live`, `queued`, `last_second_bids`, `sold`, `sold_after`, `reserve_not_met`, `no_bids`, or `canceled` |
| `noReserve` | boolean | Whether the auction sells with no minimum price |
| `featured` | boolean | Whether Cars & Bids featured the listing |
| `isNotable` | boolean | Whether the listing carries the Notable flag |
| `endsAt` | string | Auction end date and time, ISO 8601 UTC |
| `timeLeft` | string | Human-readable time remaining (live auctions only) |
| `isNotACar` | boolean | Flags non-car lots such as experiences and memorabilia *(needs Include Full Auction Details)* |

#### Seller Location

| Field | Type | Description |
|-------|------|-------------|
| `location` | string | Seller location exactly as listed, e.g. `"Bellevue, WA 98004"` |
| `city` | string | City parsed from the location |
| `state` | string | Two-letter state code parsed from the location, e.g. `"WA"` |
| `country` | string | Two-letter country code — always `"US"`, the only market Cars & Bids serves |
| `sellerName` | string | Seller's username |
| `sellerType` | string | `Private Party` or `Dealer` *(needs Include Full Auction Details)* |

#### Pricing & Bidding

| Field | Type | Description |
|-------|------|-------------|
| `currentBid` | number | Current high bid on a live auction, or the closing bid on a past one |
| `currentBidFormatted` | string | The same figure formatted, e.g. `"$42,500"` |
| `soldPrice` | number | Final sale price when the auction sold |
| `soldPriceFormatted` | string | The sale price formatted |
| `currency` | string | Always `USD` |
| `bidCount` | number | Number of bids placed *(needs Include Full Auction Details or Include Full Bid History)* |
| `bids` | array | Every bid with `bidder`, `amount`, `createdAt` *(needs Include Full Bid History)* |

#### Vehicle Specs

| Field | Type | Description |
|-------|------|-------------|
| `mileage` | number | Odometer reading in miles |
| `mileageText` | string | Odometer as written, e.g. `"70,900 Miles Shown (5-digit odo)"` |
| `vin` | string | Vehicle identification number *(needs Include Full Auction Details)* |
| `engine` | string | Engine description *(needs Include Full Auction Details)* |
| `drivetrain` | string | `Front-wheel drive`, `Rear-wheel drive`, or `4WD / AWD` *(needs Include Full Auction Details)* |
| `transmission` | string | `Automatic` or `Manual` |
| `transmissionDetails` | string | Gearbox detail, e.g. `"6-Speed Manual"` *(needs Include Full Auction Details)* |
| `bodyStyle` | string | Coupe, Convertible, Hatchback, Sedan, SUV / Crossover, Truck, Van / Minivan, or Wagon *(needs Include Full Auction Details)* |
| `exteriorColor` | string | Exterior colour *(needs Include Full Auction Details)* |
| `interiorColor` | string | Interior colour *(needs Include Full Auction Details)* |
| `titleStatus` | string | Title status and issuing state *(needs Include Full Auction Details)* |

#### Write-ups & History

Every field in this table needs Include Full Auction Details.

| Field | Type | Description |
|-------|------|-------------|
| `description` | string | The seller's full write-up |
| `dougsTake` | string | Doug's commentary when the listing has one — most do not |
| `highlights` | array | Seller-listed highlights |
| `highlightedPoints` | array | Short callouts shown on the listing |
| `equipment` | array | Factory and aftermarket equipment |
| `modifications` | array | Modifications away from stock |
| `knownFlaws` | array | Flaws the seller disclosed |
| `serviceHistory` | array | Recent service items |
| `ownershipHistory` | string | Ownership history narrative |
| `otherItemsIncluded` | array | Extras included in the sale — keys, manuals, spares |

#### Media & Engagement

| Field | Type | Description |
|-------|------|-------------|
| `thumbnailUrl` | string | Main listing photo |
| `imageUrls` | array | Full photo gallery — exterior, interior, mechanical, and documents *(needs Include Full Auction Details)* |
| `photoCount` | number | Number of photos collected *(needs Include Full Auction Details)* |
| `videoUrl` | string | First walkaround video on the listing *(needs Include Full Auction Details)* |
| `commentCount` | number | Number of comments *(needs Include Full Auction Details or Include Comments)* |
| `comments` | array | Comment thread with `author`, `text`, `createdAt`, `isSeller`, `replyTo`, `upvotes` *(needs Include Comments)* |
| `viewCount` | number | Times the auction page was viewed *(needs Include Full Auction Details)* |
| `watcherCount` | number | People watching the auction *(needs Include Full Auction Details)* |

### Tips for Best Results

- **Start with `maxResults` at 10–50** to confirm the filters return what you expect, then raise it. You are charged for the rows you receive, and a small run really does return the small number you asked for.
- **Turn on Include Full Bid History and Include Comments together** — they arrive in the same request, so switching on both costs no more time than switching on one.
- **`sortBy: "listed"` only exists for live auctions.** On the past archive it falls back to "most recently ended", and the run log says so — pick `newest` or `lowest_mileage` if you need a deterministic order over completed sales.
- **Pair `noReserveOnly` with the default sort when you want an exact, cheap pass.** With any other sort order the No Reserve filter is applied as pages are read, which reads more pages for the same number of rows — and stops after 20 pages in a row with no match, so the run can come back short.
- **Setting `maxMileage` drops listings with no readable odometer** — "No Odometer" and "N/A" cars are excluded on purpose, since you asked for a verifiable ceiling. It also reads full pages and checks them afterwards, so a run with a mileage limit can finish up to 100 auctions over your `maxResults`. Leave it empty if you want those listings included and an exact count.
- **Selecting several body styles collects each one separately and merges the results**, so a four-style run takes noticeably longer than a one-style run. Narrow with a model-year range to keep it quick.
- **For clean valuation comps, filter on `soldStatus`** after the run: `sold` and `sold_after` are real transactions, while `reserve_not_met` and `no_bids` are not — mixing them silently drags your averages down.

### Pricing

**From $10 per 1,000 results** — pay only for the auctions you actually receive. No compute or time-based charges — you pay per result, plus a small fixed per-run start fee. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows the total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $1.20 | $1.13 | $1.07 | $1.00 |
| 1,000 | $12.00 | $11.30 | $10.70 | $10.00 |
| 10,000 | $120.00 | $113.00 | $107.00 | $100.00 |
| 100,000 | $1,200.00 | $1,130.00 | $1,070.00 | $1,000.00 |

A "result" is one auction row in the output dataset. Bids, comments, photos, and specs ride along on that same row at no extra charge.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom integrations on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is built for legitimate automotive market research, valuation work, inventory sourcing, and editorial analysis of publicly visible auction listings. You are responsible for complying with applicable laws and Cars & Bids' Terms of Service. Usernames and comment text are user-generated public content — do not use them for spam, harassment, or any unlawful purpose, and handle any personal data in line with the privacy rules that apply to you.

# Actor input Schema

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

Paste Cars & Bids links — the live auctions homepage (https://carsandbids.com/), the past auctions page (https://carsandbids.com/past-auctions/), the featured or trending pages, a search results page, or a single auction (https://carsandbids.com/auctions/xxxxxxxx/2018-porsche-911-gt3). Any filters already in the link are kept as-is. Single auction links always come back with the full details. Leave empty to browse the current live auctions, or if you are only using Search by Make / Model below.

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

Search in plain text, for example 'Porsche 911', 'Toyota Land Cruiser', or just 'BMW'. Each search is run on Cars & Bids for you — no need to build links by hand.

## `auctionStatus` (type: `string`):

Which auctions to collect: Live (running right now, with the current high bid and time left) or Past (finished auctions, with the final sale price and result). Applies to searches and filters. Links you paste keep their own status.

## `bodyStyle` (type: `array`):

Only include these body styles. Pick as many as you like — each one is collected separately and the results are merged, so a run with several body styles takes a little longer. Leave empty for all body styles.

## `transmission` (type: `string`):

Only include cars with this transmission. Leave empty for both.

## `noReserveOnly` (type: `boolean`):

Only return No Reserve auctions — these sell to the highest bidder at auction end with no minimum price. Works alongside Sort Results By: if you leave the sort on 'Ending soonest', Cars & Bids' own No Reserve view is used and you get exactly what you asked for; if you pick a different sort order, that order is kept and non-No-Reserve auctions are dropped as each page is read — in that mode the run stops early if 20 pages in a row contain no No Reserve auction, so it can finish with fewer results than you asked for.

## `yearFrom` (type: `integer`):

Only include cars from this model year or newer. Leave empty for no lower limit.

## `yearTo` (type: `integer`):

Only include cars from this model year or older. Leave empty for no upper limit.

## `maxMileage` (type: `integer`):

Only include cars at or below this odometer reading, in miles. Great for finding low-mileage examples. Cars & Bids cannot filter by mileage itself, so auctions are read page by page and checked here — listings with no readable odometer reading ('No Odometer', 'N/A') are left out, and the run stops early if 20 pages in a row contain no match. Leave empty for no mileage limit.

## `sortBy` (type: `string`):

Order the results before they are collected. Together with Max Results this decides which auctions you get first. 'Newly listed' only exists for live auctions — on past auctions it falls back to most recently ended, and the run log tells you when that happens.

## `maxResults` (type: `integer`):

Maximum number of auctions to return across all links, searches and pasted auction links. You get this many exactly when no mileage limit is set — the last page is shortened to fit, so asking for 8 returns 8 results, not a full page of 100. With a Maximum Mileage limit (or No Reserve Only on a non-default sort) auctions are filtered as they are read, so a run can finish up to one page — 100 auctions — over the number you asked for. Leave it empty to use 100. Set it to 0 for unlimited. Tip: start with 10-50 to test, then increase.

## `includeDetails` (type: `boolean`):

Open each auction page to also collect the full write-up and Doug's Take, every photo, decoded specs (VIN, engine, drivetrain, exterior and interior colour, title status), seller name and type, the highlights, equipment, modifications, known flaws, service history and ownership history lists, and the bid count, comment count, view count and watcher count. Those four counts are only available on the auction page, so they stay empty unless this is switched on. Much richer data, but slower. Auctions are detailed in groups of 100 with a 4-minute allowance per group; if Cars & Bids is unusually slow, any auction not reached in time still comes back with its basic information and the run log says how many were affected. Leave off for fast list-level data (current bid, sold price, mileage, location, end date). Auction links you paste under Start URLs always get the full details.

## `includeBidHistory` (type: `boolean`):

Also collect every individual bid on each auction — bidder name, amount, and timestamp. This also fills in the bid count without needing Include Full Auction Details. The current or winning amount is always included either way.

## `includeComments` (type: `boolean`):

Also collect the comment thread on each auction — author, text, timestamp, upvotes, and seller replies. This also fills in the comment count without needing Include Full Auction Details. Turning on both bids and comments costs no extra time — they arrive together.

## `maxCommentsPerAuction` (type: `integer`):

Caps how many comments are kept per auction when Include Comments is on, so a viral 400-comment auction does not dominate your export. The full comment count is still reported. Leave it empty to use 100. Set it to 0 to keep every comment, up to 5,000 per auction — far more than the busiest auction on the site has. This only trims the saved data — it does not change run time or cost.

## Actor input object example

```json
{
  "startUrls": [],
  "searchQueries": [],
  "auctionStatus": "live",
  "bodyStyle": [],
  "sortBy": "default",
  "maxResults": 100,
  "maxCommentsPerAuction": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

Every auction with the fields that are always filled in: title, year, make, model, status and result, current bid, sold price, No Reserve, mileage, end date and location.

## `pricing` (type: `string`):

Bids, final prices, auction result and reserve status. Always filled in, no extra options needed.

## `engagement` (type: `string`):

Bid count, comment count, view count and watcher count. These live on the auction page, so switch on Include Full Auction Details to fill them all in — bid count also arrives with Include Full Bid History, and comment count with Include Comments.

## `specs` (type: `string`):

VIN, engine, drivetrain, transmission, body style, colours, title status and seller. Requires Include Full Auction Details.

## `gallery` (type: `string`):

Auction photos with links. The main photo is always present; the full gallery and photo count require Include Full Auction Details.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [],
    "searchQueries": [],
    "auctionStatus": "live",
    "bodyStyle": [],
    "noReserveOnly": false,
    "sortBy": "default",
    "maxResults": 100,
    "includeDetails": false,
    "includeBidHistory": false,
    "includeComments": false,
    "maxCommentsPerAuction": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/carsandbids-com-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [],
    "searchQueries": [],
    "auctionStatus": "live",
    "bodyStyle": [],
    "noReserveOnly": False,
    "sortBy": "default",
    "maxResults": 100,
    "includeDetails": False,
    "includeBidHistory": False,
    "includeComments": False,
    "maxCommentsPerAuction": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/carsandbids-com-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [],
  "searchQueries": [],
  "auctionStatus": "live",
  "bodyStyle": [],
  "noReserveOnly": false,
  "sortBy": "default",
  "maxResults": 100,
  "includeDetails": false,
  "includeBidHistory": false,
  "includeComments": false,
  "maxCommentsPerAuction": 100
}' |
apify call solidcode/carsandbids-com-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Cars & Bids Scraper",
        "description": "[💰 $10 / 1K] Extract live and past car auctions from Cars & Bids — current bids, final sold prices, reserve status, mileage, VIN, specs, photos, and seller location. Search by make/model or filter by body style, transmission, model year, and mileage. Optional full bid history and comments.",
        "version": "1.0",
        "x-build-id": "pga5SrMuj2kxzhZr7"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~carsandbids-com-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-carsandbids-com-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/solidcode~carsandbids-com-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-carsandbids-com-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/solidcode~carsandbids-com-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-carsandbids-com-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": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Paste Cars & Bids links — the live auctions homepage (https://carsandbids.com/), the past auctions page (https://carsandbids.com/past-auctions/), the featured or trending pages, a search results page, or a single auction (https://carsandbids.com/auctions/xxxxxxxx/2018-porsche-911-gt3). Any filters already in the link are kept as-is. Single auction links always come back with the full details. Leave empty to browse the current live auctions, or if you are only using Search by Make / Model below.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchQueries": {
                        "title": "Search by Make / Model",
                        "type": "array",
                        "description": "Search in plain text, for example 'Porsche 911', 'Toyota Land Cruiser', or just 'BMW'. Each search is run on Cars & Bids for you — no need to build links by hand.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "auctionStatus": {
                        "title": "Auction Status",
                        "enum": [
                            "live",
                            "past",
                            "all"
                        ],
                        "type": "string",
                        "description": "Which auctions to collect: Live (running right now, with the current high bid and time left) or Past (finished auctions, with the final sale price and result). Applies to searches and filters. Links you paste keep their own status."
                    },
                    "bodyStyle": {
                        "title": "Body Styles",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only include these body styles. Pick as many as you like — each one is collected separately and the results are merged, so a run with several body styles takes a little longer. Leave empty for all body styles.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "coupe",
                                "convertible",
                                "hatchback",
                                "sedan",
                                "suv",
                                "truck",
                                "van",
                                "wagon"
                            ],
                            "enumTitles": [
                                "Coupe",
                                "Convertible",
                                "Hatchback",
                                "Sedan",
                                "SUV / Crossover",
                                "Truck",
                                "Van / Minivan",
                                "Wagon"
                            ]
                        }
                    },
                    "transmission": {
                        "title": "Transmission",
                        "enum": [
                            "automatic",
                            "manual"
                        ],
                        "type": "string",
                        "description": "Only include cars with this transmission. Leave empty for both."
                    },
                    "noReserveOnly": {
                        "title": "No Reserve Only",
                        "type": "boolean",
                        "description": "Only return No Reserve auctions — these sell to the highest bidder at auction end with no minimum price. Works alongside Sort Results By: if you leave the sort on 'Ending soonest', Cars & Bids' own No Reserve view is used and you get exactly what you asked for; if you pick a different sort order, that order is kept and non-No-Reserve auctions are dropped as each page is read — in that mode the run stops early if 20 pages in a row contain no No Reserve auction, so it can finish with fewer results than you asked for."
                    },
                    "yearFrom": {
                        "title": "Model Year From",
                        "minimum": 1900,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Only include cars from this model year or newer. Leave empty for no lower limit."
                    },
                    "yearTo": {
                        "title": "Model Year To",
                        "minimum": 1900,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Only include cars from this model year or older. Leave empty for no upper limit."
                    },
                    "maxMileage": {
                        "title": "Maximum Mileage",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include cars at or below this odometer reading, in miles. Great for finding low-mileage examples. Cars & Bids cannot filter by mileage itself, so auctions are read page by page and checked here — listings with no readable odometer reading ('No Odometer', 'N/A') are left out, and the run stops early if 20 pages in a row contain no match. Leave empty for no mileage limit."
                    },
                    "sortBy": {
                        "title": "Sort Results By",
                        "enum": [
                            "default",
                            "listed",
                            "newest",
                            "oldest",
                            "lowest_mileage",
                            "highest_mileage"
                        ],
                        "type": "string",
                        "description": "Order the results before they are collected. Together with Max Results this decides which auctions you get first. 'Newly listed' only exists for live auctions — on past auctions it falls back to most recently ended, and the run log tells you when that happens."
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of auctions to return across all links, searches and pasted auction links. You get this many exactly when no mileage limit is set — the last page is shortened to fit, so asking for 8 returns 8 results, not a full page of 100. With a Maximum Mileage limit (or No Reserve Only on a non-default sort) auctions are filtered as they are read, so a run can finish up to one page — 100 auctions — over the number you asked for. Leave it empty to use 100. Set it to 0 for unlimited. Tip: start with 10-50 to test, then increase."
                    },
                    "includeDetails": {
                        "title": "Include Full Auction Details",
                        "type": "boolean",
                        "description": "Open each auction page to also collect the full write-up and Doug's Take, every photo, decoded specs (VIN, engine, drivetrain, exterior and interior colour, title status), seller name and type, the highlights, equipment, modifications, known flaws, service history and ownership history lists, and the bid count, comment count, view count and watcher count. Those four counts are only available on the auction page, so they stay empty unless this is switched on. Much richer data, but slower. Auctions are detailed in groups of 100 with a 4-minute allowance per group; if Cars & Bids is unusually slow, any auction not reached in time still comes back with its basic information and the run log says how many were affected. Leave off for fast list-level data (current bid, sold price, mileage, location, end date). Auction links you paste under Start URLs always get the full details."
                    },
                    "includeBidHistory": {
                        "title": "Include Full Bid History",
                        "type": "boolean",
                        "description": "Also collect every individual bid on each auction — bidder name, amount, and timestamp. This also fills in the bid count without needing Include Full Auction Details. The current or winning amount is always included either way."
                    },
                    "includeComments": {
                        "title": "Include Comments",
                        "type": "boolean",
                        "description": "Also collect the comment thread on each auction — author, text, timestamp, upvotes, and seller replies. This also fills in the comment count without needing Include Full Auction Details. Turning on both bids and comments costs no extra time — they arrive together."
                    },
                    "maxCommentsPerAuction": {
                        "title": "Max Comments Per Auction",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Caps how many comments are kept per auction when Include Comments is on, so a viral 400-comment auction does not dominate your export. The full comment count is still reported. Leave it empty to use 100. Set it to 0 to keep every comment, up to 5,000 per auction — far more than the busiest auction on the site has. This only trims the saved data — it does not change run time or cost."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
