Endpoints
Vehicles 3
Catalog 3
Archive 1
Statistics 1
USA and Canada 5
What is the Copart and IAAI API?
Access active Copart and IAAI vehicle listings in the USA and Canada. Search by VIN or lot number and retrieve specifications, photos, auction prices, and available history. Built for vehicle importers, analytics, and AI applications using publicly accessible data.
Copart and IAAI API is available on the JoJ API marketplace. Subscribe with a single JoJ API key, call it through one gateway, and pay from one wallet — no separate account or contract with the provider.
Copart and IAAI API endpoints
- GET
/cars$0.05 / callSearch Active Auction Vehicles
Search vehicles with active Copart or IAAI listings in our collected dataset. Use this endpoint for vehicle sourcing, importer inventory, auction monitoring, market analysis, and AI applications. **Filters** Use `domain_id=3` for Copart or `domain_id=1` for IAAI; omit it to search the sources available to your account. Filter by manufacturer, model, generation, year, mileage, price, location, damage, and auction details. All query parameters are optional. Omit unused parameters entirely instead of sending empty values. **Pagination and updates** The default page size is 50; the maximum is 1000, subject to account limits. `page` starts at 1. Vehicles are ordered by their internal ID, ascending by default. Set `simple_paginate=1` to skip total counts or `0` to include them; the default depends on the account. Use `minutes` for updates within the last 4320 minutes (72 hours), and `/archived-lots` to track removals. **Response** Returns vehicles in `data`, with pagination in `links` and `meta`. Each vehicle includes specifications and a `lots` array with source identifiers, photos, mileage, prices, auction dates, and condition information where available. Add `prices_history=1` to include each lot's `prices` array. Listing filters select matching vehicles; nested `lots` may include other listings for the same vehicle. Inspect `lots[].domain.id` when selecting an individual source. Availability reflects the latest collected data. An active listing is not a guarantee that bidding is currently open. See the `exclude_expired_auctions` parameter description for its current implementation limitation. **Example request** `GET /cars` **Optional filters** `GET /cars?domain_id=3&per_page=50&simple_paginate=1`
- GET
/search-vin/{vin}$0.50 / callGet Auction Vehicle by VIN
Retrieve a vehicle and its available Copart and IAAI listings by VIN. Searches active and archived listings, making it suitable for vehicle research and auction-history lookup. The VIN lookup is case-insensitive and matches the complete stored value. It does not perform prefix or wildcard searches. A shortened VIN can match only if that exact shortened value is stored. Returns one vehicle in `data`, with specifications and available auction records in `lots`. Records can include lot numbers, source platform, photos, mileage, damage, auction dates, and prices. Set the optional `prices_history=1` parameter to include price-history entries for each lot; omit it for the standard response. Returns HTTP 404 when the VIN is not found or has no listings available to your account. A restricted record can return HTTP 423. Data availability reflects the latest collection. **Example request** `GET /search-vin/YV1MC67278J058366`
- GET
/search-lot/{lot}/{domain}$0.40 / callGet Auction Vehicle by Lot Number
Retrieve a vehicle and its matching auction records using a Copart or IAAI lot number. Searches active and archived listings. Pass the source lot number from `lots[].lot` as `{lot}`. Use `copart_com` or `iaai_com` as `{domain}`. The lot number is a source identifier, distinct from the internal vehicle ID (`data.id`) and internal lot-record ID (`lots[].id`). Returns one vehicle in `data`, with specifications and matching listings in `lots`. Photos, mileage, damage, prices, and auction dates are included where available. Set `prices_history=1` to include the `prices` array. For a source's external vehicle ID, such as the IAAI ID used in a listing URL, set `search_by_id=1` and pass that ID as `{lot}`. Numeric external IDs use prefix matching in the current implementation; nonnumeric external IDs use an exact match. Omit this parameter for a normal lot-number lookup. Returns HTTP 400 for an invalid lot-number format, HTTP 401 for a source unavailable to your account, or HTTP 404 when no matching vehicle is found. **Example request — Copart** `GET /search-lot/86246665/copart_com`
- GET
/manufacturers/{type}$0.05 / callList Vehicle Manufacturers
List manufacturers and the catalog IDs used by the vehicle-search and model endpoints. Set `{type}` to `cars`, `motorcycles`, or `all`. Each item includes `id`, `name`, a brand image where available, `models_qty`, and `cars_qty`. For example, BMW has manufacturer ID `16`. Returns `data`, `links`, and `meta`, sorted by manufacturer name with a fixed page size of 1000. `cars_qty` reflects active inventory for the sources available to your account; manufacturers with zero inventory may appear. This catalog is cached for up to 24 hours. It does not accept a source filter. **Example request** `GET /manufacturers/cars` Use an item's `id` in `/models/{manufacturer_id}/{type}` or the `manufacturer_id` filter on `/cars`.
- GET
/models/{manufacturer_id}/{type}$0.05 / callList Models by Manufacturer
List the vehicle models belonging to a manufacturer. Get `{manufacturer_id}` from `/manufacturers/{type}`; use `16` for BMW. Set `{type}` to `cars`, `motorcycles`, or `all`. Returns `data`, `links`, and `meta`. Each model includes `id`, `name`, `manufacturer_id`, `vehicle_type`, `generations_qty`, and `cars_qty`. Results are sorted by name and paginated at 500 models per page. Omit `page` for page 1. Use the returned model ID in `/generations/{model_id}/{type}` or the `model_id` filter on `/cars`. Inventory counts reflect the sources available to your account; zero-count entries may appear. No source filter is supported here. **Example request — BMW models** `GET /models/16/cars`
- GET
/generations/{model_id}/{type}$0.05 / callList Generations by Model
List generations of a vehicle model, including production-year ranges where available. Get `{model_id}` from the models endpoint. Set `{type}` to `cars` or `motorcycles`. Returns `data`, `links`, and `meta`. Each item includes `id`, `name`, `from_year`, `to_year`, `manufacturer_id`, `model_id`, and `cars_qty`. A null year means that value is unavailable. Results are sorted by name and paginated at 500 generations per page. Omit `page` for page 1. Inventory counts reflect the sources available to your account; zero-count entries may appear. Use an item's `id` as the `generation_id` filter on `/cars`. **Example request — BMW model 94** `GET /generations/94/cars`
- GET
/archived-lots$0.50 / callList Archived Auction Listings
Retrieve Copart and IAAI listings marked as archived in our dataset. Use this feed with `/cars` to synchronize inventory and remove listings that are no longer active. Use `minutes` for listings archived within the last N minutes, up to 4320 minutes (72 hours). Without a time filter, this feed can be bounded by a server-managed archive cutoff; it is not a guaranteed export of the complete archive. Use VIN or lot-number lookup to research an individual older listing. The default page size is 100; the maximum is 1000, subject to account limits. `page` starts at 1. Set `simple_paginate=1` to skip total counts or `0` to include them; the default depends on the account. Results are ordered by internal lot ID. Returns `data`, `links`, and `meta`, including source lot numbers, internal IDs, VINs where available, archive timestamps, and price/status information. The current response groups bid, Buy Now, sale date, and final bid with their update timestamps; legacy accounts can receive the older shape documented in the response schema. An archived listing does not necessarily indicate a completed sale. **Example request** `GET /archived-lots` **Incremental update** `GET /archived-lots?minutes=60`
- GET
/statistics$0.50 / callGet Auction Vehicle Statistics
Retrieve stored auction statistics grouped by source platform, manufacturer, model, generation, year, engine, and vehicle type. Use this data for market comparisons and historical analysis. Records include listing counts, average/minimum/maximum final-bid values, and calculation timestamps where available. Statistics are stored aggregates rather than live auction quotes or valuations. Filter by `manufacturer_id`, `model_id`, `generation_id`, `engine_id`, or `year`. The manufacturer filter accepts one ID or comma-separated IDs, for example `16` for BMW. Records cover sources available to your account; no `domain_id` query filter is supported. Inspect each record's `domain` to identify its source. Returns `data`, `links`, and `meta` using simple pagination without total counts. The default page size is 100, with a maximum of 500 subject to account limits. Results are ordered by internal record ID descending. Resend filters and `per_page` when requesting the next page. **Example request** `GET /statistics`
- GET
/usa/damages$0.01 / callList Auction Damage Types
Retrieve the damage-name dictionary used by Copart and IAAI vehicle records. Use it to interpret primary and secondary damage values and build damage-selection controls. Each record includes `id` and `name`. To filter `/cars`, pass a damage name or substring in the string parameter `damage`; the search endpoint does not take a damage ID. Returns `data` and native pagination fields such as `current_page` and `next_page_url`, rather than `links`/`meta`. Records are sorted by ID, with a fixed page size of 200. Omit `page` for page 1; a null `next_page_url` indicates the end. **Example request** `GET /usa/damages`
- GET
/usa/states$0.01 / callList US States and Canadian Provinces
Retrieve the state or province dictionary for auction locations. Omit `country` for the United States, or set `country=ca` for Canada. Accepted codes are `us` and `ca`, case-insensitively. Each record includes `id`, `name`, `code` where available, and `country_id`. Pass its internal `id` to `/usa/cities/{state_id}`. To filter vehicle listings, use its `code` in the `/cars` parameter `state_code`. Returns `data` and native pagination fields, including `next_page_url`. Results are sorted by ID with a fixed page size of 200. Omit `page` for page 1. A null `next_page_url` indicates the end. An unsupported country code returns HTTP 400. **Example request — US states** `GET /usa/states` **Canadian provinces** `GET /usa/states?country=ca`
- GET
/usa/cities/{state_id}$0.01 / callList Cities by State or Province
Retrieve cities belonging to a US state or Canadian province. Pass the internal state/province `id` returned by `/usa/states` as `{state_id}`; do not pass an abbreviation such as CA or FL. Each city includes `id`, `name`, `state_id`, and `country_id`. Results are sorted by ID with a fixed page size of 200. Returns `data` and native pagination fields, including `next_page_url`. Omit `page` for page 1. A state with no matching cities returns an empty `data` array. **Example request** `GET /usa/cities/12` Use the state lookup to select the correct ID for your intended location.
- GET
/usa/titles$0.01 / callList Auction Document Titles
Retrieve the document-title dictionary used by auction listings. Use it to interpret title and document information returned with a vehicle. Each record includes `id`, `name`, and `code` where available. To filter `/cars`, pass a document-title name or substring in `document_title`; the vehicle-search parameter accepts text rather than a dictionary ID. A dictionary entry is a source label, not a determination of a vehicle's legal or registration status. Returns `data` and native pagination fields, including `next_page_url`. Results are sorted by ID with a fixed page size of 200. Omit `page` for page 1; a null `next_page_url` indicates the end. **Example request** `GET /usa/titles`
- GET
/usa/branches$0.01 / callList Copart and IAAI Auction Branches
Retrieve the Copart and IAAI auction-branch dictionary. Omit `domain_id` to list both platforms, or use `3` for Copart and `1` for IAAI. Each record includes the internal branch `id`, `domain_id`, `name`, branch `number`, and source `link` where available. These records help interpret the selling-branch information associated with vehicle listings. Returns `data` and native pagination fields, including `next_page_url`. Results are sorted by ID with a fixed page size of 200. Omit `page` for page 1; a null `next_page_url` indicates the end. An unsupported source ID returns HTTP 400. **Example request** `GET /usa/branches`
Frequently asked questions about Copart and IAAI API
What data does this API provide?
The API provides vehicle information collected from publicly accessible Copart and IAAI listings in the USA and Canada. Available fields include specifications, photos, mileage, damage, auction dates, prices, and listing history. Coverage varies by source and vehicle.
Can I retrieve all active vehicles, or only the last 72 hours of data?
You can retrieve the full active inventory available to your account by calling `/cars` without the optional `minutes` parameter and browsing all result pages. The 72-hour limit applies only to the optional recent-update filter, not to inventory coverage.
Can I search by VIN or lot number?
Yes. Use `/search-vin/{vin}` for a VIN lookup or `/search-lot/{lot}/{domain}` for a source lot number. These endpoints search available active and archived listings. Set `{domain}` to `copart_com` or `iaai_com`.
How can I keep my vehicle catalog updated?
Start by retrieving active vehicles through `/cars`. Then use the optional `minutes` filter to collect recently updated records and `/archived-lots` to identify listings that are no longer active. Process every page and periodically reconcile your catalog. Availability reflects collected data and is not guaranteed to be live.
Is this an official API, and does access include republication rights?
No. We provide an independent, unofficial information collection service and are not affiliated with the source platforms or their trademark owners. Fees cover collection, processing, and API access. Before publicly displaying or redistributing data, we recommend obtaining appropriate rights directly from the copyright owners. API access does not grant those rights.