CarGurus Scraper 🚗
Shahid Irfan · @shahidirfan
Extract car listings from CarGurus with prices, makes, models, mileage, VINs, vehicle specifications, dealer details, locations, images, and listing URLs.
About
What does CarGurus Scraper do?
CarGurus Scraper collects vehicle listings from CarGurus search results pages and saves them as a clean, structured dataset. Give it a CarGurus search URL, or just a ZIP code with optional filters, and it returns prices, CarGurus deal ratings and Instant Market Value data, mileage, specs, photos, and dealer details for every listing it finds. The output is ready for spreadsheets, dashboards, price monitoring, and market research.
Why use CarGurus Scraper?
- Deal intelligence built in - Every listing includes the CarGurus deal rating, deal score, Instant Market Value (IMV), and the dollar difference between the asking price and the IMV.
- Rich vehicle detail - Capture year, make, model, trim, body type, condition, mileage, engine, drivetrain, transmission, colors, fuel economy, safety rating, features, and more in one pass.
- Dealer context - Save seller name, type, city, state, ZIP code, phone, and distance from the searched location.
- Flexible input - Start from any CarGurus search URL, or build a search from a ZIP code and simple filters.
- Clean data - Empty fields are removed automatically, so your dataset does not contain always-null columns.
- Automation ready - Run on demand or on a schedule, export to JSON, CSV, or Excel, and connect results to your own tools.
What data can you extract from CarGurus?
| Field | Description |
|---|---|
listingId | CarGurus listing identifier |
vin | Vehicle identification number |
title | Full listing title with year, make, model, and trim |
year, make, model, trim, bodyType | Vehicle identity and body style |
condition | USED, NEW, or CPO |
dealRating | CarGurus deal rating such as GREAT_PRICE or GOOD_PRICE |
dealScore | CarGurus internal deal ranking score |
price, totalPrice | Asking price and price including dealer fees |
imvPrice | CarGurus Instant Market Value |
priceDifferential | Dollars below (positive) or above (negative) the IMV |
mileage, mileageUnit | Odometer reading and unit |
exteriorColor, interiorColor | Color names and normalized values |
transmission, drivetrain, engine | Drivetrain and mechanical specs |
fuelType and fuel economy | Fuel type plus city, highway, and combined economy |
safetyRating, daysOnMarket | NHTSA safety rating and days the listing has been online |
distanceMiles | Distance from the searched ZIP code |
primaryImage, imageCount | Lead photo and number of photos |
features | List of notable vehicle features |
sellerName, sellerType, sellerCity, sellerState, sellerPostalCode, sellerPhone | Dealer details |
listingUrl | Direct link to the listing on CarGurus |
How to use CarGurus Scraper
- Open the Actor on Apify Store.
- Enter a CarGurus search URL, or a ZIP code with optional filters.
- Set the maximum number of listings and pages.
- Run the Actor.
- Download the dataset as JSON, CSV, or Excel, or connect it to your workflow.
If you provide a CarGurus search URL, it is used exactly as-is and the location and filter fields are ignored. If you provide a location instead, the Actor builds the search from your ZIP code, filters, and sort settings.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrl | String | No | - | A full CarGurus search results URL. Takes priority over all filter fields |
location | String | No | 10001 | US ZIP code to search around, used when no start URL is provided |
make | String | No | - | Vehicle make name, for example Toyota |
model | String | No | - | Vehicle model name, for example RAV4 |
condition | String | No | any | any, used, new, or certified |
distance | Integer | No | 50 | Search radius in miles |
minPrice / maxPrice | Integer | No | - | Lower and upper price bounds in USD |
minMileage / maxMileage | Integer | No | - | Lower and upper mileage bounds |
minYear / maxYear | Integer | No | - | Earliest and latest model years |
sortType | String | No | BEST_MATCH | Sort field: best match, deal score, price, mileage, distance, newest car year, or newest listings |
sortDirection | String | No | ASC | ASC or DESC |
results_wanted | Integer | No | 20 | Maximum number of listings to save |
max_pages | Integer | No | 10 | Safety cap on the number of search pages to visit |
proxyConfiguration | Object | No | Apify Proxy | Proxy settings, Apify Proxy recommended |
Output Data
| Field | Type | Description |
|---|---|---|
listingId | Number | CarGurus listing identifier |
vin | String | Vehicle identification number |
title | String | Full listing title |
year | Number | Model year |
make | String | Vehicle manufacturer |
model | String | Vehicle model |
trim | String | Vehicle trim |
bodyType | String | Body style |
condition | String | USED, NEW, or CPO |
dealRating | String | CarGurus deal rating |
dealScore | Number | Deal ranking score |
price | Number | Asking price in USD |
totalPrice | Number | Price including dealer fees |
imvPrice | Number | CarGurus Instant Market Value |
priceDifferential | Number | Difference versus IMV, positive means below IMV |
mileage | Number | Odometer reading |
mileageUnit | String | Mileage unit |
exteriorColor | String | Exterior color |
transmission | String | Transmission type |
drivetrain | String | Drivetrain |
engine | String | Engine description |
fuelType | String | Fuel type |
daysOnMarket | Number | Days the listing has been online |
distanceMiles | Number | Distance from the searched ZIP code |
primaryImage | String | Primary photo URL |
sellerName | String | Dealer name |
sellerCity | String | Dealer city |
sellerState | String | Dealer state |
listingUrl | String | Direct listing URL |
scrapedAt | String | ISO timestamp of collection |
Empty fields are removed from each record, so only fields with values appear in the dataset.
Usage Examples
Scrape from a CarGurus search URL
Collect listings from a prepared CarGurus search, such as Acura cars within 10 miles of ZIP 10001:
{
"startUrl": "https://www.cargurus.com/search?distance=10&sortDirection=ASC&sortType=BEST_MATCH&zip=10001&makeModelTrimPaths=m4&page=1",
"results_wanted": 100,
"max_pages": 5
}
Build a search from a ZIP code and filters
Search for used sedans priced between 15,000 and 30,000 USD near ZIP 90210, sorted by price:
{
"location": "90210",
"condition": "used",
"minPrice": 15000,
"maxPrice": 30000,
"sortType": "PRICE",
"sortDirection": "ASC",
"results_wanted": 50,
"max_pages": 5
}
Search a specific make and model
Collect Toyota RAV4 listings near ZIP 78701:
{
"location": "78701",
"make": "Toyota",
"model": "RAV4",
"distance": 50,
"results_wanted": 50,
"max_pages": 5
}
Track certified pre-owned inventory
Collect certified pre-owned listings near ZIP 10001:
{
"location": "10001",
"condition": "certified",
"distance": 100,
"results_wanted": 40,
"max_pages": 4
}
Sample Output
{
"listingId": 458585614,
"vin": "5J8YE1H0XSL802783",
"title": "2025 Acura MDX",
"year": 2025,
"make": "Acura",
"model": "MDX",
"trim": "SH-AWD with A-SPEC Package",
"bodyType": "SUV / Crossover",
"condition": "USED",
"dealRating": "GOOD_PRICE",
"dealScore": 1.7356389,
"price": 46490,
"totalPrice": 46665,
"imvPrice": 47461,
"priceDifferential": 971,
"currency": "USD",
"mileage": 12835,
"mileageUnit": "MILES",
"exteriorColor": "Silver",
"normalizedExteriorColor": "SILVER",
"interiorColor": "Black (Ebony)",
"transmission": "Automatic",
"drivetrain": "All-Wheel Drive",
"engine": "290 hp 3.5L V6",
"doors": "4 doors",
"fuelType": "Gasoline",
"cityFuelEconomy": 19,
"highwayFuelEconomy": 25,
"combinedFuelEconomy": 21.7,
"fuelEconomyUnit": "MPG",
"daysOnMarket": 36,
"distanceMiles": 5.450355,
"primaryImage": "https://static.cargurus.com/images/forsale/2026/10/16/04/40/2025_acura_mdx-pic-4066649105097917600-1024x768.jpeg",
"imageCount": 45,
"features": ["Leather Seats", "Sunroof/Moonroof", "Navigation System", "Backup Camera"],
"sellerName": "Heights Nissan",
"sellerId": 1736983,
"sellerCity": "Jackson Heights",
"sellerState": "NY",
"sellerPostalCode": "11372",
"sellerPhone": "(718) 568-7217",
"stockNumber": "NU928",
"listingUrl": "https://www.cargurus.com/details/458585614",
"scrapedAt": "2026-10-17T16:22:22.270Z"
}
Tips for Best Results
- Paste a CarGurus search URL you built in your browser to reuse exactly the same filters, sort, and location.
- Use a ZIP code in
locationfor accurate distance and inventory results. - Start with a small
results_wantedvalue to confirm the fields you need before running a large job. - Increase
max_pagesfor larger datasets; each page returns roughly 20 to 24 listings. - Use the
priceDifferentialfield to surface the best deals, for example listings where the price is below the Instant Market Value. - Keep Apify Proxy enabled for reliable, uninterrupted runs.
- Schedule repeat runs to monitor price drops and days on market over time.
Integrations
- Google Sheets - Export results to a spreadsheet for analysis.
- Webhooks - Trigger downstream workflows when a run finishes.
- Make and Zapier - Connect results to no-code automations.
- API - Access the dataset programmatically from your own systems.
- CSV, Excel, JSON, XML - Download the dataset in the format your tools require.
Frequently Asked Questions
Can I export CarGurus data to CSV or Excel?
Yes. Apify datasets can be downloaded as CSV, Excel, JSON, XML, and other supported formats directly from the Actor run.
Can I scrape new, used, and certified pre-owned cars?
Yes. Use the condition input, or add the relevant filters in the CarGurus search URL you provide. Listings are labeled USED, NEW, or CPO in the output.
Can I run this Actor on a schedule?
Yes. You can schedule the Actor in Apify Console to refresh data hourly, daily, weekly, or at another interval, which is useful for price and inventory monitoring.
Do I need a CarGurus account or API key?
No. The Actor works with public CarGurus search results and does not require an account or API key.
How many listings can I collect?
You control the volume with results_wanted and max_pages. A single search page returns roughly 20 to 24 listings, and the Actor paginates until it reaches your limit or the last page.
Why are some fields missing on certain listings?
Some vehicles do not have every attribute published, such as fuel economy for some electric cars or safety ratings for unrated models. Fields without values are removed from the record instead of being saved as empty.
What should I do if a run returns no listings?
Check that your search URL or filters match actual inventory. If a search has no matching cars, the dataset is empty by design. Broaden the distance, price, or year filters and try again.
Is it legal to scrape CarGurus?
Scraping publicly available data can be legal, but you are responsible for complying with applicable laws, the CarGurus terms of service, and privacy rules in your jurisdiction.
Support
For issues, feature requests, or custom Actor work, use the Issues tab on the Actor page or contact the developer through Apify.
Legal Notice
This Actor is designed for legitimate data collection from publicly available sources. Users are responsible for using the data responsibly and complying with applicable laws and website terms.
Input
Preview of the input form. Rent the Actor to fill it in and start runs from the console.
Fields
startUrlA full CarGurus search results URL. When provided it is used exactly as-is and the location and filter fields below are ignored.
locationUS ZIP code to search around, for example 10001. Used only when no CarGurus search URL is provided.
makeVehicle make name, for example Toyota or Ford. Used only when no CarGurus search URL is provided.
modelVehicle model name, for example Camry. Requires Make.
conditionVehicle condition to include.
distanceDistance in miles around the ZIP code.
minPriceLowest listing price to include.
maxPriceHighest listing price to include.
minMileageLowest odometer reading to include.
maxMileageHighest odometer reading to include.
minYearEarliest model year to include.
maxYearLatest model year to include.
sortTypeField used to order results.
sortDirectionAscending or descending order.
results_wantedMaximum number of listings to save.
max_pagesA safety cap on the number of search result pages to visit.
proxyConfigurationApify Proxy is recommended to avoid rate limits and blocks.
API
Bytewells speaks the Apify API. Existing integrations keep working: point apify-client at https://bytewells.com/api and use your Bytewells API token (Console → Settings → API access). The Actor ID is shahidirfan/cargurus-scraper (or shahidirfan~cargurus-scraper in URLs).
JavaScript · apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.BYTEWELLS_TOKEN,
baseUrl: 'https://bytewells.com/api',
});
const input = {
"helloWorld": 123
};
const run = await client.actor('shahidirfan/cargurus-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Python · apify-client
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["BYTEWELLS_TOKEN"], api_url="https://bytewells.com/api")
run_input = {
"helloWorld": 123
}
run = client.actor("shahidirfan/cargurus-scraper").call(run_input=run_input)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)HTTP · curl
curl -X POST "https://bytewells.com/api/v2/acts/shahidirfan~cargurus-scraper/runs" \
-H "Authorization: Bearer $BYTEWELLS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"helloWorld":123}'Runs are billed as compute from your credit balance. Paid Actors need an active rental or trial; otherwise the API answers 402 rental-required.
Related
More Actors from the same publisher.

Clutch.co Scraper
Shahid Irfan · @shahidirfan
Introducing the Clutch.co Scraper, a lightweight actor for extracting company profiles, client reviews, and ratings from Clutch.co. Quick and effective.
Developer toolsLead generationAutomation$29.99/mo1-day free trial
G2 Product Reviews Scraper ⭐
Shahid Irfan · @shahidirfan
Scrape G2 reviews, software ratings, SaaS product reviews, customer feedback, pros, cons, reviewer insights, and product details. Extract structured G2 reviews.
Lead generationDeveloper toolsAutomation$29/mo1-day free trial
AliExpress Scraper
Shahid Irfan · @shahidirfan
Instantly extract product details, pricing, reviews, and seller information from AliExpress. Perfect for research, price monitoring, and market analysis.
E-commerceAutomationDeveloper tools$19.99/mo1-day free trial
Tokopedia Search Scraper
Shahid Irfan · @shahidirfan
Effortlessly scrape Tokopedia search results. Extract product data, prices, ratings & reviews in bulk. Perfect for market research, price tracking.
E-commerceDeveloper toolsAutomation$19.99/mo1-day free trial
Tripadvisor Hotels Scraper
Shahid Irfan · @shahidirfan
Extract hotel data from TripAdvisor instantly. Scrape reviews, ratings, prices, amenities & location details at scale. Perfect for travel startups.
TravelDeveloper toolsAutomation$29/mo1-day free trial
TrustPilot Reviews Scraper ⭐
Shahid Irfan · @shahidirfan
Extract verified TrustPilot reviews at scale. Capture ratings, review text, reviewer profiles, dates & company metadata. Built for sentiment analysis.
AIDeveloper toolsAutomation$29/mo1-day free trial