
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape Cars.com new and used car listings from search URLs, vehicle URLs or filters: price, VIN, mileage, specs, features, photos, price history, deal rating, vehicle history and dealer details. No login.
Scrape new, used and certified pre-owned car listings from Cars.com: price, VIN, mileage, specs, features, the full photo gallery, price history, deal rating, market price, vehicle-history flags and complete dealer details. Paste any Cars.com search URL or set filters (make, model, ZIP, price, year, mileage), and get clean rows ready for JSON, CSV or Excel. No login, no browser, and 1,000 fully detailed listings take well under a minute.
/vehicledetail/<id>/), into Cars.com search or vehicle URLs.| Field | Description |
|---|---|
startUrls | Cars.com search-result URLs (any filters) and/or vehicle detail URLs. |
maxItems | Maximum listings saved across all inputs (default 20). |
makes, models | Make and model names (Toyota, Camry) or Cars.com slugs (toyota-camry). |
zip, maximumDistance | Search around a US ZIP code; radius in miles, 0 = nationwide. |
stockType | all, new, used or cpo. |
minPrice, maxPrice, minYear, maxYear, maxMileage | Range filters. |
bodyStyles, fuelTypes, keyword | Extra filters (e.g. suv, electric, sunroof). |
fetchDetails | Full details per listing (default on). |
sort | Sort override (price, mileage, year, newest listed, distance, best deal). |
maxConcurrency | Parallel detail requests (default 10). |
proxyConfiguration | Proxy (datacenter by default). |
{
"startUrls": ["https://www.cars.com/shopping/results/?stock_type=used&makes[]=toyota&models[]=toyota-camry&zip=60606&maximum_distance=50"],
"maxItems": 20,
"fetchDetails": true
}
Filter-only example:
{
"makes": ["Honda"],
"models": ["CR-V"],
"zip": "10001",
"maximumDistance": 100,
"stockType": "used",
"maxPrice": 30000,
"maxItems": 100
}
One row per vehicle. Fields the listing does not have come back as null, so every row has the same shape.
| Group | Fields |
|---|---|
| Vehicle | listingId, url, vin, stockNumber, stockType, title, year, make, model, trim, bodyStyle, drivetrain, transmission, engine, mpg, cityMpg, highwayMpg, fuelType, exteriorColor, interiorColor, doors, cylinders, category |
| Price | price, msrp, priceDrop, priceHistory[], listedDate, daysOnMarket, marketPrice, priceVsMarket, goodDealBelow, greatDealBelow, dealBadge, discountVsMsrp, discountPctVsMsrp, priceIncludesFees, financingType |
| History | noAccidents, singleOwner, cleanTitle, personalUseOnly, vehicleHistoryReport, vehicleHistoryReportUrl, cpo, cpoPackage |
| Dealer | dealerName, sellerType, dealerAddress, dealerCity, dealerState, dealerZip, latitude, longitude, distanceMiles, dealerPhone, dealerPhones[], dealerHours[], dealerRating, dealerReviewCount, dealerWebsite, dealerVdpUrl, customerId, dealerId |
| EV | evRangeScore, evRangeScoreLabel, evExpectedRangeMi, evEpaRangeMi, evMpge, evRecurrentReportUrl |
| Content | features[], featureCategories{}, allFeatures[], specs{}, description, photos[], photoCount, primaryThumbnail, videos[] |
| Ratings | consumerRating, consumerReviewCount, consumerRecommendPercent, consumerRatingsBreakdown{}, rankScores{} |
| Meta | badges[], sponsored, detailsFetched, vinCountry, vinYear, scrapedAt |
Example (trimmed, values from a real test run with the dealer anonymised):
{
"source": "cars.com",
"listingId": "a6fb37ec-4eeb-427b-84ab-4c2f7e4a30d9",
"vin": "4T1G11AK7RU858875",
"stockNumber": "RU858875",
"stockType": "Used",
"title": "2024 Toyota Camry SE",
"year": 2024,
"make": "Toyota",
"model": "Camry",
"trim": "SE",
"price": 25590,
"mileage": 45562,
"bodyStyle": "Sedan",
"drivetrain": "Front-wheel Drive",
"transmission": "Automatic",
"mpg": "28-39",
"fuelType": "Gasoline",
"exteriorColor": "Ice Cap",
"interiorColor": "Black",
"dealerName": "Example Toyota Irvine",
"dealerAddress": "100 Example Dr, Irvine, CA 92618",
"dealerPhone": "(555) 010-0100",
"dealerRating": 4.7,
"dealerReviewCount": 3836,
"priceHistory": [
{"date": "2026-10-01", "price": 26522, "change": "Listed"},
{"date": "2026-10-03", "price": 28022, "change": "+$1,500"},
{"date": "2026-10-10", "price": 25590, "change": "-$2,432"}
],
"listedDate": "2026-10-01",
"daysOnMarket": 13,
"marketPrice": 25533,
"dealBadge": "Good Deal",
"cpo": true,
"cpoPackage": "Toyota Certified Used Vehicles",
"noAccidents": true,
"singleOwner": false,
"cleanTitle": true,
"vehicleHistoryReport": "autocheck",
"consumerRating": 4.2,
"features": ["Adaptive Cruise Control", "Keyless Entry", "Apple CarPlay®", "Backup Camera"],
"photoCount": 25,
"photos": ["https://platform.cstatic-images.com/xxlarge/in/v2/.../xZ6FNN4scktwlOS9OV9igZdvrsg.jpg"],
"url": "https://www.cars.com/vehicledetail/a6fb37ec-4eeb-427b-84ab-4c2f7e4a30d9/",
"scrapedAt": "2026-10-15T00:10:00.000Z"
}
You pay $0.50 per 1,000 listings ($0.0005 per listing), with or without full details. A run of 1,000 detailed listings therefore costs about $0.50 plus a few cents of platform usage (compute and datacenter proxy traffic, billed separately at the platform rates). There is no start fee, and a run stops cleanly when your maximum total charge is reached.
Is it legal to scrape Cars.com? The actor only collects publicly visible listing data. You are responsible for how you use it; check Cars.com's terms and the laws that apply to you, especially for personal data.
Do I need a login, cookies or my own proxy? No. The default datacenter proxy works. You can switch to residential in the proxy settings if you ever need to.
How many results can I get? Cars.com shows at most 10,000 listings per search. For more, split your search (by price band, year range, make or radius) or add several URLs; duplicates across searches are removed automatically.
Why is a field empty? Not every listing has every field: history flags only exist when the dealer shares a report, MSRP mostly on new cars, EV fields only on electric cars. With Fetch full details off, only the search-card fields are filled.
Are the phone numbers real? They are the numbers Cars.com publishes for the dealer, labelled by department. Cars.com often shows tracking numbers that forward to the dealership.
Can I schedule runs or use the API? Yes. Schedule the actor for daily price tracking, and fetch results via the API or webhooks in any format.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
startUrlsarrayOptionalCars.com search or vehicle URLs
Cars.com search-results URLs (set your filters on cars.com, then copy the URL, e.g. https://www.cars.com/shopping/results/?stock_type=used&makes[]=toyota&zip=60606&maximum_distance=50) or single vehicle URLs (https://www.cars.com/vehicledetail//). Search and vehicle URLs can be mixed. Leave empty to search with the filters below.
maxItemsintegerOptionaldefault 20Maximum listings
Maximum number of listings saved across all inputs. Cars.com shows at most 10,000 listings per search; use several searches or narrower filters for more.
Build a search without a URL. Filters are combined into one Cars.com search and used in addition to any URLs above.
makesarrayOptionalMakes
Car makes, e.g. Toyota, Honda, Ford, Mercedes-Benz.
modelsarrayOptionalModels
Models, e.g. Camry or CR-V (with one make), or make-model slugs like toyota-camry, honda-cr_v.
zipstringOptionalZIP code
US ZIP code to search around.
maximumDistanceintegerOptionalSearch radius (miles)
Distance from the ZIP code in miles. 0 = nationwide. Used only with a ZIP code.
stockTypeenumOptionalNew or used
Stock type.
minPriceintegerOptionalMinimum price ($)
Lowest list price in USD.
maxPriceintegerOptionalMaximum price ($)
Highest list price in USD.
minYearintegerOptionalMinimum year
Oldest model year.
maxYearintegerOptionalMaximum year
Newest model year.
maxMileageintegerOptionalMaximum mileage
Highest odometer reading in miles.
bodyStylesarrayOptionalBody styles
Body styles, e.g. suv, sedan, pickup_truck, coupe, convertible, hatchback, minivan, wagon.
fuelTypesarrayOptionalFuel types
Fuel types, e.g. gasoline, hybrid, electric, plug_in_hybrid, diesel.
keywordstringOptionalKeyword
Free-text keyword, e.g. sunroof or tow package.
How much data to collect per car and how results are ordered.
fetchDetailsbooleanOptionaldefault trueFetch full details
On: every listing also gets the full photo gallery, specs, features, seller notes, dealer address/phones/hours/rating, price history, market price and deal thresholds, vehicle-history flags, consumer ratings and EV battery data (one extra request per car). Off: faster, search-card fields only.
sortenumOptionaldefault ""Sort override
Sort order applied to every search. Leave empty to keep the sort from each URL (best match by default).
maxConcurrencyintegerOptionaldefault 10Max concurrency
How many listing details are fetched in parallel.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxy used to reach Cars.com. Datacenter works and is the cheapest.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| listingId | string | null | Cars.com listing id |
| url | string | null | Listing URL |
| title | string | null | Year make model trim |
| vin | string | null | VIN |
| stockType | string | null | New, Used or Certified |
| year | integer | null | Model year |
| make | string | null | Make |
| model | string | null | Model |
| trim | string | null | Trim |
| price | integer | null | List price (USD) |
| msrp | integer | null | MSRP (USD, new cars) |
| mileage | integer | null | Mileage |
| dealBadge | string | null | Cars.com deal rating |
| marketPrice | integer | null | Cars.com market price estimate |
| priceDrop | integer | null | Latest price drop (USD) |
| bodyStyle | string | null | Body style |
| drivetrain | string | null | Drivetrain |
| transmission | string | null | Transmission |
| engine | string | null | Engine |
| mpg | string | null | City-highway MPG |
| fuelType | string | null | Fuel type |
| exteriorColor | string | null | Exterior color |
| interiorColor | string | null | Interior color |
| dealerName | string | null | Dealer or seller |
| dealerAddress | string | null | Dealer address |
| dealerCity | string | null | Dealer city |
| dealerState | string | null | Dealer state |
| dealerZip | string | null | Dealer ZIP |
| dealerPhone | string | null | Dealer phone |
| dealerRating | number | null | Dealer rating |
| dealerReviewCount | integer | null | Dealer reviews |
| dealerWebsite | string | null | Dealer website |
| dealerVdpUrl | string | null | Listing on dealer website |
| distanceMiles | number | null | Distance from search ZIP (mi) |
| listedDate | string | null | First listed |
| daysOnMarket | integer | null | Days on market |
| noAccidents | boolean | null | No accidents reported |
| singleOwner | boolean | null | One owner |
| cleanTitle | boolean | null | Clean title |
| cpo | boolean | null | Certified pre-owned |
| evRangeScore | integer | null | EV battery range score |
| photoCount | integer | null | Photos |
| primaryThumbnail | string | null | Main photo |
| sponsored | boolean | null | Sponsored placement |
| scrapedAt | string | null | Scraped at |
| photos | array | null | |
| features | array | null | |
| priceHistory | array | null | |
| dealerPhones | array | null | |
| specs | object | null | |
| rankScores | object | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Listing | One saved Cars.com vehicle listing (with full details when enabled). | $0.0005 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/cars-com-scraper').call({
"startUrls": [
"https://www.cars.com/shopping/results/?stock_type=used&makes[]=toyota&models[]=toyota-camry&zip=60606&maximum_distance=50"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/cars-com-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/cars-com-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Listings from a Cars.com search URL.
2019 or newer, 15k to 35k, with full details.
New EVs nationwide, latest listings first.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.