# Cars.com Scraper with Contacts (`parsebird/cars-com-scraper`) Actor

Scrape Cars.com vehicle listings from any search or vehicle URL: price, mileage, VIN, trim, dealer, rating, location, photos, deal badges, and optional dealer phone numbers and vehicle history.

- **URL**: https://apify.com/parsebird/cars-com-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.69 / 1,000 vehicles

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 with Contacts

**Cars.com Scraper** extracts vehicle listings from [Cars.com](https://www.cars.com), one of the largest new and used car marketplaces in the United States. Paste any Cars.com search URL or vehicle URL and get the price, mileage, VIN, year, make, model, trim, dealer, rating, location, photos, deal badges, and optionally the **dealer's phone number** and **vehicle history**, as clean JSON, CSV, or Excel.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Use any Cars.com search with all its filters (make, model, ZIP, radius, price, year, mileage, body style, color, seller type) and get 50+ fields per vehicle, plus dealer phone numbers and accident, owner, and title history on demand.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
Apify Actor: parsebird/cars-com-scraper. Scrapes vehicle listings from Cars.com (US new and used car marketplace). Call via ApifyClient: client.actor("parsebird/cars-com-scraper").call(run_input={"startUrls": ["https://www.cars.com/shopping/results/?makes[]=toyota&models[]=toyota-rav4&maximum_distance=50&zip=60606&sort=best_match_desc"], "limit": 100, "get_contacts": true}). Inputs: startUrls (array of strings, Cars.com search result URLs /shopping/results/?... with any Cars.com filters, or vehicle URLs /vehicledetail/<id>/), limit (integer, vehicles per URL, default 100, 0 = no limit), get_contacts (boolean, adds the dealer phone number, default false), include_details (boolean, adds accident history, single owner, clean title, personal use, open recall, interior color, category and seller type, default false), proxyConfiguration (object, optional). Output: one record per vehicle with id, title, source_context {seed_id, seed_type, seed_value, page_index, position_on_page}, listing {id, url, location, distance_miles, delivery, attribution_type, sponsored_type}, vehicle {stock_type, year, make, model, trim, vin, mileage, mileage_numeric, body_style, fuel_type, drivetrain, exterior_color, certified_pre_owned, interior_color}, pricing {price, price_numeric, display_price, msrp, price_drop, monthly_payment_estimate}, seller {name, is_private_seller, zip, customer_id, rating, phone_number, phone_number_formatted, phone_type}, media {primary_image_url, image_count, images}, badges [{label, description, variant}], history {no_accidents, single_owner, clean_title, personal_use_only, open_recall}. Pricing: pay per vehicle, plus per dealer phone found. Full API spec: https://apify.com/parsebird/cars-com-scraper/api. Get your token: https://console.apify.com/settings/integrations.
```

### What is Cars.com Scraper?

**Cars.com Scraper** turns Cars.com listings into a structured dataset. Set up your search on Cars.com the way you normally would, copy the URL, and paste it into the Actor. Every filter in the URL is applied: make, model, trim, ZIP code and radius, price, year, mileage, body style, fuel type, drivetrain, color, deal rating, seller type, keyword, and sort order.

It works as a **Cars.com API alternative**: you don't need a Cars.com account, an API key, or a browser. Turn on **dealer contacts** to add the dealer's phone number to each vehicle, which makes it a simple **car dealer lead** source.

### What can Cars.com Scraper do?

- 🔎 **Any Cars.com search.** Paste search result URLs with any filters and sort order. Several URLs can run in one go, each with its own limit.
- 🚗 **Single vehicles.** Paste vehicle detail URLs to collect specific cars from a curated list.
- 📞 **Dealer phone numbers.** Add the dealer phone number Cars.com shows for each listing.
- 🧾 **Vehicle history.** Add accident history, single-owner, clean title, personal use, and open recall flags, plus interior color and seller type.
- 💰 **Pricing details.** Price, MSRP for new cars, recent price drop, and Cars.com's estimated monthly payment with its term, APR, and sales tax assumptions.
- 🏷️ **Deal badges.** Great Deal, Good Deal, Fair Deal, High Demand, award badges, and their explanations.
- 🖼️ **Photos.** Main photo, total photo count, and the photo gallery shown in search results.
- ♻️ **No duplicates.** Sponsored listings that repeat across pages or URLs are saved once.
- 📅 **Scheduling and monitoring.** Run daily with [Apify Schedules](https://docs.apify.com/platform/schedules) to track prices and new inventory.
- 🔌 **API and integrations.** Use the [Apify API](https://docs.apify.com/api/v2), or send vehicles to Google Sheets, Zapier, Make, Slack, or webhooks with [Apify integrations](https://docs.apify.com/platform/integrations). Export as JSON, CSV, Excel, XML, or HTML.

### What data can you extract from Cars.com?

| Field | Description |
|-------|-------------|
| `id` / `listing.url` | Cars.com listing ID and vehicle page |
| `title` | Listing title, like "Used 2025 Toyota RAV4 XLE" |
| `vehicle.year` / `make` / `model` / `trim` | Year, make, model, and trim |
| `vehicle.vin` | Vehicle identification number |
| `vehicle.stock_type` / `certified_pre_owned` | New or used, and certified pre-owned status |
| `vehicle.mileage_numeric` | Mileage |
| `vehicle.body_style` / `fuel_type` / `drivetrain` / `exterior_color` | Body style, fuel type, drivetrain, and exterior color |
| `pricing.price_numeric` / `display_price` / `msrp` | Price, price as shown, and MSRP (new cars) |
| `pricing.price_drop` | Recent price drop, as shown on Cars.com |
| `pricing.monthly_payment_estimate` | Cars.com's estimated monthly payment, with down payment, term, APR, and sales tax |
| `seller.name` / `rating` / `zip` / `customer_id` | Dealer name, dealer review rating, ZIP code, and Cars.com dealer ID |
| `seller.is_private_seller` | Whether the car is sold by a private seller |
| `seller.phone_number` / `phone_number_formatted` / `phone_type` | Dealer phone number (with **Get dealer phone numbers** on) |
| `listing.location` / `distance_miles` | City, state, and distance from the ZIP code in your search |
| `listing.delivery` | Home delivery offer, like "$399 delivery from Delaware, OH (263 mi)" |
| `listing.sponsored_type` / `attribution_type` | Sponsored placement type, as Cars.com labels it |
| `media.primary_image_url` / `image_count` / `images` | Main photo, number of photos, and photo URLs with alt text |
| `badges` | Deal and demand badges with descriptions |
| `history` | Accident, single owner, clean title, personal use, open recall, report source (with **Add vehicle history and details** on) |
| `vehicle.interior_color` / `vehicle.category` / `seller.type` | Interior color, vehicle category, and seller type (with details on) |
| `source_context` | Which input URL, page, and position each vehicle came from |

`images` holds the photos Cars.com shows in its search results (up to 6); `image_count` is the listing's total photo count. Fields are empty when the listing doesn't have them, for example price on "Not Priced" listings.

### How to scrape Cars.com

1. Go to [Cars.com](https://www.cars.com/shopping/), search for cars, and set your filters (make, model, ZIP, distance, price, and so on).
2. Copy the URL from your browser's address bar. It looks like `https://www.cars.com/shopping/results/?makes[]=toyota&...`.
3. Open [Cars.com Scraper](https://apify.com/parsebird/cars-com-scraper) on Apify Store and click **Try for free**.
4. Paste the URL into **Cars.com URLs**. Add more URLs or vehicle detail URLs if you like.
5. Set **Max vehicles per URL**.
6. Optionally turn on **Get dealer phone numbers** and **Add vehicle history and details**.
7. Click **Start**. When the run finishes, download the vehicles as JSON, CSV, Excel, XML, or HTML from the **Output** tab, or read them with the API.

### How much does it cost to scrape Cars.com?

Cars.com Scraper uses **pay-per-event** pricing. You pay for each vehicle saved, and for each dealer phone number found when **Get dealer phone numbers** is on. Compute and proxy costs are included in the event prices. **Add vehicle history and details** has no extra charge.

| Event | Free | Bronze | Silver | Gold |
|-------|------|--------|--------|------|
| `vehicle-listing` (per vehicle) | $0.00099 | $0.00089 | $0.00079 | $0.00069 |
| `dealer-contact` (per phone number) | $0.00059 | $0.00049 | $0.00039 | $0.00039 |
| Per 1,000 vehicles | **$0.99** | **$0.89** | **$0.79** | **$0.69** |
| Per 1,000 dealer phone numbers | **$0.59** | **$0.49** | **$0.39** | **$0.39** |

For example, 1,000 vehicles cost $0.99 on the Free plan, or $1.58 with dealer phone numbers for all of them. Private-seller listings have no dealer line, so no contact charge applies to them. You can set a maximum cost per run in Apify Console, and the Actor stops when it's reached.

### Input

See the [Input tab](https://apify.com/parsebird/cars-com-scraper/input-schema) for the full form.

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `startUrls` | array | **Yes** | — | Cars.com search result URLs (`/shopping/results/?...`) or vehicle URLs (`/vehicledetail/...`) |
| `limit` | integer | No | `100` | Vehicles to save per URL. `0` = no limit |
| `get_contacts` | boolean | No | `false` | Add the dealer phone number |
| `include_details` | boolean | No | `false` | Add vehicle history, interior color, category, and seller type |
| `proxyConfiguration` | object | No | none | Not needed; see the FAQ |

**Toyota RAV4s within 50 miles of Chicago**

```json
{
    "startUrls": [
        "https://www.cars.com/shopping/results/?makes%5B%5D=toyota&models%5B%5D=toyota-rav4&maximum_distance=50&zip=60606&sort=best_match_desc"
    ],
    "limit": 25
}
```

**One vehicle with the dealer's phone number and history**

```json
{
    "startUrls": [
        "https://www.cars.com/vehicledetail/fb188ced-a597-47f1-a45d-1289eb6451e9/"
    ],
    "get_contacts": true,
    "include_details": true
}
```

**Two cities, 50 vehicles each**

```json
{
    "startUrls": [
        "https://www.cars.com/shopping/results/?maximum_distance=100&zip=10001&sort=best_match_desc",
        "https://www.cars.com/shopping/results/?maximum_distance=100&zip=90001&sort=best_match_desc"
    ],
    "limit": 50
}
```

### Output example

Each vehicle is one row in the dataset. Only two photos are shown here.

```json
{
    "id": "bf95e377-bf7a-4702-9f59-84da051d7a8d",
    "title": "Used 2025 Toyota RAV4 LE",
    "source_context": {
        "seed_id": "a74086b40592",
        "seed_type": "search_url",
        "seed_value": "https://www.cars.com/shopping/results/?makes%5B%5D=toyota&models%5B%5D=toyota-rav4&maximum_distance=50&zip=60606&sort=best_match_desc",
        "domain": "cars.com",
        "scrape_method": "graphql",
        "page_index": 1,
        "position_on_page": 1
    },
    "listing": {
        "id": "bf95e377-bf7a-4702-9f59-84da051d7a8d",
        "url": "https://www.cars.com/vehicledetail/bf95e377-bf7a-4702-9f59-84da051d7a8d/",
        "location": "Calumet City, IL (20 mi)",
        "distance_miles": 20,
        "delivery": null,
        "attribution_type": "PREMIER",
        "sponsored_type": "PREMIER",
        "is_saved": false,
        "new_vdp_eligible": true
    },
    "vehicle": {
        "title": "Used 2025 Toyota RAV4 LE",
        "stock_type": "Used",
        "year": 2025,
        "make": "Toyota",
        "model": "RAV4",
        "trim": "LE",
        "vin": "2T3H1RFV4SC309025",
        "mileage": "51221",
        "mileage_numeric": 51221,
        "body_style": "SUV",
        "fuel_type": "Gasoline",
        "drivetrain": "Front-wheel Drive",
        "exterior_color": "black",
        "certified_pre_owned": false,
        "interior_color": "Black",
        "category": "crossover_compact"
    },
    "pricing": {
        "price": "27699",
        "price_numeric": 27699.0,
        "currency": "USD",
        "display_price": "$27,699",
        "msrp": null,
        "msrp_numeric": null,
        "price_drop": 651.0,
        "price_drop_display": "$651",
        "monthly_payment_estimate": {
            "amount": 522.0,
            "display": "$522",
            "currency": "USD",
            "down_payment": 0.0,
            "term_months": 72,
            "apr_percent": 7.0,
            "sales_tax_percent": 10.5
        }
    },
    "seller": {
        "name": "Advantage Toyota of River Oaks",
        "is_private_seller": false,
        "zip": "60409",
        "customer_id": "8eeaf4e2-f1ce-5f40-8a55-8ae6bfec8a03",
        "rating": 4.6,
        "type": "dealership",
        "phone_number": "18558914131",
        "phone_number_formatted": "(855) 891-4131",
        "phone_type": "DYNAMIC"
    },
    "media": {
        "primary_image_url": "https://platform.cstatic-images.com/large/in/v2/8eeaf4e2-f1ce-5f40-8a55-8ae6bfec8a03/07c4d8a6-f225-42a5-b5d8-5b59f94d59ad/3Fj_uJoIUXXnae3oyjwCwj1l1d0.jpg",
        "image_count": 29,
        "images": [
            {
                "url": "https://platform.cstatic-images.com/large/in/v2/8eeaf4e2-f1ce-5f40-8a55-8ae6bfec8a03/07c4d8a6-f225-42a5-b5d8-5b59f94d59ad/3Fj_uJoIUXXnae3oyjwCwj1l1d0.jpg",
                "alt_text": "Midnight Black Metallic 2025 Toyota RAV4 LE"
            },
            {
                "url": "https://platform.cstatic-images.com/large/in/v2/8eeaf4e2-f1ce-5f40-8a55-8ae6bfec8a03/07c4d8a6-f225-42a5-b5d8-5b59f94d59ad/RHXMa1H_0I0HB_CXV2kDb6tK-LU.jpg",
                "alt_text": "Midnight Black Metallic 2025 Toyota RAV4 LE"
            }
        ]
    },
    "badges": [
        {
            "label": "Good Deal",
            "description": "Based on the dealership's total vehicle list price, this vehicle may present a good buying opportunity in comparison to ...",
            "variant": "good-deal"
        }
    ],
    "history": {
        "no_accidents": true,
        "single_owner": true,
        "clean_title": true,
        "personal_use_only": false,
        "open_recall": false,
        "report_source": "autocheck"
    }
}
```

### Use the Cars.com Scraper API

Call the Actor from your own code with the [Apify API client](https://docs.apify.com/api/client/python). Find your token in [Apify Console → Settings → Integrations](https://console.apify.com/settings/integrations).

**Python**

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("parsebird/cars-com-scraper").call(run_input={
    "startUrls": ["https://www.cars.com/shopping/results/?stock_type=used&makes[]=honda&models[]=honda-civic&zip=10001&maximum_distance=100"],
    "limit": 200,
    "get_contacts": True,
})

for car in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(car["title"], car["pricing"]["display_price"], car["seller"]["name"], car["seller"].get("phone_number_formatted"))
```

**JavaScript**

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('parsebird/cars-com-scraper').call({
    startUrls: ['https://www.cars.com/shopping/results/?makes[]=ford&models[]=ford-f_150&zip=75201&maximum_distance=75'],
    limit: 100,
    include_details: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((car) => console.log(car.title, car.vehicle.vin, car.history?.no_accidents));
```

You can also start runs over plain HTTP from the [API tab](https://apify.com/parsebird/cars-com-scraper/api), or connect the Actor to AI agents through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp).

### Use cases

- **Dealer lead generation.** Build lists of dealers carrying a make or model in a region, with their phone numbers, ZIP codes, and ratings.
- **Price monitoring.** Track prices, price drops, and deal ratings for the models you buy or sell.
- **Inventory analysis.** See what competitors have in stock by trim, mileage, color, and price.
- **Market research.** Compare used car prices by year, mileage, region, and history.
- **Car buying.** Collect every clean-title, single-owner listing that matches your search into one spreadsheet.

### How it works

1. The Actor reads the filters and sort order from each search URL.
2. It loads the matching vehicles from Cars.com, 100 per page, until it reaches your limit or the end of the results. Cars.com counts at most "10,000+" for a search, but the Actor keeps going past 10,000 when you set no limit.
3. Vehicle URLs are looked up one by one. A vehicle that has been sold or removed is skipped with a warning and not charged.
4. With dealer contacts on, the Actor asks Cars.com for the dealer's phone number for each vehicle. With details on, it reads the vehicle's history and extra details.

### FAQ

**Do I need a Cars.com account?**
No. The Actor only reads public listings that anyone can see on Cars.com.

**Which Cars.com URLs work?**
Search result pages (`cars.com/shopping/results/?...`) with any filters, and vehicle pages (`cars.com/vehicledetail/<id>/`). Other pages, like research or dealer pages, are skipped with a warning.

**What kind of phone number do I get?**
The number Cars.com shows for the dealer on the listing, returned with `phone_type`. Cars.com uses call-tracking numbers (`DYNAMIC`) that forward to the dealer, so the same dealer can get a different number on different runs. Private sellers don't have a dealer line, so they have no phone number and no contact charge.

**Why do some vehicles have no price or photos?**
Some dealers list cars as "Not Priced" or without photos. The Actor saves what Cars.com shows.

**Why are the first results different from what I see on Cars.com?**
Cars.com rotates sponsored listings, so the first few positions can change between visits. The other results follow the same sort order as the website.

**Do I need a proxy?**
No. The Actor connects directly and switches to US [Apify Proxy](https://docs.apify.com/platform/proxy) on its own if Cars.com starts refusing requests. Proxy costs are included in the event prices.

**Can I schedule runs or export to Google Sheets?**
Yes. Use [Apify Schedules](https://docs.apify.com/platform/schedules) for recurring runs and [integrations](https://docs.apify.com/platform/integrations) for Google Sheets, Zapier, Make, Slack, and webhooks.

**Something is missing or broken?**
Open an issue on the [Issues tab](https://apify.com/parsebird/cars-com-scraper/issues). Feedback and feature requests are welcome there too.

### Is it legal to scrape Cars.com?

The Actor collects only public vehicle listings that Cars.com shows to every visitor. It doesn't log in or access any account data. Listings can include private sellers' first names and dealers' business phone numbers, so follow data protection and telemarketing laws, like the CCPA and the TCPA, when you store or contact them. Read more in Apify's blog post [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

### Other vehicle scrapers

| Actor | What it does |
|-------|--------------|
| [AutoTrader.co.uk Scraper](https://apify.com/parsebird/autotrader-scraper) | Scrape UK car listings from AutoTrader.co.uk |
| [AutoTrader Canada Scraper](https://apify.com/parsebird/autotrader-ca-scraper) | Scrape Canadian car listings from AutoTrader.ca |
| [IAAI Vehicles Scraper](https://apify.com/parsebird/iaai-vehicles-scraper) | Scrape salvage and insurance auction vehicles from IAAI |

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/cars-com-scraper/changelog.md

# Actor input Schema

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

Cars.com search result URLs (cars.com/shopping/results/?...) or vehicle detail URLs (cars.com/vehicledetail/...). Set make, model, ZIP, distance, price, year and other filters on Cars.com, then copy the URL here.

## `limit` (type: `integer`):

Stop after saving this many vehicles from each URL. Set 0 for no limit.

## `get_contacts` (type: `boolean`):

Add the dealer's phone number to each vehicle (charged separately, only when Cars.com returns a number).

## `include_details` (type: `boolean`):

Add accident history, owner count, clean title, personal use, open recall, interior color, vehicle category, and seller type from each vehicle's detail page. No extra charge; runs take a little longer.

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

Optional. The scraper connects directly and switches to US Apify Proxy on its own if Cars.com starts refusing requests.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.cars.com/shopping/results/?makes%5B%5D=toyota&models%5B%5D=toyota-rav4&maximum_distance=50&zip=60606&sort=best_match_desc"
  ],
  "limit": 20,
  "get_contacts": false,
  "include_details": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (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": [
        "https://www.cars.com/shopping/results/?makes%5B%5D=toyota&models%5B%5D=toyota-rav4&maximum_distance=50&zip=60606&sort=best_match_desc"
    ],
    "limit": 20,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/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 = {
    "startUrls": ["https://www.cars.com/shopping/results/?makes%5B%5D=toyota&models%5B%5D=toyota-rav4&maximum_distance=50&zip=60606&sort=best_match_desc"],
    "limit": 20,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/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 '{
  "startUrls": [
    "https://www.cars.com/shopping/results/?makes%5B%5D=toyota&models%5B%5D=toyota-rav4&maximum_distance=50&zip=60606&sort=best_match_desc"
  ],
  "limit": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call parsebird/cars-com-scraper --silent --output-dataset

```

## MCP server setup

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