# Craigslist Cars & Trucks Scraper (`arjun_code/craigslist-cars-scraper`) Actor

Scrape US Craigslist cars and trucks by city or vehicle URL. Filter by make/model, seller type, price, year, mileage, body type, fuel and condition. Export descriptions, photo URLs and public phone numbers/emails to JSON or CSV, or skip previously collected posting IDs across runs.

- **URL**: https://apify.com/arjun_code/craigslist-cars-scraper.md
- **Developed by:** [Arjun Data](https://apify.com/arjun_code) (community)
- **Categories:** E-commerce, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 vehicle listings

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

Find vehicles to source, compare asking prices across cities, and build a reusable inventory feed. **Craigslist Cars & Trucks Scraper** collects US vehicle listings with prices, mileage, specifications, descriptions, photo links, and public phone numbers or emails when available.

Choose your cities and buying criteria, or paste existing Cars & Trucks searches. Start with **50 listings**, keep details enabled, and download your results as **JSON or CSV**.

### Craigslist car data

- **Find vehicles that fit your buying criteria.** Filter by make or model, seller type, price, year, mileage, title status, transmission, drivetrain, body type, fuel, condition, color, and cylinder count.
- **Compare several markets in one run.** Select multiple US cities and control both the total quantity and each city's sample size.
- **Review ads before contacting sellers.** Get descriptions, vehicle specifications, photo links, and published contact details together.
- **Skip listings you already collected.** Enable collection history to exclude posting IDs previously delivered to the same campaign.
- **Build repeatable workflows.** Use Apify schedules, the API, and integrations to bring vehicle data into your own tools.

### Who uses this scraper?

| Your work | How the data helps |
|---|---|
| Used-car dealers and vehicle buyers | Find owner-listed vehicles within your target price, age, and mileage range. |
| Vehicle resellers | Compare potential purchases across markets and shortlist ads to investigate. |
| Automotive analysts | Compare advertised prices and available inventory by model, year, and location. |
| Data and automation teams | Feed vehicle listings into spreadsheets, databases, dashboards, or scheduled workflows. |

Coverage is **US Craigslist Cars & Trucks**, including private sellers and dealers. Prices are advertised asking prices, not confirmed sale prices or vehicle valuations.

### Get started

1. Open **Input** and choose one or more **US cities / regions**.
2. Enter **Search keywords (Craigslist search box)**, or leave it blank to browse all cars and trucks. Add optional vehicle filters for your buying criteria.
3. Set **Maximum listings (total)**. Keep **Include details and public contacts** on for descriptions and vehicle specifications.
4. Select **Start**. Review **Results** and **Vehicle details**, or download the vehicle-only JSON or CSV file.

For a first run, try a Toyota Camry keyword search in New York:

```json
{
  "cities": ["newyork"],
  "searchTerm": "toyota camry",
  "maxItems": 50,
  "includeDetails": true
}
```

The default settings use New York, newest first, with details enabled and a total limit of 50. No Craigslist account is required.

**Search keywords** (`searchTerm`) follows Craigslist's top search box and searches ad text. **Make/model filter** (`makeModel`) matches the seller's make/model field, like the site's left-side MAKE AND MODEL filter. Leave that optional filter blank when matching a website keyword search; filling both fields applies both conditions.

Turn on **Search titles only** to match your keywords in ad titles. This can reduce matches caused by other vehicles mentioned in a description. It is off by default.

### Vehicle data and exports

| Data | What you receive |
|---|---|
| Listing | Title, posting ID, original URL, and owner/dealer category. |
| Price | Numeric asking price, currency, original price text, and any published payment display. |
| Vehicle | Year, make, model, mileage, condition, fuel, transmission, body type, drivetrain, title status, and VIN when supplied. |
| Location | City or region, subarea, location text, neighborhood, and published map coordinates. |
| Description and photos | Posting text, photo URLs, and the seller's original vehicle attributes. |
| Public contacts | Recognized phone numbers, email addresses, and contact availability. |
| Dates and matching searches | Posting, update and collection times, plus the city or search that matched the listing. |

This example shows selected fields from a real Toyota Camry search. Full JSON downloads include all available vehicle fields. Unpublished values can be `null` or empty arrays.

```json
{
  "postId": "7991588238",
  "url": "https://www.craigslist.org/view/d/east-berlin-2011-toyota-camry-cyl/fAh81qUR8qqid1b6amhyut",
  "title": "2011 Toyota Camry 4-Cyl.",
  "price": 3550,
  "currency": "USD",
  "year": 2011,
  "make": "Toyota",
  "model": "Camry",
  "mileage": 188000,
  "mileageUnit": "mi",
  "sellerType": "owner",
  "location": "East Berlin",
  "condition": "good",
  "fuel": "gas",
  "transmission": "automatic",
  "titleStatus": "clean",
  "bodyType": "sedan",
  "description": "2011 Toyota Camry LE, 4-Cylinder\nAutomatic\nSuper Reliable\nGreat mechanical condition\nNo rust\nClean title\nEmissions ready\nNo leaks\nKeyless entry\nGreat AC and heater",
  "imageUrls": [
    "https://images.craigslist.org/00y0y_aWqGJNSuX1N_0CI0t2_1200x900.jpg",
    "https://images.craigslist.org/00Q0Q_dcXXwcDxAoB_0CI0t2_1200x900.jpg",
    "https://images.craigslist.org/00k0k_aRPDPcS7C8U_0CI0t2_1200x900.jpg",
    "https://images.craigslist.org/00J0J_kA0ULbvPimy_0CI0t2_1200x900.jpg",
    "https://images.craigslist.org/00a0a_e7yKzCcpy6o_0CI0t2_1200x900.jpg",
    "https://images.craigslist.org/00n0n_fgQe6Oy5m0k_0CI0t2_1200x900.jpg",
    "https://images.craigslist.org/01717_3wLOCVDgPtX_0CI0t2_1200x900.jpg",
    "https://images.craigslist.org/00w0w_goUfBVFVp2d_0CI0t2_1200x900.jpg",
    "https://images.craigslist.org/00u0u_a05RO5xLi4J_0CI0t2_1200x900.jpg",
    "https://images.craigslist.org/00E0E_8nF4bpV0i4e_0CI0t2_1200x900.jpg"
  ],
  "phoneNumbers": [],
  "emails": [],
  "postedAt": "2026-10-28T23:03:31+00:00",
  "updatedAt": "2026-10-29T13:32:21+00:00"
}
```

For vehicle-only exports, use **Vehicles JSON** or **Vehicles CSV**. The **Results** view also includes explanations for searches with no matches, unavailable ads, or input problems. Lists such as photos and phone numbers appear as JSON text inside CSV cells. Images are supplied as links.

### Pricing

Pay for the vehicle listings delivered, plus a small run-start fee. **Details, photo links, and public contacts are included when available.** There is no separate Actor subscription or per-city charge.

| Your Apify plan | Per 1,000 vehicle listings | Run start at the default 1 GB memory |
|---|---:|---:|
| Free | $1.20 | $0.001 |
| Starter | $1.00 | $0.001 |
| Scale | $0.90 | $0.001 |
| Business and higher | $0.80 | $0.001 |

All prices are in USD. You pay for the actual number of listings delivered, without rounding up to 1,000. At the default memory setting, **50 Starter listings cost $0.051**, including the run-start fee.

- The same posting matched by several inputs is charged once per run.
- Listings skipped by collection history have no listing charge. If you turn history off and collect the same posting on another run, that delivery is charged again.
- Search-only results have the same unit price as results with details. Turning details off changes the information returned, not the price per listing.
- A listing without a public phone or email is still a billable vehicle listing.
- Notices, unavailable-post messages, and records whose details failed have no listing charge. A run that starts still incurs the start fee, even if it delivers no listings.

Platform usage during the run is included. Higher memory increases the start fee by $0.001 per GB, with a minimum of one event. Your Apify account subscription and additional data access after a run follow [Apify's billing rules](https://docs.apify.com/actors/running/actors-in-store). Check this Actor's **Pricing** tab for current rates and set a maximum run cost to control spending.

### Search examples

#### Find vehicles from private sellers

Find owner-listed Honda Civics with photos, priced between $3,000 and $20,000. Adjust the city, year range, and mileage limit to suit your buying criteria.

```json
{
  "cities": ["newyork"],
  "makeModel": "honda civic",
  "sellerType": "owner",
  "minPrice": 3000,
  "maxPrice": 20000,
  "minYear": "2010",
  "maxYear": "2023",
  "maxMileage": 180000,
  "hasImage": true,
  "maxItems": 50
}
```

#### Compare inventory across cities

Collect up to 150 listings in total, with a maximum of 50 from each city. The total limit is shared across all inputs; the per-city limit is optional.

```json
{
  "cities": ["newyork", "sfbay", "losangeles"],
  "makeModel": "honda civic",
  "maxItems": 150,
  "maxItemsPerSearch": 50
}
```

#### Find hybrid or electric vehicles

Include sedans or SUVs, using hybrid or electric power, in seller-described excellent or good condition, with a seller-reported clean title. Multiple choices within a filter match any selected value; different filters apply together.

```json
{
  "cities": ["newyork"],
  "bodyTypes": ["sedan", "suv"],
  "fuelTypes": ["hybrid", "electric"],
  "conditions": ["excellent", "good"],
  "titleStatuses": ["clean"],
  "maxItems": 20
}
```

#### Use an existing Craigslist search

Paste supported US Cars & Trucks search links or individual vehicle ad links into **Cars & trucks search or listing URLs**. When you add URLs, their search criteria replace the cities, filters, and sorting in the city form.

```json
{
  "startUrls": [
    {
      "url": "https://newyork.craigslist.org/search/cto?auto_make_model=honda+civic&max_price=15000"
    }
  ],
  "maxItems": 20
}
```

Individual vehicle links always collect details. The total limit, optional per-input limit, nearby-results setting, and collection history still apply. An optional URL label helps identify that search in your export.

### Input reference

Most filters are optional. Leave unused price, year, mileage, and vehicle-attribute filters blank.

| Setting | Default | How to use it |
|---|---|---|
| `cities` | `["newyork"]` | Choose one or more US markets. Used when the URL list is empty. |
| `startUrls` | Empty | Paste supported Cars & Trucks search or vehicle links as URL objects, as shown above. |
| `searchTerm` | Blank | Search keywords as in Craigslist's top search box, such as tesla model or one owner. Leave `makeModel` blank for a keyword-only search. |
| `searchTitlesOnly` | `false` | Restrict Search keywords to ad titles. Leave off to search ad text as usual. |
| `makeModel` | Blank | Optional filter matching the seller's make/model field, like the site's left-side MAKE AND MODEL filter. If both search fields are filled, both conditions apply. |
| `sellerType` | `all` | Choose `all`, `owner`, or `dealer`. |
| `minPrice`, `maxPrice` | Blank | Set asking-price bounds in USD. |
| `minYear`, `maxYear` | Blank | Optional year dropdowns. API examples: `"2015"` and `"2023"`. Either bound can be used alone. |
| `minMileage`, `maxMileage` | Blank | Set mileage bounds in miles. Maximum mileage must be at least 1; leave blank for no upper limit. |
| `bodyTypes` | Blank | Select body types such as `sedan`, `suv`, `pickup`, or `van`. |
| `fuelTypes` | Blank | Select `gas`, `diesel`, `hybrid`, `electric`, or `other`. |
| `conditions` | Blank | Select `new`, `like_new`, `excellent`, `good`, `fair`, or `salvage`. |
| `titleStatuses` | Blank | Select seller-reported `clean`, `salvage`, `rebuilt`, `parts_only`, `lien`, or `missing` title status. Separate from vehicle condition. |
| `transmissions` | Blank | Select `manual`, `automatic`, or `other`. |
| `drivetrains` | Blank | Select `fwd` (front-wheel drive), `rwd` (rear-wheel drive), or `4wd` (Craigslist's four-wheel-drive category). |
| `paintColors` | Blank | Select one or more colors, such as `black`, `white`, `silver`, or `grey`. |
| `cylinders` | Blank | Select `"3"`, `"4"`, `"5"`, `"6"`, `"8"`, `"10"`, `"12"`, or `"other"`. API values are strings, for example `["4", "6"]`. |
| `cryptocurrencyOk` | `false` | Require the seller to have marked cryptocurrency as accepted. Off means no payment-method restriction. |
| `hasImage`, `postedToday` | `false` | Require photos, or apply Craigslist's posted-today filter. |
| `sort` | `date` | Newest `date`, oldest `dateoldest`, nearest `dist`, lowest price `priceasc`, highest price `pricedsc`, or relevance `rel`. |
| `distancePostalCode` | Blank | Optional US ZIP code for nearest-first sorting. Blank uses the selected city's center. |
| `distanceRadiusMiles` | `60` | Radius in miles for nearest-first sorting. Other sort orders ignore it. |
| `maxItems` | `50` | Total maximum across all cities or URLs. Matches and your run budget can reduce the result count. |
| `maxItemsPerSearch` | Blank | Optional per-city or per-URL limit. Leave blank to use only the total limit. |
| `includeDetails` | `true` | Include descriptions, vehicle specifications, and public contacts. Listing-only results have the same unit price. |
| `includeNearby` | `false` | Include supplemental nearby US listings returned with your search. |
| `newOnly` | `false` | Skip posting IDs previously delivered to this collection history. |
| `watchName` | Automatic | Name a campaign's collection history when `newOnly` is enabled. |

For multiple cities or URLs, results take turns across inputs. Each search follows its selected sorting; the combined export is not globally sorted. For nearest-first searches, match the ZIP code and radius when comparing results with Craigslist.

### Repeat collection

Turn on **Skip previously collected listings** to collect posting IDs you have not received before. Give the campaign a **Collection history name** and keep the same name and search criteria for later runs.

```json
{
  "cities": ["newyork"],
  "makeModel": "honda civic",
  "sellerType": "owner",
  "maxItems": 50,
  "newOnly": true,
  "watchName": "nyc-owner-honda"
}
```

The first run returns current matches up to your limits. Later runs can include older ads that earlier limits left undelivered. **Unseen means new to your collection history, not necessarily newly posted on Craigslist.** A new history name, or different cities and search filters, starts a separate collection.

Use Apify **Schedules** to repeat the search automatically, and run each collection history sequentially. For repeat price snapshots of known listings, leave this setting off and compare the exports in your spreadsheet or database. Automatic price-change alerts are not included.

### API and integrations

Run the Actor through the Apify API or connect its results to n8n, Make, Zapier, and other tools using Apify integrations. Use the same input settings as in the form.

```bash
curl -X POST 'https://api.apify.com/v2/acts/arjun_code~craigslist-cars-scraper/runs' \
  -H 'Authorization: Bearer YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"cities":["newyork"],"makeModel":"toyota camry","maxItems":20}'
```

When the run finishes, open its dataset or use the vehicle-only JSON and CSV download links. Scheduling starts repeat runs; notifications and delivery to other apps can be configured through your chosen workflow.

### 🏠 Need Craigslist rental data?

Use our [Craigslist Rentals Scraper: Apartments & Rooms](https://apify.com/arjun_code/craigslist-rentals-scraper) to compare advertised rents, build rental listing feeds or research temporary housing. Search apartments, rooms and sublets by city, rent, bedrooms and amenities; export descriptions, photo URLs and available public contacts.

### FAQ and support

#### Can I get seller phone numbers and emails?

Yes, when they are published in the ad text or contact links and can be recognized. Keep **Include details and public contacts** enabled. Numbers and emails behind **Reply**, **show contact info**, or inside photos are not included.

#### Why did I receive fewer listings than requested?

Your search may have fewer matches, some ads may overlap, or collection history and your spending limit may exclude records. Seller-entered filters can also exclude ads where the relevant attribute is missing. Check the result notices and collection summary, then widen your filters or adjust the relevant limit.

#### Which Craigslist links are supported?

Use regional Cars & Trucks searches, subarea searches, area searches, or individual vehicle ads. For example: `https://newyork.craigslist.org/search/cta` or `https://www.craigslist.org/search/area/newyork?cat=cta`.

Links beginning `/search/city/...` are not currently supported. Use the city selector or a regional search link instead. Housing, jobs, other categories, and non-US listings are outside this Actor's coverage.

#### Will I receive every photo and vehicle specification?

Results include the photo URLs and specifications available in the ad. Keep details enabled for descriptions and vehicle attributes. Missing values stay empty. Prices, mileage, VINs, and vehicle condition are supplied by sellers; asking prices may also be down payments or placeholders.

#### Does it identify the same car posted more than once?

It removes duplicate posting IDs within a run and can skip IDs already delivered on earlier runs. The same physical car advertised under different posting IDs can appear again.

#### How do I report a problem?

Use this Actor's **Issues** tab. Include the run link, the affected Craigslist URLs, and the input settings so the problem can be investigated. If a link is no longer available, try the city search to find current listings.

This is an independent tool and is not affiliated with or endorsed by Craigslist.

# Actor input Schema

## `cities` (type: `array`):

Choose one or more US Craigslist markets, such as New York, Los Angeles or SF Bay Area. The default is New York. You can also enter a US site slug, such as dallas. Used only when the vehicle URL list is empty.

## `searchTerm` (type: `string`):

Use the same keywords as Craigslist's top search box, e.g. tesla model. Searches ad text, which can mention other vehicles. Leave Make/model filter blank for a keyword-only search. If both are filled, both filters apply. Leave blank to browse all cars and trucks.

## `searchTitlesOnly` (type: `boolean`):

Used with Search keywords. Turn on to match keywords in ad titles only. Leave off to search ad text as usual, including descriptions. This does not change the Make/model filter.

## `makeModel` (type: `string`):

Filters the seller's make/model field, matching Craigslist's left-side MAKE AND MODEL filter. Leave blank for a website keyword search. Missing or differently entered model names can exclude ads. If Search keywords is also filled, both filters apply.

## `sellerType` (type: `string`):

Choose private sellers, dealers or both. This follows the ad's Craigslist by-owner or by-dealer category.

## `sort` (type: `string`):

Default: Newest first. Uses Craigslist's order for each city search. Multiple inputs are combined in turns, so the combined output is not globally sorted. For Nearest first, use the ZIP code and radius below. Search URLs supply their own sorting.

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

Return up to this many unique listing IDs in total, shared across all cities or URLs. Default: 50. Fewer may be returned if matches are limited or overlap. Notice rows do not use this allowance. Your Apify run spending limit can reduce this number before collection starts.

## `includeDetails` (type: `boolean`):

On by default. Collect descriptions, vehicle specifications and phone numbers/emails published in the text or links. Contacts behind Reply/show contact info and in images are not included. Turn off for fewer requests and list-only search results. Individual vehicle URLs always collect details; photo URLs are returned whenever available. Listing-only results have the same price per listing; turning this off changes detail depth and request count, not the unit price.

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

Paste supported US Cars & Trucks search URLs or individual vehicle ad URLs. Cities, filters and sorting come from these URLs instead of the city form. Output limits, details, nearby results and collection history still apply. Individual ad URLs collect that vehicle directly. City-radius paths (/search/city/...) are not supported.

## `minPrice` (type: `integer`):

Include advertised prices at or above this amount, for example 3000. Leave blank for no lower bound. The minimum must not exceed the maximum.

## `maxPrice` (type: `integer`):

Include advertised prices at or below this amount, for example 20000. Leave blank for no upper bound. The advertised amount can be a down payment rather than the full vehicle price.

## `minYear` (type: `string`):

Choose the earliest model year to include. For example, 2015 includes 2015 and newer. Leave blank for no lower bound. You can set either year bound on its own, or enter a year not in the list.

## `maxYear` (type: `string`):

Choose the latest model year to include. For example, 2023 includes 2023 and older. Leave blank for no upper bound. If both years are selected, the minimum must not exceed the maximum.

## `minMileage` (type: `integer`):

Include odometer readings at or above this number of miles. Leave blank for no lower bound. The minimum must not exceed the maximum.

## `maxMileage` (type: `integer`):

Include odometer readings at or below this positive number of miles, for example 150000. Enter at least 1; leave blank for no upper bound. Craigslist treats 0 as unrestricted, so 0 is not accepted as a maximum. Uses the mileage supplied by the seller.

## `bodyTypes` (type: `array`):

Select one or more, for example Sedan and SUV, to include either body type. Leave blank for no body-type filter. Uses the seller-entered attribute; selecting values can exclude ads where it is missing.

## `fuelTypes` (type: `array`):

Select one or more, for example Hybrid and Electric, to include either fuel type. Leave blank for no fuel-type filter. Uses the seller-entered attribute; selecting values can exclude ads where it is missing.

## `conditions` (type: `array`):

Select one or more, for example Excellent and Good, to include either. Leave blank for no condition filter. Uses the seller's description of the condition. Salvage here refers to condition, not title status.

## `titleStatuses` (type: `array`):

Select one or more seller-reported title statuses. For example, Clean includes ads marked clean by the seller. This is separate from vehicle condition. Leave blank for no title-status filter.

## `transmissions` (type: `array`):

Select one or more transmission types, for example Automatic. Leave blank for no transmission filter. Uses the value entered by the seller.

## `drivetrains` (type: `array`):

Select one or more of Craigslist's drive categories. Leave blank for no drivetrain filter. Uses the value entered by the seller.

## `paintColors` (type: `array`):

Select one or more colors, for example Black and White, to include either color. Leave blank for no color filter. Uses the value entered by the seller.

## `cylinders` (type: `array`):

Select one or more cylinder counts, for example 4 and 6 cylinders. Leave blank for no cylinder-count filter. Uses the value entered by the seller; ads without this attribute may be excluded.

## `hasImage` (type: `boolean`):

Require the ad to have photos. Off by default. Photo URLs are returned whenever available, even when this filter or Include details and public contacts is off.

## `postedToday` (type: `boolean`):

Apply Craigslist's posted-today filter. Off by default, so older matching ads are also included.

## `cryptocurrencyOk` (type: `boolean`):

Require the seller to have selected cryptocurrency ok on Craigslist. Off by default, with no payment-method restriction. This filters the seller-provided flag; it does not identify accepted coins or verify payment terms.

## `distancePostalCode` (type: `string`):

Used only with Nearest first (distance). Enter a US ZIP code, such as 10001, as the search center. Leave blank to use each selected city's center. If Craigslist cannot resolve the ZIP code, the search returns a notice. Your device location is not used.

## `distanceRadiusMiles` (type: `integer`):

Used only with Nearest first (distance). Search within this many miles of the ZIP code or city center. Default: 60 miles. To compare with Craigslist, use the same center and radius.

## `newOnly` (type: `boolean`):

Off by default. Turn on to skip posting IDs already delivered to this collection history. The first run returns current matches; later runs can include older ads not delivered before. Leave off when collecting repeat snapshots for price comparisons.

## `watchName` (type: `string`):

Used when skipping previously collected listings. Give each campaign its own name, such as nyc-owner-honda, and keep that name for follow-up runs. A new name starts fresh history. Blank uses the Apify task, or shared manual/API history for the same search.

## `maxItemsPerSearch` (type: `integer`):

Leave blank to use only Maximum listings (total). Set this only to cap each city or URL's sample. Example: total 150 and per-city 50 allows up to 50 from each of three cities. Duplicate posting IDs are still returned once.

## `includeNearby` (type: `boolean`):

Off by default. Keep nearby US listings supplied by the same Craigslist search. This does not launch searches in extra cities. ZIP-code or radius searches retain the geography requested by that search.

## Actor input object example

```json
{
  "cities": [
    "newyork"
  ],
  "searchTitlesOnly": false,
  "sellerType": "all",
  "sort": "date",
  "maxItems": 50,
  "includeDetails": true,
  "hasImage": false,
  "postedToday": false,
  "cryptocurrencyOk": false,
  "distanceRadiusMiles": 60,
  "newOnly": false,
  "includeNearby": false
}
```

# Actor output Schema

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

Dataset containing vehicle records and input-level notices. Use the Vehicle details view for descriptions and collected public contacts.

## `vehiclesJson` (type: `string`):

Vehicle records including descriptions, photo URLs, collected public contacts and source attributes; notice rows are excluded.

## `vehiclesCsv` (type: `string`):

Vehicle records including collected public contacts. Lists such as photo URLs and phone numbers are JSON strings in CSV cells.

## `runSummary` (type: `string`):

Per-input counts, applied search parameters, limits, skipped posting IDs and explanations for missing or partial results.

# 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 = {
    "cities": [
        "newyork"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("arjun_code/craigslist-cars-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "cities": ["newyork"] }

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

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

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

```

## CLI example

```bash
echo '{
  "cities": [
    "newyork"
  ]
}' |
apify call arjun_code/craigslist-cars-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,arjun_code/craigslist-cars-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/aC8rFUkTvP7g1e7UQ/builds/Ld97z6xcoLtCH3Te1/openapi.json
