Craigslist Vehicles Scraper avatar

Craigslist Vehicles Scraper

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Craigslist Vehicles Scraper

Craigslist Vehicles Scraper

Scrape Craigslist Cars & Trucks listings by search URL or keyword. Extract vehicle titles, prices, year, mileage, condition, location, seller details, descriptions, images, and more into structured data.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

Fahim Mahmud Chisti

Fahim Mahmud Chisti

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

4 hours ago

Last modified

Share

What does Craigslist Vehicles Scraper do?

Craigslist Vehicles Scraper extracts structured Cars & Trucks listings from regional Craigslist search pages and individual postings. It collects titles, prices, publication dates, vehicle attributes, locations, descriptions, and images. Runs can be started manually, scheduled, monitored, and exported through the Apify platform.

Why use Craigslist Vehicles Scraper?

  • Monitor newly posted used vehicles in a local market.
  • Research asking prices, makes, models, mileage, and condition.
  • Build lead lists from public vehicle postings.
  • Track inventory across one or more filtered Craigslist searches.
  • Export consistent JSON, CSV, Excel, or API-ready dataset results.

How to scrape Craigslist vehicle listings

  1. Open the Actor's Input tab.
  2. Add search keywords, Craigslist Cars & Trucks URLs, or direct posting URLs.
  3. Choose the maximum items and pages.
  4. Keep Scrape item details enabled for richer vehicle attributes and images.
  5. Start the Actor and open the Output tab when the run finishes.

For example, use https://yuma.craigslist.org/search/cta?sort=date to scrape Yuma Cars & Trucks. URL filters are preserved.

Input

  • searchKeywords: keywords searched within Cars & Trucks.
  • startUrls: regional search URLs or direct posting URLs.
  • domain: regional Craigslist domain used for keyword searches.
  • maxItems: maximum saved listings across all searches; 0 means unlimited.
  • maxPagesPerSearch: pagination limit per search.
  • maxListingAgeDays: optional maximum posting age.
  • scrapeItemDetails: opens each posting for descriptions, attributes, and images.
  • duplicateCheck: skip detail scraping for listing URLs already known (default false).
  • duplicateCheckApiUrl: optional POST exists API; leave empty for Apify storage only.
  • duplicateCheckStoreName: named KV store (default vehicle-listing-urls).
  • proxyConfiguration: Apify proxy settings. Residential US proxies are recommended because Craigslist may reject datacenter traffic.

Example:

{
"startUrls": [{ "url": "https://yuma.craigslist.org/search/cta?sort=date" }],
"maxItems": 50,
"maxPagesPerSearch": 2,
"maxListingAgeDays": 30,
"scrapeItemDetails": true
}

Skip existing listings (duplicate check)

Detail scraping makes one residential-proxy request per posting. On scheduled re-runs, most results are often listings you already stored. Duplicate check skips those URLs so you do not pay again for detail pages you already have.

Enable it with duplicateCheck: true (default false).

Modes

  • When duplicateCheckApiUrl is set, the Actor POSTs batches of up to 500 listing URLs to your endpoint, then skips URLs returned in existing. It also reads and updates the named Apify Key-Value store. A URL is skipped if either your API or the store marks it as known.
  • When duplicateCheckApiUrl is empty, the Actor uses the Apify Key-Value store only (no external API).

API contract

// Request
{ "listingUrls": ["https://example.com/listing/1", "https://example.com/listing/2"] }
// Response
{
"existing": ["https://example.com/listing/1"],
"missing": ["https://example.com/listing/2"]
}

listingUrls may also be a single string. URLs are normalized (query string and trailing slash ignored). No auth header is required for public endpoints. If the API call fails, the Actor fail-opens and scrapes the batch.

After a listing is saved successfully, its URL is written to the named store under the KNOWN_LISTING_URLS record so future runs skip it even without an API.

Example:

{
"startUrls": [{ "url": "https://yuma.craigslist.org/search/cta?sort=date" }],
"maxItems": 100,
"duplicateCheck": true,
"duplicateCheckApiUrl": "https://your-api.example.com/listings/exists",
"duplicateCheckStoreName": "vehicle-listing-urls"
}

Output

Each vehicle is saved as one dataset item:

{
"itemId": "1234567890",
"title": "2018 Toyota Tacoma 4x4",
"listedAt": "2026-07-18T14:20:00-0700",
"price": "24900",
"currency": "USD",
"year": "2018",
"make": "Toyota",
"model": "Tacoma 4x4",
"mileage": "82000",
"condition": "excellent",
"location": "Yuma",
"imageUrl": "https://images.craigslist.org/example.jpg",
"images": ["https://images.craigslist.org/example.jpg"],
"url": "https://yuma.craigslist.org/cto/d/yuma-example/1234567890.html"
}

You can download the dataset in JSON, HTML, CSV, XML, RSS, or Excel format.

Data fields

The output follows the same vehicle-oriented contract as the eBay Vehicles Scraper: itemId, title, subtitle, description, listedAt, price, currency, condition, location, seller, year, mileage, make, model, trim, vin, bodyType, engine, transmission, driveType, fuelType, colors, title status, seller type, specifics, images, URL, source URL, page, and scrape timestamp. Fields Craigslist does not publish remain null.

Cost and performance

Search-only mode is fastest. Detail mode makes one additional request per posting and therefore takes longer and uses more proxy traffic. Set maxItems, maxPagesPerSearch, and maxListingAgeDays to bound cost. Enable duplicateCheck on scheduled re-runs to skip known postings. Set scrapeItemDetails: false when search-card fields are enough. Prefer skipping known listings over raising memory. The scraper processes requests conservatively to avoid overloading Craigslist.

Tips

  • Use a filtered Cars & Trucks URL for advanced options such as owner/dealer, price, mileage, and model year.
  • Sort order is automatically set to newest first.
  • Enable duplicateCheck on scheduled re-runs to skip postings you already stored.
  • Set scrapeItemDetails: false when search-card fields are enough.
  • Prefer skipping known listings over raising memory.
  • If a run receives blocked pages, enable an Apify residential US proxy.
  • The run Container URL exposes / and /status with live progress while the Actor is running.

Scrape only public data and comply with applicable laws, Craigslist's terms, and reasonable request rates. Listings can be edited or removed at any time, and some fields may be absent. Personal contact information is not intentionally extracted. If Craigslist changes its HTML, report the affected URL and run ID through the Actor's Issues tab.