CarGurus Scraper — Car Listings, Prices, IMV & Dealer Leads
Pricing
from $2.75 / 1,000 results
CarGurus Scraper — Car Listings, Prices, IMV & Dealer Leads
Scrape CarGurus used & new car listings: price, Instant Market Value (IMV), deal rating, mileage, make/model/year/trim, VIN, color, price drops, and dealer name & phone for lead-gen. Paste a CarGurus search URL and get every listing across all pages.
Pricing
from $2.75 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
18 hours ago
Last modified
Categories
Features
Share
CarGurus Scraper — Car Listings, Prices, IMV, Deal Ratings & Dealer Leads 🚗💨
Extract vehicle inventory from CarGurus at scale — with listed price, total price, Instant Market Value (IMV), algorithmic deal ratings, mileage, make/model/year/trim, VIN, exterior color, transmission, engine, price drops, and verified dealer contact leads (name, phone & location).
Paste any CarGurus search URL, and this CarGurus scraper automatically walks every result page into clean, structured records — no login, no cookies, and no coding required. Use it to scrape CarGurus inventory, pricing intelligence, and dealership leads in minutes.
Export directly to JSON, CSV, Excel, XML, or connect via API.
Built for car dealerships benchmarking local competitors, used-car pricing analysts, automotive B2B sales teams generating dealer leads, and car shoppers & deal hunters tracking below-market bargains.
⚡ At a glance
| Feature | Specification |
|---|---|
| Target Website | CarGurus.com (US Automotive Marketplace) |
| Data Scope | Used, new, and certified pre-owned (CPO) vehicles across all makes & models |
| Deal Intelligence | Instant Market Value (IMV), Deal Rating (Great/Good/Fair), Deal Score, Price Drops |
| Lead Generation | Dealer name, direct telephone number, city, state, postal code, and dealer ID |
| Pagination Depth | Unlocked for 1,000+ listings per run across all multi-page result sets |
| Proxy Architecture | US Residential Proxy pre-configured out of the box (bypasses DataDome) |
| Authentication | Zero credentials needed (no login, no session cookies) |
| Export Formats | JSON, CSV, Excel (XLSX), XML, HTML Table, RSS |
🔎 Why scrape CarGurus?
CarGurus is the highest-trafficked automotive marketplace in the United States, listing millions of cars from franchise dealerships, independent lots, and private parties. What differentiates CarGurus from simple classified boards is its algorithmic pricing intelligence: every listing includes a proprietary Instant Market Value (IMV), a categorized deal rating (GREAT_PRICE, GOOD_PRICE, FAIR_PRICE, HIGH_PRICE, OVERPRICED), a granular numeric deal score, total days on market, and complete historical price drop alerts.
Capturing this data manually across multiple zip codes or competing dealerships is practically impossible. Modern automotive portals utilize heavy anti-bot protections and complex client-side rendering. Furthermore, CarGurus splits pricing, IMV, seller information, and technical specifications across disparate JSON payloads.
This CarGurus scraper resolves these bottlenecks:
- Emulates realistic browser TLS sessions over residential proxies to navigate anti-bot protections seamlessly.
- Unpacks nested vehicle objects, mileage metrics, dealer credentials, and savings calculations into a flattened, typed dataset.
- Automatically paginates through multi-page result listings, deduplicating records by CarGurus listing ID.
High-Value Business Applications:
- 🎯 Automotive B2B Lead Generation: Build hyper-targeted prospect lists of car dealership owners, sales managers, and inventory directors (dealership name, verified phone, city, region, zip code) for software vendors, warranty providers, and parts suppliers.
- 📊 Competitive Price Monitoring: Monitor local rival dealerships' real-time pricing, days on lot, and markdown frequency to price your inventory competitively.
- 🏷️ Used Car Deal Arbitrage: Filter inventory by
GREAT_PRICEand sort bysavingsVsImvto source below-market vehicles for wholesale flipping or private purchase. - 🚗 Appraisal & Valuation Models: Feed real-world transaction comps and IMV differential data into proprietary algorithmic trade-in and pricing models.
- 📉 Inventory Aging & Price Cut Surveillance: Detect aged inventory (high
daysOnMarket) with aggressive price drops to negotiate acquisition discounts. - 🗺️ National Inventory Aggregation: Sweep dozens of metropolitan ZIP codes in a single scheduled run to monitor nation-wide supply and demand shifts.
✨ Key Features & Capabilities
- 🚗 Comprehensive Vehicle Attributes: Full year, make, model, trim, VIN, exterior color, transmission, drivetrain, engine, and CPO/new status flags.
- 💰 Complete Pricing & Savings Analytics: Listed current price, total price with fees, expected price, CarGurus Instant Market Value (IMV), and exact dollar savings vs IMV.
- 📈 Deal Intelligence Signals: Algorithmic deal rating, deal score, days on market, original pre-drop price, and price drop amount.
- 📞 Direct Dealership Contact Details: Dealership name, phone number, location, city, state, postal code, and unique CarGurus dealer ID.
- 🔁 Deep 1,000+ Result Pagination: Automatically reads
pageCountfrom embedded search manifests and iterates through all available pages up to yourmaxItemstarget. - 🛡️ Built-in US Residential Proxy Routing: Pre-configured with Apify US residential proxies to overcome DataDome security checkpoints without session resets.
- 📦 Automated Deduplication: Keeps a memory set of unique listing IDs, ensuring that broad overlapping search regions never produce duplicate records.
🎯 Target Use Cases
| Persona / Sector | Primary Business Need | Key Extracted Fields |
|---|---|---|
| Dealership Inventory Managers | Benchmark local rival pricing and days on lot | price, imv, dealRating, daysOnMarket, dealerName |
| Automotive SaaS & Marketing Teams | Source B2B dealership prospect contact lists | dealerName, dealerPhone, dealerCity, dealerRegion, dealerPostalCode |
| Wholesale Car Buyers & Flippers | Spot deep below-market bargains instantly | savingsVsImv, priceDropAmount, dealRating, vin |
| Fintech & Auto Loan Lenders | Verify collateral vehicle values and dealer identity | vin, imv, pricePlusFees, mileage, dealerId |
| Automotive Market Researchers | Analyze national supply and depreciation curves | year, make, model, mileage, price, scrapedAt |
| Car Buying Agents | Locate specific vehicle trims and configurations | trim, exteriorColor, transmission, drivetrain, engine |
📥 Input Configuration
Configure the scraper with CarGurus search URLs and your desired item limit.
| Parameter | Type | Default | Prefill | Description |
|---|---|---|---|---|
startUrls | Array | [] | Toyota Camry in 90210 | One or more CarGurus search result URLs. Apply filters on cargurus.com and copy the browser URL. |
maxItems | Integer | 0 | 100 | Maximum listings to collect across all search URLs. Set to 0 for auto / unlimited. |
proxyConfiguration | Object | US Residential | US Residential | Proxy settings. US Residential proxy is pre-configured and required by CarGurus. |
Sample Input (JSON)
{"startUrls": ["https://www.cargurus.com/Cars/l-Used-Toyota-Camry-d586?zip=90210","https://www.cargurus.com/Cars/l-Used-Honda-Civic-d586?zip=10001"],"maxItems": 250,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
Important URL Tip: Always search CarGurus with a specific ZIP code (or location set) before copying the URL. Without a
?zip=parameter, CarGurus may display a restricted nationwide shipping fallback list instead of the full regional inventory.
📤 Output Data Structure
The actor outputs clean, flat records. Every vehicle is de-duplicated by its unique listingId.
Sample Output Record (JSON)
{"listingId": "462870440","title": "2026 Honda Civic","year": "2026","make": "Honda","model": "Civic","trim": "Si FWD","vin": "2HGFE1E51TH474188","price": 31965,"totalPrice": 33023.97,"pricePlusFees": 33023.97,"imv": 32069,"expectedPrice": 32069,"savingsVsImv": 104,"savingsLabel": "$104","dealRating": "FAIR_PRICE","dealScore": 2.186,"mileage": 6585,"mileageUnit": "MILES","exteriorColor": "Crystal Black Pearl","transmission": "6-Speed Manual","drivetrain": "Front-Wheel Drive","engine": "200 hp 1.5L I4","isCpo": false,"isNew": false,"daysOnMarket": 3,"priceDropOriginal": null,"priceDropAmount": null,"dealerName": "Morris Smith Ford of Leavenworth","dealerPhone": "+1 913-404-4874","dealerLocation": "Leavenworth, KS","dealerCity": "Leavenworth","dealerRegion": "KS","dealerPostalCode": "66048","dealerId": "430173","imageUrl": "https://static.cargurus.com/images/forsale/sample.jpeg","listingUrl": "https://www.cargurus.com/Cars/link/462870440","scrapedAt": "2026-11-10T14:30:00.000Z"}
📊 Complete Field Dictionary & Coverage
🚘 Vehicle Identity & Technical Specs
| Field Name | Data Type | Description | Coverage |
|---|---|---|---|
listingId | String | Unique CarGurus listing record identifier | 🟢 High (100%) |
title | String | Marketing title (e.g. 2024 Toyota RAV4 Hybrid XLE) | 🟢 High (100%) |
year | String | Model year of the vehicle | 🟢 High (100%) |
make | String | Vehicle manufacturer (e.g., Toyota, Ford, BMW) | 🟢 High (100%) |
model | String | Vehicle model name (e.g., Camry, F-150, Civic) | 🟢 High (100%) |
trim | String | Specific trim line (e.g., SE FWD, Lariat 4WD) | 🟢 High (95%) |
vin | String | 17-character vehicle identification number | 🟢 High (100%) |
mileage | Number | Odometer reading | 🟢 High (100%) |
mileageUnit | String | Unit of mileage measurement (MILES or KM) | 🟢 High (100%) |
exteriorColor | String | Factory or localized exterior paint color | 🟢 High (95%) |
transmission | String | Gearbox type (e.g. Automatic, 6-Speed Manual) | 🟢 High (95%) |
drivetrain | String | Drive wheel configuration (AWD, FWD, 4WD, RWD) | 🟢 High (95%) |
engine | String | Engine displacement and cylinder layout | 🟢 High (95%) |
isCpo | Boolean | True if tagged as Certified Pre-Owned | 🟢 High (100%) |
isNew | Boolean | True if brand-new zero-mileage inventory | 🟢 High (100%) |
💰 Pricing & Algorithmic Deal Analytics
| Field Name | Data Type | Description | Coverage |
|---|---|---|---|
price | Number | Listed advertised sticker price in USD | 🟢 High (100%) |
totalPrice | Number | Estimated out-the-door price | 🟢 High (90%) |
pricePlusFees | Number | Advertised price plus mandatory dealer documentation fees | 🟢 High (90%) |
imv | Number | CarGurus Instant Market Value algorithm estimate | 🟢 High (95%) |
expectedPrice | Number | Baseline fair market price for this vehicle configuration | 🟢 High (95%) |
savingsVsImv | Number | Dollar difference between price and IMV (positive = discount) | 🟢 High (95%) |
savingsLabel | String | Formatted savings label (e.g., $1,250) | 🟢 High (95%) |
dealRating | String | Deal classification (GREAT_PRICE, GOOD_PRICE, FAIR_PRICE) | 🟢 High (95%) |
dealScore | Number | Granular numeric score representing deal quality | 🟢 High (95%) |
daysOnMarket | Number | Consecutive days listed on CarGurus | 🟢 High (98%) |
priceDropOriginal | Number | Previous price prior to recent markdowns | 🟡 Conditional (30%) |
priceDropAmount | Number | Value of recent price cut | 🟡 Conditional (30%) |
🏢 Dealership Lead Generation & Contact Data
| Field Name | Data Type | Description | Coverage |
|---|---|---|---|
dealerName | String | Legal name of franchise or independent dealer | 🟢 High (100%) |
dealerPhone | String | Direct dealership sales telephone number | 🟢 High (95%) |
dealerLocation | String | Combined City, State string | 🟢 High (100%) |
dealerCity | String | City where dealership lot is located | 🟢 High (100%) |
dealerRegion | String | Two-letter US state code (e.g. CA, TX, FL) | 🟢 High (100%) |
dealerPostalCode | String | Five-digit US ZIP code | 🟢 High (98%) |
dealerId | String | CarGurus dealership directory account ID | 🟢 High (100%) |
imageUrl | String | Primary high-resolution exterior photo URL | 🟢 High (98%) |
listingUrl | String | Direct canonical URL to the listing on CarGurus | 🟢 High (100%) |
scrapedAt | String | ISO 8601 extraction timestamp | 🟢 High (100%) |
🔁 Deep Pagination & Scaling Architecture
- Manifest-Driven Navigation: Rather than guessing page limits, the actor parses the internal
pageCountattribute embedded directly inside the CarGurus Remix SSR state. - DataDome Resilience: CarGurus employs DataDome anti-bot detection. The actor pairs browser-grade TLS headers with session-rotated US residential proxies, ensuring that multi-page sweeps do not get blocked halfway through.
- Empty-Streak Protection: If three consecutive empty pages are encountered (indicating end of inventory), pagination halts cleanly to conserve proxy data.
- In-Memory De-duplication: Tracks all previously pushed
listingIdvalues so multiple overlapping search radii or make/model searches never duplicate entries.
🚀 How to Use & Code Examples
Step 1: Search on CarGurus
- Go to cargurus.com and search for your vehicle of interest.
- Filter by location (enter your target ZIP code), price range, mileage, trim, and deal rating.
- Copy the URL from your browser address bar.
Step 2: Configure & Execute
- Paste the URL into CarGurus search URLs.
- Set Max listings (e.g., 200 for a quick snapshot, or 0 for everything).
- Click Start.
Python Integration Example
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run_input = {"startUrls": ["https://www.cargurus.com/Cars/l-Used-Toyota-Camry-d586?zip=90210"],"maxItems": 150}run = client.actor("haketa/cargurus-scraper").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item.get('title')} | ${item.get('price')} (IMV: ${item.get('imv')}) | Dealer: {item.get('dealerName')} ({item.get('dealerPhone')})")
Node.js Integration Example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('haketa/cargurus-scraper').call({startUrls: ['https://www.cargurus.com/Cars/l-Used-Honda-Civic-d586?zip=10001'],maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Fetched ${items.length} CarGurus vehicle listings.`);
cURL / REST API Integration
curl "https://api.apify.com/v2/acts/haketa~cargurus-scraper/runs?token=YOUR_APIFY_TOKEN" \-X POST \-H "Content-Type: application/json" \-d '{"startUrls": ["https://www.cargurus.com/Cars/l-Used-Toyota-Camry-d586?zip=90210"],"maxItems": 100}'
🔄 Webhook & Automated Pipeline Integration
Automate your lead-generation and inventory surveillance pipelines by connecting this actor to your existing CRM and data warehouse:
- HubSpot & Salesforce: Route new dealership phone numbers and inventory leads into your sales pipeline via Zapier or Make webhooks.
- Google Sheets & Airtable: Automatically append daily vehicle comps, IMV margins, and price drops to your tracking spreadsheets.
- PostgreSQL / Snowflake / BigQuery: Ingest raw JSON listing objects directly into your analytical data warehouse using Apify Integrations.
- Slack & Discord Alerts: Trigger instant notifications whenever a rare vehicle trim or a
GREAT_PRICEbargain is listed below market value.
⚡ Performance & Sizing Reference
| Metric | Typical Performance | Notes |
|---|---|---|
| Speed (listings/sec) | 10 – 18 listings / sec | High-yield SSR tile extraction |
| Memory Footprint | ~280 MB peak | Safely executes on default 1024 MB allocation |
| Proxy Requirement | US Residential Proxy | Pre-configured to bypass DataDome |
| Batch Size | ~15 – 24 cars per search page | Dependent on CarGurus viewport defaults |
| Deduplication Rate | 100% unique per listing ID | Across all pages and start URLs |
❓ Frequently Asked Questions
Do I need to provide proxy credentials?
No. The actor includes pre-configured settings that leverage Apify's US Residential Proxy group automatically.
How do I scrape nationwide inventory?
You can pass multiple regional search URLs (e.g., covering Los Angeles, Dallas, Chicago, New York, and Miami) in the startUrls array. The scraper will process each metro and combine them into a single de-duplicated dataset.
Does this scraper extract certified pre-owned (CPO) vehicles?
Yes. Both certified pre-owned (isCpo: true) and brand-new (isNew: true) vehicles are fully supported alongside standard used inventory.
Can I track price drops over time?
Yes. The actor captures priceDropAmount, priceDropOriginal, and daysOnMarket. Furthermore, by running the actor on a daily schedule, you can diff consecutive datasets by listingId to track continuous price revisions.
Why are some dealer phone numbers missing?
In approximately 5% of listings, the dealer does not provide a direct telephone number to CarGurus or routes leads exclusively through an on-platform messaging form. In all other cases (~95%), the direct phone number is extracted.
How fresh is the inventory data?
Every execution scrapes CarGurus live in real time. Unlike cached databases or static feeds, you receive current on-lot availability, today's sticker prices, and the latest price cuts.
Can I export to Google Drive or AWS S3?
Yes. Using Apify Cloud integrations or standard webhooks, you can automatically deliver CSV or JSON exports into Amazon S3, Google Cloud Storage, or Google Drive after every scheduled run.
🔗 Related Automotive Actors
- AutoScout24 Scraper — European car listings, specs, and dealership contacts.
- AutoTrader Scraper — UK vehicle marketplace listings and seller intelligence.
- Otomoto Scraper — Polish automotive marketplace listings and dealer data.
- YallaMotor Scraper — Middle Eastern new and used vehicle marketplace listings.
- Mobile.de Scraper — German & EU automotive marketplace inventory.
📋 Changelog
Version 1.2 (2026-11)
- Deep Pagination Unlock: Unlocked 1,000+ deep result pagination by setting
maxItems: 0as auto/unlimited governed directly by search result page manifests. - Fast Execution Prefill: Streamlined default prefill parameters to complete initial test runs in under 90 seconds while returning rich sample data.
- Field Normalization: Enhanced dealer location parsing from fallback DTO objects and stabilized price-drop delta calculations.
- DataDome Resilience: Updated TLS fingerprint rotation and exponential backoff retry intervals to handle transient anti-bot challenges.
Version 1.1 (2026-09)
- Added support for new CarGurus
*Dtoschema containers alongside legacy*Dataobjects. - Added extraction of total out-the-door price and fee-inclusive estimates.
- Integrated automated fallback search URLs for empty input runs.
Version 1.0 (2026-08)
- Initial release featuring Remix SSR context extraction.
- Instant Market Value (IMV), deal ratings, and dealer lead capture.
- US residential proxy integration.