# Copart Public Search Scraper — Auction Lots (`muhammadafzal/copart-public-search-scraper`) Actor

Scrape public Copart search and lot pages for auction vehicles, bids, damage, values, locations, and images. Built for inventory research and automation.

- **URL**: https://apify.com/muhammadafzal/copart-public-search-scraper.md
- **Developed by:** [Muhammad Afzal](https://apify.com/muhammadafzal) (community)
- **Categories:** Automation, E-commerce, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $16.00 / 1,000 auction lot scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Copart Public Search Scraper

Scrape publicly available Copart search-result and lot pages into clean, structured auction-vehicle records. It is intended for auction inventory research, sourcing, price comparison, and workflow automation—not for logging in, bidding, payment, watchlists, or accessing non-public data.

### What it returns

Each dataset item represents one unique public lot. The actor returns `lotNumber`, `lotUrl`, vehicle year/make/model, VIN when publicly shown, current bid, estimated retail value, damage, sale date, location, image URLs, the source search URL, and an ISO 8601 collection timestamp. Optional values are returned as `null` so the shape is stable for API and AI-agent workflows.

### When to use it

Use it when you have a public Copart search URL with filters already selected, or a direct public lot URL. For example, paste a URL from a Copart search after filtering for year, make, damage, sale location, or vehicle condition. The actor preserves the public page you provide and deduplicates lots by lot number.

Do not use it for Copart login, member, payment, bidding, saved-search, watchlist, or other authenticated URLs. It does not provide account access, bypass access controls, or take auction actions.

### Input

`startUrls` accepts one or more public URLs. The default is a public search page so the Apify health check has a safe, valid input. `maxResults` caps results from 1 to 200, including the billable maximum. `maxRequestRetries` controls temporary-failure retries and is deliberately capped at three.

Example input:

```json
{
  "startUrls": [{ "url": "https://www.copart.com/vehicle-search-featured/vehicleFinder" }],
  "maxResults": 25,
  "maxRequestRetries": 2
}
```

### Output example

```json
{
  "lotNumber": "99714325",
  "lotUrl": "https://www.copart.com/lot/99714325",
  "year": 2019,
  "make": "TOYOTA",
  "model": "CAMRY",
  "vin": null,
  "currentBid": 4250,
  "estimatedRetailValue": 12450,
  "primaryDamage": "FRONT END",
  "saleDate": null,
  "location": "PA - PITTSBURGH SOUTH",
  "imageUrls": [],
  "searchUrl": "https://www.copart.com/vehicle-search-featured/vehicleFinder",
  "scrapedAt": "2026-07-22T12:00:00.000Z"
}
```

### Pricing

The actor charges $0.00005 per run start and $0.016 per unique lot written to the dataset. A 25-lot run is capped at $0.40005 before Apify platform compute and proxy usage. The actor logs the maximum cost before collecting data and records the final charged amount in `SUMMARY`.

### Reliability and limits

Copart can change public-page structure or temporarily limit automated traffic. The actor uses conservative retries, keeps valid no-results searches successful, and reports all-request public-access failures honestly instead of silently producing an empty dataset. Partial data is preserved when individual lot enrichment cannot complete. For repeat research workloads, use reasonable result limits and respect Copart's terms and applicable law.

### API and AI-agent use

This actor has a narrow input contract and a stable flat output shape for Apify API and MCP users. Use it for public auction-inventory research. Do not use it as a vehicle-history, private-account, bidding, or title-verification tool.

### Compliance

You are responsible for confirming that your collection and use of public data comply with Copart terms, applicable law, and your own authorization. Do not submit credentials or attempt to use this actor to access non-public content.

# Actor input Schema

## `startUrls` (type: `array`):

Use this when you already have public Copart search-result or individual lot URLs. Enter full URLs such as 'https://www.copart.com/vehicle-search-featured/vehicleFinder' or 'https://www.copart.com/lot/12345678'. Defaults to a public search page. This is not for login, account, watchlist, or bidding URLs.

## `maxResults` (type: `integer`):

Use this to cap unique auction-lot records and the associated pay-per-event cost. Enter an integer from 1 to 200, for example 25. Defaults to 25. This is not a page count; duplicate lot numbers are never counted twice.

## `maxRequestRetries` (type: `integer`):

Use this to control retries for temporary public-page failures such as a 429 or 5xx response. Enter 0 through 3; the default is 2. Lower values finish sooner, while higher values tolerate transient outages. This is not a setting to bypass access controls.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.copart.com/vehicle-search-featured/vehicleFinder"
    }
  ],
  "maxResults": 25,
  "maxRequestRetries": 2
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.copart.com/vehicle-search-featured/vehicleFinder"
        }
    ],
    "maxResults": 25,
    "maxRequestRetries": 2
};

// Run the Actor and wait for it to finish
const run = await client.actor("muhammadafzal/copart-public-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://www.copart.com/vehicle-search-featured/vehicleFinder" }],
    "maxResults": 25,
    "maxRequestRetries": 2,
}

# Run the Actor and wait for it to finish
run = client.actor("muhammadafzal/copart-public-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.copart.com/vehicle-search-featured/vehicleFinder"
    }
  ],
  "maxResults": 25,
  "maxRequestRetries": 2
}' |
apify call muhammadafzal/copart-public-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=muhammadafzal/copart-public-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/fTLNJ3SbOaGeQQpbj/builds/icoIQlNXtJqowYHOh/openapi.json
