bid APIbid.cars ↗
Access bid.cars auction listings, vehicle details, sales history, photos, and VIN lookups via a structured API covering Copart and IAAI inventory.
What is the bid API?
The bid.cars API exposes 10 endpoints covering active and archived vehicle auction listings from Copart and IAAI, including per-lot pricing details, sales history, and photo galleries. The search_listings endpoint supports filtering by make, model, year range, auction type, and status with paginated results, while get_listing_details returns enriched pricing variables such as estimatedAmount1, estimatedAmount2, and buyNowAmount for a specific lot.
curl -X GET 'https://api.parse.bot/scraper/ea2d6a1d-3f6c-4c5d-9e6c-2563d8f69f1d/search_listings?make=All&page=1&model=All&status=All&year_to=2027&get_count=false&year_from=2010&auction_type=All' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace bid-cars-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: BidCars SDK — search auction listings, drill into details."""
from parse_apis.BidCars_Vehicle_Auction_API import BidCars, Make_, LotNotFound
client = BidCars()
# Search Toyota listings — limit= caps total items fetched across pages.
for listing in client.listings.search(make=Make_.TOYOTA, limit=3):
print(listing.name, listing.lot, listing.odometer)
# Drill into one listing's enriched details (pricing, auction info).
listing = client.listings.search(make=Make_.FORD, limit=1).first()
if listing:
detail = listing.details()
print(detail.name, detail.enriched_details.auction_type, detail.enriched_details.current_bid)
# Check sales history for this lot.
history = listing.sales_history()
for record in history.sales_history[:3]:
print(record.date, record.final_bid, record.status)
# Browse similar sold lots.
for sim in listing.similar(limit=3):
print(sim.name, sim.final_price_formatted, sim.seller)
# Look up available makes and models for a specific make.
for make_name in client.makes.list(limit=5):
print(make_name)
toyota = client.make("Toyota")
for model in toyota.models(limit=5):
print(model)
# Typed error handling: catch when a lot doesn't exist.
try:
bad = client.listings.get(lot="0-00000000")
print(bad.name)
except LotNotFound as exc:
print(f"Lot not found: {exc.lot_number}")
print("exercised: listings.search / details / sales_history / similar / makes.list / make.models / listings.get")
Search for vehicle listings with various filters. Returns paginated results of active auction listings (50 per page). Supports filtering by make, model, year range, status, and auction type. When get_count is set to 'true', returns a count summary object instead of listing data.
| Param | Type | Description |
|---|---|---|
| make | string | Vehicle make filter. Use 'All' for no make filter. |
| page | integer | Page number for pagination. |
| model | string | Vehicle model filter. Use 'All' for no model filter. |
| status | string | Listing status filter. |
| year_to | string | Maximum model year. |
| get_count | string | Set to 'true' to return a count summary object instead of listing data. |
| year_from | string | Minimum model year. |
| auction_type | string | Auction type filter. |
{
"type": "object",
"fields": {
"data": "array of vehicle listing objects with fields like name, lot, vin, odometer, location, primary_damage, specs, img, img_large, etc.",
"current_page": "integer, current page number"
},
"sample": {
"data": {
"data": [
{
"img": {
"img_1": "https://images.bid.cars/184218605_6a290bd403642/2024-Toyota-Corolla-5YFB4MDE8RP115085-1.jpg"
},
"lot": "1-84218605",
"vin": "5YFB4MDE8RP115085",
"name": "2024 Toyota Corolla, LE",
"specs": {
"engine_rendered": "2.0L, I4, 169HP"
},
"status": 2,
"location": "Milwaukee... (WI)",
"odometer": 927,
"img_large": {
"img_1": "https://pluto.bid.car/1-84218605/2024-Toyota-Corolla-5YFB4MDE8RP115085-1.jpg"
},
"start_code": "Run / Drive",
"prebid_price": "$3,350",
"search_status": "live",
"primary_damage": "Side"
}
],
"per_page": 50,
"current_page": 1,
"next_page_url": "https://bid.cars/app/search/request?page=2"
},
"status": "success"
}
}About the bid API
Searching and Filtering Listings
The search_listings endpoint accepts filters for make, model, year_from, year_to, status, and auction_type, returning paginated arrays of vehicle listing objects that include fields like name, lot, vin, odometer, and location. Setting get_count to 'true' switches the response from a listing array to a count summary object — useful for building faceted search UIs or estimating result volume before fetching pages. search_by_keyword offers a free-text alternative, accepting a make/model string, VIN, or lot number and returning the same paginated listing structure.
Lot-Level Detail and Pricing
get_listing_details takes a lot_number and returns the full vehicle record enriched with pricing variables extracted from the lot page: estimatedAmount1, estimatedAmount2, buyNowAmount, and a cur currency field. This endpoint works best with currently active listings; archived lots may return limited data. For lookup-only use cases, get_vehicle_by_vin and get_vehicle_by_lot return lighter-weight records — lot, vin, and name — for the first matching active listing.
Sales History and Similar Lots
get_sales_history returns an array of prior sales records for a given lot_number, each containing auction, date, lot_number, final_bid, odometer, status, and seller. This enables price-over-time analysis for a specific vehicle. get_similar_lots returns an array of comparable active listings for a given lot; it works best with currently active lots and may return an empty array for archived ones.
Reference Data and Photos
get_makes_list returns a complete alphabetically sorted array of all makes on the platform. get_models_list takes a make parameter and returns a sorted array of model names for that make — both are useful for populating filter dropdowns. get_lot_photos returns two objects — images and images_large — mapping keys like img_1, img_2, etc. to thumbnail and full-size photo URLs. This endpoint only works for lots currently in the search index.
The bid API is a managed, monitored endpoint for bid.cars — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bid.cars changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official bid.cars API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track final bid prices over time for a specific vehicle using
get_sales_historyrecords withfinal_bidanddatefields. - Build a salvage vehicle search tool filtering by
make,model,year_from,year_to, andauction_typeviasearch_listings. - Display a photo gallery for an auction lot by fetching thumbnail and full-size URLs from
get_lot_photos. - Look up whether a specific VIN is currently at auction using
get_vehicle_by_vinand retrieve the associated lot number. - Populate make/model filter dropdowns in a vehicle search UI using
get_makes_listandget_models_list. - Compare estimated and buy-now pricing across lots by pulling
estimatedAmount1,estimatedAmount2, andbuyNowAmountfromget_listing_details. - Find comparable active listings alongside a target vehicle using
get_similar_lotsto support bidding decisions.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does bid.cars have an official developer API?+
What does `get_listing_details` return beyond what `search_listings` includes?+
get_listing_details enriches the standard listing fields with pricing variables from the lot page: estimatedAmount1, estimatedAmount2, buyNowAmount, and a cur field indicating currency. The base search_listings results include fields like name, lot, vin, odometer, and location but do not include these pricing variables. Note that archived lots may return limited data from get_listing_details.Does the `search_listings` endpoint support filtering by location or damage type?+
make, model, year_from, year_to, status, and auction_type. Location-based filtering and damage-type filtering are not currently exposed as dedicated parameters. You can fork this API on Parse and revise it to add those filter parameters if the underlying data supports them.What is the behavior for archived or sold lots?+
get_listing_details and get_similar_lots work best with currently active listings. Archived lots may return limited data from get_listing_details and an empty array from get_similar_lots. get_sales_history and get_vehicle_by_lot can still return records for archived lots as long as the lot exists on the platform.Does the API expose dealer or seller contact details for a lot?+
get_sales_history records as a seller field tied to historical records. Direct dealer contact information, phone numbers, or email addresses are not currently exposed by any endpoint. You can fork this API on Parse and revise it to surface additional seller data if it is available on the lot page.