cargurus.ca scraper
Pricing
from $5.00 / 1,000 results
cargurus.ca scraper
This actor scrapes vehicle listings from CarGurus.ca search result pages. Pass any CarGurus.ca inventory search URL and get back structured JSON with listing details — price, mileage, year, make, model, dealer name, location, images, and CPO status.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer

Mohamed Ibrahim
Actor stats
0
Bookmarked
3
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
CarGurus Canada Scraper
Scrape CarGurus.ca vehicle listings with DataDome bypass. Extract price, mileage, dealer info, images, and more. Automatic pagination fetches up to 200 listings across multiple pages.
What does CarGurus Canada Scraper do?
This actor scrapes vehicle listings from CarGurus.ca search result pages. Pass any CarGurus.ca inventory search URL and get back structured JSON with listing details — price, mileage, year, make, model, dealer name, location, images, and CPO status.
CarGurus.ca is protected by DataDome bot detection. This actor bypasses it using Chrome TLS fingerprinting via got-scraping and Apify residential proxies — no headless browser needed, keeping costs low and runs fast.
Features
- Automatic pagination — fetches multiple pages of results automatically. Request up to 200 listings per run; the actor handles page offsets behind the scenes.
- HTTP-only — no Playwright or Puppeteer overhead. A single page fetches in seconds, not minutes.
- DataDome bypass — uses
got-scrapingwith Chrome TLS fingerprinting and Canadian residential proxies to pass bot detection. - Multi-strategy extraction — parses CarGurus's embedded
__PREFLIGHT__JSON for reliable structured data, with DOM and alternative endpoint fallbacks if the page structure changes. - Smart session management — establishes cookies on the homepage first, then fetches search results as an authenticated session.
- Deduplication — automatically removes duplicate listings across pages.
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchUrl | string | Yes | — | A CarGurus.ca inventory search URL |
maxItems | integer | No | 25 | Max listings to return (1–200). Fetches multiple pages if needed. |
maxPages | integer | No | 10 | Max pages to fetch (1–20). Each page adds ~2s of run time. |
yearMin | integer | No | — | Filter to model years >= this value |
yearMax | integer | No | — | Filter to model years <= this value |
debug | boolean | No | false | Enable verbose logging for troubleshooting |
Example input
{"searchUrl": "https://www.cargurus.ca/Cars/inventorylisting/viewDetailsFilterViewInventoryListing.action?zip=M5V%203A8&distance=50&entitySelectingHelper.selectedEntity=m7","maxItems": 100,"maxPages": 5}
Output
Each listing is returned as a JSON object:
{"listingId": "432711846","listingUrl": "https://www.cargurus.ca/Cars/inventorylisting/viewDetailsFilterViewInventoryListing.action?#listing=432711846","listingTitle": "2022 Audi A4 45 TFSI quattro Progressiv S line AWD","year": 2022,"make": "Audi","model": "A4","mileage": 34200,"priceCAD": 38995,"imageUrl": "https://static.cargurus.com/images/forsale/...","dealerName": "Toronto Auto Gallery","location": "Toronto, ON","isCertifiedUsed": false}
| Field | Type | Description |
|---|---|---|
listingId | string | CarGurus listing ID |
listingUrl | string | Direct link to the listing |
listingTitle | string | Full listing title (year, make, model, trim) |
year | number | Model year |
make | string | Vehicle manufacturer |
model | string | Vehicle model |
mileage | number | Odometer reading in km |
priceCAD | number | Listed price in CAD |
imageUrl | string | Primary listing photo URL |
dealerName | string | Dealer or seller name |
location | string | City/province of the listing |
isCertifiedUsed | boolean | Whether the vehicle is Certified Pre-Owned |
How to build a search URL
- Go to cargurus.ca
- Search for vehicles with your desired filters (make, model, location, price range, etc.)
- Copy the URL from your browser's address bar
- Paste it as the
searchUrlinput
How pagination works
CarGurus shows ~24 listings per page. When you set maxItems higher than one page, the actor automatically:
- Fetches the first page and reads the total available listings from CarGurus's metadata
- Calculates how many pages are needed to reach your
maxItemstarget - Fetches subsequent pages with randomized delays (1.5–2.5s) to avoid detection
- Deduplicates results by listing ID before returning
Set maxPages to control how many pages the actor will fetch. Each additional page adds ~2 seconds of run time and uses residential proxy bandwidth.
Performance
| Scenario | Run time | Approx. cost |
|---|---|---|
| 25 listings (1 page) | 5–15s | ~$0.01–0.03 |
| 50 listings (2–3 pages) | 10–25s | ~$0.02–0.05 |
| 100 listings (4–5 pages) | 20–40s | ~$0.04–0.08 |
| 200 listings (8–10 pages) | 40–70s | ~$0.08–0.15 |
Use cases
- Market research — track pricing trends across regions with large datasets
- Dealer intelligence — monitor competitor inventory comprehensively
- Aggregator apps — feed CarGurus.ca data into your car search platform
- Price alerts — run on a schedule and compare results over time
- Data analysis — export hundreds of listings to CSV for spreadsheet analysis