# Cars.com Scraper (`intelscrape/cars-com-scraper`) Actor

Scrape public Cars.com vehicle listings — price, mileage, year/make/model, dealer, VIN when shown, listing URL. Search by make/model/ZIP or URL. Pay per listing. Demo mode.

- **URL**: https://apify.com/intelscrape/cars-com-scraper.md
- **Developed by:** [IntelScrape](https://apify.com/intelscrape) (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 $2.00 / 1,000 listings

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

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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 – Price, Mileage, VIN & Dealer Listings

> 🇨🇳 **中文简介 (Chinese — China & Singapore):**
> 还在手动翻 Cars.com 找车源？本 Actor 按品牌/车型/邮编或搜索链接批量抓取美国 Cars.com 公开车源，返回价格、里程、年款、经销商，以及页面展示的 VIN 与 listing URL。按交付车源计费（启动 $0.005 + 每条 $0.002），无需自备 API Key——适合中美跨境车商、车源研究与套利团队。现在就在 Apify 上试跑，把清洗后的车源直接送进表格、CRM 或 Claude / Cursor。

> 🇸🇬 **Ringkasan Melayu (Singapore):**
> Masih semak Cars.com secara manual? Actor ini scrape senarai kenderaan awam Cars.com AS mengikut make/model/ZIP atau URL carian — harga, perbatuan, tahun, dealer, VIN (bila dipaparkan) dan URL listing. Bayar per listing dihantar (mula $0.005 + $0.002/item), tiada API key. Sesuai untuk peniaga, penyelidik pasaran dan pasukan lead di Singapura yang pantau bekalan AS. Cuba di Apify hari ini dan eksport ke workflow anda.

#### 🤖 NEW: Connect This To Your AI!

Want to use this scraper directly inside Claude, Cursor, or ChatGPT? Check out **[Skip Trace MCP Server](https://apify.com/intelscrape/skip--trace)**. Combined IntelScrape agents over Model Context Protocol — autonomous leads, enrichment, and research workflows. Data extraction gets easier when your AI runs the Actor for you.

> **Soft CTA — listings market summary:** With `includeListingsSummary` (default ON), the `listings-summary` row includes `softCta` links to **[Craigslist Deal Scraper](https://apify.com/intelscrape/craigslist-deal-scraper)**, **[OfferUp Deal Radar](https://apify.com/intelscrape/offerup-deal-radar)**, **[Facebook Marketplace Deal Radar](https://apify.com/intelscrape/facebook-marketplace-deal-radar)**, **[eBay Sold Comps](https://apify.com/intelscrape/ebay-sold-comps-scraper)**, and **[Skip Trace PRO](https://apify.com/intelscrape/skip-trace-pro)** for dealer/seller enrichment. Continue your journey →

#### 🏆 Featured Bots by IntelScrape

1. **[Cars.com Scraper](https://apify.com/intelscrape/cars-com-scraper)** — Price, Mileage, VIN & Dealer Listings
2. **[Skip Trace PRO](https://apify.com/intelscrape/skip-trace-pro)** — Name, Address, Phone & Email People Lookup
3. **[TruePeopleSearch Scraper](https://apify.com/intelscrape/truepeoplesearch-scraper)** — Phone & Email Matches
4. **[TikTok Scraper](https://apify.com/intelscrape/tiktok-scraper)** — Emails & Influencer Leads
5. **[Amazon Product Review Scraper](https://apify.com/intelscrape/amazon-product-review-scraper)** — Deep E-commerce & Review Extraction
6. **[Building Permit Scraper](https://apify.com/intelscrape/building-permit-scraper)** — US Cities Open Data
7. **[Google Maps No-Website Leads](https://apify.com/intelscrape/website-Leads)** — Local Businesses Without a Website
8. **[UCC Lien Scraper](https://apify.com/intelscrape/ucc-lien-scraper)** — Florida & New Jersey Filings
9. **[Skip Trace MCP Server](https://apify.com/intelscrape/skip--trace)** — Use Skip Trace inside Claude, Cursor, ChatGPT

***

⚡ **Use this Actor in n8n — no code**

Building no-code workflows in [n8n](https://n8n.io)? It works natively! Use the official **Apify** node to drop this Actor straight onto your canvas.

**Setup (30 seconds):**

1. In n8n, add the official **Apify** node to your workflow.
2. Connect your **Apify API token** in the credentials.
3. Select **Run an Actor**, and paste this actor's ID: `IntelScrape/cars-com-scraper`.
4. Fill in the JSON input and run!

***

![Cars.com Scraper Banner](https://api.apify.com/v2/key-value-stores/PyvJzfQg02FD3RYhd/records/cars-com-scraper-banner.png)

![price](https://img.shields.io/badge/price-$2.00_/_1K-e83e8c) ![billing](https://img.shields.io/badge/billing-pay_per_listing-2ea44f) ![API key](https://img.shields.io/badge/API_key-not_required-blue) ![coverage](https://img.shields.io/badge/coverage-United_States-8a2be2) ![source](https://img.shields.io/badge/source-Cars.com_listings-blue) ![fields](https://img.shields.io/badge/fields-price_·_mileage_·_VIN_·_dealer-blue)

**Scrape public Cars.com vehicle listings at scale.** Search by **make / model / ZIP** or paste a Cars.com results URL and get clean rows: year, make, model, **price**, **mileage**, dealer name, **VIN when shown**, and listing URL.\
**Bulk-friendly, no API key, pay only for listings delivered.**

> **Honest coverage & billing (read this):** Source is **Cars.com public search/listing pages** (US). Fields depend on what Cars.com shows on the page — VIN is included when present. Billing is **pay-per-event**: **Actor start $0.005** once per run + **$0.002 per listing** pushed via `pushData` (`apify-default-dataset-item`) + **$0.01 `listings-summary`** once per search when `includeListingsSummary` is on (heuristic price/mileage/make/dealer stats — **no external LLM**). Empty runs still incur the start event. Set `demoMode: true` for a **fictional** format sample — not live Cars.com data and not for production decisions.

***

> 🧭 Built for **used-car dealers, flippers, market researchers, and inventory/arbitrage teams** researching US supply. Popular with teams in the **US, China, and Singapore**.

> ⭐ **Store rating is driven by daily power users.** If this Actor saves you time, please [leave a review](https://apify.com/intelscrape/cars-com-scraper).

> ⚖️ **Lawful business use only.** Only scrape publicly available listing data. Respect Cars.com terms, rate limits, and applicable laws. You are responsible for how you use the results (no fraud, stalking, or unlawful resale claims).

> 📌 *Examples in this README are **fictional** unless stated otherwise.*

***

### 🕵️‍♂️ Why Choose Us vs. "Cheaper" Competitors?

| Feature | Cars.com Scraper ($2/1k listings) | Thin emoji Store bots |
| :--- | :--- | :--- |
| **Billing honesty** | **Pay per listing pushed** + tiny start fee | Often vague “per result” with empty rows |
| **Query-first Store title** | **Cars.com Scraper** — searchable | Emoji-first titles that bury the query |
| **Demo mode** | **Yes** — format sample without burning live scrapes | Often none |
| **AI / n8n ready** | **MCP + n8n Actor ID documented** | README stubs |
| **CN + SG sell blocks** | **Full 简体中文 + Bahasa Melayu** | Missing or mojibake |

***

### What a result looks like

One dataset row per listing. *(Illustrative — fictional.)*

| listingId | year | make | model | price | mileage | dealer | vin | url |
| :--- | ---: | :--- | :--- | ---: | ---: | :--- | :--- | :--- |
| 123456789 | 2021 | Toyota | Camry | 21990 | 28450 | Austin Auto Group | 4T1B11HK5KU123456 | https://www.cars.com/vehicledetail/... |

### Why this niche

- **Make / model / ZIP** or start URLs
- **Price + mileage + dealer** for comps
- **VIN when shown** on the listing
- **demoMode** for schema checks
- **PPE aligned** to delivered listings

### Quick start

```json
{
  "demoMode": true,
  "maxItems": 5,
  "make": "Toyota",
  "model": "Camry",
  "zip": "78701"
}
```

Live (no demo):

```json
{
  "make": "Honda",
  "model": "Civic",
  "zip": "10001",
  "maxItems": 50
}
```

### What you get

- `listingId`, `year`, `make`, `model`
- `price`, `mileage`, `dealer`
- `vin` (when Cars.com shows it)
- `url`, `source`
- `demoMode` flag on synthetic rows

### Input / Output / Pricing

| Event | When it fires | Price |
| :--- | :--- | :--- |
| `apify-actor-start` | Once when the Actor starts | **$0.005** |
| `apify-default-dataset-item` | Each listing row via `pushData` | **$0.002** |

Output: Apify dataset JSON / CSV / Excel. Primary billed unit = listing row.

### Legal

For lawful business research and inventory analysis only. Not affiliated with Cars.com. You must comply with Cars.com terms of use, robots/rate limits, and all applicable laws. Do not use results for fraud, harassment, or prohibited consumer decisions.

# Actor input Schema

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

Full cars.com search or listing URLs. When set, make/model/ZIP filters are ignored for URL building (client year/price/mileage filters still apply).

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

Vehicle make (used if no startUrls).

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

Vehicle model.

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

Search ZIP code.

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

Minimum model year (skootle/benthepythondev steal).

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

Maximum model year.

## `minPrice` (type: `integer`):

Minimum list price in USD. 0/omit = no floor.

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

Maximum list price in USD. 0/omit = no cap (skootle priceMax).

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

Maximum mileage in miles. 0/omit = no cap.

## `searchRadius` (type: `integer`):

Radius around ZIP. Use 0 for nationwide (maximum\_distance=all).

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

USED / NEW / CPO / ALL (skootle condition).

## `sort` (type: `string`):

Sort override on search URL (memo23 steal). Empty keeps URL / best\_match.

## `onlyWithPhotos` (type: `boolean`):

Keep listings that expose a photo URL (client filter).

## `dealRatings` (type: `array`):

Keep listings whose dealRating matches (client-side, benthepythondev-style). Values: GREAT\_DEAL, GOOD\_DEAL, FAIR\_DEAL, POOR\_DEAL, OVERPRICED. Empty = no filter.

## `maxListingAgeDays` (type: `integer`):

Keep listings listed within N days when listedAt/listingAgeDays is available from HTML/API. If age fields are unavailable, filter is skipped with a log note (never faked).

## `includeFlipScore` (type: `boolean`):

Compute 0–100 flip/arbitrage score from dealRating + price-vs-market + listing age/mileage (benthepythondev parity). Heuristic, not ML. Default on.

## `minFlipScore` (type: `integer`):

Keep listings with flipScore ≥ this (0–100). Empty/omit = no filter.

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

Maximum vehicle listings to push.

## `demoMode` (type: `boolean`):

Push synthetic fixtures (no live scrape).

## `includeListingsSummary` (type: `boolean`):

Push one extractive market summary row (price/mileage/make/dealer stats) and charge listings-summary PPE. Default on.

## Actor input object example

```json
{
  "make": "Toyota",
  "model": "Camry",
  "zip": "78701",
  "searchRadius": 50,
  "stockType": "USED",
  "sort": "",
  "onlyWithPhotos": false,
  "includeFlipScore": true,
  "maxItems": 50,
  "demoMode": false,
  "includeListingsSummary": true
}
```

# Actor output Schema

## `listings` (type: `string`):

Listing rows pushed to the default dataset.

# 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": "Toyota",
    "model": "Camry",
    "zip": "78701"
};

// Run the Actor and wait for it to finish
const run = await client.actor("intelscrape/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": "Toyota",
    "model": "Camry",
    "zip": "78701",
}

# Run the Actor and wait for it to finish
run = client.actor("intelscrape/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": "Toyota",
  "model": "Camry",
  "zip": "78701"
}' |
apify call intelscrape/cars-com-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,intelscrape/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/7YFym0vsPbojJqiLG/builds/19wLFTDBxqrywUKTg/openapi.json
