# Carfax Vehicle Scraper 🚗 (`shahidirfan/carfax-vehicle-scraper`) Actor

Extract used car listings from CARFAX with vehicle prices, makes, models, years, mileage, VINs, dealer details, locations, images, and listing URLs. Ideal for used car market research, vehicle price tracking, dealership analysis, inventory monitoring, and automotive datasets.

- **URL**: https://apify.com/shahidirfan/carfax-vehicle-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 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

### What does Carfax Used Cars Scraper do?

Carfax Used Cars Scraper collects used vehicle listings from Carfax.com and saves them as a clean, structured dataset. Give it a Carfax search URL, a make and model, or a set of filters such as year, price, mileage, and ZIP code, and it returns vehicle details including price, mileage, VIN, engine, transmission, drive type, dealer information, and vehicle history indicators. It is built for used car market research, inventory monitoring, price comparison, and automotive data pipelines.

### Why use Carfax Used Cars Scraper?

- **Structured vehicle data** - Turn Carfax search results into ready-to-use records instead of copying listings by hand.
- **Flexible search** - Start from any Carfax search URL, or search by make, model, location, and filters.
- **Rich, decision-ready fields** - Capture pricing, mileage, dealer details, colors, specs, images, and history flags in one run.
- **Fast and reliable** - Results are saved in batches as they are found, and the Actor manages retries and recovery on its own.
- **Automation ready** - Export to JSON, CSV, Excel, or XML, or send results to Google Sheets, webhooks, Make, Zapier, or your own API.
- **Schedule friendly** - Run on demand or on a schedule to keep a fresh picture of available inventory.

### What data can you extract from Carfax?

| Field | Description |
|-------|-------------|
| `title` | Full vehicle title, such as 2024 Ford F-150 XLT |
| `price` | Listed price in USD |
| `list_price` | Original or list price when published |
| `one_price` | One-price value or price comparison when shown |
| `mileage` | Odometer reading |
| `vin` | Vehicle Identification Number |
| `year` | Model year |
| `make` | Vehicle make |
| `model` | Vehicle model |
| `trim` | Trim level |
| `body_type` | Body style, such as Pickup or SUV |
| `vehicle_condition` | Condition label, such as Used |
| `exterior_color` | Exterior color |
| `interior_color` | Interior color |
| `engine` | Engine description |
| `transmission` | Transmission type |
| `drivetype` | Drive configuration, such as FWD, AWD, or 4WD |
| `mpg_city` | Estimated city fuel economy |
| `mpg_highway` | Estimated highway fuel economy |
| `dealer_name` | Selling dealer name |
| `dealer_city` | Dealer city |
| `dealer_state` | Dealer state |
| `dealer_zip` | Dealer ZIP code |
| `dealer_phone` | Dealer phone number |
| `distance_to_dealer` | Approximate distance when available |
| `badge` | Deal or value badge, such as Great Value |
| `one_owner` | One-owner history indicator |
| `no_accidents` | No-accident history indicator |
| `service_records` | Service history indicator |
| `image_url` | Primary listing image URL |
| `images` | Additional listing image URLs |
| `monthly_payment_estimate` | Estimated monthly financing values |
| `price_history` | Historical price change entries |
| `top_options` | Highlighted features and options |
| `other_options` | Additional features and options |
| `url` | Direct link to the vehicle listing |
| `source` | Source website, `carfax.com` |
| `scraped_at` | ISO timestamp for when the record was collected |

### How to use Carfax Used Cars Scraper

1. Open the Actor on Apify Store.
2. Enter a Carfax search URL, or provide a make and model with optional filters.
3. Set the maximum number of vehicles and, if needed, the page limit.
4. Run the Actor.
5. Download the dataset, or connect it to a spreadsheet, webhook, or workflow.

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `startUrl` | String | No | `https://www.carfax.com/Used-Pickups_bt6` | A Carfax search URL. A custom URL takes priority over filters |
| `location` | String | No | - | ZIP code or location to search near; used with make and model |
| `make` | String | No | - | Vehicle make, such as Ford or Toyota |
| `model` | String | No | - | Vehicle model, such as F-150 or Camry |
| `year_min` | Integer | No | - | Minimum model year |
| `year_max` | Integer | No | - | Maximum model year |
| `price_min` | Integer | No | - | Minimum price in USD |
| `price_max` | Integer | No | - | Maximum price in USD |
| `mileage_max` | Integer | No | - | Maximum mileage |
| `results_wanted` | Integer | No | `20` | Maximum number of vehicles to save |
| `max_pages` | Integer | No | `10` | Safety cap on the number of result pages to visit |
| `proxyConfiguration` | Object | No | Disabled | Optional Apify Proxy settings. Unblocker is recommended when enabled |

### Usage Examples

#### Collect vehicles from a search URL

Collect listings from a Carfax category page:

```json
{
  "startUrl": "https://www.carfax.com/Used-Pickups_bt6",
  "results_wanted": 50
}
```

#### Search by make and model

Collect Ford F-150 listings with a model year and price range:

```json
{
  "make": "Ford",
  "model": "F-150",
  "year_min": 2020,
  "year_max": 2024,
  "price_max": 50000,
  "results_wanted": 100
}
```

#### Search by location and filters

Collect Toyota vehicles near a ZIP code within a price and mileage range:

```json
{
  "make": "Toyota",
  "location": "90210",
  "price_min": 20000,
  "price_max": 35000,
  "mileage_max": 50000,
  "results_wanted": 75
}
```

#### Use a proxy for larger or repeated runs

Enable Apify Proxy and choose the Unblocker group when you need the highest reliability:

```json
{
  "startUrl": "https://www.carfax.com/Used-Pickups_bt6",
  "results_wanted": 200,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["UNBLOCKER"]
  }
}
```

### Sample Output

```json
{
  "vin": "1FTFW1E87NFA12345",
  "title": "2024 Ford F-150 XLT",
  "year": 2024,
  "make": "Ford",
  "model": "F-150",
  "trim": "XLT",
  "body_type": "Pickup",
  "vehicle_condition": "USED",
  "price": 45990,
  "list_price": 46490,
  "currency": "USD",
  "mileage": 12500,
  "mileage_label": "12,500",
  "badge": "GREAT",
  "stock_number": "N6T388A",
  "image_url": "https://carfax-img.vast.com/carfax/.../1/344x258",
  "url": "https://www.carfax.com/vehicle/1FTFW1E87NFA12345",
  "dealer_name": "Example Motors",
  "dealer_city": "Columbus",
  "dealer_state": "GA",
  "dealer_zip": "31901",
  "dealer_phone": "7065550101",
  "distance_to_dealer": 0,
  "exterior_color": "Blue",
  "interior_color": "Black",
  "engine": "6 Cyl",
  "transmission": "Automatic",
  "drivetype": "Four-Wheel Drive",
  "mpg_city": 18,
  "mpg_highway": 24,
  "one_owner": true,
  "no_accidents": true,
  "service_records": true,
  "top_options": ["Tow Package", "Heated Seats"],
  "scraped_at": "2026-01-21T13:30:00.000Z",
  "source": "carfax.com"
}
```

### Tips for Best Results

- **Start with the defaults** - The default result limit is a quick way to confirm the Actor works before larger runs.
- **Use a search URL for exact results** - Pre-set complex filters on Carfax.com, then use the resulting URL as `startUrl`.
- **Use make and model for broad searches** - Filter searches return many results quickly and page through automatically.
- **Keep the proxy disabled until you need it** - Most runs finish without a proxy; enable Apify Proxy with the Unblocker group if you run into blocks or need greater reliability.
- **Raise limits for bigger jobs** - Increase `results_wanted` and, if needed, `max_pages` to collect more vehicles per run.
- **Check a few records first** - Some fields are empty when Carfax does not publish them, so review several results before assuming a problem.

### Integrations

- **Google Sheets** - Send vehicle listings to a shared spreadsheet for analysis.
- **Webhooks** - Trigger downstream systems when a run finishes.
- **Make and Zapier** - Connect results to no-code automations.
- **API** - Read datasets programmatically from your own tools.
- **Exports** - Download results as JSON, CSV, Excel, XML, and other supported formats.

### Frequently Asked Questions

#### How many vehicles can I collect in one run?

You can collect thousands by raising `results_wanted`. For very large jobs, split the work across multiple runs or schedules to stay within proxy and rate limits.

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

Yes. Apify datasets can be downloaded as CSV, Excel, JSON, XML, and other supported formats, and connected to Google Sheets or an API.

#### Can I search by make, model, and location?

Yes. Provide `make`, `model`, and `location`, and optionally add year, price, and mileage filters. A custom `startUrl` takes priority over filters.

#### Do I need a proxy?

No. No proxy is used by default, and most searches complete without one. If requests are blocked, enable Apify Proxy with the Unblocker group for the highest reliability.

#### Can I run this Actor on a schedule?

Yes. Use Apify schedules to run the Actor hourly, daily, weekly, or at another interval to keep your dataset current.

#### Why are some fields empty?

Some fields are only present when Carfax publishes that information, such as dealer phone numbers, financing estimates, or history flags. Check multiple records before assuming a problem.

#### Is it legal to scrape Carfax?

This Actor is intended for collecting publicly available listing information. You are responsible for complying with Carfax terms of service, applicable laws, and privacy requirements.

### Support

For issues, missing fields, or feature requests, use the Issues tab on the Actor page and include your input and a short description of what you expected.

### Legal Notice

This Actor is provided for legitimate collection of publicly available information. Users are responsible for ensuring their use complies with Carfax terms of service and all applicable laws.

# Actor input Schema

## `startUrl` (type: `string`):

Carfax search URL. A custom URL overrides filters. When the URL equals the default example, supplied filters take priority.

## `location` (type: `string`):

ZIP code or location to search near. Used with make/model filters.

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

Vehicle make (e.g., 'Ford', 'Toyota', 'Chevrolet').

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

Vehicle model (e.g., 'F-150', 'Camry', 'Silverado').

## `year_min` (type: `integer`):

Minimum model year filter.

## `year_max` (type: `integer`):

Maximum model year filter.

## `price_min` (type: `integer`):

Minimum price filter in USD.

## `price_max` (type: `integer`):

Maximum price filter in USD.

## `mileage_max` (type: `integer`):

Maximum mileage filter.

## `results_wanted` (type: `integer`):

The maximum number of vehicles to collect.

## `max_pages` (type: `integer`):

A safety cap on the number of search result pages to visit.

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

No proxy is used by default. Enable Apify Proxy when you need it; Unblocker is the most reliable option and is required for browser-based recovery.

## Actor input object example

```json
{
  "startUrl": "https://www.carfax.com/Used-Pickups_bt6",
  "results_wanted": 20,
  "max_pages": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "startUrl": "https://www.carfax.com/Used-Pickups_bt6"
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/carfax-vehicle-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 = { "startUrl": "https://www.carfax.com/Used-Pickups_bt6" }

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/carfax-vehicle-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 '{
  "startUrl": "https://www.carfax.com/Used-Pickups_bt6"
}' |
apify call shahidirfan/carfax-vehicle-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,shahidirfan/carfax-vehicle-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/C7gbZij2t7hdhrGiP/builds/XdzRcUxnmPiZebsYk/openapi.json
