Cars For Sale Scraper
Pricing
from $20.00 / 1,000 vehicle records
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
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:
| Event | Price (USD) | When it is charged |
|---|---|---|
vehicle-result | FREE: $0.025; BRONZE: $0.025; SILVER: $0.025; GOLD: $0.02; PLATINUM: $0.02; DIAMOND: $0.02 | Vehicle record — Charged once after a unique CarsForSale.com vehicle record is saved to the dataset. |
apify-actor-start | $0.005 | Actor 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?
| Field | Type | Description |
|---|---|---|
url | string | Value returned as url. |
listingId | string or null | Value returned as listingId. |
title | string | Value returned as title. |
year | integer or null | Value returned as year. |
make | string or null | Value returned as make. |
model | string or null | Value returned as model. |
trim | string or null | Value returned as trim. |
price | number or null | Value returned as price. |
currency | string or null | Value returned as currency. |
mileage | integer or null | Value returned as mileage. |
vin | string or null | Value returned as vin. |
stockNumber | string or null | Value returned as stockNumber. |
bodyType | string or null | Value returned as bodyType. |
fuelType | string or null | Value returned as fuelType. |
transmission | string or null | Value returned as transmission. |
engine | string or null | Value returned as engine. |
drivetrain | string or null | Value returned as drivetrain. |
exteriorColor | string or null | Value returned as exteriorColor. |
interiorColor | string or null | Value returned as interiorColor. |
description | string or null | Value returned as description. |
dealerName | string or null | Value returned as dealerName. |
dealerPhone | string or null | Value returned as dealerPhone. |
location | string or null | Value returned as location. |
imageUrls | array | Value 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.