Copart & IAAI Scraper: Lots, VIN, Landed Cost avatar

Copart & IAAI Scraper: Lots, VIN, Landed Cost

Pricing

from $1.40 / 1,000 auction lots

Go to Apify Store
Copart & IAAI Scraper: Lots, VIN, Landed Cost

Copart & IAAI Scraper: Lots, VIN, Landed Cost

Copart and IAAI scraper for salvage auction lots in one schema: photos, damage, odometer, bids, sale dates, NHTSA VIN decode and a landed-cost estimate for Ukraine, Poland, Lithuania, Germany. Bid alerts. Pay per lot from $0.002.

Pricing

from $1.40 / 1,000 auction lots

Rating

0.0

(0)

Developer

Andrew Boiko

Andrew Boiko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Copart & IAAI Salvage Auction Scraper

Copart & IAAI Salvage Auction Scraper gives importers and brokers one clean dataset from both US salvage auctions, with NHTSA VIN decoding and a landed-cost estimate for Ukraine, Poland, Lithuania and Germany. Search by make, model or VIN, set a target bid and get alert rows when a lot drops to it. Run it on a schedule, export to CSV, JSON or Excel, or call it from your own tools through the Apify API and MCP. Pay per lot from $2 per 1,000.

What does Copart & IAAI Salvage Auction Scraper do?

The Actor reads public lot data and returns one record per lot in the same schema for both auctions:

  • Lot data: lot number, link, year, make, model, damage (primary and secondary), odometer, title type, keys, fuel, engine, transmission, drive, color, yard location, sale date, current bid, buy-now price, estimated retail value, photos.
  • VIN decode: every full 17-character VIN is decoded with the free official NHTSA vPIC API (model year, body class, engine displacement, cylinders, fuel, plant country). Masked VINs (with asterisks) are left as they are and never guessed.
  • Landed-cost estimate: hammer price plus auction fees, US inland freight, sea freight, customs duty, excise, VAT and port/broker costs for Ukraine (UA), Poland (PL), Lithuania (LT) or Germany (DE). Every table is an input you can edit, and every number is named as an estimate.
  • Bid alerts: set one target bid for the whole run, or a watchlist of lots with their own targets. When the current bid is at or below the target the Actor adds an extra alert row, once per lot across scheduled runs.
  • Search sharding: Copart search pages return at most 100 lots. When a search has more matches, the Actor splits it by model year to reach more of them.

It does not log in, does not place bids and does not use any account. Copart is read through its public JSON endpoints. IAAI is a best-effort source: if IAAI changes its pages or blocks the request, you get a clear warning in the run summary and the Copart results still arrive.

Why use Copart & IAAI Salvage Auction Scraper?

  1. Both auctions in one schema, plus VIN and logistics. Existing Copart scrapers on the Store return Copart lots only, or IAAI lot details only, and none of them adds a landed-cost estimate. Here Copart, IAAI, VIN decode and the cost to your border share one output.
  2. Cheap. Lots start at $0.002 ($2 per 1,000) and a lot with VIN decode and landed cost is $0.005 ($5 per 1,000). Popular Copart scrapers on the Store charge several times more per thousand lots.
  3. Built for importers. Rates for UA, PL, LT and DE are editable tables, so you can match your own broker agreement, and a target-bid alert tells you when a lot is worth a look without watching the site all day.

How much does it cost to scrape Copart?

You pay per result (pay per event). There is no monthly rental. Prices per single event, by Apify plan:

EventWhat is billedFREEBRONZESILVERGOLD
lotOne lot without landed cost$0.002$0.0018$0.0016$0.0014
lot-landedOne lot with VIN decode and landed-cost estimate$0.005$0.0045$0.004$0.0035
alertOne alert row (bid at or below your target)$0.01$0.009$0.008$0.007

Examples at the FREE price: 1,000 lots without landed cost = $2. 1,000 lots with VIN and landed cost = $5. If 20 of those lots trigger an alert, add $0.20.

A lot is billed as lot-landed only when a landed-cost estimate was actually computed. If a lot has no bid and you set no assumed bid, it is billed as lot. Duplicates, errors and empty results are never billed.

Apify plans without a paid subscription are capped at 25 results per run, after which the Actor stops with a normal exit and the message "Free tier limit reached (25 results). Upgrade to a paid Apify plan for unlimited results." To limit spend on paid plans, set "Max results" or use the Apify "Maximum cost per run" setting (maxTotalChargeUsd). The Actor stops cleanly when that limit is reached. If a datacenter proxy is blocked and the residential fallback is used, residential proxy traffic is billed by Apify separately.

Input

FieldTypeMeaning
sourcesarraycopart, iaai (default both)
searchQueriesarrayFree-text searches: toyota camry, bmw, a full VIN
lotNumbersarrayCopart lot numbers to fetch in full detail
lotUrlsarrayCopart or IAAI lot page URLs
yearFrom, yearTointegerModel year range
maxOdometerintegerSkip lots above this many miles (lots with unknown odometer are kept)
maxItemsintegerMax billed results per run (default 10; 25 on free plans)
shardByYearbooleanSplit big Copart searches by model year (default true)
decodeVinbooleanNHTSA VIN decode (default true)
includeLandedCostbooleanLanded-cost estimate, billed as lot-landed (default true)
destinationCountrystringUA, PL, LT, DE
landedCostobjectOverrides for the estimate tables, see below
targetBidUsdintegerAlert when current bid is at or below this value
watchlistarrayLots with own targets: {"lotNumber": "56789012", "targetBidUsd": 2500}
alertOncePerLotbooleanRemember alerted lots between runs (default true)
proxyConfigurationobjectApify Proxy settings, datacenter first
useResidentialFallbackbooleanRetry via residential proxy if blocked (default true)

Searches, lot numbers, lot URLs and the watchlist can be combined in one run.

Landed-cost tables (all values are estimates)

The landedCost object is merged over the built-in defaults. Keys you leave out keep their default. Arrays (auctionFeeTable, exciseRules) replace the default when given.

KeyMeaning
usdPerEurExchange rate used for EUR-based excise (default 1.08)
assumedBidUsdBid to use when a lot has no current bid (default none: landed cost is skipped)
auctionFeeTableList of {upToUsd, feeUsd} buyer-fee brackets
pctAboveFee as a share of the bid above the last bracket
fixedAuctionFeesUsdGate, virtual bid and environmental fees
inlandFreightUsdUS yard to port
seaFreightUsdPer destination: {"UA": 2200, "PL": 1700, "LT": 1600, "DE": 1500}
portAndBrokerUsdPer destination port, clearance and broker costs
ratesPer destination: dutyRate, vatRate, exciseRules

The default values are rough placeholders for planning, not quotes. Excise rules in the defaults follow the common Ukrainian per-1,000-cc model with an age factor and the Polish percentage-by-engine-size model, but laws change and special cases (EVs, hybrids, registration taxes, exemptions) are not modelled. Replace the numbers with the ones from your broker or customs agent before making a bidding decision. If a lot's engine size is unknown, excise is left out and the record says so in landedCost.assumptions.

{
"sources": ["copart", "iaai"],
"searchQueries": ["toyota camry"],
"maxItems": 10,
"destinationCountry": "UA"
}

Example 2: import candidates for Poland with custom freight

{
"sources": ["copart"],
"searchQueries": ["bmw x5", "audi q5"],
"yearFrom": 2018,
"maxOdometer": 90000,
"maxItems": 200,
"destinationCountry": "PL",
"landedCost": { "seaFreightUsd": { "PL": 1450 }, "portAndBrokerUsd": { "PL": 380 } }
}

Example 3: bid alerts on a schedule

{
"sources": ["copart"],
"searchQueries": ["honda civic"],
"targetBidUsd": 2500,
"watchlist": [{ "lotNumber": "56789012", "targetBidUsd": 1800 }],
"includeLandedCost": false,
"maxItems": 50
}

Run this with an Apify schedule (for example every 3 hours) and send the dataset to Telegram, Slack or email through a webhook or an integration.

Output example

Illustrative record (values are an example of the shape, not a real lot). Fields that the source does not provide are null.

{
"recordType": "lot",
"source": "copart",
"lotNumber": "56789012",
"url": "https://www.copart.com/lot/56789012",
"vin": "4T1B11HK5KU123456",
"vinMasked": false,
"year": 2019,
"make": "TOYOTA",
"model": "CAMRY SE",
"damagePrimary": "FRONT END",
"damageSecondary": "MINOR DENT/SCRATCHES",
"odometer": 41000,
"odometerUnit": "mi",
"titleType": "SALVAGE",
"fuel": "GAS",
"location": "CA - SACRAMENTO",
"auctionDate": "2026-11-03T17:00:00.000Z",
"currentBidUsd": 3200,
"estimatedRetailValueUsd": 18000,
"images": ["https://cs.copart.com/..."],
"vinDecoded": { "make": "TOYOTA", "model": "Camry", "bodyClass": "Sedan/Saloon", "displacementCc": 2487, "engineCylinders": 4, "plantCountry": "UNITED STATES (USA)" },
"landedCostEstimateUsd": 10120.55,
"landedCost": {
"destination": "UA", "isEstimate": true, "bidUsdUsed": 3200,
"auctionFeesEstimateUsd": 630, "inlandFreightEstimateUsd": 450, "seaFreightEstimateUsd": 2200,
"customsValueEstimateUsd": 6480, "dutyEstimateUsd": 648, "exciseEstimateUsd": 805.79,
"vatEstimateUsd": 1586.76, "portAndBrokerEstimateUsd": 600,
"assumptions": ["All rates and freight values are editable ESTIMATES, not a customs or broker quote."]
},
"targetBidUsd": 3500,
"alertTriggered": true,
"scrapedAt": "2026-10-19T12:00:00.000Z"
}

An alert row (recordType: "alert") carries the lot number, link, vehicle, current bid, target bid and a short message. The run also writes an OUTPUT record with counts, charged events, an estimated charge total and any warnings per source.

How to use Copart & IAAI Salvage Auction Scraper (tutorial)

  1. Open the Actor on Apify and click Try for free.
  2. Under Search queries enter what you want, for example toyota camry or a full VIN. Choose the sources and a destination country.
  3. Set Max results (start with 10) and, if you want alerts, a target bid.
  4. Click Start. A small run finishes in about a minute. Open the Output tab to see the table view with current bid, sale date and landed-cost estimate.
  5. Export as CSV, Excel or JSON, or save the input as a Task and schedule it. Check the OUTPUT record for warnings, for example if one source was blocked.

Run via API

Replace YOUR_APIFY_TOKEN with your token. The Actor id is tiger19935~copart-iaai-scraper.

curl -X POST "https://api.apify.com/v2/acts/tiger19935~copart-iaai-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"sources":["copart"],"searchQueries":["toyota camry"],"maxItems":10,"destinationCountry":"UA"}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('tiger19935/copart-iaai-scraper').call({
sources: ['copart'],
searchQueries: ['bmw x5'],
yearFrom: 2018,
maxItems: 50,
destinationCountry: 'PL',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0]?.landedCostEstimateUsd);

The input uses plain arrays and simple fields, so AI agents can call the Actor through the Apify MCP server (https://mcp.apify.com) with the same JSON.

Integrations

  • n8n and Make: use the Apify nodes or the HTTP module, run the Actor and read the dataset.
  • Zapier: trigger on a finished run and add each lot to your CRM or a message.
  • Google Sheets: send the dataset to a sheet to keep a lot tracker with landed cost.
  • Webhooks: Apify webhooks call your URL when a run finishes, handy for Telegram or Slack alert bots.
  • MCP: connect the Actor to Claude or other agents through the Apify MCP server.

The Actor reads only information that is publicly visible without logging in. It does not bid, buy, log in or bypass account restrictions. Auction sites have terms of use, and some restrict automated access. You are responsible for using the data in line with those terms and with the law that applies to you, including consumer and data protection rules (for example GDPR if you combine lot data with personal data). Do not republish photos or listings in ways the source forbids. Landed-cost output is an estimate and not tax, customs or legal advice.

FAQ and support

Does it need a Copart account? No. It reads public lot data only. Bids and Buy It Now actions are not performed.

How is landed cost calculated? Hammer price plus auction fees, US inland freight, sea freight, customs duty, excise and VAT for the destination country, plus port and broker costs. All rates are editable inputs, so you can match your own broker agreement. The defaults are estimates.

How many lots per search? Copart search pages are capped at 100 results, so the Actor shards by model year when a search has more matches. Narrow searches (make and model plus year range) give the most complete results.

Why did a source return a warning and no lots? Auction sites change their pages and sometimes block automated requests. The Actor never crashes on this: the failing source is reported under warnings in the OUTPUT record and the other source continues. Try enabling the residential fallback, narrower queries or fewer results, or open an issue.

Why is the VIN masked or missing? Auctions often hide the full VIN until you are a registered buyer. Masked VINs are returned as they are and are not decoded or guessed.

Is IAAI as complete as Copart? IAAI is supported on a best-effort basis through its public pages. Lot URLs in lotUrls are the most reliable way to read IAAI lots.

Can I get the data in Excel or CSV? Yes. Export any dataset from the Output tab as CSV, Excel, JSON or XML.

Something is wrong or a field is missing. What now? Open an issue in the Issues tab with the run link. Replies come within 12 hours.

More tools by the same author

Copart scraper, IAAI scraper, Copart API, salvage auction data, Copart lots to CSV, Copart VIN decoder, car import Ukraine, Copart price tracker, insurance auto auction, Copart bid alert, IAAI lots, salvage car import calculator.