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

Scrape CarGurus car listings by ZIP, make, model and filters or from search URLs: price, market value (IMV), deal rating, mileage, VIN, specs, history, photos and dealer details. No login.
Scrape used and new car listings from CarGurus.com by ZIP code, make, model and filters, or straight from CarGurus search URLs. Every listing comes with its price, CarGurus market value (IMV), deal rating, days on market, VIN, specs, accident and owner history, photos and full dealer details. No login, no browser, about 1,000 detailed listings per minute.
| Field | Description |
|---|---|
zipCodes | US ZIP codes to search around (each ZIP is a separate search). Empty = nationwide. |
makes / models | Makes (Toyota, Ford ...) and models (Camry, F-150 ...). Empty = all. |
maxItems | Maximum listings saved in total (default 20). |
startUrls | CarGurus search URLs (/Cars/l-Used-Honda-Civic-d586?zip=60606, inventory search URLs) or listing URLs (/details/452849606). |
radius | Miles around each ZIP (default 50, 0 = nationwide). |
condition | New & used, used, new or certified pre-owned. |
yearFrom / yearTo, minPrice / maxPrice, minMileage / maxMileage | Range filters. |
dealRatings | Only Great / Good / Fair / High / Overpriced / no-analysis deals. |
sortBy | Best deal, price, mileage, newest or oldest listings. |
includeDetails | Add the full listing details (default on). |
{
"zipCodes": ["90210"],
"makes": ["Toyota"],
"models": ["Camry", "RAV4"],
"radius": 50,
"yearFrom": 2020,
"maxPrice": 30000,
"dealRatings": ["GREAT_PRICE", "GOOD_PRICE"],
"maxItems": 100
}
One row per car listing. Main fields:
| Field | Description |
|---|---|
listingId, url, title | CarGurus listing id, link and title |
year, make, model, trim, condition, vin, stockNumber | Vehicle |
price, totalPrice, msrp | Price, price with disclosed dealer fees, MSRP (new cars) |
expectedPrice, priceDifferential, dealRating, dealRatingLabel, dealScore | CarGurus market value and deal rating |
daysOnMarket, daysAtDealer, savedCount | Listing age and popularity |
mileage, bodyStyle, drivetrain, transmission, engine, fuelType, cityMpg, highwayMpg, combinedMpg, exteriorColor, interiorColor, doors, options | Specs |
accidentCount, ownerCount, hasVehicleHistoryReport, safetyRating, safetyRatings | History and NHTSA ratings |
dealerName, dealerId, sellerType, dealerAddress, dealerCity, dealerState, dealerZip, latitude, longitude, dealerPhone, dealerWebsite, dealerRating, dealerReviewCount, dealerAwards, dealerHours, distanceMiles | Seller |
dealerFees, returnPolicyDays, financingPartners, howToShop, nationwideShipping, featured | Buying options |
photoCount, mainPhotoUrl, photos, description | Media and seller notes |
Example (trimmed; dealer details are fictional):
{
"listingId": 452849606,
"url": "https://www.cargurus.com/details/452849606",
"title": "2025 Toyota Highlander XLE FWD",
"year": 2025,
"make": "Toyota",
"model": "Highlander",
"trim": "XLE FWD",
"condition": "Used",
"vin": "5TDKDRAH1SS551513",
"price": 39999,
"totalPrice": 40117,
"expectedPrice": 41991,
"priceDifferential": 1992,
"dealRating": "GREAT_PRICE",
"dealRatingLabel": "Great Deal",
"daysOnMarket": 99,
"mileage": 19349,
"bodyStyle": "SUV / Crossover",
"drivetrain": "Front-Wheel Drive",
"engine": "265 hp 2.4L I4",
"fuelType": "Gasoline",
"combinedMpg": 24.15,
"accidentCount": 0,
"ownerCount": 1,
"safetyRating": 5,
"dealerName": "Sunset Valley Motors",
"dealerCity": "Norwalk",
"dealerState": "CA",
"dealerPhone": "(555) 010-0123",
"dealerRating": 4.6,
"dealerReviewCount": 212,
"distanceMiles": 24.42,
"dealerFees": [{ "name": "Documentation Fee", "amount": 85 }],
"photoCount": 38,
"mainPhotoUrl": "https://static.cargurus.com/images/forsale/2026/08/31/17/27/2025_toyota_highlander-pic-646078629031536422-1024x768.jpeg",
"detailsFetched": true,
"scrapedAt": "2026-10-15T00:59:48Z"
}
You pay $1.00 per 1,000 listings ($0.001 per saved listing), with or without details. Example: 1,000 detailed listings ≈ $1.00 in listing fees. Platform usage (compute and datacenter proxy traffic) is billed separately and is small: a measured 1,000-listing run with details took 56 seconds and about 7 MB of proxy traffic, about $0.01 of usage, so 1,000 listings cost about $1.01 in total. Set a maximum total charge on the run and the scraper stops cleanly when it is reached.
Is it legal to scrape CarGurus? The scraper only collects publicly visible listing data, without logging in. Check that your use complies with CarGurus' terms and the laws that apply to you.
Do I need a CarGurus account or my own proxy? No. No login is needed, and the default datacenter proxy (US exits) works.
How many listings can I get? Up to 10,000 results per search, which is the most CarGurus serves for one search (a nationwide Toyota search returns about 9,900 unique cars). Add several ZIP codes or split by price, year or model to collect more; the run's status message tells you when a search hit that ceiling.
Why is a field empty? CarGurus does not have every value for every car (e.g. MSRP only for new cars, ratings only for some dealers). Turn on "Include listing details" for the most complete rows.
Can I schedule it or use the API? Yes. Schedule runs to monitor prices, call it through the API, and export to JSON, CSV or Excel.
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.
zipCodesarrayOptionalZIP codes
US ZIP codes to search around. Each ZIP is its own search. Leave empty for a nationwide search (when a make, model or other filter is set) or to use only the URLs below.
makesarrayOptionalMakes
Car makes, e.g. Toyota, Honda, Ford, Mercedes-Benz, Tesla. Leave empty for all makes.
modelsarrayOptionalModels
Models, e.g. Camry, Civic, F-150 (matched against CarGurus' model list for the makes above), or 'Honda Civic' style names. Leave empty for every model of the selected makes.
maxItemsintegerOptionaldefault 20Maximum listings
Maximum number of listings saved across all searches and URLs.
startUrlsarrayOptionalCarGurus search or listing URLs
Optional. Search URLs copied from cargurus.com (e.g. https://www.cargurus.com/Cars/l-Used-Honda-Civic-d586?zip=60606&distance=50, or any inventory search URL with your filters) and single listing URLs (https://www.cargurus.com/details/452849606). Used in addition to the filter search.
Narrow the ZIP / make / model search. All filters are optional.
radiusintegerOptionalSearch radius (miles)
Distance from each ZIP code in miles (default 50). 0 = nationwide.
conditionenumOptionalCondition
New, used or certified pre-owned. Leave empty for all.
yearFromintegerOptionalYear from
Oldest model year.
yearTointegerOptionalYear to
Newest model year.
minPriceintegerOptionalMinimum price ($)
Lowest list price in USD.
maxPriceintegerOptionalMaximum price ($)
Highest list price in USD.
minMileageintegerOptionalMinimum mileage
Lowest odometer reading in miles.
maxMileageintegerOptionalMaximum mileage
Highest odometer reading in miles.
dealRatingsarrayOptionalDeal ratings
Only listings with these CarGurus deal ratings. Leave empty for all.
sortByenumOptionalSort by
Order of the filter search results (search URLs keep their own sort). Default: best deal.
includeDetailsbooleanOptionaldefault trueInclude listing details
On: every listing also gets the full photo gallery, seller description, accident and owner counts, dealer address, coordinates, rating, hours, website, fees, NHTSA ratings and more (one extra request per car). Off: faster, search-result fields only.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxy used to reach CarGurus (US exits). 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 | number | null | CarGurus listing id |
| url | string | null | Listing URL |
| title | string | null | Year make model trim |
| year | number | null | Model year |
| make | string | null | Make |
| model | string | null | Model |
| trim | string | null | Trim |
| condition | string | null | Used, New or Certified |
| vin | string | null | VIN |
| stockNumber | string | null | Dealer stock number |
| price | number | null | List price (USD) |
| totalPrice | number | null | Price including disclosed dealer fees |
| msrp | number | null | MSRP (new cars) |
| expectedPrice | number | null | CarGurus instant market value (IMV) |
| priceDifferential | number | null | IMV minus price (positive = below market) |
| dealRating | string | null | Deal rating key |
| dealRatingLabel | string | null | Deal rating label |
| dealScore | number | null | CarGurus deal score |
| daysOnMarket | number | null | Days on CarGurus |
| daysAtDealer | number | null | Days at the dealer |
| mileage | number | null | Mileage (miles) |
| bodyStyle | string | null | Body style |
| drivetrain | string | null | Drivetrain |
| transmission | string | null | Transmission |
| engine | string | null | Engine |
| fuelType | string | null | Fuel type |
| cityMpg | number | null | City MPG |
| highwayMpg | number | null | Highway MPG |
| combinedMpg | number | null | Combined MPG |
| exteriorColor | string | null | Exterior color |
| interiorColor | string | null | Interior color |
| doors | number | null | Doors |
| options | array | null | Major options |
| accidentCount | number | null | Reported accidents |
| ownerCount | number | null | Previous owners |
| hasVehicleHistoryReport | boolean | null | Vehicle history report available |
| isCpo | boolean | null | Certified pre-owned |
| safetyRating | number | null | NHTSA overall rating |
| safetyRatings | object | null | NHTSA ratings |
| fuelTankGallons | number | null | Fuel tank (gallons) |
| cargoVolume | string | null | Cargo volume |
| legroom | array | null | Legroom |
| sellerType | string | null | DEALER or PRIVATE |
| dealerName | string | null | Dealer name |
| dealerId | number | null | Dealer id |
| dealerAddress | string | null | Street |
| dealerCity | string | null | City |
| dealerState | string | null | State |
| dealerZip | string | null | ZIP |
| latitude | number | null | Latitude |
| longitude | number | null | Longitude |
| dealerPhone | string | null | Phone |
| dealerRating | number | null | Dealer rating (1-5) |
| dealerReviewCount | number | null | Dealer reviews |
| dealerAwards | array | null | Dealer awards |
| dealerWebsite | string | null | Dealer website |
| dealerInventoryUrl | string | null | Dealer page on CarGurus |
| dealerLogoUrl | string | null | Dealer logo |
| dealerHours | array | null | Opening hours |
| isFranchiseDealer | boolean | null | Franchise dealer |
| franchiseMake | string | null | Franchise make |
| distanceMiles | number | null | Distance from the search ZIP |
| howToShop | string | null | Pick-up / delivery option |
| buyingOption | string | null | Buying option |
| nationwideShipping | boolean | null | Dealer ships nationwide |
| dealerFees | array | null | Disclosed dealer fees |
| returnPolicyDays | number | null | Return window (days) |
| financingPartners | array | null | Financing partners |
| featured | boolean | null | Featured / sponsored listing |
| savedCount | number | null | Times saved by shoppers |
| photoCount | number | null | Photos |
| mainPhotoUrl | string | null | Main photo |
| photos | array | null | Photo URLs |
| description | string | null | Seller description |
| makeId | string | null | CarGurus make id |
| modelId | string | null | CarGurus model id |
| carId | number | null | CarGurus year-model id |
| trimEntityId | string | null | CarGurus trim id |
| searchZip | string | null | ZIP searched |
| detailsFetched | boolean | null | Listing details were fetched |
| scrapedAt | string | null | Scrape time (UTC) |
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 CarGurus car listing (with full details when enabled). | $0.001 |
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/cargurus-scraper').call({
"zipCodes": [
"90210"
],
"makes": [
"Toyota"
],
"maxItems": 20,
"radius": 50,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
],
"scrapelyProxyCountry": "US"
}
})
// 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/cargurus-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/cargurus-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 near ZIP 10001 with full details.
Cheapest used Fords within a price range.
Listings from a pasted CarGurus search.
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.