# Cars.com Scraper - Car Listings, VIN, Prices & Profit Estimates (`voyn/cars-scraper`) Actor

Extract Cars.com vehicle listings with VIN, prices, mileage, specifications, photos, and seller details. Find potentially undervalued cars with estimated market prices, profit calculations, and customizable search filters. Export to JSON, CSV, or Excel.

- **URL**: https://apify.com/voyn/cars-scraper.md
- **Developed by:** [Voyn Software](https://apify.com/voyn) (community)
- **Categories:** E-commerce, Automation
- **Features:** Limited permissions
- **Stats:** 99 total users, 3 monthly users, 100.0% runs succeeded, 9 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $2.00 / 1,000 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Cars.com Scraper - Vehicle Listings, VIN, Prices & Profit Estimates

Extract structured vehicle listings from [Cars.com](https://www.cars.com/) with **Voyn Software's Cars.com Scraper**. Collect VINs, asking prices, mileage, vehicle specifications, equipment, images, and available price history. When Cars.com provides the necessary pricing information, the Actor also calculates an **average price, estimated profit, and estimated profit percentage** to help you identify vehicles worth investigating.

**Works with Cars.com search-result URLs and individual vehicle-detail URLs.** Apply your filters on Cars.com, paste the URL into Apify, and export the results as JSON, CSV, or Excel.

[**Try Cars.com Scraper on Apify**](https://apify.com/voyn/cars-scraper)

### How Cars.com Scraper works

[![Voyn Cars.com Scraper workflow: filter vehicles, add URLs, extract data, analyze pricing, and export](https://voyn.com.tr/voyn-cars-com-scraper.png)](https://apify.com/voyn/cars-scraper/input-schema)

1. **Search:** Open Cars.com and filter by make, model, year, price, mileage, location, seller type, or other available options.
2. **Paste:** Add the resulting search URL—or a single vehicle-detail URL—to the Actor's input.
3. **Extract:** Run the Actor to collect structured vehicle information.
4. **Analyze and export:** Review available pricing insights and download the dataset or use it through the Apify API.

### Why use this Cars.com scraper?

- **Search and vehicle URLs:** Process filtered search results or specific vehicle pages.
- **Keep your Cars.com filters:** Reuse search filters already encoded in your URL instead of configuring them again.
- **Rich vehicle data:** Collect VIN, year, make, model, trim, mileage, engine, drivetrain, transmission, colors, features, photos, and more when available.
- **Pricing insights:** Capture average price, estimated profit, estimated profit percentage, and price history when supported by the listing.
- **Flexible exports:** Use Apify datasets in JSON, CSV, Excel, and other supported formats.
- **Automation-ready:** Run on demand, schedule recurring searches, or retrieve data through the Apify API.

### Find potentially undervalued vehicles

The Actor can help surface **potential deals** by comparing an advertised vehicle price with pricing information available from Cars.com.

#### Illustrative example

| Metric | Value |
| --- | ---: |
| Asking price | $18,500 |
| Average price | $21,000 |
| Estimated profit | $2,500 |
| Estimated profit percentage | 13.51% |

```text
Estimated profit = Average price - Asking price
                 = $21,000 - $18,500 = $2,500

Estimated profit percentage = (Estimated profit / Asking price) × 100
                            = ($2,500 / $18,500) × 100 = 13.51%
```

*This is an illustrative calculation, not an actual scraped listing or a promise of profit.* The Actor's pricing fields depend on the data exposed by Cars.com. If the relevant price range is unavailable, the associated pricing estimates may be empty. Estimated profit is a **price difference**, not a verified resale margin: it does not account for taxes, fees, transportation, repairs, financing, or selling costs. Verify vehicle condition and market value independently.

### Quick start

1. Open [Cars.com vehicle search](https://www.cars.com/shopping/) and select your filters.
2. Copy the URL from your browser's address bar.
3. Open [Voyn Cars.com Scraper](https://apify.com/voyn/cars-scraper) and click **Try for free**.
4. Add one or more URLs in the Actor's **Input** tab, then choose the result limit and other available options.
5. Click **Start**. Once the run finishes, open **Dataset** to inspect or export the vehicle records.

**Free-user limit:** Free Apify users can extract up to **5 results per run**. Check the Actor's [Pricing tab](https://apify.com/voyn/cars-scraper) for current rates and conditions.

### Supported Cars.com URLs and filters

| Input | Example / description |
| --- | --- |
| Search-results URL | `https://www.cars.com/shopping/results/?stock_type=used&maximum_distance=all&sort=listed_at_desc` |
| Individual vehicle URL | `https://www.cars.com/vehicledetail/910d58bd-f609-4cbe-8a53-72384e9c6242/` |
| Multiple URLs | Add multiple Cars.com searches or vehicle pages in one run |
| Make and model | Choose the brands and models on Cars.com before copying the URL |
| Year and price | Filter by model year and asking-price range |
| Mileage and location | Apply odometer, ZIP code, and distance filters |
| Seller type | Use Cars.com's dealer/private-seller filters when available |
| Other filters | Reuse supported Cars.com filters such as body style and sorting |

The exact filters available are controlled by Cars.com and may change. Non-Cars.com URLs are not supported.

### Input settings

The Actor's **Input** tab is the source of truth for current parameter names, defaults, and available options.

| Setting | What it does |
| --- | --- |
| Cars.com URLs | One or more search-result or vehicle-detail URLs |
| Maximum results | Limits the number of vehicle records to collect |
| Scraping mode | Choose a supported listing/detail extraction mode, where available |
| Proxy configuration | Configure proxy behavior using the options exposed by the Actor |

For API integrations, copy the **exact JSON property names** from the live Input tab rather than assuming that the labels above are API keys.

### What data can you extract?

Each available vehicle record can include the following fields:

| Category | Output fields |
| --- | --- |
| Listing and identifiers | `list_url`, `record_url`, `name`, `vin`, `stock_number` |
| Vehicle details | `year`, `make`, `model`, `trim`, `type`, `body`, `description` |
| Pricing | `price`, `average_price`, `profit_estimate`, `profit_estimate_percentage`, `price_history` |
| Mechanical specifications | `mileage`, `engine`, `cylinders`, `doors`, `drivetrain`, `fuel`, `transmission` |
| Appearance and equipment | `exterior_color`, `interior_color`, `features`, `images` |

**Field availability varies by listing.** Missing attributes and unsupported pricing insights may be empty or absent. Do not assume every record contains every field.

### Example output (JSON)

The following **illustrative, shortened record** demonstrates the field names and data types; it is not a verified live Cars.com listing.

```json
{

  "list_url": ["https://www.cars.com/shopping/results/?stock_type=used"],
  "record_url": "https://www.cars.com/vehicledetail/910d58bd-f609-4cbe-8a53-72384e9c6242/",
  "name": "2015 Hyundai Sonata Limited",
  "year": "2015",
  "make": "Hyundai",
  "model": "Sonata",
  "trim": "Limited",
  "type": "Used",
  "price": "12995",
  "mileage": "116883",
  "vin": "5NPE34AF1FH195268",
  "body": "Sedan",
  "drivetrain": "Front-wheel Drive",
  "fuel": "Gasoline",
  "transmission": "6-SPEED A/T",
  "exterior_color": "BLUE",
  "interior_color": "Gray",
  "features": ["Backup Camera", "Blind Spot Monitor", "Bluetooth"],
  "images": ["https://platform.cstatic-images.com/xlarge/in/v2/b25160d0-b562-4cca-a2c8-1e7c94dd7dd6/82918e26-6c50-4cdf-86f9-fd5670041a19/zeKVAitzIclgVX5di4pZSLpRnnE.jpg"],
  "average_price": 13600,
  "profit_estimate": 605,
  "profit_estimate_percentage": 4.655636783378222,
  "price_history": [{"date": "02/28/26", "change": "Listed", "price": 12995}]

}
```

The example deliberately uses placeholder identity values and empty media/history arrays. For production documentation, replace it with a **recent, verified Actor dataset record**, redacting personal information if necessary. In the current published example, `year`, `price`, and `mileage` are strings while pricing estimates are numeric; normalize types in your downstream applications as needed.

### Who uses this scraper?

| Audience | Use case |
| --- | --- |
| Used-car dealers | Research competitor inventory, prices, and available vehicle specifications |
| Car flippers and resellers | Shortlist vehicles with potentially attractive asking prices |
| Car buyers | Compare cars by VIN, mileage, equipment, and available pricing estimates |
| Automotive analysts | Build datasets to study listings across models, years, and locations |
| Developers and AI builders | Feed structured vehicle records into search tools, dashboards, or applications |
| Inventory teams | Re-run saved searches and compare snapshots over time |

### Export data and automate with the Apify API

After a successful run, open **Dataset** in Apify Console to download records as JSON, CSV, Excel, or another supported format.

For repeatable workflows, you can:

- **Schedule** the Actor to run a saved Cars.com search periodically.
- **Retrieve** its dataset through the [Apify API](https://docs.apify.com/api/v2).
- **Integrate** the results with your own backend, database, dashboard, or analytics pipeline.
- **Compare** datasets from different runs to detect listing or asking-price changes.

The Actor is an independent scraper, **not an official Cars.com API**.

### Frequently asked questions

#### Can I scrape a single Cars.com vehicle?

Yes. Paste an individual `cars.com/vehicledetail/...` URL into the Actor.

#### Can I scrape multiple searches in one run?

Yes. Add multiple supported Cars.com URLs to the input and set your maximum result count.

#### Can I filter by make, model, year, price, or ZIP code?

Yes. Apply the filters on Cars.com, then copy the resulting URL into the Actor. The available filter options depend on Cars.com.

#### Can I collect private-seller listings?

Use the private-seller filter on Cars.com when available, then supply that filtered search URL.

#### Does the Actor always calculate estimated profit?

No. It depends on Cars.com exposing the necessary pricing data for the listing. If the data is missing, pricing estimate fields may be empty.

#### Is estimated profit the amount I will earn when reselling a car?

No. It is an indicative comparison between an asking price and an available pricing estimate, before real-world costs and market risks.

#### Does it include vehicle photos and price history?

The Actor can extract available image URLs and price-history information. Coverage depends on the individual listing and the source data.

#### Can I export to Excel or CSV?

Yes. Use the dataset export options in Apify Console.

#### Why did I get fewer vehicles than expected?

Check your maximum-results setting, Cars.com search filters, the number of available listings, and the Actor's run logs. Free Apify users are limited to 5 results per run.

#### Can I automate regular vehicle searches?

Yes. Use Apify scheduling and the API to run saved searches and collect datasets over time.

### Troubleshooting and limitations

- **Missing fields:** Not every Cars.com listing provides all vehicle attributes.
- **Missing estimates:** Average price, profit estimates, and history require suitable source data.
- **Incomplete runs:** Listings may disappear, pages may change, or Cars.com may restrict automated access.
- **Unexpected values:** Verify important VIN, price, mileage, and history details against the source listing before making purchasing decisions.
- **Source changes:** Cars.com may change its website structure or filtering behavior, which can affect scraping.

Use the Actor responsibly and comply with applicable laws, privacy obligations, and Cars.com's terms.

### Support and feature requests

Need a missing field, a new output format, or help with a specific URL? Open an issue on the [Cars.com Scraper Apify Store page](https://apify.com/voyn/cars-scraper/issues). Include the affected Cars.com URL, relevant field, and Apify run ID where possible. Never include passwords or other secrets.

**Ready to collect vehicle data?** [Try Voyn Cars.com Scraper](https://apify.com/voyn/cars-scraper).

# Actor input Schema

## `carscom_link` (type: `array`):

Cars.com search page links that contains cars you want to be scraped.

## `max_results` (type: `integer`):

Maximum number of results

## Actor input object example

```json
{
  "carscom_link": [
    "https://www.cars.com/shopping/results/?zip=27701&maximum_distance=30&sort=best_match_desc"
  ],
  "max_results": 2
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped Cars.com vehicle records.

# 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 = {
    "carscom_link": [
        "https://www.cars.com/shopping/results/?zip=27701&maximum_distance=30&sort=best_match_desc"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("voyn/cars-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 = { "carscom_link": ["https://www.cars.com/shopping/results/?zip=27701&maximum_distance=30&sort=best_match_desc"] }

# Run the Actor and wait for it to finish
run = client.actor("voyn/cars-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 '{
  "carscom_link": [
    "https://www.cars.com/shopping/results/?zip=27701&maximum_distance=30&sort=best_match_desc"
  ]
}' |
apify call voyn/cars-scraper --silent --output-dataset

```

## MCP server setup

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