Cars.com Vehicle Listings Scraper
Pricing
Pay per event
Cars.com Vehicle Listings Scraper
Extract Cars.com VINs, prices, mileage, photos, specifications, history signals, and dealer details for inventory monitoring and market analysis.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
4 days ago
Last modified
Categories
Share
Scrape Cars.com vehicle listings into structured, analysis-ready data.
Paste a filtered Cars.com search URL or an individual vehicle URL.
Get VINs, prices, mileage, specifications, photos, history signals, price history, and dealer details without a Cars.com login.
The Actor uses Cars.com's structured mobile data route instead of rendering a browser, making normal runs fast and efficient.
What does Cars.com Vehicle Listings Scraper do?
Cars.com Vehicle Listings Scraper turns public inventory pages into one normalized row per vehicle.
It supports:
- π Cars.com search-result URLs with existing filters
- π Individual
/vehicledetail/URLs - π Automatic pagination across search results
- π Stable listing-ID deduplication
- π΅ Price, MSRP, mileage, and price-history extraction
- π· Full-resolution vehicle photo galleries
- πͺ Dealer identity, address, rating, phone, and website
- π§° Features, specifications, colors, drivetrain, and fuel data
- π‘οΈ Available accident, ownership, title, and history-report signals
Use the small prefilled example to see useful data in a few seconds.
Who is it for? Cars.com scraper users
Dealership and inventory teams
- Monitor competing dealer inventory by ZIP, make, and model.
- Detect newly listed or removed vehicles.
- Compare prices, mileage, trim, and days listed.
Automotive pricing analysts
- Build regional price samples from repeatable searches.
- Track price changes using stable listing IDs.
- Compare list price, MSRP, and available market-price signals.
Marketplaces and data engineers
- Feed normalized vehicle records into a warehouse.
- Export to JSON, CSV, Excel, XML, or RSS.
- Trigger downstream pipelines with schedules and webhooks.
Car buyers, flippers, and researchers
- Find vehicles matching precise Cars.com filters.
- Review VINs, photos, features, and history flags at scale.
- Build watchlists for price drops and fresh inventory.
Why use this Cars.com vehicle data extractor?
- β No Cars.com account required β it reads public listing data.
- β No browser overhead β structured HTTP requests keep runs lightweight.
- β Search and direct lookup β use either search-result or vehicle-detail URLs.
- β Rich details β fetch photos, dealer data, features, specs, and histories.
- β
Stable monitoring key β deduplicate and diff by
listingId. - β User-controlled limits β cap volume and detail concurrency.
- β Apify-native β schedule runs, call the API, and connect integrations.
- β Consistent schema β unavailable detail fields remain nullable instead of disappearing.
What Cars.com vehicle data can you extract?
| Group | Example fields |
|---|---|
| Identity | listingId, vin, stockNumber, stockType, url |
| Vehicle | year, make, model, trim, title, bodyStyle |
| Pricing | price, msrp, dealBadge, predictedPriceDifference |
| Usage | mileage, listedDate, sourceUpdatedAt |
| Powertrain | engine, transmission, drivetrain, fuelType, mpg |
| Appearance | exteriorColor, interiorColor, photos, photoCount |
| Equipment | features, specs |
| History | noAccidents, singleOwner, cleanTitle, personalUseOnly |
| Dealer | name, address, ZIP, phone, website, rating, coordinates |
| Ratings | consumer rating, review count, recommendation percentage |
| Provenance | searchUrl, scrapedAt, canonical Cars.com URL |
A listing exposes only the fields supplied by Cars.com and its seller.
How much does it cost to scrape Cars.com listings?
This Actor uses pay-per-event pricing.
You pay a small run-start fee plus one vehicle event for each unique dataset row.
| Apify plan | Vehicle price |
|---|---|
| Free | $0.00016164 |
| Starter / Bronze | $0.00014056 |
| Scale / Silver | $0.00010964 |
| Business / Gold | $0.000084335 |
Higher plans receive additional volume discounts.
Example before final platform cost calibration:
| Workload | Approximate event charge |
|---|---|
| 10 vehicles | $0.0165 including $0.005 start |
| 100 vehicles | $0.105 including $0.005 start |
| 1,000 vehicles | $1.005 including $0.005 start |
Your Apify Free plan includes platform credits that can cover many small evaluations.
How to scrape Cars.com vehicle listings
- Open a search on Cars.com.
- Apply the make, model, ZIP, radius, price, year, and other filters you need.
- Copy the resulting
/shopping/results/URL. - Open this Actor on Apify.
- Paste the URL into Cars.com URLs.
- Set a small Maximum vehicle listings value for your first run.
- Keep Fetch full vehicle details enabled for rich output.
- Click Start.
- Preview the dataset or export it in your preferred format.
You can also paste a direct /vehicledetail/{listing-id}/ URL for one vehicle.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | array | required | Cars.com search-result or vehicle-detail URLs |
fetchDetails | boolean | true | Enrich cards with full listing details |
maxItems | integer | 10 | Maximum unique vehicles across all URLs |
maxConcurrency | integer | 3 | Parallel detail requests, from 1 to 10 |
proxyConfiguration | object | direct | Optional Apify or custom proxy settings |
Search URL example:
{"startUrls": [{"url": "https://www.cars.com/shopping/results/?stock_type=used&makes[]=toyota&models[]=toyota-camry&maximum_distance=20&zip=10001"}],"fetchDetails": true,"maxItems": 25,"maxConcurrency": 3}
Direct vehicle example:
{"startUrls": [{"url": "https://www.cars.com/vehicledetail/2efe758d-c3d1-42e3-868c-bee54a86a014/"}],"fetchDetails": true,"maxItems": 1}
Output example
{"source": "cars.com","searchUrl": "https://www.cars.com/shopping/results/?stock_type=used&zip=10001","listingId": "2efe758d-c3d1-42e3-868c-bee54a86a014","vin": "4T1DBADK9TU549864","stockType": "Used","title": "2026 Toyota Camry SE","year": 2026,"make": "Toyota","model": "Camry","trim": "SE","price": 33055,"mileage": 2260,"bodyStyle": "Sedan","drivetrain": "All-wheel Drive","fuelType": "Gasoline","noAccidents": true,"cleanTitle": true,"dealerName": "New Rochelle Toyota","dealerCity": "New Rochelle","dealerState": "NY","dealerRating": 4.1,"photoCount": 53,"url": "https://www.cars.com/vehicledetail/2efe758d-c3d1-42e3-868c-bee54a86a014/","scrapedAt": "2026-07-14T02:05:37.740Z"}
The actual record contains more fields than this shortened example.
Search-card mode versus full details
Set fetchDetails to true for the richest record.
This adds:
- full photos
- equipment and key specifications
- dealer contact and location data
- price history
- vehicle-history signals
- consumer ratings
Set it to false when you need a fast inventory snapshot with core identity, price, mileage, colors, preview photos, and seller ZIP.
Detail-only fields are then returned as null or empty collections.
Tips for reliable Cars.com extraction
- π― Start with a narrow ZIP, radius, make, and model search.
- π§ͺ Test 5β10 vehicles before increasing
maxItems. - π Reuse the exact same search URL for monitoring comparisons.
- π Compare records by
listingId, not by title. - π Sort by newest listed on Cars.com before copying the URL when tracking arrivals.
- βοΈ Keep detail concurrency between 2 and 5 for normal workloads.
- π Enable a US proxy only if your network cannot reach the direct data route.
- π§Ή Expect inventory to change between runs as cars are listed or sold.
Schedule an inventory or price monitor
Apify schedules can rerun this scraper hourly, daily, or weekly.
A practical monitoring workflow is:
- Save one filtered Cars.com search URL.
- Run it on a fixed schedule.
- Store each dataset or merge rows into a database.
- Compare
listingId,price,sourceUpdatedAt, andlistedDate. - Alert when a listing appears, disappears, or changes price.
Use webhooks to notify your service as soon as a run succeeds.
Integrations for automotive workflows
Cars.com β Google Sheets
Append current inventory rows for a pricing analyst or acquisition team.
Cars.com β Slack or Discord
Post alerts for fresh listings under a target price or new price drops.
Cars.com β Make or Zapier
Filter records by VIN, mileage, CPO status, or dealer and route qualified vehicles.
Cars.com β a data warehouse
Load scheduled snapshots into BigQuery, Snowflake, PostgreSQL, or another analytics store.
Cars.com β webhook service
Start VIN decoding, valuation, CRM, or marketplace ingestion after each run.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/cars-com-vehicle-listings-scraper').call({startUrls: [{ url: 'https://www.cars.com/shopping/results/?stock_type=used&zip=10001&maximum_distance=20' }],fetchDetails: true,maxItems: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Use the Apify API with Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/cars-com-vehicle-listings-scraper').call(run_input={'startUrls': [{'url': 'https://www.cars.com/shopping/results/?stock_type=used&zip=10001&maximum_distance=20'}],'fetchDetails': True,'maxItems': 20,})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
Use the Apify API with cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~cars-com-vehicle-listings-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls": [{"url": "https://www.cars.com/shopping/results/?stock_type=used&zip=10001&maximum_distance=20"}],"fetchDetails": true,"maxItems": 20}'
Poll the returned run ID or use a webhook for completion.
Use Cars.com data with AI agents via MCP
This Actor can be exposed to Claude Code, Claude Desktop, Cursor, or VS Code through the hosted Apify MCP server.
For Claude Code:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/cars-com-vehicle-listings-scraper"
For Claude Desktop, Cursor, or VS Code:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/cars-com-vehicle-listings-scraper"}}}
Example prompts:
- βUse
automation-lab/cars-com-vehicle-listings-scraperto find used Toyota Camrys near 10001 under $30,000.β - βExtract this Cars.com vehicle URL and summarize its VIN, price history, features, and dealer rating.β
- βCompare todayβs Cars.com dataset with yesterdayβs and list new vehicles and price drops.β
OAuth connects the MCP server to your Apify account on first use.
Data quality and field availability
Cars.com listings are supplied by dealerships and private sellers.
That means some fields vary by listing.
For example:
- used vehicles may expose history signals that new vehicles do not
- dealer listings usually contain richer contact information
- photos and feature lists depend on seller uploads
- MSRP may be absent or zero for some used inventory
- price-history records exist only when Cars.com exposes changes
The Actor preserves a consistent shape and uses nullable fields when source data is unavailable.
Legality: is it legal to scrape Cars.com?
Scraping publicly available web data is generally lawful in many jurisdictions, but the exact rules depend on your location and use case.
This Actor does not log in, bypass account permissions, or access private user data.
Use it responsibly:
- collect only data you need
- respect applicable laws and contractual obligations
- avoid personal-data misuse
- follow GDPR, CCPA, and other privacy rules where applicable
- consult legal counsel for regulated or high-risk use cases
This independent Actor is not affiliated with, endorsed by, or sponsored by Cars.com or Cars Commerce.
FAQ: frequently asked questions
Do I need a Cars.com account or API key?
No. The Actor uses public structured listing data and does not require Cars.com credentials.
How fast is the scraper?
Core search cards arrive in pages of up to 24. Full detail mode adds one lightweight request per vehicle and processes several concurrently.
Why are some fields null?
The seller or Cars.com may not provide that attribute. Disable full details only if you intentionally want a lighter search-card record.
Why did my search return fewer vehicles than yesterday?
Cars.com inventory changes continuously as vehicles are added, sold, removed, or moved outside your filters.
Why did the run reject my URL?
Use a cars.com/shopping/results/ URL or a cars.com/vehicledetail/{uuid}/ URL. Home pages and editorial pages are not listing inputs.
Can I scrape multiple searches in one run?
Yes. Add multiple URLs. The Actor deduplicates repeated vehicles by stable listing ID and applies one global maxItems limit.
Can I use my Cars.com sort order?
Yes. Keep the sort parameter in the copied search URL. Unsupported source-side sort values fall back to Cars.com's default ranking.
How does this compare with a browser scraper?
The Actor reads structured data directly, avoiding page rendering and visual-selector breakage. This is faster and uses less memory than a browser-first approach.
Related automotive scrapers and tools
Explore related Actors from Automation Lab:
- AutoTempest Car Listings Scraper
- Autotrader Canada Vehicle Listings Scraper
- Autohero Cars Scraper
- BOVAG Vehicle Listings Scraper
- Bring a Trailer Auctions Scraper
- NHTSA Vehicle Complaints Scraper
- RockAuto Parts Catalog Scraper
Use Cars.com Vehicle Listings Scraper when your workflow specifically needs current Cars.com US inventory and its source-specific details.
Support and responsible use
If a valid listing URL fails, include the URL type, approximate run time, and run ID in an Apify issue.
Do not include private credentials or personal information in issue reports.
Start with a small reproducible input so the behavior can be investigated quickly.
For source changes, the Actorβs structured-query implementation can be updated without changing your dataset contract.