# Cars.com Scraper (US Used & New Car Listings + Dealer Leads) (`scrapers_lat/cars-com-scraper`) Actor

Scrape cars.com vehicle listings by make, model and zip or by listing URL. Get price, year, make, model, trim, mileage, VIN, colors, body style, deal rating, dealer name, phone and location. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/scrapers\_lat/cars-com-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $18.91 / 1,000 vehicle listing 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 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

[![Cars.com Scraper (US Used & New Car Listings + Dealer Leads)](https://scrapers.lat/banners/cars-com-scraper.png)](https://console.apify.com/actors/d1zpGgPSptcoHePsI/input)

## Cars.com Scraper (US Used & New Car Listings + Dealer Leads)

Here is one real result, with every field the actor returns:

```json
{
  "listingId": "7de13928-bd52-4a75-8ae8-7f0af0a8c6b1",
  "listingUrl": "https://www.cars.com/vehicledetail/7de13928-bd52-4a75-8ae8-7f0af0a8c6b1/",
  "title": "Used 2020 Honda Accord Sport 2.0T",
  "stockType": "Used",
  "year": 2020,
  "make": "Honda",
  "model": "Accord",
  "trim": "Sport 2.0T",
  "price": 20243,
  "priceCurrency": "USD",
  "msrp": null,
  "monthlyPaymentEstimate": 379,
  "priceDropped": true,
  "dealRating": "Good",
  "mileage": 121787,
  "vin": "1HGCV2F33LA001753",
  "exteriorColor": "Silver",
  "interiorColor": null,
  "bodyStyle": "Sedan",
  "drivetrain": "Front-wheel Drive",
  "transmission": "10-Speed Automatic",
  "fuelType": "Gasoline",
  "mpg": "22-32",
  "engine": "2.0",
  "cylinders": 4,
  "doors": 4,
  "certified": false,
  "stockNumber": "M260724410T1",
  "sellerType": "Dealer",
  "dealerName": "Southern Nissan Chesapeake",
  "dealerCity": "Chesapeake",
  "dealerState": "VA",
  "dealerZip": "23321",
  "dealerRating": 4.6,
  "distanceMiles": 2346,
  "dealerPhone": "(833) 289-3194",
  "financingType": "pre-qual",
  "photo": "https://platform.cstatic-images.com/in/v2/189e8ec0-11de-4ee4-9810-d49a1d543354/ee12db54-c88e-485b-a29b-972ec5c40f6a/-6t9-BIAtuimy-gBmyoAU1cVt2M.jpg",
  "photoCount": 30,
  "features": ["USB Port", "Adaptive Cruise Control", "Alloy Wheels", "Apple CarPlay", "Blind Spot Monitor", "Bluetooth", "Leather Seats", "Moonroof", "Backup Camera", "Heated Seats"],
  "featureCount": 20,
  "aiDealAssessment": "Strong deal for mileage",
  "aiConditionNotes": "Likely good condition with high mileage",
  "aiNegotiationTips": ["Use the high mileage as a negotiation point", "Ask if the price is flexible given the mileage"],
  "aiTargetBuyer": "Ideal for budget-conscious buyers seeking reliability",
  "source": "cars.com",
  "observedAt": "2026-08-20T06:37:37.979Z"
}
```

The most complete cars.com scraper available. It returns every field a cars.com listing exposes (price, year, make, model, trim, mileage, VIN, colors, body style, drivetrain, fuel type, deal rating, dealer name and rating), plus lead fields most scrapers miss (dealer phone, stock number, transmission, full feature list and all photos), and gives you six filters to target exactly the vehicles you need.

**📥 [Input](https://apify.com/scrapers_lat/cars-com-scraper/input-schema) · 📤 [Output](https://apify.com/scrapers_lat/cars-com-scraper/output-schema) · 💰 [Pricing](https://apify.com/scrapers_lat/cars-com-scraper/pricing) · ▶️ [Examples](https://apify.com/scrapers_lat/cars-com-scraper/examples)**

![Platform](https://img.shields.io/badge/platform-Apify-4584f7) ![Coverage](https://img.shields.io/badge/coverage-cars.com%20US-14b8a6) ![Output](https://img.shields.io/badge/output-JSON%20%7C%20CSV%20%7C%20Excel-2ea44f) ![Billing](https://img.shields.io/badge/billing-pay%20per%20result-f59e0b)

### Table of contents

- [What it does](#what-it-does)
- [Quickstart](#quickstart)
- [Input reference](#input-reference)
- [Output reference](#output-reference)
- [Example output record](#example-output-record)
- [Run via API and CLI](#run-via-api-and-cli)
- [Fetch results](#fetch-results)
- [Billing and limits](#billing-and-limits)
- [FAQ and troubleshooting](#faq-and-troubleshooting)
- [More scrapers at scrapers.lat](#more-scrapers-at-scraperslat)

### What it does

This actor collects vehicle listings from cars.com. Search by make, model and ZIP code, or paste individual vehicle detail URLs. For every listing you get the full pricing and specification set, the cars.com deal rating (Great, Good or Fair), a recent price-drop flag, and the selling dealer with its name, city, state, distance from your ZIP and star rating.

Turn on the optional dealer contact add-on to also pull the dealer phone number, stock number, transmission, interior color, cylinders and doors, the complete factory and dealer feature list, and every photo on the listing. Turn on the AI deal summary add-on for a quick deal assessment, condition notes, negotiation tips and the ideal target buyer for each vehicle.

Highlights:

- Every listing field cars.com exposes, cleaned into flat columns for CSV and Excel.
- Dealer leads: name, city, state, ZIP, star rating, distance, and phone (add-on).
- Deal intelligence: the cars.com deal rating and a price-drop flag on every row.
- Six filters: make, model, ZIP, maximum price, maximum mileage and minimum year.
- Nationwide search with pagination, or direct scraping of specific listing URLs.
- You are never charged for a run that returns no listings.

### Quickstart

Search used and new Honda Accords near a ZIP code:

```json
{
  "make": "Honda",
  "model": "Accord",
  "zip": "90001",
  "maxResults": 25
}
```

Filter to newer, lower-mileage vehicles under a budget:

```json
{
  "make": "Toyota",
  "model": "Camry",
  "zip": "10001",
  "maxPrice": 22000,
  "maxMileage": 60000,
  "yearMin": 2019,
  "maxResults": 50
}
```

Scrape specific listings with full dealer contact and photos:

```json
{
  "listingUrls": [
    "https://www.cars.com/vehicledetail/7de13928-bd52-4a75-8ae8-7f0af0a8c6b1/"
  ],
  "dealerContact": true
}
```

### Input reference

| Name | Type | Required | Description | Example |
|------|------|----------|-------------|---------|
| `make` | string | no | Vehicle make to search | `"Honda"` |
| `model` | string | no | Vehicle model (requires make) | `"Accord"` |
| `zip` | string | no | US ZIP code to center the search on | `"90001"` |
| `maxPrice` | integer | no | Keep listings at or below this price (USD) | `22000` |
| `maxMileage` | integer | no | Keep listings at or below this mileage | `60000` |
| `yearMin` | integer | no | Keep listings from this model year or newer | `2019` |
| `listingUrls` | array | no | Individual cars.com vehicle detail URLs to scrape directly | `["https://www.cars.com/vehicledetail/<id>/"]` |
| `maxResults` | integer | no | Maximum listings to collect (free plans capped at 10) | `25` |
| `dealerContact` | boolean | no | Paid add-on: add dealer phone, stock number, transmission, features and all photos | `true` |
| `aiDealSummary` | boolean | no | Paid add-on: add an AI deal assessment, condition notes and negotiation tips | `true` |

Provide either a search (make, model and/or ZIP) or one or more `listingUrls`.

### Output reference

| Name | Type | Description |
|------|------|-------------|
| `listingId` | string | cars.com listing id |
| `listingUrl` | string | Vehicle detail page URL |
| `title` | string | Condition, year, make, model and trim |
| `stockType` | string | Used, New or Certified |
| `year` | integer | Model year |
| `make` | string | Vehicle make |
| `model` | string | Vehicle model |
| `trim` | string | Trim level |
| `price` | integer | Listed price in USD |
| `priceCurrency` | string | Price currency (USD) |
| `msrp` | integer | MSRP when available |
| `monthlyPaymentEstimate` | integer | Estimated monthly payment in USD |
| `priceDropped` | boolean | True when the listing shows a recent price drop |
| `dealRating` | string | cars.com deal badge: Great, Good or Fair |
| `mileage` | integer | Odometer mileage |
| `vin` | string | Vehicle Identification Number |
| `exteriorColor` | string | Exterior color |
| `interiorColor` | string | Interior color (dealer contact add-on) |
| `bodyStyle` | string | Body style (Sedan, SUV, Truck...) |
| `drivetrain` | string | Drivetrain (FWD, AWD, RWD, 4WD) |
| `transmission` | string | Transmission (dealer contact add-on) |
| `fuelType` | string | Fuel type |
| `mpg` | string | Fuel economy MPG range (dealer contact add-on) |
| `engine` | string | Engine description (dealer contact add-on) |
| `cylinders` | integer | Number of cylinders (dealer contact add-on) |
| `doors` | integer | Number of doors (dealer contact add-on) |
| `certified` | boolean | Certified pre-owned indicator |
| `stockNumber` | string | Dealer stock number (dealer contact add-on) |
| `sellerType` | string | Seller type (Dealer or Private) |
| `dealerName` | string | Dealer name |
| `dealerCity` | string | Dealer city |
| `dealerState` | string | Dealer state (2-letter) |
| `dealerZip` | string | Dealer ZIP code |
| `dealerRating` | number | Dealer star rating (0 to 5) |
| `distanceMiles` | integer | Distance from the searched ZIP in miles |
| `dealerPhone` | string | Dealer phone number (dealer contact add-on) |
| `financingType` | string | Financing availability |
| `photo` | string | Primary photo URL |
| `photos` | array | All photo URLs (dealer contact add-on) |
| `photoCount` | integer | Number of photos captured (dealer contact add-on) |
| `features` | array | Vehicle feature list (dealer contact add-on) |
| `featureCount` | integer | Number of features captured (dealer contact add-on) |
| `aiDealAssessment` | string | AI deal assessment (AI add-on) |
| `aiConditionNotes` | string | AI condition notes (AI add-on) |
| `aiNegotiationTips` | array | AI negotiation tips (AI add-on) |
| `aiTargetBuyer` | string | AI ideal target buyer (AI add-on) |
| `source` | string | Data source |
| `observedAt` | string | ISO timestamp collected |

### Example output record

See the hero JSON at the top of this page for a full real record with every field populated, including the dealer phone number, stock number, full feature list and AI deal summary.

### Run via API and CLI

Start a run with the Apify API:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~cars-com-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"make":"Honda","model":"Accord","zip":"90001","maxResults":25}'
```

Start a run with the Apify CLI:

```bash
apify call scrapers_lat/cars-com-scraper \
  --input '{"make":"Toyota","model":"Camry","zip":"10001","maxPrice":22000,"yearMin":2019}'
```

### Fetch results

Download the dataset items as JSON, CSV or Excel:

```bash
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_TOKEN&format=csv" -o cars.csv
```

Replace `DATASET_ID` with the `defaultDatasetId` from the run response.

### Billing and limits

- Pay per result. You are charged one `result` event per listing returned, plus a small one-time actor-start event per run.
- The dealer contact add-on is off by default and is charged only when a real dealer contact or detail is returned. The AI deal summary add-on is off by default and is charged only when a usable summary is produced.
- You are never charged for a run that returns zero listings.
- Free Apify plans are capped at 10 results per run and cannot use the paid add-ons; upgrade for larger runs.
- Set a spend cap with the run option `maxTotalChargeUsd`. The actor stops emitting results once the cap is reached, so you never pay past your limit.

### FAQ and troubleshooting

**No results came back.** Check that the make and model spellings match cars.com and that the ZIP code is a valid US ZIP. Very narrow filter combinations (low max price plus recent year) can legitimately return nothing.

**How do I get the dealer phone number?** Turn on the `dealerContact` add-on. It fetches each listing detail page and adds the dealer phone, stock number, transmission, full feature list and every photo.

**Can I scrape a single listing I already have?** Yes. Put its URL in `listingUrls`. Detail URLs look like `https://www.cars.com/vehicledetail/<id>/`.

**Which vehicles are covered?** Used, new and certified pre-owned listings across cars.com's US inventory. Set `stockType` implicitly through your search; the actor returns all stock types near your ZIP.

**Do I need proxies or any configuration?** No. Everything is handled internally. You only provide the search or listing URLs.

### More scrapers at scrapers.lat

Explore the full catalog of company, real estate, marketplace and lead generation scrapers at [scrapers.lat](https://scrapers.lat).

This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Cars.com. It collects publicly available listing information for research and lead generation.

# Actor input Schema

## `make` (type: `string`):

Vehicle make to search, for example Honda, Toyota, Ford or Tesla. Combined with Model and Zip to build the search. Leave empty to search all makes near the zip.

## `model` (type: `string`):

Vehicle model to search, for example Accord, Camry or F-150. Requires Make. Leave empty to include all models of the make.

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

US ZIP code to center the search on, for example 90001. The scraper searches nationwide and reports each dealer's distance from this ZIP.

## `maxPrice` (type: `integer`):

Only keep listings priced at or below this amount in US dollars. Leave empty for no maximum.

## `maxMileage` (type: `integer`):

Only keep listings with mileage at or below this number. Leave empty for no maximum.

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

Only keep listings from this model year or newer. Leave empty for no minimum.

## `listingUrls` (type: `array`):

Optional list of individual cars.com vehicle detail URLs (https://www.cars.com/vehicledetail/<id>/) to scrape directly with full detail (dealer phone, stock number, transmission, interior color, features and all photos).

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

Maximum number of listings to collect across the whole run. Free Apify plans are capped at 10 per run.

## `dealerContact` (type: `boolean`):

Fetch each vehicle detail page to add the dealer phone number, stock number, transmission, interior color, cylinders, doors, certified status, the full feature list and all photos. Charged only when a real contact or detail is returned. Disabled on free plans.

## `aiDealSummary` (type: `boolean`):

Use AI to produce a deal assessment, condition notes, buyer negotiation tips and the ideal target buyer for each listing. Charged only when a usable summary is returned. Disabled on free plans.

## Actor input object example

```json
{
  "make": "Honda",
  "model": "Accord",
  "zip": "90001",
  "listingUrls": [],
  "maxResults": 10,
  "dealerContact": false,
  "aiDealSummary": false
}
```

# Actor output Schema

## `results` (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 = {
    "make": "Honda",
    "model": "Accord",
    "zip": "90001",
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/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 = {
    "make": "Honda",
    "model": "Accord",
    "zip": "90001",
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/cars-com-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "make": "Honda",
  "model": "Accord",
  "zip": "90001",
  "maxResults": 10
}' |
apify call scrapers_lat/cars-com-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapers_lat/cars-com-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/d1zpGgPSptcoHePsI/builds/3GWw9ca6M80NW3z3Z/openapi.json
