Skip to content
    ↑↓ to choose · Enter to open

    · 13 min read

    Copart Public Search Scraper: 39 Data Fields per Record (2026)

    By CrawlerBros Engineering Team

    Copart Public Search Scraper extracts 35 to 39 fields from each vehicle record, including the lot number, VIN, and auction date. On Apify's free plan, up to 1,000 results are available monthly, costing $5.00 in result charges. It processes any Copart search URL, returning details on vehicles filtered by criteria like make, model, damage type, and location. This tool is built for auto dealers, salvage buyers, and claims adjusters who need structured inventory data for market research. It is not for users who require unmasked, complete seventeen-digit VINs, as Copart permanently masks the final six characters in public search results.

    Try it: open Copart Public Search Scraper on Apify, sign in on the free plan and run the prefilled example.

    Can you try Copart Public Search Scraper before paying?

    Yes. Apify's free plan includes $5.00 of prepaid usage every month and asks for no credit card. At $0.005 per result, that covers up to 1,000 results of Copart Public Search Scraper a month, before run-start charges and platform usage.

    The example request further down caps maxItems at 100, so a first run returns at most 100 results and costs at most $0.50 in result charges. That is enough to see the real shape of the data before deciding anything.

    Copart Public Search Scraper was last updated on 2026-07-05. It is one of 1,725 Actors CrawlerBros publishes on Apify, which together have 680,173 lifetime public runs and an average rating of 4.63 out of 5 across 416 reviews.

    What does it cost to run Copart Public Search Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    Your bill is determined by the number of vehicle records written to the dataset. The maxItems parameter directly controls this, so it is the primary cost driver. To test your integration without incurring significant charges, set maxItems to a small limit like 10 results for initial runs, which will cost at most $0.05 in result charges on the free plan.

    How do you run Copart Public Search Scraper from the API?

    The schema marks 1 of its 2 controls as required: startUrl. Every value in the payload below comes from the published schema's own prefills, which means you can paste it, swap the token, and get a real result.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~copart-public-search-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"startUrl":"https://www.copart.com/lotSearchResults/?free=true&query=BMW","maxItems":100}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "startUrl": "https://www.copart.com/lotSearchResults/?free=True&query=BMW",
      "maxItems": 100
    }
    
    run = client.actor("crawlerbros~copart-public-search-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "startUrl": "https://www.copart.com/lotSearchResults/?free=true&query=BMW",
      "maxItems": 100
    }
    
    const run = await client.actor('crawlerbros~copart-public-search-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    That endpoint blocks until the run completes. Fine while you are testing a handful of records, risky once a run takes minutes: a dropped connection loses the response even though the run itself finished. Switch to an asynchronous start with polling or a webhook before you schedule anything.

    Which Copart Public Search Scraper inputs matter, and which can you skip?

    The scraper requires a startUrl, which you obtain by running a search on copart.com and copying the URL from your browser's address bar. The optional maxItems parameter controls the maximum number of vehicle records returned. For a first run, most users should set maxItems to a small number to validate the output before scaling up.

    • startUrl (string): A Copart search results URL (e.g. https://www.copart.com/lotSearchResults/?free=true&query=BMW) or a single lot URL (e.g. https://www.copart.com/lot/12345678). Navigate to copart.com, apply your desired filters, and paste the URL here. Default: "https://www.copart.com/lotSearchResults/?free=true&query=BMW".
    • maxItems (integer): Maximum number of vehicle records to return. Set to a large number to get all results. Default: 100.

    What does Copart Public Search Scraper return?

    The output records contain essential auction details such as lot number, masked VIN, year, make, model, current bid, ACV, and estimated retail value, alongside image URLs. This data is suitable for comparative analysis and tracking vehicle inventory. However, it does not include the full, unmasked VIN or any buyer contact information.

    • lot_number: Unique Copart lot ID - 99714325
    • vin: Vehicle Identification Number (partial) - WBAVL1C50FV******
    • year: Model year - 2015
    • make: Manufacturer - BMW
    • model: Model - X1
    • trim: Trim / sub-model - XDRIVE28I
    • color: Exterior color - WHITE
    • engine: Engine description - 2.0L 4
    • cylinders: Number of cylinders - 4
    • fuel_type: Fuel type - GAS, ELECTRIC, DIESEL
    • transmission: Transmission type - AUTOMATIC, MANUAL
    • drive: Drive type - ALL WHEEL DRIVE, FWD, RWD
    • keys: Keys available - YES, NO
    • odometer: Odometer reading - 69676
    • odometer_unit: Unit of measurement - MI, EXEMPT
    • odometer_reading_type: Reading type - ACTUAL, NOT ACTUAL
    • primary_damage: Primary damage type - FRONT END, REAR END
    • secondary_damage: Secondary damage type - SIDE
    • title_group_code: Title group code - TITLEGROUP_S, TITLEGROUP_C
    • title_group: Title group description - SALVAGE TITLE, CLEAN TITLE
    • title_description: Full title document name - CERTIFICATE OF SALVAGE
    • title_state: State that issued the title - PA, FL
    • lot_condition: Vehicle condition category - RUNS AND DRIVES, ENHANCED VEHICLES
    • sale_status: Auction status - MINIMUM_BID, PURE_SALE
    • bid_status: Current bid status - NEVER_BID
    • current_bid: Current highest bid (USD) - 475.00
    • buy_it_now_price: Buy It Now price (USD) - 2500.00
    • acv: Actual Cash Value / ACV - 9123.00
    • estimated_retail_value: Estimated retail value (USD) - 10065.00
    • auction_date: Auction date/time (ISO 8601 UTC) - 2026-05-06T14:00:00+00:00
    • sale_location: Copart yard name - PA - PITTSBURGH SOUTH
    • sale_yard_number: Yard number - 85
    • state: US state code - PA
    • country: Country - USA
    • item_url: Direct link to lot on copart.com - https://www.copart.com/lot/99714325
    • imageUrl: Primary thumbnail URL - https://cs.copart.com/...
    • images: Full-size image URL(s) - ["https://cs.copart.com/..."]
    • images_high_res: High-resolution image URL(s) - ["https://cs.copart.com/..."]
    • scraped_at: Scrape timestamp (ISO 8601) - 2026-05-06T13:09:31Z

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open Copart Public Search Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Navigate to copart.com inside your browser and build your inventory query by filtering for specific makes, locations, or damage types.
    2. Copy the complete URL from your browser address bar, ensuring it begins with the expected Copart domain pattern.
    3. Paste the Copart search URL directly into the startUrl input control of the scraper.
    4. Set the maxItems parameter to a low value like 10 to perform a fast, cheap structure validation run.
    5. Verify that the resulting dataset contains records with populated lot_number, vin, and acv fields.
    6. Increase the maxItems constraint to your target list volume once you confirm the data format matches your schema.

    How do you apply it? Three worked playbooks

    These are Copart Public Search Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Insurance & claims research

    Outcome: Look up salvage vehicles by VIN prefix or damage type to assess repair costs and market values

    Configure: Set startUrl to a Copart search URL filtered by a specific damage category like "FRONT END" and set maxItems to 500.

    Working method: Begin by executing a targeted search on copart.com for the specific damage type. Extract the matching listings, parse out the masked vin values to identify corresponding manufacturing series, and compare the estimated_retail_value against the acv to estimate loss ratios.

    Deliverable: A spreadsheet containing lot numbers, partial VINs, damage classifications, actual cash values, and estimated retail values.

    Stop condition: The scrape completes but the returned dataset has empty acv values for more than half of the vehicle listings.

    Use case 2: Auto dealer sourcing

    Outcome: Find wholesale and rebuilder-eligible vehicles across all US Copart yards

    Configure: Set startUrl to a Copart URL filtered for "clean titles", set maxItems to 1000, and ensure the yard location filters are set.

    Working method: Set up a search query for salvage or clean titles within a designated state or local yard. Run the scraper to pull available lots, filter the results programmatically for keys being "YES", and prioritize vehicles with "RUNS AND DRIVES" listed in the lot_condition field.

    Deliverable: A structured list of clean or salvage title vehicles that run and drive, complete with high-resolution image URLs and current bidding thresholds.

    Stop condition: The scraper returns zero results for a known active yard location, indicating a possible change in the Copart yard numbering schema.

    Use case 3: Pricing analysis

    Outcome: Track bid trends, ACV vs. retail values, and current bid data for market research

    Configure: Set startUrl to a broad make-and-model search URL on Copart and set maxItems to 5000.

    Working method: Execute the scraper daily against a consistent set of model searches. Match the historical lot_number values over time to calculate the rate of change in the current_bid field prior to the final scheduled auction_date.

    Deliverable: A chronological database tracking daily bid increments, active valuations, and ultimate sale statuses for specific vehicle makes.

    Stop condition: The auction_date timestamps returned in the dataset do not parse correctly as standard ISO 8601 UTC strings.

    What breaks, and how do you design around it?

    Copart's public search results inherently include partially masked VINs, preventing the recovery of the full seventeen-digit VIN. If your data requirement approaches the 125,000+ live listings available, consider optimizing your startUrl to narrow the scope of each run. For example, you could filter by region and execute multiple runs with distinct startUrl values.

    When should you not use Copart Public Search Scraper?

    Do not use this scraper if your workflow strictly requires fully unmasked VINs for official vehicle history reports, as Copart's public site consistently masks the last six characters. If your primary need is to source inventory from alternative salvage auction platforms, the IAAI Salvage Vehicle Auctions Scraper is a more appropriate tool. For classic or collector cars sold through classifieds rather than auctions, the ClassicCars.com Scraper offers a direct solution. Additionally, if you are focused on finding parts by locating donor vehicles in self-service junkyards across North America, the Row52 Junkyard & Salvage Yard Parts Scraper is better suited to that specific task.

    What should you check before trusting the output?

    • Verify that the lot_number field is present and populated with a numeric string for every single record in the dataset.
    • Check that the country field equals USA or other expected regional codes to ensure the startUrl did not redirect globally.
    • Ensure the vin field is always exactly seventeen characters long, ending with six asterisks due to public search masking.
    • Monitor the current_bid field; raise an alert if multiple consecutive runs return null values for this field across active auctions.
    • Track the odometer field to ensure the reading values are stored as integers rather than raw string structures.

    None of this proves a record is correct. It gives a scheduled Copart Public Search Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    Can I obtain the full, unmasked VIN using this scraper?

    No. Copart's public search index masks the last six characters of all VINs by default. Because this scraper processes public listings, the vin field will always contain asterisks for those final characters. If your workflow requires the full seventeen-digit VIN, you must log in as a registered Copart member and search manually.

    How much does it cost to extract 10,000 Copart listings?

    On Apify's free plan, results cost $5.00 per 1,000 results. Extracting 10,000 vehicle records will cost $50.00 in result charges. Please note that Apify also bills platform usage for memory and compute seconds on top of these result charges, so your total run cost will be slightly higher.

    How do I scrape auction listings for a specific salvage yard?

    Go to copart.com and use their search filters to select your desired yard or state, then copy the URL from your browser's address bar. Paste that URL as the startUrl parameter in the scraper. Any URL you can create by browsing copart.com and applying filters works as the startUrl.

    What happens if a Copart vehicle listing does not have images?

    If a vehicle lot has no photos uploaded, the imageUrl, images, and images_high_res fields will simply not be included in that record's output. Only fields with actual data are present in the final dataset.

    What Copart search filters are supported by this scraper?

    Any URL generated by browsing copart.com and applying filters works as the startUrl. This includes filters for make/model, damage type, title type, location/state, and year range. The scraper's startUrl parameter processes the search conditions directly from the URL provided.

    Where to go next

    When you are ready to run it, open Copart Public Search Scraper on Apify; the free plan covers up to 1,000 results a month.

    Other Actors we maintain for related data:

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-27.

    • Actor last updated by its maintainers on 2026-07-05.

    • Run outcome figures cover the 30 day public window ending 2026-09-27.

    • Copart Public Search Scraper on Apify

    Featured actors

    Copart Public Search Scraper

    Scrape Copart vehicle auction listings with search by keyword, make, model, damage type, location, and more. Extracts lot number, VIN, year, make, model, damage, odometer, bids, images, title codes, and auction dates.

    Run on Apify ↗