Copart Auction Scraper — Salvage Lots in 8 Countries avatar

Copart Auction Scraper — Salvage Lots in 8 Countries

Pricing

from $0.75 / 1,000 results

Go to Apify Store
Copart Auction Scraper — Salvage Lots in 8 Countries

Copart Auction Scraper — Salvage Lots in 8 Countries

Scrape Copart salvage and used-vehicle auction lots in 8 countries: USA, Canada, UK, Ireland, Germany, Spain, Finland, Middle East. Paste a search URL or a single lot URL, or filter by make, model, year, odometer. Flat JSON/CSV: specs, damage, bids, dates, images, VIN decoding.

Pricing

from $0.75 / 1,000 results

Rating

5.0

(2)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

87

Total users

26

Monthly active users

5 days ago

Last modified

Share

Unlock Copart auction lot data across the USA, Canada, UK, Ireland, Germany, Spain, Finland and the Middle East - Scrape salvage and used vehicle listings from Copart USA, Copart Canada, Copart UK, Copart Ireland, Copart Germany, Copart Spain, Copart Finland and Copart Middle East by driving the same mobile search and lot-detail APIs the member app uses. Ideal for inventory monitoring, pricing research, and building structured datasets from lot search URLs or actor filters—with exports in JSON and CSV.

Scrape Copart salvage and used-vehicle auction lots in 8 countries: USA, Canada, UK, Ireland, Germany, Spain, Finland, Middle East. Paste a search URL or a single lot URL, or filter by make, model, year, odometer. Flat JSON/CSV: specs, damage, bids, dates, images, VIN decoding.

Overview

The Copart scraper collects lot detail records for vehicles (and related inventory) matching your Copart lot search on copart.com, copart.ca, copart.co.uk, copart.ie, copart.de, copart.es, copart.fi or copartmea.com. It starts from either full lotSearchResults URLs (including the searchCriteria query) or in-actor filters (featured chips, extra FETI clauses, or “search all vehicles”). It calls the mobile POST /srch/ search endpoint, then POST /lots-api/v1/lot-details per lot, and writes flattened rows to the dataset (no raw mobileRequest payload).

The country is detected automatically from each URL's host, so USA (copart.com, USD/miles), Canada (copart.ca, CAD), UK (copart.co.uk, GBP/miles), Ireland (copart.ie, EUR/km), Germany (copart.de, EUR/km), Spain (copart.es, EUR/km), Finland (copart.fi, EUR/km) and the Middle East (copartmea.com, AED/km) lots use the same output schema and can be mixed in a single run. For filter-based runs, a site input picks the storefront. (Every market except Germany reuses the UK mobile session; Germany has its own.)

What does the Copart Scraper do?

The Copart scraper enables you to:

Comprehensive data collection

  • Lot listings
    • Pull full lot detail fields returned by the mobile lot-details API (vehicle, damage, yard, auction, bids, title, odometer, etc.)
    • Collect full-size image URLs in lotImages plus a thumbnail in thumbnail_image
    • Preserve the search hit context in searchResult (snake_case fields from the search index)
    • Attach sourceUrl so you know which search produced each lot

Advanced behaviour

  • Search criteria mapping: Translates web searchCriteria JSON (FETI, MAKE, MODL, YEAR, ODM, RNCD, LOC, etc.) into the mobile /srch/ filter format where captured (see codebase copartMobileMapper.ts).
  • Pagination: Follows search pages until your maxItems limit is met or the result set runs out — including across pages where every hit was filtered as an offsite partner lot.
  • Deduplication: Uses extended unique keys so identical POST URLs with different bodies are not collapsed incorrectly.

Flexible input

  • Search URLs: Paste one or more lotSearchResults links from any of the eight Copart sites, e.g.
    https://www.copart.com/lotSearchResults?...&searchCriteria=...
    https://www.copart.de/lotSearchResults?...&searchCriteria=...
    The site is detected per-URL, so you can mix links from different countries in one run.
  • Single lot URLs: Paste a lot page link to scrape that one vehicle without running a search, e.g.
    https://www.copart.com/lot/73672065/salvage-2021-kia-forte-gt-line-tx-dallas
    Both forms go in the same startUrls list and can be mixed freely.
  • Filters only: Leave startUrls empty, pick the site (any of uk, de, us, es, fi, mea, ca, ie), then use Search all vehicles, structured filters (make, model, year, odometer), Featured filters (multi-select), and/or Extra FETI clauses (raw Solr-style fragments as on the site URL).

This tool is ideal for:

  • Salvage and used-vehicle market research across all eight Copart markets
  • Tracking lots by make, model, yard, damage, or odometer bands
  • Pulling one specific lot on demand from its URL
  • Building datasets aligned with Copart search UI behaviour

Features

  • Eight markets, one actor: Copart USA (copart.com, CPRTUS, USD/miles), Canada (copart.ca, CPRTCA, CAD), UK (copart.co.uk, CPRTUK, GBP/miles), Ireland (copart.ie, CPRTIE, EUR/km), Germany (copart.de, CPRTDE, EUR/km), Spain (copart.es, CPRTES, EUR/km), Finland (copart.fi, CPRTFI, EUR/km) and the Middle East (copartmea.com, CPRTMEA, AED/km), auto-selected from the URL host or the site input. Identical output schema for all eight.
  • Three input modes: search URLs, single lot URLs, or 30+ filter fields (URLs win when both are provided).
  • Filter by anything Copart indexes: damage category, title group, vehicle type, fuel, drivetrain, body style, cylinders, engine, trim, state, yard, current-bid range, sale-date window, newly-added window, sale platform, VIN, lot number or free text — plus exterior colour, which Copart's own site cannot filter on.
  • VIN decoding (optional): adds vin* columns — manufacturer, country of origin, model year, trim, body class, engine, fuel, transmission, assembly plant. Works on the 11-char prefix Copart leaves visible on masked VINs. Free, no API key.
  • Flattened output: lotDetails fields at the top level; lotImages as string URLs only.
  • Full image galleries: every full-size photo URL in lotImages, the high-resolution copies in lotImagesHd, and a thumbnail — not just the thumbnail.
  • No junk records: NPA / Purple Wave partner lots — which Copart's own lot-details API rejects — are filtered out before they reach your dataset.
  • Concurrency & retries: Configurable maxConcurrency, minConcurrency, maxRequestRetries.
  • Proxy support: Apify proxy configuration (residential recommended for member API traffic).
  • Exports: Dataset JSON/CSV (e.g. data.json, data.csv when exported from runs).

Coming from another Copart scraper?

Most Copart actors on the Store cover copart.com only and take one search URL per run. Here is what changes when you switch:

What you needThis actor
CountriesAll 8 — USA, Canada, UK, Ireland, Germany, Spain, Finland, Middle East, mixable in a single run
Search URLs per runUnlimited — startUrls is a list, not a single field
One specific vehiclePaste its lot URL directly; no search runs, one URL costs one result
No URL to handBuild the search from 30+ filter fields — damage, title group, vehicle type, fuel, drivetrain, body, colour, state, yard, bid range, sale date, platform, VIN, free text
VIN detailOptional decoding to manufacturer, country of origin, model year, trim, body class, engine, fuel, transmission and assembly plant — works on Copart's masked VINs
PhotosEvery full-size URL in lotImages, every high-resolution copy in lotImagesHd, plus thumbnail_image
Row sizePick full, compact or minimal detail instead of always carrying ~130 columns
ProxiesIncluded and pre-configured per country; no proxy setup or extra proxy bill
Offsite partner lotsDropped before they cost you a record. Copart's US search is mostly NPA / Purple Wave lots that its own detail API rejects; includeOffsiteLots keeps them if you want them
PaginationKeeps paging until your item limit is met, rather than stopping on the first partly-filtered page
Scheduled watchingMonitor mode reports only new and changed lots, so a daily schedule does not re-bill you for the same inventory
AlertsSigned webhook delivery to your endpoint, Slack or Discord

Advanced filters

Option B builds the search from filter fields instead of a URL. Beyond make, model, year and odometer:

FilterWhat it does
Primary / secondary damageAll 25 Copart damage categories — front end, hail, water/flood, rollover, stripped, burn, frame damage and the rest
Vehicle typeAutomobiles, motorcycles, boats, trailers, ATVs, jet skis, snowmobiles, RVs, buses, box trucks, farm equipment
Title groupClean, salvage, or non-repairable
Fuel / drive / transmission / cylinders / engine / body style / trimThe full drivetrain and body facets
Exterior colourCopart's own site has no colour filter — this one does
State or yardEvery Copart yard in a state, or named yards
Current bid rangeMin and max, on Copart's index rather than by over-fetching pages
Sale dateToday, tomorrow, next 7 or 30 days, any upcoming sale, or a custom YYYY-MM-DD range
Newly added within N daysWhen the lot appeared in inventory, not when it sells
Sale platformInclude or exclude Copart USA, Select, NCS, Canada, Purple Wave, NPA
Lot number / VIN / free textLook up specific lots, match a VIN prefix, or search by phrase
Runs and drives · Has keys · Buy It Now · Exclude On Approval · Classics (25+ yrs)Copart's own featured-item clauses
SortAuction date, odometer, year, current bid, make, lot number

Values inside one filter OR together, so picking Front End and Rear End widens the damage search. Separate filters AND together, so damage plus state plus bid range narrows it.

Every code in the dropdowns was harvested from Copart's live search index and then checked one at a time: the code had to narrow the result count, and a returned lot had to echo the same code back in its own record. That matters more than it sounds — VEHTYPE_M reads like "motorcycle" but Copart uses it for boats, and the motorcycle code is VEHTYPE_C.

Copart also stores one concept under several spellings, and the split is not cosmetic. fuel_type_desc holds 243,616 lots under GAS and another 78,497 under GAS padded with trailing spaces; cylinders holds 174,219 under 4 and 41,020 under 4 . Filtering on the value you would reasonably type therefore used to drop a quarter of the matches with no error at all. Each dropdown option now covers every spelling Copart uses for it, so picking Gasoline returns 323,114 lots where the tidy spelling alone returned 243,616. Make and model match as a prefix, so CHEV also finds CHEVROLET; body style matches as a substring, so SEDAN also finds "SEDAN 4DR".

Colour is the one filter Copart's index cannot serve, so it is applied to each lot after it is fetched. Non-matching lots are dropped before they reach the dataset, so they are never charged for, but a colour-filtered run is slower than the index-side filters.

Monitor mode

A scheduled run normally re-reports the same inventory every time, and you pay for it every time. Monitor mode remembers what this search already returned and emits only what is new or what moved — price, sale date, sale status, odometer, damage, title or run condition. Everything else is skipped before it reaches the dataset, so it costs nothing.

Each reported row carries monitorStatus (new or updated) and monitorFirstSeenAt.

The first run reports everything, because it has nothing to compare against. From the second run on you get the difference. Turning off Include changed lots narrows it further to brand-new lots only, which is the cheapest way to watch a large search.

Memory is kept per search, keyed by its start URLs, so two schedules watching different filters never overwrite each other. Set a monitor state name to pin it explicitly, or to reset a watch by pointing it at a fresh name.

Cross-run memory needs stored state, and Apify scheduling is itself a paid feature, so persistence is paid-plan only. A free run still works: it behaves as a first run every time and returns every match.

Webhook

Set a webhook URL and every reported lot is POSTed there in batches of 50, after it is safely saved to the dataset — a webhook outage can never cost you the data. Failed batches are retried three times with backoff, and anything still undelivered is written to the run's key-value store as webhook-undelivered rather than dropped.

Add a signing secret and each delivery carries X-Copart-Signature: sha256=<hmac> computed over the exact request body, so your endpoint can verify the call.

The JSON format sends full lot records, which is what Make, n8n, Zapier or a custom endpoint want. The Slack and Discord formats send a readable one-line-per-lot message those two accept directly.

Row detail

A full lot record runs to about 130 columns. Row detail trims that without touching what the filters, VIN decode or monitor see — the cut happens last, right before the row is saved.

ProfileColumnsWhat it holds
Full (default)~128Everything
Compact~66The buying decision: vehicle, damage, title, condition, pricing, VIN, drivetrain, yard, coordinates, both image lists
Minimal~14Lot, link, year/make/model, odometer, primary damage, current bid, sale date, yard, thumbnail

Full stays the default, so nothing you already read disappears. VIN-decode and monitor columns are kept in every profile — you only get those by switching a feature on, so a profile should not take them away. Smaller rows also mean smaller webhook payloads.

How to use

Scraping lots

  1. Set up: Apify account and this actor on the Apify platform (or run locally with Apify SDK / Crawlee).
  2. Configure input (choose one primary path):
    • Add Start URLs: full lotSearchResults links from copart.com, copart.ca, copart.co.uk, copart.ie, copart.de, copart.es, copart.fi or copartmea.com including searchCriteria when you copy from the browser; and/or single lot links like https://www.copart.com/lot/73672065/…, or
    • Leave Start URLs empty: choose the site (uk, de, us, es, fi, mea, ca or ie), then set make / model / year / odometer, Search all vehicles, and/or Featured filters per the input schema.
    • Optionally switch on VIN enrichment to add the vin* columns.
  3. Adjust limits: Set maxItems, concurrency, retries, and proxy as needed.
  4. Run the actor.
  5. Collect dataset items (JSON/CSV). Each item is one lot with flattened detail fields.

Input configuration

Example input (URLs + limits + proxy):

{
"startUrls": [
"https://www.copart.co.uk/lotSearchResults?qId=example&searchCriteria=%7B%22query%22%3A%5B%22*%22%5D%2C%22filter%22%3A%7B%7D%7D"
],
"searchAllVehicles": false,
"featuredChips": ["buyItNow", "highValueItems"],
"extraFetiClauses": [],
"maxItems": 1000,
"maxConcurrency": 10,
"minConcurrency": 1,
"maxRequestRetries": 60,
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Example input (Germany, filter-based — no URLs):

{
"site": "de",
"searchAllVehicles": true,
"maxItems": 500,
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Input fields explanation

  • startUrls (Array of strings): Copart URLs from any of the eight sites — USA (copart.com), Canada (copart.ca), UK (copart.co.uk), Ireland (copart.ie), Germany (copart.de), Spain (copart.es), Finland (copart.fi) or Middle East (copartmea.com). Two shapes are accepted and can be mixed in one list:

    • Search URLs — https://www.copart.com/lotSearchResults?...&searchCriteria=.... The actor paginates the search and pulls full details for every hit.
    • Single lot URLs — https://www.copart.com/lot/73672065/... (the legacy /lotdetails/73672065 form works too). No search is run; the actor fetches that lot's details directly, so one URL costs exactly one result.

    If this array is non-empty, the actor ignores the filter section below. The site is detected from each URL's host, so links from different countries can be mixed. If empty, you must satisfy the filter rules below.

  • site (String, uk, de, us, es, fi, mea, ca or ie, default uk): For filter-based runs only (when startUrls is empty), selects the storefront the filters run against — uk = copart.co.uk (GBP/miles), de = copart.de (EUR/km), us = copart.com (USD/miles), es = copart.es (EUR/km), fi = copart.fi (EUR/km), mea = copartmea.com / Middle East (AED/km), ca = copart.ca (CAD), ie = copart.ie (EUR/km). Ignored for URL-based runs.

  • searchAllVehicles (Boolean): When startUrls is empty, set to true to run a very broad search on the selected site (default year facet behaviour in the mapper). If false, you need at least one meaningful filter or extra FETI clause.

  • featuredChips (Array of strings, multi-select): “Featured items” style facets. Fully wired fragments in code include e.g. vehiclesForAuction, buyItNow, highValueItems, hotItems; other chip IDs may log a warning until mapped in src/lib/copartFeaturedChips.ts.

  • extraFetiClauses (Array of strings): Additional Solr-style FETI lines copied from a real searchCriteria URL on copart.com, copart.ca, copart.co.uk, copart.ie, copart.de, copart.es, copart.fi or copartmea.com—appended after featured chip fragments.

  • enrichVin (Boolean, default false): Decode each lot's VIN and add flat vin* columns (see VIN enrichment below). Uses the free public NHTSA vPIC database — no API key, no extra charge, cached per run.

  • includeOffsiteLots (Boolean, default false): Keep NPA / Purple Wave partner lots. Copart's US search index mixes these in, but Copart's lot-details API rejects them, so by default they are dropped before they cost you a record. On a default copart.com search they are the majority of hits — a live sample of the first 20 was 11 Purple Wave, 7 NPA and 2 Copart — so leaving this off is usually what you want. Non-US markets contain no partner lots and are unaffected.

  • maxItems (Integer): Maximum number of lot detail records to push to the dataset (subject to Apify account limits / actor logic).

  • maxConcurrency / minConcurrency (Integer): Crawler concurrency bounds for HTTP requests.

  • maxRequestRetries (Integer): Retries per failed request.

  • proxy (Object): Apify proxy configuration; residential groups are commonly used for Copart member endpoints.

Output structure

The dataset contains one object per lot. Data comes from the mobile lot-details response, flattened (no nested lotDetails wrapper), with lotImages as URL strings, plus sourceUrl, searchResult, and thumbnail_image. All eight markets share the same schema — the difference is in the values: US/UK lots report miles (USD / GBP), Canada CAD, the Middle East AED, and Ireland/Germany/Spain/Finland EUR — with metric (kilometres) odometers outside the US/UK (currencyCode, odometerUOM). The sample below is a UK lot.

Sample JSON output (first object from data.json, pretty-printed)

{
"auctionAssignmentNumber": 0,
"auctionDateType": "F",
"bodyStyle": "ESTATE",
"buyTodayBid": 0,
"color": "GREY",
"drive": "2 AXLE RIGID BODY",
"runCondition": "S",
"fuel": "DIESEL",
"gridRow": "4L10",
"keys": "YES",
"hasOwnerManual": "No",
"hasTransmission": "Yes",
"hasEngine": "Yes",
"highlights": "ENGINE START PROGRAM",
"lotCountry": "GBR",
"lotMakeCode": "VOLV",
"lotModelDesc": "XC60 R DES",
"lotMakeDesc": "VOLVO",
"lotYear": 2019,
"trim": "",
"category": "S REPAIRABLE STRUCTURAL",
"lotDescription": "2019 VOLVO XC60 2.0 D4 R DESIGN 5DR GEARTRONIC",
"navigation": "No",
"offsiteFlag": false,
"lotNumber": 47493436,
"notes": "PHYSICAL V5 AVAILABLE",
"odometer": 80668,
"goAppUser": "",
"primaryDamage": "FRONT END",
"primaryDamageCode": "DAMAGECODE_FR",
"secDamage": "SIDE",
"repairEst": 0,
"vatTosale": "No",
"vehicleTypeCode": "VEHTYPE_V",
"vehicleTypeDesc": "VEHICLES UNDER 7.5 TONNES",
"siteCode": [
"CPRTUK"
],
"sellerSource": "",
"transmission": "8 SPEED AUTO",
"transmissionType": "8 SPEED AUTO",
"prop65Warning": false,
"maskedVIN": "*****************",
"isLotOwner": false,
"vehicleRegistrationNumber": "*******",
"yardName": "BRISTOL",
"yardNumber": 415,
"yardZipCode": "BS10 7SF",
"yardCityName": "AVONMOUTH, BRISTOL",
"yardTwoLetterState": "GB",
"buildSheetFlag": false,
"lotIconCodes": [
"ADDL-INFO",
"CERT-S",
"IV",
"VHDRP"
],
"hasVehicleReport": true,
"isInsuranceSeller": true,
"titleState": "GB",
"saleTitleType": "S",
"titleDescription": "S REPAIRABLE STRUCTURAL",
"titleGroupCode": "TITLEGROUP_C",
"titleGroupDescription": "Clean",
"auctionHostName": "BRISTOL",
"auctionHostId": 415,
"currencyCode": "GBP",
"saleDate": "2026-04-22T09:00:00Z",
"lastUpdated": "04/10/2026, 12:00 am",
"isSealedBid": false,
"engine": "1969 cc",
"estRetailValue": 16902.67,
"sublotFlag": false,
"subLotLocation": null,
"subLotMapsLocation": null,
"soldFlag": false,
"timeZone": "BS",
"isBuyTodayLot": false,
"latitude": 51.53199,
"longitude": -2.65965,
"physicalYardNumber": 415,
"showJapanSaleDisclaimer": false,
"currentBid": 0,
"displayBidAmount": 0,
"isCopartWholesaleLot": false,
"showConditionReportV2": false,
"nonGoApSellerCompanyLot": "",
"sellerInfo": {},
"bidState": "PRELIMBID",
"bidStatus": "NEVERBID",
"saleStatus": "PURESALE",
"allowStartingBidAmount": true,
"isMakeAnOfferLot": false,
"firstRegistrationDate": "20190610",
"saleLightColor": "",
"additionalNotes": [
{
"NOTEDATE": "27/03/2026",
"ESQNBR": 77,
"NOTE": "NUMBER OF KEYS 2 "
}
],
"enableUpdatedOffsiteLotPilot": false,
"autoCheckFlag": false,
"lotImages": [
"https://c-static.copart.com/v1/AUTH_svc.pdoc00001/ids-c-prod-lpp/0326/7713961ca0f2421fb821c61db431e534_ful.jpg",
"https://c-static.copart.com/v1/AUTH_svc.pdoc00001/ids-c-prod-lpp/0326/124caef72e9e4f6f86b1905be87ff4f8_ful.jpg",
"https://c-static.copart.com/v1/AUTH_svc.pdoc00001/ids-c-prod-lpp/0326/cd9b47738f5d4f37a2b1b0bcb6bdbfe4_ful.jpg",
"https://c-static.copart.com/v1/AUTH_svc.pdoc00001/ids-c-prod-lpp/0326/99c62b66014c406eab505c340bdf651f_ful.jpg",
"https://c-static.copart.com/v1/AUTH_svc.pdoc00001/ids-c-prod-lpp/0326/84c7f56f2a044796b0c9a0c9191247cd_ful.jpg",
"https://c-static.copart.com/v1/AUTH_svc.pdoc00001/ids-c-prod-lpp/0326/d1fc528e27fe45e38408e89866464a9d_ful.jpg",
"https://c-static.copart.com/v1/AUTH_svc.pdoc00001/ids-c-prod-lpp/0326/76e66da09a1c474f8a6081112a254198_ful.jpg",
"https://c-static.copart.com/v1/AUTH_svc.pdoc00001/ids-c-prod-lpp/0326/234da12212c4431bb5568170ac780d68_ful.jpg",
"https://c-static.copart.com/v1/AUTH_svc.pdoc00001/ids-c-prod-lpp/0326/8fb75afa77624dfca6354372f51e47e0_ful.jpg",
"https://c-static.copart.com/v1/AUTH_svc.pdoc00001/ids-c-prod-lpp/0326/bfcb79d9df5b4182bba5cc7d026eceb8_ful.jpg",
"https://c-static.copart.com/v1/AUTH_svc.pdoc00001/ids-c-prod-lpp/0426/389ca93b773e4affb80945e61724db8d_ful.jpg",
"https://c-static.copart.com/v1/AUTH_svc.pdoc00001/ids-c-prod-lpp/0326/443afe2735e64b0db3db5f4e1b3e0b59_ful.jpg"
],
"sourceUrl": "https://www.copart.co.uk/lotSearchResults?qId=cdb3c72e-e25e-4bc6-8b25-bc22009f1e36-1775984478013&intcmp=web_homepage_banner&searchCriteria=%7B%22query%22:%5B%22*%22%5D,%22filter%22:%7B%22MAKE%22:%5B%22lot_make_desc:%5C%22VOLVO%5C%22%22%5D,%22MODL%22:%5B%22manufacturer_model_desc:%5C%22XC60%5C%22%22%5D,%22YEAR%22:%5B%22lot_year:%5B2018%20TO%202024%5D%22%5D,%22ODM%22:%5B%22odometer_reading_received:%5B75001%20TO%20100000%5D%22%5D%7D,%22searchName%22:%22%22,%22watchListOnly%22:false,%22freeFormSearch%22:false%7D",
"searchResult": {
"auction_host_name": "BRISTOL",
"auction_host_id": 415,
"buy_it_now_price": 0,
"currency_code": "GBP",
"sealed_bid_flag": false,
"auction_date_utc": "2026-04-22T09:00:00Z",
"auction_date_type": "F",
"auction_assignment_number": 0,
"lot_desc": "2019 VOLVO XC60 2.0 D4 R DESIGN 5DR GEARTRONIC",
"lot_number": 47493436,
"odometer_reading_received": 80668,
"lot_thumbnail_image_path": "cs.copart.com/v1/AUTH_svc.pdoc00001/lpp/0326/7713961ca0f2421fb821c61db431e534_thb.jpg",
"yard_name": "BRISTOL",
"yard_number": 415,
"title_desc": "S REPAIRABLE STRUCTURAL",
"lot_icon_codes": [
"ADDL-INFO",
"CERT-S",
"IV",
"VHDRP"
],
"purple_wave_url": "",
"show_updated_offsite_lot_text": false,
"hide_odometer": false,
"full_vin": "*****************"
},
"thumbnail_image": "https://c-static.copart.com/v1/AUTH_svc.pdoc00001/ids-c-prod-lpp/0326/7713961ca0f2421fb821c61db431e534_thb.jpg"
}

This sample matches the first element of data.json (same values; indentation added for readability).

Output fields explanation

Fields below match the first object in data.json (flattened Copart mobile lot detail + actor-added fields). Types reflect typical values; Copart may add or omit fields over time.

Auction & sale

  • auctionAssignmentNumber (Number): Lane/assignment identifier for the sale event (0 if not assigned in sample).
  • auctionDateType (String): Auction date classification code from Copart (e.g. F).
  • saleDate (String, ISO 8601): Scheduled sale / auction datetime (UTC).
  • lastUpdated (String): Human-readable last update string from the API.
  • saleStatus (String): Sale lifecycle code (e.g. PURESALE).
  • saleLightColor (String): Sale light indicator (empty if none).
  • isSealedBid (Boolean): Whether the lot is a sealed-bid sale.
  • timeZone (String): Yard/sale timezone code (e.g. BS).
  • auctionHostName (String): Host location name for the auction (often matches yard).
  • auctionHostId (Number): Numeric host / auction location id.

Vehicle identity & specs

  • lotNumber (Number): Copart lot number (primary key for the listing).
  • lotDescription (String): Full text description line for the vehicle.
  • lotYear (Number): Model year.
  • lotMakeDesc / lotMakeCode (String): Make label and internal make code.
  • lotModelDesc (String): Model / trim description string.
  • trim (String): Trim field (may be empty).
  • bodyStyle (String): Body style label (e.g. ESTATE).
  • color (String): Exterior colour label.
  • fuel (String): Fuel type label.
  • drive (String): Drivetrain / axle description.
  • engine (String): Engine displacement or description text.
  • transmission / transmissionType (String): Transmission description (often duplicated).
  • odometer (Number): Odometer reading (miles context for UK listings in typical use).
  • runCondition (String): Run-and-drive style code (e.g. S, N—Copart-coded).
  • keys (String): Whether keys are present (e.g. YES / NO).
  • hasOwnerManual / hasTransmission / hasEngine (String): Yes/No flags from condition checklist.
  • highlights (String): Highlight line (e.g. programme name).
  • navigation (String): Navigation present flag (e.g. No).
  • vehicleTypeCode / vehicleTypeDesc (String): Vehicle category code and description.
  • category (String): Damage / listing category line (e.g. repairable structural).
  • firstRegistrationDate (String): Registration date, often YYYYMMDD.

Damage & valuation

  • primaryDamage / primaryDamageCode (String): Primary damage description and Copart damage code.
  • secDamage (String): Secondary damage description.
  • repairEst (Number): Repair estimate amount (currency implied by currencyCode).
  • estRetailValue (Number): Estimated retail value.
  • titleState (String): Title jurisdiction (e.g. GB).
  • saleTitleType (String): Title type code (e.g. S).
  • titleDescription (String): Human-readable title / category line.
  • titleGroupCode / titleGroupDescription (String): Title group code and label (e.g. Clean group).
  • notes (String): Free-text notes line (e.g. V5 availability).
  • vatTosale (String): VAT treatment flag for sale (e.g. Yes / No).
  • prop65Warning (Boolean): Prop 65 flag (often false for UK).

Yard & location

  • lotCountry (String): Country code for the lot (e.g. GBR).
  • siteCode (Array of strings): Site codes (e.g. CPRTUK).
  • yardName (String): Yard display name.
  • yardNumber / physicalYardNumber (Number): Yard identifiers.
  • yardZipCode (String): Yard postal code.
  • yardCityName (String): City / area label for the yard.
  • yardTwoLetterState (String): Region code (e.g. GB).
  • latitude / longitude (Number): Geocoordinates for the yard / lot location.
  • offsiteFlag (Boolean): Offsite lot flag.
  • sublotFlag (Boolean): Sub-lot flag.
  • subLotLocation / subLotMapsLocation (null|String): Sub-lot location fields when applicable.

Seller & flags

  • sellerSource (String): Seller source string (may be empty).
  • sellerInfo (Object): Seller metadata object (often empty {}).
  • isInsuranceSeller (Boolean): Insurance-seller indicator.
  • isLotOwner (Boolean): Lot owner flag for the viewing user context.
  • nonGoApSellerCompanyLot (String): Non–GO seller company marker when set.
  • isCopartWholesaleLot (Boolean): Wholesale lot flag.
  • isBuyTodayLot / buyTodayBid (Boolean|Number): Buy-It-Now style flags and amount.
  • isMakeAnOfferLot (Boolean): Make-an-offer eligibility.
  • gridRow (String): Yard grid / row locator for physical location.

VIN & registration

  • maskedVIN (String): Masked VIN for display.
  • vehicleRegistrationNumber (String): Masked or partial registration number.

Bidding & display

  • currentBid / displayBidAmount (Number): Current bid values shown to the user.
  • bidState (String): Bid state machine code (e.g. PRELIMBID).
  • bidStatus (String): User bid status (e.g. NEVERBID).
  • allowStartingBidAmount (Boolean): Whether starting bid rules apply as shown.
  • soldFlag (Boolean): Whether the lot is marked sold.

Icons, reports, misc

  • lotIconCodes (Array of strings): Feature / badge codes (e.g. certificate, inspection).
  • hasVehicleReport (Boolean): Vehicle report available flag.
  • buildSheetFlag (Boolean): Build sheet available flag.
  • showConditionReportV2 (Boolean): Condition report UI flag.
  • showJapanSaleDisclaimer (Boolean): Japan sale disclaimer flag.
  • enableUpdatedOffsiteLotPilot (Boolean): Feature pilot flag.
  • autoCheckFlag (Boolean): AutoCheck (or similar) flag.
  • goAppUser (String): GO app user field (often empty in exports).

Notes array

  • additionalNotes (Array of objects): Yard/auction notes.
    • NOTEDATE (String): Note date string.
    • ESQNBR (Number): Sequence / id number for the note.
    • NOTE (String): Note body text (often padded).

VIN enrichment fields

Present only when enrichVin is true. Copart masks the last six characters of the VIN on public lots (3KPF44AC0ME******); the visible 11-character prefix carries the manufacturer, model line, model year and assembly plant, which is all the decoder needs. Lots whose VIN is fully masked (*****************, common on UK/IE listings) get vinDecoded: false and no other vin* columns.

  • vinDecoded (Boolean): Whether the VIN resolved. false means the VIN was fully masked, too short, or the decoder was unreachable — the lot row itself is still complete.
  • vinWmi (String): World Manufacturer Identifier, the VIN's first three characters.
  • vinCountryOfOrigin (String): Country the vehicle was built in, derived from the WMI (e.g. Japan, Germany, South Korea, Mexico).
  • vinMake / vinManufacturer (String): e.g. KIA / KIA MEXICO S.A. DE C.V.
  • vinModel / vinSeries / vinTrim (String): Decoded model line, series and trim.
  • vinModelYear (String): Model year from the VIN's year code — useful as a cross-check against Copart's own lotYear.
  • vinBodyClass / vinVehicleType / vinDoors (String): e.g. Sedan/Saloon, PASSENGER CAR, 4.
  • vinEngineCylinders / vinDisplacementL / vinEngineHP (String): Engine block.
  • vinFuelType / vinTransmission / vinDriveType / vinGvwr (String): Drivetrain and rating.
  • vinPlantCountry / vinPlantCity / vinPlantCompanyName (String): Assembly plant, when the decoder resolves it.
  • vinErrorCode (String): Raw decoder status. 0 is a complete decode; 6 means "incomplete VIN", which is the normal, expected result for Copart's masked 11-character prefixes and does not indicate a problem.

Media & provenance (added by scraper)

  • lotImages (Array of strings): Full-resolution image URLs (*_ful.jpg style paths on Copart CDN).
  • thumbnail_image (String): Thumbnail taken from the first image row’s thumbnailUrl in the lot-details response (or that row’s url if thumbnailUrl is missing). Usually a *_thb.jpg URL on the Copart CDN when the API returns absolute URLs. searchResult.lot_thumbnail_image_path is the separate search-index path and may omit the scheme.
  • sourceUrl (String): The URL that produced this lot in the run — the search URL (including encoded searchCriteria when copied from the browser), or the single lot URL when one was supplied directly.
  • lotDetailsAvailable (Boolean): true for a full lot-details record. false on the rare hits where Copart's search index returns an offsite partner lot (NPA / Purple Wave, marked sale_platform_code: "NPAUSA" with an npa_url) — Copart's lot-details API does not serve those, so the row carries the search-index fields under searchResult instead of a blank record.

searchResult object (search index hit, snake_case)

These fields mirror the search payload for this lot before lot-details enrichment. Names stay in snake_case as in the API.

  • auction_host_name (String): Auction host / sale location name (e.g. yard name).
  • auction_host_id (Number): Numeric id for the auction host location.
  • buy_it_now_price (Number): Buy-it-now price from the search index (0 if none / not applicable).
  • currency_code (String): Currency for monetary fields in the search hit (e.g. GBP).
  • sealed_bid_flag (Boolean): Whether the search index marks the lot as sealed bid.
  • auction_date_utc (String, ISO 8601): Scheduled auction datetime from the search index (UTC).
  • auction_date_type (String): Auction date type code (e.g. F), same meaning as top-level auctionDateType.
  • auction_assignment_number (Number): Assignment / lane number from the search index (often mirrors auctionAssignmentNumber).
  • lot_desc (String): Short lot description line as indexed for search (mirrors lotDescription in plain language).
  • lot_number (Number): Copart lot number (same logical id as top-level lotNumber).
  • odometer_reading_received (Number): Odometer reading on the search document (mirrors top-level odometer when unchanged).
  • lot_thumbnail_image_path (String): Thumbnail path or URL fragment from search (may omit scheme; compare with thumbnail_image).
  • yard_name (String): Yard name from the search index.
  • yard_number (Number): Yard number from the search index.
  • title_desc (String): Title / damage category description as indexed (mirrors titleDescription / category wording).
  • lot_icon_codes (Array of strings): Badge / icon codes on the search hit (same codes as lotIconCodes, different naming convention).
  • purple_wave_url (String): Purple Wave (or related) URL when present; empty string if none.
  • show_updated_offsite_lot_text (Boolean): UI flag from search for offsite lot messaging.
  • hide_odometer (Boolean): When true, the product UI would hide odometer; false means odometer is shown.
  • full_vin (String): VIN field from search (typically masked the same way as maskedVIN on the detail payload).

Explore more scrapers

If you find this actor useful, see more tools on memo23's Apify profile.

Support

Additional services


🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/copart-scraper).

Purpose: Extract Copart vehicle auction lot detail across 8 markets (US/CA/UK/IE/DE/ES/FI/MEA) — one flattened row per lot with specs, damage, VIN, odometer, yard, auction dates, bids and images, from lotSearchResults URLs or in-actor filters.

Minimal input (URL mode):

{
"startUrls": ["https://www.copart.co.uk/lotSearchResults?searchCriteria=%7B%22query%22%3A%5B%22*%22%5D%2C%22filter%22%3A%7B%7D%7D"],
"maxItems": 50,
"maxConcurrency": 10,
"minConcurrency": 1,
"maxRequestRetries": 60,
"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Filter mode (leave startUrls empty): set "site": "de" and either "searchAllVehicles": true or narrowing filters make, model, yearMin/yearMax, odometerMin/odometerMax, featuredChips (e.g. ["buyItNow","highValueItems"]), extraFetiClauses.

Output: one flattened dataset row per lot — lotNumber, lotDescription, lotYear, lotMakeDesc, lotModelDesc, bodyStyle, color, fuel, odometer, primaryDamage, secDamage, estRetailValue, repairEst, titleDescription, currencyCode, saleDate, currentBid, siteCode, lotCountry, yardName, yardZipCode, latitude, longitude, maskedVIN, lotImages, thumbnail_image, sourceUrl, searchResult (snake_case search-index hit), additionalNotes.

Behaviors an agent should know:

  • When startUrls is non-empty it wins — the whole filter section (site, make, model, etc.) is ignored for that run.
  • The country/currency is auto-detected from each URL host, so US/CA/UK/IE/DE/ES/FI/MEA links can be mixed in one run; all markets share one output schema.
  • Always set maxItems (default 1000). Search pages are followed until the cap or no more results.
  • Use a residential proxy for the member-API traffic (apifyProxyGroups: ["RESIDENTIAL"]); datacenter proxies are frequently blocked.
  • featuredChips only fully supports vehiclesForAuction, buyItNow, highValueItems, hotItems; other chip IDs are accepted but skipped with a warning until mapped in code.
  • Billing: Pay-per-event billing — see the Pricing tab on the actor page.

⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Copart, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available Copart lot search and lot-detail data — no authenticated member-account features or content behind the Copart login wall are used to place bids or transact. Users are responsible for ensuring their use complies with Copart's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.


SEO Keywords

copart scraper, scrape copart, copart API, copart auction scraper, Apify copart, salvage vehicle scraper, car auction data scraper, used car listings scraper, vehicle lot data extraction, copart uk scraper, copart germany scraper, copart canada scraper, copart spain scraper, copart ireland scraper, copart finland scraper, copart middle east scraper, copart usa scraper, copart.co.uk scraper, copart.de scraper, copart.ca scraper, copartmea scraper, salvage car market research, vin decoder scraper, vin odometer data, auction pricing analysis, vehicle inventory monitoring, salvage auction monitor, copart webhook alerts, damaged car data, automotive auction intelligence, copart lot search export, copart damage filter, copart yard search