Copart lot search
Vehicle lots on Copart (US auctions) for keywords and/or filters, as a logged-out visitor sees them. Each lot: lot number, title, year, make, model, trim, masked VIN, body, colour, engine, fuel, transmission, drive, keys, odometer, damage, condition, title type and state, estimated retail value, current bid, buy-now price, sale status and date, yard and location, highlights, link, thumbnail and raw. Filter by damage, title type, vehicle type, fuel, drive, body style, transmission, seller source, Buy It Now, newly added lots and sale dates. facets lists the site's filter groups with counts for the current search (values for fuel, drive, body_style and transmission are matched as written there). Pass next_page back as page; null on the last page.
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
q | string | Keywords, e.g. toyota camry. Optional when a filter is given. Example: toyota camry |
make | string | Make, e.g. TOYOTA. |
model | string | Model, e.g. CAMRY. |
year_min | integer | Oldest model year. |
year_max | integer | Newest model year. |
odometer_min | integer | Lowest odometer reading. |
odometer_max | integer | Highest odometer reading. |
yard | string | Yard name as shown on lots, e.g. CA - SACRAMENTO. |
damage | string | Primary damage, one or more comma-separated (either matches): all_over, biohazard_chemical, burn, burn_engine, burn_interior, damage_history, frame_damage, front_end, hail, mechanical, minor_dent_scratches, missing_altered_vin, normal_wear, partial_repair, rear_end, rejected_repair, replaced_vin, rollover, side, stripped, top_roof, undercarriage, unknown, vandalism, water_flood. |
title_type | string | Title group, one or more comma-separated: clean, salvage, non_repairable. |
vehicle_type | string | Vehicle type, one or more comma-separated: automobiles, pickup_trucks, suvs, motorcycle, atvs, dirt_bikes, snowmobile, jet_skis, boats, rvs, trailers, bus, medium_duty_box_trucks, heavy_duty_trucks, construction_equipment, industrial_equipment, agriculture_farm_equipment. |
source | string | |
fuel | string | Fuel type as Copart writes it, one or more comma-separated, e.g. GAS, DIESEL, ELECTRIC, ELECTRIC AND GAS HYBRID, FLEXIBLE. |
drive | string | Drive train as Copart writes it, one or more comma-separated, e.g. ALL WHEEL DRIVE, FRONT WHEEL DRIVE, REAR WHEEL DRIVE, 4X4 W/REAR WHEEL DRV. |
body_style | string | Body style as Copart writes it, one or more comma-separated, e.g. SEDAN 4D, 4DR SPORT UTILITY, PICKUP. |
transmission | string | Transmission, e.g. AUTOMATIC or MANUAL. |
buy_now | boolean | true: only lots with a Buy It Now price. |
newly_added | 24h | 7d | Only lots added in the last 24 hours or 7 days. |
sale_date_from | string | Earliest sale date (YYYY-MM-DD, UTC). |
sale_date_to | string | Latest sale date, inclusive (YYYY-MM-DD, UTC). Same as sale_date_from for one day's auctions. |
sort | auction_date | newest_year | oldest_year | odometer_low | odometer_high | auction_date (default), newest_year, oldest_year, odometer_low, odometer_high. |
size | integer | Lots per page, 1-100 (default 20). |
page | integer | Page number. Pass next_page from the previous response. |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/copart/v1/search?q=toyota+camry" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/copart/v1/search",
params={"q": "toyota camry"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/copart/v1/search");
url.searchParams.set("q", "toyota camry");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).