πŸš— Car Auction Lot Finder β€” Live Copart Salvage & Used Lots avatar

πŸš— Car Auction Lot Finder β€” Live Copart Salvage & Used Lots

Pricing

from $1.00 / 1,000 results

Go to Apify Store
πŸš— Car Auction Lot Finder β€” Live Copart Salvage & Used Lots

πŸš— Car Auction Lot Finder β€” Live Copart Salvage & Used Lots

Search live Copart auction lots by make/model, VIN, or lot number β€” full vehicle specs, odometer, title & damage status, current bid, estimated value, location, auction date, and a free best-effort VIN decode. No login, no proxy needed. Filter by year, odometer, US state, or distance from a ZIP.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Hitman studio

Hitman studio

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Live auction-lot data from Copart β€” full vehicle specs, odometer, title & damage status, current bid, estimated value, yard location, auction date β€” by make/model, VIN, or lot number. No login, no proxy needed (as tested). Optional filters for year, odometer, US state, or distance from a ZIP, plus a free, best-effort VIN decode.

Keywords: copart scraper, salvage car auction data, vehicle auction api, car auction lot finder, VIN decode, salvage title lookup, used car auction data, copart api.

🌟 Why this one

There are several Copart scrapers on Apify already. This one is built from a direct, confirmed-working read of Copart's own search API, with real differences:

  • No proxy needed β€” confirmed by direct testing: a plain outbound request, with just the anonymous session Copart's own homepage hands out, reaches the real search API successfully. Some competing Copart actors default to a residential proxy; this one doesn't need it, which keeps the cost down.
  • robots.txt-respecting by design β€” Copart's robots.txt disallows the /public/data/... path tree (which is where the detailed per-lot image gallery endpoint lives) but explicitly does not disallow the /public/lots/... search endpoint this Actor uses. It only calls the allowed path.
  • Free VIN confirmation β€” Copart masks part of every VIN on its public search results, but the unmasked prefix is still enough for a free NHTSA vPIC decode to confirm make/model/year/body class on most lots β€” a bonus cross-check this Actor runs automatically (optional, free, no key).
  • Real client-side filters, not a guess at Copart's internal filter codes: year range, max odometer, US state, and distance-from-ZIP (computed from each lot's own coordinates) β€” reliable because they're applied to real returned data, not a fragile reverse-engineered filter parameter.
  • Honest about rate limits: Copart can rate-limit (HTTP 429) or serve a bot-check page under heavy burst traffic. The Actor backs off and retries automatically, and a sustained failure comes back as one clear error row β€” never a silently empty result.

βš™οΈ How it works

  1. Gets an anonymous session from Copart's own homepage (the same session any visitor's browser gets β€” no login).
  2. Calls Copart's own public search API (the same one copart.com's search page calls) with your search term.
  3. If a ZIP code is set, resolves it to coordinates via a free, no-key lookup, then computes real distance to every lot using the lot's own coordinates β€” and sorts nearest-first.
  4. Applies your year / odometer / state filters to the real data returned.
  5. If VIN decode is on, batches every lot's VIN prefix through the free NHTSA vPIC database and attaches the confirmed make/model/year/body class.

πŸš€ Quick start

{ "searches": ["honda civic"], "maxResultsPerSearch": 20 }

Or via the API, once published:

curl "https://api.apify.com/v2/acts/car-auction-lot-finder/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searches": ["ford f150"], "yearMin": 2018, "maxOdometer": 100000}'

πŸ“₯ Input

FieldTypeDefaultDescription
searchesarray (required)β€”Make+model, lot number, or VIN/fragment β€” one per line
maxResultsPerSearchinteger20Max lots fetched per search, before filters (1–500)
yearMin / yearMaxintegerβ€”Keep only lots in this model-year range
maxOdometerintegerβ€”Keep only lots at or below this odometer reading
statesarrayβ€”Keep only lots in these 2-letter US state codes
zipCodestringβ€”Sort nearest-first and filter to radiusMiles of this ZIP
radiusMilesinteger100Only used when zipCode is set
decodeVinbooleantrueFree best-effort NHTSA VIN confirmation

⚠️ Filters apply after fetching: if you set a tight filter (e.g. yearMin: 2022 + a small state list), raise maxResultsPerSearch so there's enough raw data to filter from β€” a filter can't un-skip lots that were never fetched because the raw page was too small.

πŸ“€ Output

FieldDescription
lot_number, vin_masked, lot_urlIdentity + direct link to the lot on copart.com
year, make, model, trim_or_seriesVehicle identity
odometer, odometer_statusMileage + whether it's reported as actual/exempt/etc.
engine, cylinders, transmission, drive_type, fuel_typeMechanical specs
color, body_style, condition, has_keysCondition specs
primary_damage, title_description, title_groupDamage + title status
current_bid, estimated_value, sale_statusAuction status
city, state, zip, latitude, longitude, distance_milesYard location (+ distance, when zipCode is set)
auction_date, auction_time, timezoneWhen it's up for sale
seller, has_carfax, thumbnail_urlExtras
decoded_make, decoded_model, decoded_year, decoded_body_classFree NHTSA VIN confirmation (when decodeVin is on)
additional_raw_fieldsEvery other raw field Copart returns that isn't mapped above β€” nothing is thrown away
{
"record_type": "auction_lot",
"lot_number": 49566366,
"year": 2017,
"make": "HONDA",
"model": "CIVIC",
"odometer": 123018,
"primary_damage": "FRONT END",
"title_description": "CERTIFICATE OF TITLE",
"current_bid": 150.0,
"city": "Indianapolis",
"state": "IN",
"distance_miles": 41.5,
"decoded_make": "HONDA",
"decoded_model": "Civic",
"decoded_year": "2017",
"lot_url": "https://www.copart.com/lot/49566366/clean-title-2017-honda-civic-in-indianapolis"
}

A search that fails outright produces one record_type: "error" row with a real error message β€” never a silent empty result.

🎯 Use cases

  • Dealer / rebuilder sourcing β€” find salvage lots by make/model/year/mileage near you
  • Price research β€” track current bids and estimated values across a model
  • Parts sourcing β€” locate specific damaged vehicles for parts-out
  • Insurance / appraisal research β€” title and damage status at scale
  • Market monitoring β€” run on a schedule to catch new listings matching your criteria

πŸ”Œ Integration examples

Python (apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_TOKEN>")
run = client.actor("car-auction-lot-finder").call(
run_input={"searches": ["honda civic"], "zipCode": "90001", "radiusMiles": 200}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["year"], item["make"], item["model"], item["current_bid"])

JavaScript (apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_TOKEN>' });
const run = await client.actor('car-auction-lot-finder').call({
searches: ['ford f150'], yearMin: 2018, maxOdometer: 100000,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

πŸ“Š Performance & reliability

MetricValue (measured, not estimated)
Cost per run (1 search, 8 lots, VIN decode on)~$0.0014 (real cloud run, tracked via Apify REST API)
Proxy requiredNo β€” confirmed by direct testing, plain outbound request
Login / API key requiredNo
Data sourceCopart's own public search API (the one copart.com's search page calls)
robots.txt complianceOnly calls the explicitly-allowed /public/lots/... path, never the disallowed /public/data/... tree
VIN decodeFree NHTSA vPIC database, best-effort (VINs are partially masked by Copart)
Rate-limit handlingAutomatic backoff + retry on HTTP 429; a sustained block surfaces as one clear error row

❓ FAQ

Does this need a Copart login or API key? No β€” it calls the same public endpoint Copart's own search page calls, anonymously.

Is this affiliated with Copart? No. It's an independent tool reading the same public data Copart's own website serves to any visitor β€” not an official Copart product.

Why is the VIN only partially shown? Copart itself masks the last several characters of the VIN on public search results (a Copart policy, not something this Actor can change). The unmasked prefix is enough for a useful year/make/model/body-class confirmation via NHTSA, just not a full, authoritative decode.

Can I place bids with this? No. This Actor only reads public listing data β€” it doesn't bid, log in, or interact with your Copart account in any way.

What happens if Copart rate-limits or bot-checks the run? The Actor backs off and retries automatically. If you're running many searches, keep maxResultsPerSearch reasonable and avoid very high concurrency β€” that's the sweet spot for staying under the radar in normal use.

Found a bug or a search that fails unexpectedly? A failed row always includes a real error message β€” worth reporting through the Actor's Issues tab if it doesn't match a known limitation above.

βš–οΈ Notes

Reads only Copart's own public, already-listed auction data β€” no login, no bidding, no private account data.