# Carsforsale Cars Search Scraper (`stealth_mode/carsforsale-cars-search-scraper`) Actor

Scrape Carsforsale.com search results and extract structured vehicle data including make, model, VIN, mileage, fuel type, pricing offers, and dealer info — perfect for automotive analysts, dealerships, and price comparison platforms.

- **URL**: https://apify.com/stealth\_mode/carsforsale-cars-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Carsforsale.com Scraper: Extract Used & New Car Listings at Scale

---

### What Is Carsforsale.com?

Carsforsale.com is a major U.S. automotive marketplace connecting buyers with thousands of new and used vehicle listings from dealers and private sellers nationwide. Collecting this data manually is impractical at scale. The **Carsforsale.com Cars Search Scraper** automates extraction from search result pages, turning listings into clean, structured records ready for analysis or integration.

---

### Overview

The **Carsforsale.com Scraper** targets search result URLs and extracts detailed vehicle data for each listing found. It is built for:

- **Automotive analysts** tracking market pricing trends by brand, model, or region
- **Dealerships** monitoring competitor inventory and pricing
- **Developers** building car comparison or aggregator tools
- **Researchers** studying used vehicle market dynamics

Configurable item limits and fault-tolerant URL handling make it suitable for both small targeted pulls and large-scale data collection.

---

### Input Format

The scraper accepts a JSON configuration object with three fields:

```json
{
  "urls": [
    "https://www.carsforsale.com/search?radius=100&pagenumber=2&pageresultsize=24&pricedvehiclesonly=false&filterimageless=false&hiderepairable=false&orderby=Relevance&orderdirection=Desc&"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 50
}
````

| Field | Type | Description |
|---|---|---|
| `urls` | `array` | One or more Carsforsale.com search result URLs to scrape. Paste URLs individually or use bulk edit. The URL structure supports filters like radius, page number, sort order, and result size — configure these directly in the search URL before pasting. |
| `ignore_url_failures` | `boolean` | If `true`, the scraper continues running when a URL fails instead of stopping the entire run. Recommended for bulk jobs. Default: `true`. |
| `max_items_per_url` | `integer` | Maximum number of vehicle listings to collect per URL. Useful for limiting output on large result pages. Default: `20`. |

> **Tip:** Use Carsforsale.com's search filters (make, model, year, radius, price) to build targeted URLs before running the scraper. Adjust `pageresultsize` and `pagenumber` in the URL to paginate through results.

***

### Output Format

#### Sample record (abbreviated):

```json
{
{
  "id": "https://www.carsforsale.com/vehicle/details/125217802",
  "item_condition": "https://schema.org/NewCondition",
  "image": "https://cdn05.carsforsale.com/008d3734c1ccb633e0b50831dd2cf172fd/480x360/2023-fisker-ocean-extreme-awd-4dr-suv.jpg",
  "name": "2023 Fisker Ocean AWD Extreme 4dr SUV",
  "description": "For additional and more complete details, please visit our website.We offer quality used cars at great prices and have been doing so proudly for many years.Don't hesitate to reach out to us with any type of questions. Whether...",
  "url": "https://www.carsforsale.com/vehicle/details/125217802",
  "brand": {
    "@type": "Brand",
    "name": "Fisker"
  },
  "model": "Ocean",
  "vehicle_model_date": "2023",
  "body_type": "SUV",
  "color": "Horizon Gray",
  "sku": "9051",
  "vehicle_identification_number": "VCF1EBU22PG007191",
  "mileage_from_odometer": {
    "@type": "QuantitativeValue",
    "name": "mileage",
    "value": "155",
    "unit_code": "SMI"
  },
  "vehicle_engine": {
    "@type": "EngineSpecification",
    "name": "Electric 550hp 543ft. lbs.",
    "engine_type": "Electric 550hp 543ft. lbs.",
    "fuel_type": "Electric"
  },
  "fuel_type": "Electric",
  "fuel_efficiency": {
    "@type": "QuantitativeValue",
    "name": "fuel efficiency",
    "value": "99/84 mpg",
    "unit_text": "mpg"
  },
  "offers": {
    "@type": "Offer",
    "price_currency": "USD",
    "item_condition": "https://schema.org/NewCondition",
    "availability": "https://schema.org/InStock",
    "price": "27850",
    "seller": {
      "@id": "https://www.carsforsale.com/used-car-dealer/integrity-auto-sales-sacramento-ca-d367421"
    }
  },
  "dealer": {
    "@id": "https://www.carsforsale.com/used-car-dealer/integrity-auto-sales-sacramento-ca-d367421",
    "@type": "AutoDealer",
    "name": "Integrity Auto Sales",
    "currencies_accepted": "USD",
    "address": {
      "@type": "PostalAddress",
      "street_address": "3655 Florin Rd.",
      "address_locality": "Sacramento",
      "address_region": "CA",
      "postal_code": "95823",
      "address_country": "USA"
    },
    "geo": {
      "@type": "GeoCoordinates",
      "latitude": "38.49636",
      "longitude": "-121.4659"
    },
    "telephone": "+19168317564",
    "url": "https://www.carsforsale.com/used-car-dealer/integrity-auto-sales-sacramento-ca-d367421"
  }
}
}
```

Each scraped listing returns up to 19 fields:

#### Identification

| Field | Meaning |
|---|---|
| `ID` | Internal unique identifier for the listing |
| `SKU` | Dealer or platform stock-keeping unit number |
| `Vehicle Identification Number` | 17-character VIN — uniquely identifies the physical vehicle |
| `URL` | Direct link to the vehicle's detail page |

#### Vehicle Specs

| Field | Meaning |
|---|---|
| `Name` | Full listing title (e.g., "2019 Ford F-150 XLT") |
| `Brand` | Vehicle manufacturer (e.g., Ford, Toyota, Honda) |
| `Model` | Specific model name (e.g., F-150, Camry) |
| `Vehicle Model Date` | Model year of the vehicle |
| `Body Type` | Vehicle body style (e.g., Sedan, SUV, Truck, Coupe) |
| `Color` | Exterior color as listed |
| `Vehicle Engine` | Engine specification (e.g., 2.5L 4-Cylinder) |
| `Fuel Type` | Fuel category (e.g., Gasoline, Electric, Hybrid, Diesel) |
| `Fuel Efficiency` | MPG or equivalent efficiency rating |
| `Mileage From Odometer` | Current odometer reading in miles |

#### Condition & Media

| Field | Meaning |
|---|---|
| `Item Condition` | New or Used designation |
| `Image` | Primary listing image URL |
| `Description` | Full vehicle description from the listing |

#### Pricing & Seller

| Field | Meaning |
|---|---|
| `Offers` | Pricing data including listed sale price |
| `Dealer` | Dealer name, location, and contact metadata |

***

### How to Use

1. **Build your search URL** — Go to Carsforsale.com, apply filters (make, model, year, radius, price range), then copy the resulting search URL.
2. **Configure input** — Paste the URL(s) into the `urls` array. Set `max_items_per_url` to control volume per page.
3. **Set fault tolerance** — Keep `ignore_url_failures: true` for multi-URL runs.
4. **Run and export** — Start the scraper and download results as JSON, CSV, or Excel.

**Common issues:**

- Ensure URLs point to **search result pages**, not individual vehicle detail pages.
- If results seem limited, check `pageresultsize` in the URL and increase `max_items_per_url` accordingly.
- For full pagination, create separate URLs for each `pagenumber` value and add them all to the `urls` array.

***

### Use Cases & Business Value

- **Price benchmarking:** Compare market prices across makes, models, and regions
- **Inventory intelligence:** Track what competitors have in stock and at what price points
- **Lead generation:** Identify underpriced vehicles or market gaps
- **Data pipelines:** Feed automotive data into BI dashboards, valuation models, or aggregator sites

The Carsforsale.com Scraper replaces hours of manual browsing with a single automated run, producing consistent, analysis-ready vehicle data.

***

### Conclusion

The **Carsforsale.com Cars Search Scraper** delivers structured, detailed vehicle listings from one of the U.S.'s largest automotive marketplaces. With 19 output fields covering specs, pricing, VIN, and dealer info, it provides everything needed for market research, competitive analysis, or product development. Run it once and get clean data — no browsing required.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the Cars list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## `proxy` (type: `object`):

Select proxies to be used by your scraper.

## Actor input object example

```json
{
  "urls": [
    "https://www.carsforsale.com/search?radius=100&pagenumber=2&pageresultsize=24&pricedvehiclesonly=false&filterimageless=false&hiderepairable=false&orderby=Relevance&orderdirection=Desc&"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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 = {
    "urls": [
        "https://www.carsforsale.com/search?radius=100&pagenumber=2&pageresultsize=24&pricedvehiclesonly=false&filterimageless=false&hiderepairable=false&orderby=Relevance&orderdirection=Desc&"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/carsforsale-cars-search-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 = {
    "urls": ["https://www.carsforsale.com/search?radius=100&pagenumber=2&pageresultsize=24&pricedvehiclesonly=false&filterimageless=false&hiderepairable=false&orderby=Relevance&orderdirection=Desc&"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

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

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

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

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.carsforsale.com/search?radius=100&pagenumber=2&pageresultsize=24&pricedvehiclesonly=false&filterimageless=false&hiderepairable=false&orderby=Relevance&orderdirection=Desc&"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call stealth_mode/carsforsale-cars-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/carsforsale-cars-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Carsforsale Cars Search Scraper",
        "description": "Scrape Carsforsale.com search results and extract structured vehicle data including make, model, VIN, mileage, fuel type, pricing offers, and dealer info — perfect for automotive analysts, dealerships, and price comparison platforms.",
        "version": "0.0",
        "x-build-id": "qIqswIenoGls1og9w"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~carsforsale-cars-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-carsforsale-cars-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/stealth_mode~carsforsale-cars-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-carsforsale-cars-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/stealth_mode~carsforsale-cars-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-carsforsale-cars-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "title": "URLs of the Cars list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the Cars list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Select proxies to be used by your scraper."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
