Cars For Sale Scraper avatar

Cars For Sale Scraper

Pricing

from $20.00 / 1,000 vehicle records

Go to Apify Store
Cars For Sale Scraper

Cars For Sale Scraper

Extract public CarsForSale.com vehicle listings with price, mileage, VIN, specifications, dealer details, location, images, features, and source URLs.

Pricing

from $20.00 / 1,000 vehicle records

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Share

Free-plan limit: Apify free-plan runs can return at most 5 dataset records per run from this Actor, even if you request more.

Extract public vehicle listings from CarsForSale.com into structured JSON, CSV, Excel, or API-ready dataset records. The Actor accepts CarsForSale.com search/result pages and individual vehicle-detail URLs.

What you get

Each delivered vehicle can include:

  • listing URL and listing ID
  • title, year, make, model, and trim
  • price, currency, mileage, VIN, and stock number
  • body type, fuel type, transmission, engine, and drivetrain
  • exterior/interior color, description, features, and image URLs
  • dealer name, dealer phone, location, source URL, and scrape timestamp

Fields unavailable on a public page are returned as null or an empty array, never invented.

Input

{
"startUrls": [{ "url": "https://www.carsforsale.com/toyota-for-sale-C648118" }],
"maxResults": 25,
"maxPages": 3,
"includeDetails": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

Use includeDetails: false when URLs alone are sufficient. It is faster but detail fields will be null. maxResults is enforced across all input URLs and limits delivered/billed records.

For production traffic that CarsForSale.com has allowlisted, set the optional Apify secret CARS_FOR_SALE_PROXY_URL to a DataImpulse HTTP proxy URL. This encrypted secret takes precedence over the input proxyConfiguration fallback. Port 823 is a rotating gateway; the Actor adds a fresh per-run sessid targeting suffix automatically so the browser's IP, cookies, and fingerprint stay coherent. Existing DataImpulse targeting/session parameters are preserved. The secret is read only at runtime and is never written to logs or output.

Output example

{
"url": "https://www.carsforsale.com/vehicle/details/ABC123",
"listingId": "ABC123",
"title": "2022 Toyota Camry XSE",
"year": 2022,
"make": "Toyota",
"model": "Camry",
"trim": "XSE",
"price": 28995,
"currency": "USD",
"mileage": 32100,
"vin": "4T1G11AK1NU123456",
"dealerName": "Example Motors",
"imageUrls": ["https://cdn.example/car.jpg"],
"sourceUrl": "https://www.carsforsale.com/search?zipcode=90210&radius=50",
"scrapedAt": "2026-08-28T12:00:00.000Z"
}

The default dataset contains vehicles only. Run diagnostics are written to the OUTPUT key-value-store record with one of: DATA, EMPTY, BLOCKED, REJECTED, or FAILED. A target challenge is reported as HTTP_403_CHALLENGE with challenged URLs and an allowlisting next step; a proxy transport failure is reported separately as PROXY_TUNNEL_FAILURE.

Pricing

This Actor uses pay-per-event pricing. These are the current Apify Store event prices:

EventPrice (USD)When it is charged
vehicle-resultFREE: $0.025; BRONZE: $0.025; SILVER: $0.025; GOLD: $0.02; PLATINUM: $0.02; DIAMOND: $0.02Vehicle record — Charged once after a unique CarsForSale.com vehicle record is saved to the dataset.
apify-actor-start$0.005Actor Start — Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). — Charged once per run.

Apify platform usage for this Actor run is included alongside the event prices above; no separate per-run platform-usage fee is passed to users.

This covers Apify platform usage for this Actor run. Other Apify products or usage outside this Actor run may still follow your account plan.

Reliability and responsible use

CarsForSale.com can present Cloudflare or CAPTCHA challenges. The Actor identifies itself as CarsForSaleScraper/1.1, uses coherent US residential browser sessions, bounded retries, low concurrency, and explicit blocker detection. CarsForSale.com asks blocked feed providers to contact its crawler team with their outbound IP ranges and User-Agent; operators running this Actor at scale should request allowlisting from CarsForSale.com. The OUTPUT record reports blocker.type: HTTP_403_CHALLENGE and the access path used. The Actor does not solve CAPTCHAs or bypass authentication. A fully challenged run returns BLOCKED, zero fabricated records, and zero vehicle-result charges. Valid partial records are preserved.

Scrape only public data you are permitted to collect. Follow the source website's terms, robots policies, applicable privacy laws, and restrictions on personal data. This Actor is not affiliated with CarsForSale.com.

What data does Cars For Sale Scraper return?

FieldTypeDescription
urlstringValue returned as url.
listingIdstring or nullValue returned as listingId.
titlestringValue returned as title.
yearinteger or nullValue returned as year.
makestring or nullValue returned as make.
modelstring or nullValue returned as model.
trimstring or nullValue returned as trim.
pricenumber or nullValue returned as price.
currencystring or nullValue returned as currency.
mileageinteger or nullValue returned as mileage.
vinstring or nullValue returned as vin.
stockNumberstring or nullValue returned as stockNumber.
bodyTypestring or nullValue returned as bodyType.
fuelTypestring or nullValue returned as fuelType.
transmissionstring or nullValue returned as transmission.
enginestring or nullValue returned as engine.
drivetrainstring or nullValue returned as drivetrain.
exteriorColorstring or nullValue returned as exteriorColor.
interiorColorstring or nullValue returned as interiorColor.
descriptionstring or nullValue returned as description.
dealerNamestring or nullValue returned as dealerName.
dealerPhonestring or nullValue returned as dealerPhone.
locationstring or nullValue returned as location.
imageUrlsarrayValue returned as imageUrls.

Use cases

  • Schedule repeatable collection and export results to downstream workflows.
  • Monitor public products, prices, availability, sellers, and catalog changes.
  • Run a one-off research job and export the structured result as JSON, CSV, Excel, XML, or RSS from Apify.
  • Schedule the same input to monitor changes over time and send completed datasets to a webhook or integration.
  • Feed schema-shaped records into a database, spreadsheet, BI tool, or AI workflow with the source URL retained for verification.

Run Cars For Sale Scraper with the Apify API

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/cars-for-sale-scraper').call({
"startUrls": [
{
"url": "https://www.carsforsale.com/toyota-for-sale-C648118"
}
],
"maxResults": 25,
"maxPages": 3,
"includeDetails": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
],
"apifyProxyCountry": "US"
}
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

You can also run the Actor from Apify Console, schedules, webhooks, the REST API, Make, Zapier, n8n, or the hosted Apify MCP server.

Support

When reporting a problem, include the Actor run ID, a redacted input, the expected result, and a small public example URL when applicable. Do not post API tokens, cookies, credentials, or personal data in an issue.