# Cars.com $1💰 Vehicles, Prices, Dealers & Deals (`abotapi/cars-com-scraper`) Actor

Scrape cars.com listings by make, ZIP and radius. 90+ fields per car: price, MSRP, monthly payment, mileage, VIN, deal rating, price drop, photos, dealer name, rating and location. Search and URL modes, 11 sort orders, price/year/mileage filters, optional CARFAX flags and dealer phone.

- **URL**: https://apify.com/abotapi/cars-com-scraper.md
- **Developed by:** [AbotAPI](https://apify.com/abotapi) (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 $1.00 / 1,000 vehicle results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Cars.com Scraper

Pull structured vehicle listings from cars.com at scale. Search by make, ZIP and radius, or paste any cars.com search or vehicle URL, and get a clean record per car with price, MSRP, estimated monthly payment, deal rating, price drop, mileage, VIN, the full photo set, and the dealer name, rating and location. Two modes (search and URL), 11 sort orders, and price, year, mileage and stock-type filters. An optional detail pass adds interior color, transmission, fuel type, CARFAX flags and the dealer phone number.

### Why This Scraper?

- 90+ fields per vehicle, including deal rating, price-vs-market explanation, price drop, monthly payment estimate, and the full image gallery.
- Two ways in: build searches from makes, ZIP and filters, or paste search and vehicle URLs directly. Filter fields are ignored in URL mode so pasted links are used as-is.
- 11 sort orders (price, mileage, year, distance, best deal, newest) and price, year, mileage and stock-type filters.
- Optional detail enrichment adds interior color, transmission, fuel type, CARFAX one-owner / clean-title / no-accidents flags and the dealer phone number.
- One simple cap: set Max items and the run stops there once enough results are collected.
- Export results straight into Notion, Linear, Airtable or Apify via MCP connectors, without touching the dataset.

### Data You Get

> Sample shape - values are illustrative placeholders, not from a live listing.

| Field | Example |
| --- | --- |
| listingId | 00000000-0000-0000-0000-000000000000 |
| title | 2024 Toyota Camry SE |
| year | 2024 |
| make | Toyota |
| model | Camry |
| trim | SE |
| price | 24995 |
| msrp | 27500 |
| monthlyPayment | $399 |
| deal_rating | good-deal |
| deal_badge_text | Good Deal |
| price_drop | $500 |
| mileage | 12500 |
| vin | 0000000000000000 |
| stockType | Used |
| cpoIndicator | true |
| exterior_color | Celestial Silver |
| fuelType | Gasoline |
| dealerName | Example Toyota |
| dealerRating | 4.5 |
| location | Los Angeles, CA (10 mi) |
| imageUrl | https://platform.cstatic-images.com/large/in/v2/example.jpg |
| imageCount | 24 |
| url | https://www.cars.com/vehicledetail/00000000-0000-0000-0000-000000000000/ |

Detail fields (when Fetch full details is on): `interior_color`, `transmission`, `mpg_city`, `mpg_highway`, `carfax_1_owner`, `carfax_clean_title`, `carfax_no_accidents`, `dealer_phone`.

### How to Use

Search by make and ZIP:

```json
{
  "mode": "search",
  "makes": ["toyota"],
  "zip": "90001",
  "maximumDistance": 50,
  "stockType": "used",
  "sortBy": "list_price",
  "maxItems": 50
}
````

Filter by price, year and mileage:

```json
{
  "mode": "search",
  "makes": ["honda", "kia"],
  "zip": "10001",
  "priceMin": 15000,
  "priceMax": 28000,
  "yearMin": 2020,
  "mileageMax": 40000,
  "maxItems": 100
}
```

Paste cars.com URLs (filters ignored):

```json
{
  "mode": "url",
  "urls": [
    "https://www.cars.com/shopping/results/?stock_type=used&makes[]=tesla&zip=94103&maximum_distance=100"
  ],
  "fetchDetails": true,
  "maxItems": 80
}
```

### Input Parameters

| Parameter | Type | Description |
| --- | --- | --- |
| mode | string | `search` (build searches from makes + ZIP + filters) or `url` (use pasted URLs). |
| makes | array | Vehicle makes to search; each make is its own search. Empty = all makes. |
| models | array | Optional model names to narrow the search. |
| zip | string | US ZIP code to center the search on. |
| maximumDistance | integer | Search radius in miles around the ZIP. |
| stockType | string | `all`, `used`, `new`, or `cpo` (certified pre-owned). |
| priceMin | integer | Minimum price (USD). |
| priceMax | integer | Maximum price (USD). |
| yearMin | integer | Minimum model year. |
| yearMax | integer | Maximum model year. |
| mileageMax | integer | Maximum odometer reading. |
| sortBy | string | One of 11 sort orders (price, mileage, year, distance, best deal, newest). |
| urls | array | cars.com search or vehicle URLs (URL mode). |
| fetchDetails | boolean | Visit each vehicle page for interior color, transmission, CARFAX flags and dealer phone. |
| maxItems | integer | The single cap on the run. 0 = unlimited. Default 20. |
| maxPages | integer | Optional safety bound on pages per search. Empty = unlimited; the run stops at Max items. |
| proxy | object | Proxy configuration. Apify Residential, country US recommended. |
| maxResidentialMB | integer | Residential traffic budget in MB. Caps how much residential traffic a run may use; the run keeps working as long as cars.com still serves results. 0 = unlimited. |
| mcpConnectors | array | Optional MCP connectors to pipe results into (Notion, Linear, Airtable, Apify). |
| notionParentPageUrl | string | Notion parent page URL/id for the Notion connector. |
| maxNotifyListings | integer | Cap on items written to each connector per run. |

#### Export to your apps (MCP connectors)

Optionally pipe each run's results into the tools you already use through Model Context Protocol (MCP) connectors. Authorize a connector under Apify, Settings, API & Integrations, then select it in `mcpConnectors`. Notion receives a rich page per vehicle (set `notionParentPageUrl`); Linear, Airtable and Apify get a best-effort write or digest. The MCP export never changes the dataset and never fails the run; `maxNotifyListings` caps how many items go to each connector.

### Output Example

> Sample shape - values are illustrative placeholders, not from a live listing.

```json
{
  "listingId": "00000000-0000-0000-0000-000000000000",
  "vin": "0000000000000000",
  "url": "https://www.cars.com/vehicledetail/00000000-0000-0000-0000-000000000000/",
  "title": "2024 Toyota Camry SE",
  "year": 2024,
  "make": "Toyota",
  "model": "Camry",
  "trim": "SE",
  "bodyStyle": "Sedan",
  "mileage": 12500,
  "drivetrain": "Front-wheel Drive",
  "fuelType": "Gasoline",
  "exterior_color": "Celestial Silver",
  "interior_color": "Black",
  "transmission": "8-Speed Automatic",
  "stockType": "Used",
  "cpoIndicator": true,
  "price": 24995,
  "msrp": 27500,
  "monthlyPayment": "$399",
  "price_drop": "$500",
  "deal_rating": "good-deal",
  "deal_badge_text": "Good Deal",
  "price_vs_market": "This vehicle is priced below the average market price for similar vehicles in the area.",
  "dealerName": "Example Toyota",
  "dealerRating": 4.5,
  "dealer_phone": "(000) 000-0000",
  "location": "Los Angeles, CA (10 mi)",
  "imageUrl": "https://platform.cstatic-images.com/large/in/v2/example.jpg",
  "imageCount": 24,
  "galleryImages": ["https://platform.cstatic-images.com/large/in/v2/example.jpg"],
  "carfax_1_owner": true,
  "carfax_clean_title": true,
  "carfax_no_accidents": true,
  "badges": [
    { "label": "Good Deal", "variant": "good-deal", "description": "Priced below the average market price." }
  ],
  "scrapedAt": "2024-01-01T00:00:00+00:00"
}
```

### Plan Requirement

cars.com serves US connections best, so this scraper is designed to run on Apify Residential proxy with country US (included on the Starter plan and higher). Datacenter and free-tier connections are commonly rejected and will return zero items. Set the proxy to Apify Residential, country US, for reliable results; if you run on datacenter, a free tier, or a non-US connection the run logs a warning before spending compute.

#### Reliability

- Built for resilient, unattended runs: transient errors are recovered automatically so a run keeps working without manual intervention.
- Residential traffic budget: set `maxResidentialMB` to cap residential spend. The run keeps returning results as long as cars.com still serves them, and will not silently drop to zero. 0 = unlimited.

# Actor input Schema

## `mode` (type: `string`):

How to start the scrape. 'search' builds cars.com searches from your makes, ZIP, radius and filters. 'url' walks the cars.com search or vehicle URLs you paste (filter fields below are ignored in URL mode).

## `makes` (type: `array`):

One or more vehicle makes to search for (e.g. 'tesla', 'toyota', 'ford'). Each make is scraped as its own search. Leave empty to search all makes.

## `models` (type: `array`):

Optional model names to narrow the search (e.g. 'model 3'). Applied across the selected makes.

## `zip` (type: `string`):

US ZIP code to center the search on (e.g. '90001'). Combine with Search radius below. Leave empty for a nationwide search.

## `maximumDistance` (type: `integer`):

Radius in miles around the ZIP to include vehicles from.

## `stockType` (type: `string`):

Limit to new, used, or certified pre-owned vehicles. 'all' returns every stock type.

## `priceMin` (type: `integer`):

Only return vehicles priced at or above this amount.

## `priceMax` (type: `integer`):

Only return vehicles priced at or below this amount.

## `yearMin` (type: `integer`):

Only return vehicles from this model year or newer.

## `yearMax` (type: `integer`):

Only return vehicles from this model year or older.

## `mileageMax` (type: `integer`):

Only return vehicles at or below this odometer reading.

## `sortBy` (type: `string`):

Order cars.com returns results in.

## `urls` (type: `array`):

Paste cars.com search URLs (https://www.cars.com/shopping/results/?...) or vehicle detail URLs (https://www.cars.com/vehicledetail/<id>/). Multiple URLs supported; filter-mode fields are ignored.

## `fetchDetails` (type: `boolean`):

Visit each vehicle page to add interior color, transmission, fuel type, CARFAX flags (one-owner, clean title, no accidents) and the dealer phone number. Slower and adds a small per-item charge; leave off for fast basic listings.

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

The single cap on this run: stop after collecting this many vehicles (across all searches/URLs). Set 0 for unlimited.

## `maxPages` (type: `integer`):

Optional safety bound on how many result pages to include per search. Defaults to unlimited (leave empty or set 0) and does NOT cap the run; it defers to Max items, which is the single cap. The run stops at Max items, not here.

## `proxy` (type: `object`):

Use Apify Residential proxy with country US for reliable results.

## `maxResidentialMB` (type: `integer`):

When using a Residential proxy group, cap residential traffic at this many MB. The run keeps returning results as long as cars.com still serves them, and will not silently drop to zero. 0 = unlimited.

## `mcpConnectors` (type: `array`):

Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write/digest. Leave empty to skip; never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).

## `notionParentPageUrl` (type: `string`):

URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.

## `maxNotifyListings` (type: `integer`):

Cap on items written to each connector per run. Does not affect the dataset.

## Actor input object example

```json
{
  "mode": "search",
  "makes": [
    "tesla"
  ],
  "zip": "90001",
  "maximumDistance": 50,
  "stockType": "all",
  "sortBy": "best_match_desc",
  "urls": [
    "https://www.cars.com/shopping/results/?stock_type=used&makes[]=toyota&zip=90001&maximum_distance=50"
  ],
  "fetchDetails": false,
  "maxItems": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  },
  "maxResidentialMB": 0,
  "maxNotifyListings": 50
}
```

# Actor output Schema

## `overview` (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 = {
    "makes": [
        "tesla"
    ],
    "zip": "90001",
    "maximumDistance": 50,
    "urls": [
        "https://www.cars.com/shopping/results/?stock_type=used&makes[]=toyota&zip=90001&maximum_distance=50"
    ],
    "maxItems": 20,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/cars-com-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 = {
    "makes": ["tesla"],
    "zip": "90001",
    "maximumDistance": 50,
    "urls": ["https://www.cars.com/shopping/results/?stock_type=used&makes[]=toyota&zip=90001&maximum_distance=50"],
    "maxItems": 20,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/cars-com-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 '{
  "makes": [
    "tesla"
  ],
  "zip": "90001",
  "maximumDistance": 50,
  "urls": [
    "https://www.cars.com/shopping/results/?stock_type=used&makes[]=toyota&zip=90001&maximum_distance=50"
  ],
  "maxItems": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call abotapi/cars-com-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Cars.com $1💰 Vehicles, Prices, Dealers & Deals",
        "description": "Scrape cars.com listings by make, ZIP and radius. 90+ fields per car: price, MSRP, monthly payment, mileage, VIN, deal rating, price drop, photos, dealer name, rating and location. Search and URL modes, 11 sort orders, price/year/mileage filters, optional CARFAX flags and dealer phone.",
        "version": "1.0",
        "x-build-id": "VZXAHsl33lK1jvkCb"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~cars-com-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-cars-com-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/abotapi~cars-com-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-cars-com-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/abotapi~cars-com-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-cars-com-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": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "url"
                        ],
                        "type": "string",
                        "description": "How to start the scrape. 'search' builds cars.com searches from your makes, ZIP, radius and filters. 'url' walks the cars.com search or vehicle URLs you paste (filter fields below are ignored in URL mode).",
                        "default": "search"
                    },
                    "makes": {
                        "title": "Makes",
                        "type": "array",
                        "description": "One or more vehicle makes to search for (e.g. 'tesla', 'toyota', 'ford'). Each make is scraped as its own search. Leave empty to search all makes.",
                        "default": [
                            "tesla"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "models": {
                        "title": "Models",
                        "type": "array",
                        "description": "Optional model names to narrow the search (e.g. 'model 3'). Applied across the selected makes.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "zip": {
                        "title": "ZIP code",
                        "type": "string",
                        "description": "US ZIP code to center the search on (e.g. '90001'). Combine with Search radius below. Leave empty for a nationwide search."
                    },
                    "maximumDistance": {
                        "title": "Search radius (miles)",
                        "minimum": 10,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Radius in miles around the ZIP to include vehicles from.",
                        "default": 50
                    },
                    "stockType": {
                        "title": "Stock type",
                        "enum": [
                            "all",
                            "used",
                            "new",
                            "cpo"
                        ],
                        "type": "string",
                        "description": "Limit to new, used, or certified pre-owned vehicles. 'all' returns every stock type.",
                        "default": "all"
                    },
                    "priceMin": {
                        "title": "Minimum price (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only return vehicles priced at or above this amount."
                    },
                    "priceMax": {
                        "title": "Maximum price (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only return vehicles priced at or below this amount."
                    },
                    "yearMin": {
                        "title": "Minimum year",
                        "minimum": 1900,
                        "type": "integer",
                        "description": "Only return vehicles from this model year or newer."
                    },
                    "yearMax": {
                        "title": "Maximum year",
                        "minimum": 1900,
                        "type": "integer",
                        "description": "Only return vehicles from this model year or older."
                    },
                    "mileageMax": {
                        "title": "Maximum mileage",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only return vehicles at or below this odometer reading."
                    },
                    "sortBy": {
                        "title": "Sort by",
                        "enum": [
                            "best_match_desc",
                            "list_price",
                            "list_price_desc",
                            "mileage",
                            "mileage_desc",
                            "distance",
                            "best_deal",
                            "year_desc",
                            "year",
                            "listed_at_desc",
                            "listed_at"
                        ],
                        "type": "string",
                        "description": "Order cars.com returns results in.",
                        "default": "best_match_desc"
                    },
                    "urls": {
                        "title": "Cars.com URLs",
                        "type": "array",
                        "description": "Paste cars.com search URLs (https://www.cars.com/shopping/results/?...) or vehicle detail URLs (https://www.cars.com/vehicledetail/<id>/). Multiple URLs supported; filter-mode fields are ignored.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "fetchDetails": {
                        "title": "Fetch full details",
                        "type": "boolean",
                        "description": "Visit each vehicle page to add interior color, transmission, fuel type, CARFAX flags (one-owner, clean title, no accidents) and the dealer phone number. Slower and adds a small per-item charge; leave off for fast basic listings.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 0,
                        "type": "integer",
                        "description": "The single cap on this run: stop after collecting this many vehicles (across all searches/URLs). Set 0 for unlimited.",
                        "default": 20
                    },
                    "maxPages": {
                        "title": "Max pages per search",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional safety bound on how many result pages to include per search. Defaults to unlimited (leave empty or set 0) and does NOT cap the run; it defers to Max items, which is the single cap. The run stops at Max items, not here."
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Use Apify Residential proxy with country US for reliable results.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "US"
                        }
                    },
                    "maxResidentialMB": {
                        "title": "Residential traffic budget (MB)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "When using a Residential proxy group, cap residential traffic at this many MB. The run keeps returning results as long as cars.com still serves them, and will not silently drop to zero. 0 = unlimited.",
                        "default": 0
                    },
                    "mcpConnectors": {
                        "title": "Pipe results into your apps (optional)",
                        "type": "array",
                        "description": "Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write/digest. Leave empty to skip; never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
                    },
                    "notionParentPageUrl": {
                        "title": "Notion parent page (Notion connector only)",
                        "type": "string",
                        "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
                    },
                    "maxNotifyListings": {
                        "title": "Max items to export per connector",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap on items written to each connector per run. Does not affect the dataset.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
