# Copart Public Search Scraper (Pay-Per-Event) (`prodiger/copart-public-search-scraper`) Actor

Scrape Copart's public auction search results: lot numbers, VIN, year/make/model, current bid, buy-it-now, retail value, damage, odometer, sale date, location, photos. Pay-per-event pricing — only pay for the records you actually scrape.

- **URL**: https://apify.com/prodiger/copart-public-search-scraper.md
- **Developed by:** [Arnas](https://apify.com/prodiger) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

Scrape Copart public auction search results including lot numbers, VIN, year/make/model, current bid, buy-it-now price, retail value, damage, odometer, sale date, location, and photos.

### What does Copart Public Search Scraper do?

**Copart Public Search Scraper** extracts vehicle lot data from [Copart](https://www.copart.com) public auction search results. Paste any Copart search URL (`/lotSearchResults/?query=…`, `/lotsByMake/Audi`, etc.) or a single `/lot/<number>` URL and it returns one structured record per unique lot, including:

- **Vehicle:** lot number, VIN, year, make, model, trim, body style, engine, transmission, drive type, fuel type, color
- **Auction economics:** current bid, buy-it-now price, estimated retail value, computed `discountFromRetail`
- **Condition:** primary damage, secondary damage, run-and-drive status, odometer reading, odometer brand, title code, title state
- **Location:** sale location, city, state, ZIP, latitude/longitude, IANA timezone
- **Media:** thumbnail URL, `imageCount`
- **Provenance:** the `searchUrl` the lot came from, `scrapedAt` ISO timestamp, public `lotUrl`

Use it for **salvage market analysis**, **price tracking**, **vehicle sourcing**, **dealer arbitrage**, **insurance research**, **parts sourcing**, and **academic vehicle damage research** — without managing proxies, Imperva sessions, or DataTables-payload boilerplate yourself.

Run it once on demand or [schedule it](https://docs.apify.com/platform/schedules) to track auctions over time. Results download as **JSON, CSV, HTML, or Excel**, or stream live via the [Apify API](https://docs.apify.com/api/v2).

### Why use Copart Public Search Scraper?

- **~12.5% cheaper per record** than the reference Copart actor on Apify Store (`$0.014` per lot vs `$0.016`), with the same `$0` monthly fee.
- **Drop-in input compat** — `startUrl` + `maxItems` matches the reference actor's input shape so you can swap actors without re-wiring downstream code.
- **Pure HTTP** by default — hits Copart's public `vehicleFinder/search` and `lotdetails/solr/lotImages` JSON endpoints directly with a residential session. No headless browser is required on the hot path.
- **Run-level dedup** by `lotNumber` so overlapping searches never double-bill.
- **Output enrichments** the reference does not return: computed `discountFromRetail`, `imageCount`, `searchUrl` provenance, and ISO 8601 `scrapedAt`.
- **Imperva-aware** — built-in challenge detection rotates the residential session and retries instead of returning empty rows.

### How to use Copart Public Search Scraper

1. Click **Try for free** (or open the Actor from your Apify Console).
2. In **Start URL**, paste any Copart search URL — e.g. `https://www.copart.com/lotSearchResults/?free=true&query=audi`. Filters from the website (year, damage, location) are preserved.
3. Set **Max items** to the number of lots you want.
4. Click **Start**. The dataset will populate as lots are scraped.
5. Download as **JSON / CSV / Excel** or call the [Apify API](https://docs.apify.com/api/v2) to fetch the dataset programmatically.

### Input

The actor accepts a small input shape:

```json
{
    "startUrl": "https://www.copart.com/lotSearchResults/?free=true&query=audi",
    "maxItems": 100
}
````

#### Input fields

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `startUrl` | string (URL) | *required* | Copart search URL or single `/lot/<number>` URL. |
| `maxItems` | integer | `10` | Maximum number of unique lots to return. Free plan caps server-side; paid plans allow up to 1,000,000. |
| `maxRequestRetries` | integer | `5` | Retries on 403/429/503 from Imperva-class gateways. |
| `useBrowserBootstrap` | boolean | `false` | *Advanced.* When ON, the actor opens a short-lived Playwright session to seed cookies before switching back to HTTP. Enable only if you see persistent Imperva challenges. |
| `proxyConfiguration` | object | `{useApifyProxy: true, apifyProxyGroups: ["RESIDENTIAL"]}` | Apify proxy config. Residential is strongly recommended — datacenter IPs get challenged almost immediately. |

### Output

```json
{
    "lotNumber": "57234567",
    "vin": "WAUACDFK1KA000123",
    "year": 2019,
    "make": "AUDI",
    "model": "A4",
    "trim": "PREMIUM PLUS",
    "bodyStyle": "SEDAN 4D",
    "engineType": "2.0L 4",
    "transmission": "AUTOMATIC",
    "driveType": "Front-wheel Drive",
    "fuelType": "GAS",
    "color": "WHITE",
    "currentBid": 5500,
    "buyItNowPrice": 7900,
    "retailValue": 22500,
    "discountFromRetail": 75.6,
    "primaryDamage": "FRONT END",
    "secondaryDamage": "MINOR DENT/SCRATCHES",
    "runDriveStatus": "RUN AND DRIVE",
    "odometer": 78421,
    "odometerBrand": "ACTUAL",
    "titleCode": "CA",
    "titleState": "CA",
    "saleStatus": "FUTURE",
    "saleLocation": "CA - SAN BERNARDINO",
    "city": "SAN BERNARDINO",
    "state": "CA",
    "zip": "92408",
    "lat": 34.0788,
    "lon": -117.2898,
    "timeZone": "America/Los_Angeles",
    "saleDate": "2024-06-06T16:00:00.000Z",
    "thumbnail": "https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX236/c1bdcef8-…JPG",
    "imageCount": 12,
    "lotUrl": "https://www.copart.com/lot/57234567/",
    "searchUrl": "https://www.copart.com/lotSearchResults/?free=true&query=audi",
    "currency": "USD",
    "scrapedAt": "2026-05-29T20:42:14.317Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### Data fields

| Field | Type | Description |
|-------|------|-------------|
| `lotNumber` | string | Copart lot identifier (unique within a sale). |
| `vin` | string | null | Full vehicle identification number when present. |
| `year` | integer | null | Model year. |
| `make` | string | null | Manufacturer (AUDI, FORD, TESLA, …). |
| `model` | string | null | Model name. |
| `trim` | string | null | Trim level. |
| `bodyStyle` | string | null | e.g. SEDAN 4D, SUV 4D, CONVERTIBLE 2D. |
| `engineType` | string | null | Engine displacement + cylinder count. |
| `transmission` | string | null | AUTOMATIC / MANUAL / unknown. |
| `driveType` | string | null | FWD / RWD / AWD / 4WD. |
| `fuelType` | string | null | GAS / DIESEL / ELECTRIC / HYBRID. |
| `color` | string | null | Exterior color. |
| `currentBid` | number | null | Current high bid in USD. |
| `buyItNowPrice` | number | null | Buy-It-Now in USD when set. |
| `retailValue` | number | null | Copart's estimated retail value (ACV) in USD. |
| `discountFromRetail` | number | null | `(retailValue − currentBid) / retailValue × 100`, rounded to one decimal. |
| `primaryDamage` | string | null | Primary damage code (FRONT END, REAR END, etc.). |
| `secondaryDamage` | string | null | Secondary damage code when present. |
| `runDriveStatus` | string | null | RUN AND DRIVE / STARTS / engine status. |
| `odometer` | integer | null | Mileage. |
| `odometerBrand` | string | null | ACTUAL / NOT ACTUAL / EXEMPT. |
| `titleCode` | string | null | Title brand abbreviation. |
| `titleState` | string | null | State of title issuance. |
| `saleStatus` | string | null | FUTURE / LIVE / SOLD. |
| `saleLocation` | string | null | Yard name (CA - SAN BERNARDINO, TX - HOUSTON, …). |
| `city`, `state`, `zip` | string | null | Yard postal address. |
| `lat`, `lon` | number | null | Yard coordinates. |
| `timeZone` | string | null | IANA timezone of the yard. |
| `saleDate` | string | null | Sale date in ISO 8601. |
| `thumbnail` | string | null | Direct URL to the listing's primary photo. |
| `imageCount` | integer | null | Number of photos on the listing. |
| `lotUrl` | string | Public Copart URL for the lot. |
| `searchUrl` | string | null | The original search URL the lot was discovered from. |
| `currency` | string | Always `"USD"`. |
| `scrapedAt` | string | ISO 8601 timestamp when the row was scraped. |

### How much does it cost to scrape Copart?

Pay-per-event pricing — you only pay for the records you receive:

- **$0.001** per actor start (one charge per run).
- **$0.014** per `lot_scraped` event (one charge per unique `lotNumber` written to the dataset).
- **$0** monthly fee.

A run that returns 1,000 lots costs `0.001 + 1000 × 0.014 = $14.00`. The reference actor on Apify Store charges $16.00 for the same volume; this actor saves ~12.5% per record. Apify proxy and compute units are billed separately at your account's standard rates.

### Tips & advanced options

- **Filtered searches:** any filter you apply on the Copart website (year, damage, location, fuel type, etc.) is preserved when you paste the URL. The actor preserves the `query` and `searchCriteria` URL parameters verbatim.
- **Single-lot mode:** paste a `/lot/<number>` URL to fetch one lot via Copart's lot-detail JSON endpoint instead of paginating search results.
- **Imperva challenges:** if `info` logs show `Imperva challenge detected` more than a couple of times in a row, flip `useBrowserBootstrap: true`. Adds a few seconds to startup but reliably clears the session.
- **Concurrency:** default is intentionally low (3 concurrent requests, 60 / minute) to fly under Copart's rate limits. Increasing it on residential proxy is usually safe; on shaky proxies it amplifies retry storms.
- **Run-level dedup:** the actor deduplicates by `lotNumber` so overlapping queries (e.g. running the same search multiple times in one run) won't double-bill.

### FAQ, disclaimers & support

**Is it legal to scrape Copart?** This actor only reads data that an anonymous visitor can see at copart.com without logging in. You are responsible for complying with Copart's Terms of Service, applicable laws, and your local regulations.

**Why don't I see all 168 fields the parseforge actor returns?** The parseforge actor scrapes the per-lot detail page (a separate, paid-data request per lot) by default. This actor returns the search-page fields by default (the most common 30-40 used in pricing/inventory analysis), at a lower per-record cost. A future version may expose a per-lot enrichment flag.

**It returned zero rows.** Check the run log. If you see `Imperva challenge detected`, set `useBrowserBootstrap: true` and retry. If you see `zero lots in response`, your `startUrl` may have an unusual filter combination — open it in a browser to confirm Copart returns results.

**copart.co.uk?** Not yet supported. Open an issue if you need it.

**Issues & support:** open an issue from the Actor's **Issues** tab on Apify.

# Actor input Schema

## `startUrl` (type: `string`):

A Copart search URL (e.g. https://www.copart.com/lotSearchResults/?free=true\&query=audi) or a single lot URL (e.g. https://www.copart.com/lot/12345678/). The actor preserves any filters in your URL.

## `maxItems` (type: `integer`):

Maximum number of lots to return. The Free plan caps this server-side; paid plans allow up to 1,000,000.

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

Number of retry attempts for failed requests (429, 5xx, 403 from Imperva-class gateways). Higher values improve reliability on flaky residential IPs.

## `useBrowserBootstrap` (type: `boolean`):

Advanced. When OFF (default), the actor uses pure HTTP. When ON, the actor opens one short-lived Playwright session against Copart to collect cookies before switching back to HTTP. Enable only if you see persistent Imperva challenges.

## `proxyConfiguration` (type: `object`):

Apify proxy. Residential proxies are strongly recommended — Copart blocks datacenter IPs almost immediately. Leaving the default keeps you on RESIDENTIAL.

## Actor input object example

```json
{
  "startUrl": "https://www.copart.com/lotSearchResults/?free=true&query=audi",
  "maxItems": 10,
  "maxRequestRetries": 5,
  "useBrowserBootstrap": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Scraped Copart lots. One record per unique lotNumber across the run.

# 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 = {
    "startUrl": "https://www.copart.com/lotSearchResults/?free=true&query=audi",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("prodiger/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 = {
    "startUrl": "https://www.copart.com/lotSearchResults/?free=true&query=audi",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("prodiger/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 '{
  "startUrl": "https://www.copart.com/lotSearchResults/?free=true&query=audi",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call prodiger/copart-public-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Copart Public Search Scraper (Pay-Per-Event)",
        "description": "Scrape Copart's public auction search results: lot numbers, VIN, year/make/model, current bid, buy-it-now, retail value, damage, odometer, sale date, location, photos. Pay-per-event pricing — only pay for the records you actually scrape.",
        "version": "0.1",
        "x-build-id": "PyCbU7JQTb1Sq1Kak"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/prodiger~copart-public-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-prodiger-copart-public-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/prodiger~copart-public-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-prodiger-copart-public-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/prodiger~copart-public-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-prodiger-copart-public-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrl"
                ],
                "properties": {
                    "startUrl": {
                        "title": "Start URL",
                        "type": "string",
                        "description": "A Copart search URL (e.g. https://www.copart.com/lotSearchResults/?free=true&query=audi) or a single lot URL (e.g. https://www.copart.com/lot/12345678/). The actor preserves any filters in your URL.",
                        "default": "https://www.copart.com/lotSearchResults/?free=true&query="
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Maximum number of lots to return. The Free plan caps this server-side; paid plans allow up to 1,000,000.",
                        "default": 10
                    },
                    "maxRequestRetries": {
                        "title": "Max request retries",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Number of retry attempts for failed requests (429, 5xx, 403 from Imperva-class gateways). Higher values improve reliability on flaky residential IPs.",
                        "default": 5
                    },
                    "useBrowserBootstrap": {
                        "title": "Use browser bootstrap (advanced)",
                        "type": "boolean",
                        "description": "Advanced. When OFF (default), the actor uses pure HTTP. When ON, the actor opens one short-lived Playwright session against Copart to collect cookies before switching back to HTTP. Enable only if you see persistent Imperva challenges.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify proxy. Residential proxies are strongly recommended — Copart blocks datacenter IPs almost immediately. Leaving the default keeps you on RESIDENTIAL.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
