CarGurus Scraper — Car Listings, Prices, IMV & Dealer Leads avatar

CarGurus Scraper — Car Listings, Prices, IMV & Dealer Leads

Pricing

from $2.75 / 1,000 results

Go to Apify Store
CarGurus Scraper — Car Listings, Prices, IMV & Dealer Leads

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

Haketa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

18 hours ago

Last modified

Features

Limited permissions

Share

CarGurus Scraper — Car Listings, Prices, IMV, Deal Ratings & Dealer Leads 🚗💨

Apify Actor

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

FeatureSpecification
Target WebsiteCarGurus.com (US Automotive Marketplace)
Data ScopeUsed, new, and certified pre-owned (CPO) vehicles across all makes & models
Deal IntelligenceInstant Market Value (IMV), Deal Rating (Great/Good/Fair), Deal Score, Price Drops
Lead GenerationDealer name, direct telephone number, city, state, postal code, and dealer ID
Pagination DepthUnlocked for 1,000+ listings per run across all multi-page result sets
Proxy ArchitectureUS Residential Proxy pre-configured out of the box (bypasses DataDome)
AuthenticationZero credentials needed (no login, no session cookies)
Export FormatsJSON, 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:

  1. Emulates realistic browser TLS sessions over residential proxies to navigate anti-bot protections seamlessly.
  2. Unpacks nested vehicle objects, mileage metrics, dealer credentials, and savings calculations into a flattened, typed dataset.
  3. 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_PRICE and sort by savingsVsImv to 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 pageCount from embedded search manifests and iterates through all available pages up to your maxItems target.
  • 🛡️ 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 / SectorPrimary Business NeedKey Extracted Fields
Dealership Inventory ManagersBenchmark local rival pricing and days on lotprice, imv, dealRating, daysOnMarket, dealerName
Automotive SaaS & Marketing TeamsSource B2B dealership prospect contact listsdealerName, dealerPhone, dealerCity, dealerRegion, dealerPostalCode
Wholesale Car Buyers & FlippersSpot deep below-market bargains instantlysavingsVsImv, priceDropAmount, dealRating, vin
Fintech & Auto Loan LendersVerify collateral vehicle values and dealer identityvin, imv, pricePlusFees, mileage, dealerId
Automotive Market ResearchersAnalyze national supply and depreciation curvesyear, make, model, mileage, price, scrapedAt
Car Buying AgentsLocate specific vehicle trims and configurationstrim, exteriorColor, transmission, drivetrain, engine

📥 Input Configuration

Configure the scraper with CarGurus search URLs and your desired item limit.

ParameterTypeDefaultPrefillDescription
startUrlsArray[]Toyota Camry in 90210One or more CarGurus search result URLs. Apply filters on cargurus.com and copy the browser URL.
maxItemsInteger0100Maximum listings to collect across all search URLs. Set to 0 for auto / unlimited.
proxyConfigurationObjectUS ResidentialUS ResidentialProxy 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 NameData TypeDescriptionCoverage
listingIdStringUnique CarGurus listing record identifier🟢 High (100%)
titleStringMarketing title (e.g. 2024 Toyota RAV4 Hybrid XLE)🟢 High (100%)
yearStringModel year of the vehicle🟢 High (100%)
makeStringVehicle manufacturer (e.g., Toyota, Ford, BMW)🟢 High (100%)
modelStringVehicle model name (e.g., Camry, F-150, Civic)🟢 High (100%)
trimStringSpecific trim line (e.g., SE FWD, Lariat 4WD)🟢 High (95%)
vinString17-character vehicle identification number🟢 High (100%)
mileageNumberOdometer reading🟢 High (100%)
mileageUnitStringUnit of mileage measurement (MILES or KM)🟢 High (100%)
exteriorColorStringFactory or localized exterior paint color🟢 High (95%)
transmissionStringGearbox type (e.g. Automatic, 6-Speed Manual)🟢 High (95%)
drivetrainStringDrive wheel configuration (AWD, FWD, 4WD, RWD)🟢 High (95%)
engineStringEngine displacement and cylinder layout🟢 High (95%)
isCpoBooleanTrue if tagged as Certified Pre-Owned🟢 High (100%)
isNewBooleanTrue if brand-new zero-mileage inventory🟢 High (100%)

💰 Pricing & Algorithmic Deal Analytics

Field NameData TypeDescriptionCoverage
priceNumberListed advertised sticker price in USD🟢 High (100%)
totalPriceNumberEstimated out-the-door price🟢 High (90%)
pricePlusFeesNumberAdvertised price plus mandatory dealer documentation fees🟢 High (90%)
imvNumberCarGurus Instant Market Value algorithm estimate🟢 High (95%)
expectedPriceNumberBaseline fair market price for this vehicle configuration🟢 High (95%)
savingsVsImvNumberDollar difference between price and IMV (positive = discount)🟢 High (95%)
savingsLabelStringFormatted savings label (e.g., $1,250)🟢 High (95%)
dealRatingStringDeal classification (GREAT_PRICE, GOOD_PRICE, FAIR_PRICE)🟢 High (95%)
dealScoreNumberGranular numeric score representing deal quality🟢 High (95%)
daysOnMarketNumberConsecutive days listed on CarGurus🟢 High (98%)
priceDropOriginalNumberPrevious price prior to recent markdowns🟡 Conditional (30%)
priceDropAmountNumberValue of recent price cut🟡 Conditional (30%)

🏢 Dealership Lead Generation & Contact Data

Field NameData TypeDescriptionCoverage
dealerNameStringLegal name of franchise or independent dealer🟢 High (100%)
dealerPhoneStringDirect dealership sales telephone number🟢 High (95%)
dealerLocationStringCombined City, State string🟢 High (100%)
dealerCityStringCity where dealership lot is located🟢 High (100%)
dealerRegionStringTwo-letter US state code (e.g. CA, TX, FL)🟢 High (100%)
dealerPostalCodeStringFive-digit US ZIP code🟢 High (98%)
dealerIdStringCarGurus dealership directory account ID🟢 High (100%)
imageUrlStringPrimary high-resolution exterior photo URL🟢 High (98%)
listingUrlStringDirect canonical URL to the listing on CarGurus🟢 High (100%)
scrapedAtStringISO 8601 extraction timestamp🟢 High (100%)

🔁 Deep Pagination & Scaling Architecture

  • Manifest-Driven Navigation: Rather than guessing page limits, the actor parses the internal pageCount attribute 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 listingId values so multiple overlapping search radii or make/model searches never duplicate entries.

🚀 How to Use & Code Examples

Step 1: Search on CarGurus

  1. Go to cargurus.com and search for your vehicle of interest.
  2. Filter by location (enter your target ZIP code), price range, mileage, trim, and deal rating.
  3. Copy the URL from your browser address bar.

Step 2: Configure & Execute

  1. Paste the URL into CarGurus search URLs.
  2. Set Max listings (e.g., 200 for a quick snapshot, or 0 for everything).
  3. Click Start.

Python Integration Example

from apify_client import ApifyClient
client = 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_PRICE bargain is listed below market value.

⚡ Performance & Sizing Reference

MetricTypical PerformanceNotes
Speed (listings/sec)10 – 18 listings / secHigh-yield SSR tile extraction
Memory Footprint~280 MB peakSafely executes on default 1024 MB allocation
Proxy RequirementUS Residential ProxyPre-configured to bypass DataDome
Batch Size~15 – 24 cars per search pageDependent on CarGurus viewport defaults
Deduplication Rate100% unique per listing IDAcross 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.



📋 Changelog

Version 1.2 (2026-11)

  • Deep Pagination Unlock: Unlocked 1,000+ deep result pagination by setting maxItems: 0 as 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 *Dto schema containers alongside legacy *Data objects.
  • 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.
⌂ 换网址