Cars.com Scraper — US Used & New Listings, VIN & Prices
Pricing
from $0.69 / 1,000 listings
Cars.com Scraper — US Used & New Listings, VIN & Prices
Scrape Cars.com used, new, and CPO listings across the US. Extract VIN, price, deal rating, mileage, dealer, and photos. Search by URL, make/model/ZIP, VIN, or dealer; monitor new ads and price drops.
Pricing
from $0.69 / 1,000 listings
Rating
0.0
(0)
Developer
Andrej Kiva
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Disclaimer: This is an unofficial integration developed independently. It is not affiliated with, sponsored by, or endorsed by Cars.com, Inc. or any of its subsidiaries.
Cars.com and related names are trademarks of their respective owners. Data is read from publicly accessible vehicle listings. No Cars.com account login is required.
This Actor is provided for informational, research, and price monitoring purposes only. You are solely responsible for complying with applicable laws, Cars.com's terms of use, and your organization's policies.
Cars.com scraper for the largest US new / used / CPO inventory marketplace. Scrape Cars.com search results and listing pages into JSON/CSV via Apify — VIN, price, deal rating, mileage, dealer, and photos. Search by a copied /shopping/results/ URL, by make / model / ZIP, by VIN, or by dealer ID. Optional monitor mode emits only new ads and price changes. Fast HTTP path (no headless browser) with US residential proxy for Akamai. Use as a Cars.com API alternative from Python, Node.js, cURL, or MCP / AI assistants.
Best for: US used-car price research, dealer inventory monitoring, VIN lookup, and automotive market analytics.
Crawloop vehicle suite — US retail, EU retail, and salvage.
| Cars.com | AutoScout24 | Mobile.de | Copart | IAAI |
|---|---|---|---|---|
| Cars.com Scraper ◄── you are here | AutoScout24 Scraper | Mobile.de Scraper | Copart Scraper | IAAI Scraper |
When to use this Actor
- Used-car price intelligence — Build valuation datasets with prices, Cars.com deal ratings, mileage, and VINs by make/model/ZIP.
- Dealer inventory monitoring — Paste a search URL or set
dealerId, then enablemonitorModefor new ads and price drops. - Exact browser-filter replication — Apply filters on Cars.com, copy the
/shopping/results/URL, paste into Start URLs. - VIN lookup — Pass one or more 17-character VINs and get the matching public listing.
- Lead generation for dealers — Export dealer name, rating, city, ZIP, and customer ID (no personal phones; Cars.com uses dynamic number insertion).
When not to use this Actor
- Dealer phone harvesting — Cars.com serves phones via dynamic number insertion. This Actor does not scrape dealer websites for published numbers.
- Member-only / lead-form data — No login, financing applications, or “Contact dealer” submissions.
- EU retail cars — Use AutoScout24 Scraper or Mobile.de Scraper. Salvage auctions: Copart Scraper then IAAI Scraper.
Key features
- URL + filter + VIN modes — Paste search or listing URLs, or build a search from make, model, ZIP, radius, year, price, mileage, body, fuel, and deal rating.
- Deal rating — Cars.com’s own badge (
Great Deal,Good Deal,Fair Deal, …) plus signed dollar delta vs local market average. - Flat numeric schema —
price,mileage,vin,dealDeltaUsd,dealerZip— ready for CSV and BI tools. No nested analytics dumps. - Shippable vs in-radius — Optional drop of out-of-radius nationwide-shippable cards (
includeShippable). - ~10k cap splitting — When a search reports the site’s ~10,000 result ceiling, the Actor splits by year or price band.
- Monitor mode — Key-Value store baseline; later runs emit only new listings or price changes.
- Lightweight HTTP —
curl_cffiChrome TLS impersonation; 128–512 MB RAM; no Playwright. - Akamai-safe URLs —
sort=best_deal,page_size, andmaximum_distance=allare stripped so residential fetches are not 403’d.
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | Array | [] | Search (/shopping/results/) or listing (/vehicledetail/{id}/) URLs. |
make / model / trim | String | — | Brand and model used when Start URLs are empty. |
zip | String | — | US 5-digit ZIP for radius search. |
searchRadius | String | 50 | 10 / 25 / 50 / 75 / 100 / 200 / 500 miles (not all). |
stockType | String | used | used, new, cpo, or all (three searches, de-duped). |
minYear / maxYear | Integer | — | Model-year range. |
minPrice / maxPrice | Integer | — | Price band in USD. |
maxMileage | Integer | — | Maximum miles. |
bodyStyle / fuelType / transmission / drivetrain | String | all | Vehicle filters. |
dealRating | String | all | Keep Great / Good / Fair Deal only. |
includeShippable | Boolean | true | Keep out-of-radius shippable cards. |
vins | Array | [] | 17-character VIN lookup. |
dealerId | String | — | Restrict to one dealer’s inventory. |
keyword | String | — | Free-text search. |
sortBy | String | relevance | Best match, price, mileage, newest, year, distance. |
maxItems | Integer | 100 | Cap per run. |
scrapeDetails | Boolean | false | Fetch each VDP for extra gallery/specs. Search cards already include VIN and deal rating. |
monitorMode | Boolean | false | Emit only new ads and price changes after a seed run. |
maxConcurrency | Integer | 5 | Parallel detail fetches. |
proxyConfiguration | Object | US residential | Apify RESIDENTIAL (US) required. |
Example input
{"make": "Honda","model": "Civic","zip": "60606","searchRadius": "50","stockType": "used","minYear": 2018,"maxPrice": 18000,"maxItems": 50,"scrapeDetails": false,"monitorMode": false,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
Start-URL mode (filters on the page are kept):
{"startUrls": [{ "url": "https://www.cars.com/shopping/results/?stock_type=used&makes%5B%5D=honda&models%5B%5D=honda-civic&zip=60606&maximum_distance=50&sort=best_match_desc" }],"maxItems": 100,"includeShippable": false}
VIN lookup:
{"vins": ["19XFC1F37KE202871"],"maxItems": 5}
Output
Each dataset row is one Cars.com vehicle listing.
| Field | Type | Description |
|---|---|---|
id / url / vin | String | Listing UUID, canonical VDP URL, 17-character VIN. |
year / make / model / trim / title | Mixed | Identity. |
stockType / cpo | Mixed | Used, New, or certified pre-owned. |
price / msrp / monthlyPayment / priceDrop | Integer | USD amounts (msrp omitted when 0). |
dealRating / dealDeltaUsd / marketAverage | Mixed | Cars.com deal badge and signed $ vs comps. |
mileage / bodyStyle / fuelType | Mixed | Core specs. |
dealerName / dealerRating / dealerCity / dealerZip / dealerCustomerId | Mixed | Dealer identity (no DNI phone). |
isShippable / shipPrice | Mixed | Out-of-radius shipping expansion. |
photos / photoCount | Mixed | Image URLs and reported gallery size. |
daysOnMarket / updatedAt | Mixed | Freshness when Cars.com surfaces it. |
changeType | String | Monitor mode: new or price_change. |
scrapedAt | String | ISO timestamp. |
{"id": "63cbc79f-54c1-480f-927b-567915f5767d","url": "https://www.cars.com/vehicledetail/63cbc79f-54c1-480f-927b-567915f5767d/","vin": "19XFC1F37KE202871","title": "Used 2019 Honda Civic EX","year": 2019,"make": "Honda","model": "Civic","trim": "EX","stockType": "Used","price": 11350,"priceDrop": 540,"dealRating": "Great Deal","dealDeltaUsd": -317,"marketAverage": 12207,"mileage": 170614,"bodyStyle": "Sedan","fuelType": "Gasoline","dealerName": "Mercedes-Benz of Austin","dealerCity": "Austin","dealerState": "TX","dealerZip": "78752"}
Use cases
| Use case | What you get |
|---|---|
| Used-car valuation | Prices, deal ratings, mileage, year, VIN per model |
| ZIP / radius comps | Same query across Chicago vs Dallas vs nationwide (searchRadius 500) |
| Dealer stock watch | Monitor mode + dealerId or a copied search URL |
| Flip / wholesale scan | dealRating=great plus price-drop and single-search filters |
| AI / MCP pipelines | Structured JSON for assistants and BI tools |
Integration examples
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('crawloop/cars-com-scraper').call({make: 'Honda',model: 'Civic',zip: '60606',maxPrice: 18000,maxItems: 50,scrapeDetails: false,proxyConfiguration: {useApifyProxy: true,apifyProxyGroups: ['RESIDENTIAL'],apifyProxyCountry: 'US',},});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.slice(0, 5));
Python
from apify_client import ApifyClientclient = ApifyClient(token)run = client.actor("crawloop/cars-com-scraper").call(run_input={"make": "Honda","model": "Civic","zip": "60606","fuelType": "gasoline","maxItems": 50,"scrapeDetails": False,"proxyConfiguration": {"useApifyProxy": True,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US",},})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items[:5])
cURL
curl -X POST "https://api.apify.com/v2/acts/crawloop~cars-com-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"make": "Toyota","model": "Camry","zip": "90210","maxItems": 20,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}'
MCP and AI assistants
Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call crawloop/cars-com-scraper.
Example prompts:
- "Run Cars.com Scraper for used Honda Civic near ZIP 60606 under $18,000 with maxItems 40 and return title, price, VIN, mileage, and dealRating as JSON"
- "Scrape Cars.com Toyota Camry listings in 90210 and summarize median price by year"
- "Chain Cars.com Scraper then Copart Scraper to compare retail Civic prices with salvage lots of the same make"
Suite next step
After US retail coverage on Cars.com, pull salvage comps with Copart Scraper then IAAI Scraper, and used-parts with Car-Part Scraper. For Europe, use AutoScout24 Scraper or Mobile.de Scraper.
FAQ
Is this a Cars.com API?
There is no public read API for listing search. This Actor is a Cars.com API alternative that returns structured dataset items you can call from Python, Node.js, or MCP.
Why do I need a residential proxy?
Cars.com uses Akamai Bot Manager. Datacenter IPs typically get HTTP 403. Use US RESIDENTIAL.
Why did my URL 403?
sort=best_deal, page_size, and maximum_distance=all match robots.txt patterns and trigger Akamai. The Actor rewrites those parameters automatically. Use searchRadius 500 for nationwide-style coverage.
How many listings can one search return?
24 listings per page, capped around 10,000 results per query. This Actor splits wide searches by year or price when that cap is hit. Narrow ZIP / year / price filters go deeper faster.
Do search cards include VIN?
Yes. Cars.com search JSON already carries VIN, deal rating, mileage, dealer, and preview photos. Leave scrapeDetails off unless you need a larger gallery.
Does this return dealer phone numbers?
No. Cars.com phones are dynamic-number-insertion tracking lines, not the dealer’s published number.
Start URLs or make/model filters?
Paste a browser search URL in startUrls to keep every filter you already applied. Leave Start URLs empty and set make / model / zip to build the search in the Actor.
Can I watch a dealer’s stock?
Yes — set dealerId (the listing’s dealerCustomerId) or paste a filtered search URL, then turn on monitorMode.
Related Actors
- AutoScout24 Scraper — European used-car listings
- Mobile.de Scraper — German vehicle listings
- Copart Scraper — US/CA salvage auctions
- IAAI Scraper — US/CA salvage auctions
- Car-Part Scraper — used auto parts inventory
- Facebook Marketplace Scraper — US local listings + vehicles