# 🚘Cargurus Car Data Scraper US 🇺🇸 (`jordan-byte/cargurus-car-data-scraper-us`) Actor

the largest used and new car marketplace in the US. Just drop in a search URL (any zip code, make, model, price range, or filter combination) and get back clean, structured data: price, mileage, VIN, dealer contact info, images,vehicle history, and more, ready to download into your own systems.

- **URL**: https://apify.com/jordan-byte/cargurus-car-data-scraper-us.md
- **Developed by:** [Jordan Byte](https://apify.com/jordan-byte) (community)
- **Categories:** Travel, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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.

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

🚗 Scrape **car listings from [CarGurus](https://www.cargurus.com)** — the largest used and new car marketplace in the US — without writing a single line of code. Just drop in a search URL (any zip code, make, model, price range, or filter combination) and get back clean, structured data: price, mileage, VIN, dealer contact info, images, full vehicle history, and more, ready to download or pipe into your own systems.

Built to run reliably on the [Apify platform](https://apify.com), so you get on-demand or scheduled runs, instant API access, proxy rotation, and monitoring — all without managing any infrastructure yourself.

### 🔍 Why use the CarGurus Car Data Scraper?

Whether you're a dealer, analyst, or developer, this Actor turns CarGurus' constantly-changing inventory into a dataset you can actually work with:

- 📊 **Market research** — track pricing trends, deal ratings, and days-on-market across makes, models, and regions.
- 🏷️ **Price monitoring** — watch how specific listings are priced and re-priced over time via full price-history tracking.
- 🚙 **Dealer inventory intelligence** — see what competitors are stocking, at what price, and how long it sits.
- 🤖 **Lead generation & aggregation** — feed a clean, structured car catalog into your own site, app, or CRM.
- 📈 **Data science & ML** — build pricing models, valuation tools, or demand forecasts from real, structured listing data.

### ⚡ How to use the CarGurus Car Data Scraper

1. Click **Try for free** (or **Run**) to open the Actor.
2. Paste in one or more CarGurus search URLs under **Search or listing URLs** — for example, copy the URL straight from your browser after searching by zip code, make, model, price, or any other filter on cargurus.com.
3. Set **Max listings per search URL** to however many cars you want per search (the Actor pages through results automatically until it hits this number).
4. Leave **Proxy configuration** and **Cache** on their defaults unless you have a specific reason to change them (see below).
5. Click **Start** and watch results land in the **Dataset** tab in real time.
6. Export your data as JSON, CSV, Excel, HTML, or connect it directly to Zapier, Make, Google Sheets, or your own app via the [Apify API](https://docs.apify.com/api/v2).

No coding, proxies, or anti-blocking setup required — it's all handled for you.

### 🎛️ Input

Configure the Actor from the **Input** tab in Apify Console, or pass JSON via the API. All fields have sensible defaults, so you can start with just a search URL.

| Field                | Type    | Description                                                                                                                                            |
| -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `startUrls`          | array   | CarGurus search or listing URLs to scrape. Any filters you've applied on the site (zip, distance, make, model, price range, etc.) are preserved.       |
| `maxItems`           | integer | Max number of listings to collect **per start URL**. Default: `5`.                                                                                     |
| `useCache`           | boolean | When enabled, remembers listing IDs across runs and skips ones already scraped — saves proxy usage and time on repeat/scheduled runs. Default: `true`. |
| `proxyConfiguration` | object  | Proxy setup. Apify Proxy is enabled by default and required for reliable results, since CarGurus blocks non-proxied traffic.                           |

Example input:

```json
{
    "startUrls": [{ "url": "https://www.cargurus.com/search?zip=94102" }],
    "maxItems": 20,
    "useCache": true,
    "proxyConfiguration": { "useApifyProxy": true }
}
```

### 📦 Output

Every scraped car is saved as one clean, structured item in the dataset — no HTML soup, no half-filled fields. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Example output item:

```json
{
    "listingId": 452895165,
    "vin": "1HGCY2F56RA087688",
    "title": "2024 Honda Accord Hybrid Sport FWD",
    "year": 2024,
    "make": "Honda",
    "model": "Accord Hybrid",
    "trim": "Sport FWD",
    "bodyType": "Sedan",
    "condition": "Used",
    "price": 27528,
    "priceDisplay": "$27,528",
    "dealRating": "GOOD_PRICE",
    "mileage": 21007,
    "mileageDisplay": "21,007",
    "exteriorColor": "Still Night",
    "interiorColor": "Black",
    "engine": "204 hp 2L I4 Hybrid",
    "transmission": "Continuously Variable Transmission",
    "drivetrain": "Front-Wheel Drive",
    "fuelType": "Hybrid",
    "mpgCombined": 43.75,
    "options": ["Sunroof/Moonroof", "Adaptive Cruise Control", "Backup Camera"],
    "daysOnMarket": 32,
    "imageUrl": "https://static.cargurus.com/images/forsale/.../1024x768.jpeg",
    "imageCount": 27,
    "dealerName": "Example Honda",
    "dealerPhone": "(707) 555-0100",
    "dealerRating": 4.5,
    "location": "Santa Rosa, CA",
    "distance": "46 mi",
    "listingUrl": "https://www.cargurus.com/details/452895165",
    "scrapedAt": "2026-08-10T04:30:09.841Z"
}
```

#### 🗂️ Main data fields

| Field                                                                                                  | Description                                                                         |
| ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------- |
| `title`, `year`, `make`, `model`, `trim`, `bodyType`                                                   | Core vehicle identity                                                               |
| `vin`                                                                                                  | Vehicle Identification Number                                                       |
| `price`, `priceDisplay`, `dealRating`, `priceHistory`                                                  | Current price, formatted price, CarGurus deal rating, and full price-change history |
| `mileage`, `mileageDisplay`                                                                            | Odometer reading                                                                    |
| `exteriorColor`, `interiorColor`                                                                       | Color details                                                                       |
| `engine`, `transmission`, `drivetrain`, `horsepower`, `fuelType`, `mpgCity`/`mpgHighway`/`mpgCombined` | Powertrain & fuel economy                                                           |
| `options`, `safetyFeatures`, `safetyRating`                                                            | Equipment and safety data                                                           |
| `vehicleHistory`                                                                                       | Accident, title, and ownership history flags                                        |
| `imageUrl`, `images`, `imageCount`                                                                     | Photos                                                                              |
| `dealerName`, `dealerPhone`, `dealerRating`, `sellerType`, `location`, `distance`                      | Seller/dealer info                                                                  |
| `listingUrl`, `scrapedAt`                                                                              | Source link and scrape timestamp                                                    |

### 💰 How much does it cost to scrape CarGurus?

This Actor is built on lightweight HTTP requests rather than a full browser, so **compute cost is minimal** — most runs finish in well under a minute for the default 5-listing sample. The main cost driver is Apify Proxy usage, which is required because CarGurus blocks non-proxied traffic.

To keep costs down on repeat runs (e.g. a daily schedule), leave **Skip previously scraped listings (cache)** enabled — it's the single biggest cost saver, since already-scraped listings are never fetched again. New Apify accounts also come with free monthly usage credits, which is plenty to try the Actor out risk-free.

### 🛠️ Tips for getting the best results

- Copy search URLs **directly from your browser** after applying filters on cargurus.com — make, model, price range, distance, and sort order all carry over automatically.
- Start with a small `maxItems` (like the default `5`) to confirm the results look right before scaling up to hundreds or thousands.
- Keep the cache **on** for scheduled/recurring runs so you only pay for genuinely new listings each time.
- Add multiple `startUrls` to cover several zip codes, makes, or search filters in a single run.

### ❓ FAQ

**Is this legal?** This Actor only collects publicly available listing data. You are responsible for ensuring your use complies with CarGurus' Terms of Service and applicable laws in your jurisdiction, especially for commercial use.

**Why do I need a proxy?** CarGurus actively blocks scraping traffic that doesn't come through a proxy. Apify Proxy is enabled by default so you don't need to configure anything.

**Can I scrape a single specific car?** Yes — paste a `/details/...` listing URL directly into `startUrls` alongside or instead of search URLs.

**The site's layout changed and results look off — now what?** Please open an issue in the Actor's **Issues** tab with an example URL. Selector/site changes are usually a quick fix.

**Need something custom?** Extra fields, different output formats, or a tailored version of this scraper for your workflow — reach out via the Issues tab or Apify's contact options and a custom solution can be arranged.

# Actor input Schema

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

CarGurus URLs to scrape. Paste any search results URL (e.g. https://www.cargurus.com/search?zip=94102) — filters like make, model, price range, and distance are preserved automatically. You can also paste a direct listing URL (/details/...) to scrape a single car.

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

Maximum number of car listings to scrape for each search URL above. The Actor stops paginating a search once this many listings have been collected.

## `useCache` (type: `boolean`):

When enabled, the Actor remembers listing IDs across runs and skips ones it has already scraped, saving proxy usage and run time on repeat runs. Turn this off to force a full, fresh re-scrape of every listing every time.

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

CarGurus actively blocks requests that don't come through a proxy. Apify Proxy (datacenter) is enabled by default and is required for reliable results.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.cargurus.com/search?zip=94102"
    }
  ],
  "maxItems": 5,
  "useCache": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `listings` (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 = {
    "startUrls": [
        {
            "url": "https://www.cargurus.com/search?zip=94102"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("jordan-byte/cargurus-car-data-scraper-us").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 = {
    "startUrls": [{ "url": "https://www.cargurus.com/search?zip=94102" }],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("jordan-byte/cargurus-car-data-scraper-us").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 '{
  "startUrls": [
    {
      "url": "https://www.cargurus.com/search?zip=94102"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call jordan-byte/cargurus-car-data-scraper-us --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jordan-byte/cargurus-car-data-scraper-us"
        }
    }
}

```

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/MVMuR2CshCtdlF8QN/builds/b2mdbGK90ACUe9z5t/openapi.json
