Bid.cars Scraper avatar

Bid.cars Scraper

Pricing

from $0.69 / 1,000 vehicles

Go to Apify Store
Bid.cars Scraper

Bid.cars Scraper

Scrape Bid.cars Copart and IAAI auction lots: VIN, title, lot, location, seller, damage, odometer, sale document, pre-bid and buy-now prices, estimates, images and video. Export JSON, CSV or Excel.

Pricing

from $0.69 / 1,000 vehicles

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Bid.cars Scraper

Bid.cars Scraper extracts Copart and IAAI salvage auction lots from Bid.cars: VIN, title, lot number, sale location, seller, damage, start code, odometer, sale document, pre-bid and buy-now prices, estimated value range, final bid on sold lots, photos, video and 360° view links. You get one clean row per vehicle, ready to export as JSON, CSV or Excel.

Paste any filtered Bid.cars search URL (active or archived sold lots), or just type a make, model or VIN, narrow the results by keyword and yard location, and get 40+ fields per Copart and IAAI lot with full yard names and full-size photo links.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Actor: parsebird/bid-cars-scraper — scrapes Copart and IAAI vehicle lots from Bid.cars search results (bid.cars). Input: {"url": "https://bid.cars/en/search/results?search-type=filters&status=All&type=Automobile&make=Toyota&model=Camry&year-from=2018&year-to=2027&auction-type=All" (optional Bid.cars search results URL; all its filters are used; archived/sold search URLs bid.cars/en/search/archived/results?... also work), "keyword": "Toyota Camry" (optional; keeps only lots whose title, VIN, lot number, seller, damage or sale document contain every word; without a url it first runs Bid.cars' own keyword search, then the sold-lot archive, then the broad default search), "location": "Long Island" (optional yard filter, e.g. "Cleveland (OH)" or "(FL)" for a whole state), "results_wanted": 20 (max vehicles saved, min 1), "max_pages": 2 (max result pages, 50 lots each, Bid.cars allows 50 pages per search), "proxyConfiguration": {"useApifyProxy": false} (optional; switches to Apify Proxy automatically if blocked)}. Run via ApifyClient("YOUR_TOKEN").actor("parsebird/bid-cars-scraper").call(run_input=input). Output, one row per lot: title, title_short, url, lot, auction (Copart or IAAI), tag, vin, year, vehicle_type, location, seller, seller_code, seller_trusted, search_status (active/archived), status_code, sold_before, loss_type, primary_damage, start_code, odometer (miles), sale_document, sale_document_full, sale_document_state, title_has_lien, prebid_close_time, time_left_seconds, time_left, prebid_price, final_bid, final_bid_usd, buy_now_price, buy_now_time_left_seconds, estimated_min, estimated_max, has_video, video_url, has_360_view, view_360_url, image_count, images (full-size URLs), specs {key_info, transmission_code, fuel_type_code, drive_type_code, hybrid, engine}, scraped_at. Pricing: pay per vehicle saved. Get your API token at https://console.apify.com/account#/integrations. Full API spec: https://apify.com/parsebird/bid-cars-scraper/api

What is Bid.cars Scraper?

Bid.cars Scraper is a Bid.cars data extraction tool. It reads the public vehicle search on Bid.cars, a site that lists vehicles from the US insurance auctions Copart and IAAI in one place. Bid.cars has no public API, so the scraper works as a Bid.cars API alternative for importers, car buyers, rebuilders, dealers, parts sellers and analysts who want auction data in a spreadsheet, database or app.

The easiest way to try it: keep the prefilled Toyota Camry search URL, click Start, and open the dataset. You get 20 Camry lots with damage, odometer, location, sale document and pre-bid price in a few seconds.

You don't need a Bid.cars account.

What can Bid.cars Scraper do?

  • 🔗 Filtered search URLs: choose make, model, year range, auction (Copart or IAAI), status, damage, fuel, body style, odometer, estimate and other filters on Bid.cars, copy the URL and paste it. The scraper reads the exact same search.
  • 🗄️ Sold lot archive: paste an archived search URL (bid.cars/en/search/archived/results?...) to collect lots that already sold, with the final bid.
  • 🔎 Keyword search: type a make, model or VIN without a URL. The scraper runs Bid.cars' own keyword search, then checks the sold-lot archive, then filters the broad default search.
  • 📍 Location filter: keep only lots at a matching yard, such as Long Island, Cleveland (OH), or (FL) for a whole state.
  • 🏷️ Full yard names: Bid.cars search results cut long yard names (West Palm... (FL)). The scraper restores the full name (West Palm Beach (FL)) from the Copart and IAAI yard list.
  • 🖼️ Full-size photos: every image URL Bid.cars lists for the lot, plus video and 360° view links when available.

Because Bid.cars Scraper runs on the Apify platform, you also get:

  • ⏰ Scheduling to check new auction lots every hour or every day.
  • 🔌 API access and client libraries for Python and JavaScript.
  • 🔗 Integrations with Google Sheets, Slack, Zapier, Make, webhooks and more.
  • 📁 Exports to JSON, CSV, Excel, XML or HTML from the dataset.

What data can you extract from Bid.cars?

FieldDescription
title, title_short, yearVehicle name as Bid.cars shows it, e.g. 2024 Jeep Grand Cherokee, L Laredo
url, lot, auctionBid.cars lot page, lot number, and the auction it comes from (Copart or IAAI)
vinVehicle identification number
locationSale yard and state, e.g. San Diego (CA)
seller, seller_code, seller_trustedSeller name (e.g. an insurance company), short label, trusted seller flag
loss_type, primary_damage, start_codeLoss type, main damage, and start condition such as Run / Drive
odometerOdometer reading in miles
sale_document, sale_document_full, title_has_lienTitle or sale document (e.g. SALVAGE CERTIFICATE (CA)) and lien flag
prebid_close_time, time_left_secondsWhen pre-bidding closes and how many seconds are left
prebid_price, buy_now_price, final_bidCurrent pre-bid, buy-now price, final bid on sold lots
estimated_min, estimated_maxBid.cars estimated value range in USD
images, video_url, view_360_urlPhoto URLs, auction video and 360° view links
specsEngine, key status and Bid.cars' transmission, fuel and drive codes

How to scrape Bid.cars

  1. Open Bid.cars Scraper in Apify Console.
  2. Open a Bid.cars search, set your filters, and copy the page URL into Bid.cars search URL. You can also leave it empty and type a make, model or VIN into Keyword.
  3. Optional: add a Keyword (e.g. Front end, Salvage) or a Location (e.g. Long Island) to narrow the results.
  4. Set Max vehicles and Max result pages for the size of the run.
  5. Click Start. Small runs finish in a few seconds.
  6. Open the Output tab and download the data as JSON, CSV or Excel, or read it through the API.

A filtered search URL is the most precise starting point, because Bid.cars applies those filters before results are returned. Keyword and Location filter the lots after they are read, so a narrow keyword or location may need more Max result pages to find enough vehicles.

Input parameters

ParameterTypeRequiredDefaultDescription
urlstringNoPrefilled Toyota Camry searchBid.cars search results URL. All its filters are used. Archived (sold) search URLs work too. Empty: keyword search or the broad default search.
keywordstringNo—Keep only lots whose title, VIN, lot number, seller, damage or sale document contain every word. Without a URL, also used for Bid.cars' own keyword search.
locationstringNo—Keep only lots at a matching yard, e.g. Long Island, Cleveland (OH), (FL).
results_wantedintegerNo20Maximum number of vehicles to save. Minimum 1.
max_pagesintegerNo2Maximum number of result pages to read (50 lots per page). Minimum 1, maximum 50.
proxyConfigurationobjectNo{"useApifyProxy": false}Optional proxy. The scraper switches to Apify Proxy on its own if Bid.cars blocks direct requests.

Broad vehicle collection: the first 20 lots from the default search.

{
"results_wanted": 20,
"max_pages": 2
}

Filtered Bid.cars search URL: Toyota Camry 2018 and newer, Copart and IAAI.

{
"url": "https://bid.cars/en/search/results?search-type=filters&status=All&type=Automobile&make=Toyota&model=Camry&year-from=2018&year-to=2027&auction-type=All",
"results_wanted": 50,
"max_pages": 4
}

Keyword and location: Toyota Camry lots at the Long Island yard.

{
"keyword": "Toyota Camry",
"location": "Long Island",
"results_wanted": 30,
"max_pages": 10
}

Sold lots with final bids: archived Honda Civic auctions.

{
"url": "https://bid.cars/en/search/archived/results?search-type=filters&status=All&type=Automobile&make=Honda&model=Civic&year-from=2017&year-to=2027&auction-type=All",
"results_wanted": 100,
"max_pages": 2
}

Proxy run: for large or frequent jobs.

{
"url": "https://bid.cars/en/search/results?search-type=filters&status=All&type=Automobile&make=Honda&model=Civic&year-from=2017&year-to=2027&auction-type=All",
"results_wanted": 100,
"max_pages": 5,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Output example

Each vehicle lot is one dataset item. Download the dataset in JSON, CSV, Excel, XML or HTML. This lot came from the prefilled Toyota Camry search (October 2026), with the image list shortened:

{
"title": "2023 Toyota Camry, LE",
"title_short": "2023 Toyota Camry",
"url": "https://bid.cars/en/lot/0-45857005/2023-Toyota-Camry-4T1C11AK2PU126391",
"lot": "0-45857005",
"auction": "IAAI",
"tag": "2023-Toyota-Camry-4T1C11AK2PU126391",
"vin": "4T1C11AK2PU126391",
"year": 2023,
"vehicle_type": "Automobile",
"location": "West Palm Beach (FL)",
"seller": "Progressive Casualty Insurance",
"seller_code": "Progressive Cas...",
"seller_trusted": true,
"search_status": "active",
"status_code": 0,
"sold_before": false,
"loss_type": "Collision",
"primary_damage": "Right front",
"start_code": "Run / Drive",
"odometer": 51176,
"sale_document": "Rebuildable",
"sale_document_full": "REBUILDABLE (Florida)",
"sale_document_state": "Florida",
"title_has_lien": false,
"prebid_close_time": "Mon 26 Oct, 14:30 GMT+1",
"time_left_seconds": 192539,
"time_left": "2 d 4 h 28 min",
"prebid_price": "$0",
"final_bid": null,
"final_bid_usd": null,
"buy_now_price": null,
"buy_now_time_left_seconds": null,
"estimated_min": 6810,
"estimated_max": 10890,
"has_video": true,
"video_url": "https://mediastorageaccountprod.blob.core.windows.net/media/46355938_VES-100_1",
"has_360_view": false,
"view_360_url": null,
"image_count": 16,
"images": [
"https://pluto.bid.car/0-45857005/2023-Toyota-Camry-4T1C11AK2PU126391-1.jpg",
"https://pluto.bid.car/0-45857005/2023-Toyota-Camry-4T1C11AK2PU126391-2.jpg"
],
"specs": {
"key_info": "Present",
"transmission_code": 0,
"fuel_type_code": "0",
"drive_type_code": 0,
"hybrid": null,
"engine": "2.5L, I4, 202/203HP"
},
"scraped_at": "2026-10-24T07:31:01+00:00"
}

Fields Bid.cars leaves empty for a lot are null. Sold lots from archived searches have search_status: "archived" and the final price in final_bid and final_bid_usd.

Use cases

  • Car import sourcing: shortlist Copart and IAAI lots by model, year, damage and title before auction day.
  • Price research: collect sold lots from the archive to compare final bids by model, damage and odometer.
  • Yard-based buying: keep only lots at the yards you can pick up from, or in one state.
  • New lot alerts: schedule a filtered search and send new lots to Slack, Google Sheets or your CRM.
  • Rebuilder and parts sourcing: find Run / Drive vehicles with light damage, or a given engine for parts.
  • Market analytics: track supply, sellers, sale documents and estimates across both auctions over time.

How it works

  1. A pasted search URL is turned into the same search request the Bid.cars page makes, with all its filters. Without a URL, the keyword runs Bid.cars' own keyword search.
  2. Bid.cars Scraper reads result pages of 50 lots and stops at Max vehicles, Max result pages, or the last page. Bid.cars returns at most 50 pages (2,500 lots) per search.
  3. Keyword and location filters are applied to each lot, and lots seen twice are saved once.
  4. Long yard names that Bid.cars cuts in search results are matched against the Copart and IAAI yard list. When several yards share the same visible start (for example Jacksonville East, North and West), the lot page is checked for the exact yard.
  5. Bid.cars shows its sold-lot archive only to visitors outside North America. When an archived search comes back empty, the scraper repeats it through Apify residential proxy in Europe. That traffic is included in the price.
  6. No browser is used, so runs are fast. In our tests on the Apify platform, the prefilled run took about 4 seconds, and 2,500 lots took one to two minutes.

How much does it cost to scrape Bid.cars?

Bid.cars Scraper uses pay-per-event pricing. You pay per vehicle saved to the dataset. Compute and proxy costs are included in the price, so there are no extra platform usage charges.

EventFree planBronzeSilverGold
vehicle-scraped: per vehicle saved$0.00099$0.00089$0.00079$0.00069
Per 1,000 vehicles$0.99$0.89$0.79$0.69

For example, the prefilled run (20 vehicles) costs about $0.02 on the Free plan, and 2,500 vehicles cost about $2.48. Use Max vehicles or a spending limit to cap a run; the scraper stops as soon as the limit is reached. Apify's Free plan includes monthly platform credits you can use to try the scraper.

Use Bid.cars Scraper with the API

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("parsebird/bid-cars-scraper").call(run_input={
"url": "https://bid.cars/en/search/results?search-type=filters&status=All&type=Automobile&make=Tesla&model=All&year-from=2020&year-to=2027&auction-type=All",
"results_wanted": 200,
"max_pages": 4,
})
for lot in client.dataset(run["defaultDatasetId"]).iterate_items():
print(lot["title"], lot["primary_damage"], lot["location"], lot["prebid_price"], lot["url"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('parsebird/bid-cars-scraper').call({
keyword: 'Ford F-150',
location: '(TX)',
results_wanted: 100,
max_pages: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const lot of items) console.log(lot.title, lot.auction, lot.location, lot.estimated_min, lot.estimated_max);

See the API tab for all endpoints and the Apify API client docs for more options.

Bid.cars Scraper only reads vehicle listings that Bid.cars shows to logged-out visitors. It does not log in, bid, or access account data. Vehicle data and photos still belong to Bid.cars, the auctions and their sellers, so check the Bid.cars terms before republishing them, and make sure your use complies with the laws that apply to you. Consult a lawyer if in doubt. Read more in Apify's post Is web scraping legal?

Other vehicle scrapers

FAQ

Do I need a Bid.cars account? No. Bid.cars Scraper reads the public search results that Bid.cars shows to guests.

How do I use filters that aren't inputs? Set them on Bid.cars search (make, model, years, auction, status, damage, fuel, body style, odometer, estimate and more), copy the address from your browser, and paste it into Bid.cars search URL.

How many vehicles can I get? Bid.cars returns up to 50 pages of 50 lots, so 2,500 lots per search. For more, split the job into several searches, for example by make, year range or auction, and run each URL.

Why did a keyword or location run return fewer vehicles than I asked for? Keyword and location are applied to the lots on the pages read. If few lots match, raise Max result pages, or put the filter into the Bid.cars search URL so Bid.cars filters before paging.

Why does a location sometimes end with "..."? Bid.cars shortens long yard names in search results. The scraper restores the full name from the Copart and IAAI yard list. When several yards start the same way (such as Jacksonville East, North and West), it checks the lot page. If the lot page can't be read, the short name is kept as Bid.cars shows it.

How does the location filter match? The text you enter must appear in the yard name, ignoring case. A state code in brackets must match exactly: Cleveland (OH) matches Cleveland East (OH) and Cleveland West (OH), and (FL) matches every Florida yard.

Which lots are Copart and which are IAAI? The auction field tells you. Bid.cars lot numbers starting with 1- are Copart, and 0- are IAAI.

Can I get sold prices? Yes. Use an archived search URL (bid.cars/en/search/archived/results?...) to get sold lots with final_bid. A keyword run without a URL also checks the archive when the active search has no match, which helps when you look up a VIN. Bid.cars doesn't show its archive to visitors in North America, so the scraper reads archived searches through European residential IPs on its own.

Why is the title cut off for some lots? Bid.cars shortens very long trim names in search results (for example 2025 Tesla Model 3, Long Range Rear-...). The scraper returns the title as Bid.cars lists it; title_short, year and vin are always complete.

Can I schedule runs and get new lots automatically? Yes. Use Apify schedules to run a search hourly or daily, and integrations or webhooks to send results to Google Sheets, Slack or your own app.

Something isn't working or I need a field? Open an issue in the Issues tab and tell us what you need.