🇨🇦🚘 Multiple site Car data Scraper(💰1/1000) avatar

🇨🇦🚘 Multiple site Car data Scraper(💰1/1000)

Pricing

$1.00 / 1,000 results

Go to Apify Store
🇨🇦🚘 Multiple site Car data Scraper(💰1/1000)

🇨🇦🚘 Multiple site Car data Scraper(💰1/1000)

Search AutoTrader.ca, CarGurus.ca, Kijiji Autos, Craigslist Canada, Carpages.ca, and UsedCarCanada.ca in one run. One make/model search returns every matching listing, normalized into a single dataset — price, mileage, VIN, dealer info, and photos. JSON, CSV, or Excel.

Pricing

$1.00 / 1,000 results

Rating

0.0

(0)

Developer

Jordan Byte

Jordan Byte

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

🍁 All Car Data Scraper Canada

Search 6 major Canadian car sites at once — one make/model, one run, one dataset.

Instead of running six separate scrapers and stitching the results together yourself, this actor queries AutoTrader.ca, CarGurus.ca, Kijiji Autos, Craigslist (Canadian cities), Carpages.ca, and UsedCarCanada.ca in a single run and hands back every listing in one normalized shape — same field names, same structure, regardless of which site it came from. Ask for a used Honda Civic and every site that has one gives you one.

✨ Why use this instead of six separate scrapers

  • 🔎 One search, six sitesmake/model/year/price filters apply everywhere at once, so you get one clean comparison set instead of six inconsistent ones.
  • Built for speed — every site is queried at the same time, so the total run time is close to whichever single site is slowest, not the sum of all six.
  • 🆕 New and used, one toggle — most sites here carry both new and used inventory; a single condition filter applies it consistently across all of them instead of you having to know each site's own filter quirks.
  • 🛡️ Built to survive anti-bot walls — several of these sites are aggressive about blocking non-residential or non-Canadian traffic. This actor handles that so you don't have to babysit failed runs.
  • 💾 Skips repeat work — an identical search run recently is served instantly from cache instead of re-scraping everything.
  • 🔔 Notifies you when it's done — optional Slack/Discord webhook, no extra credentials needed.
  • 🖼️ Photos included — listing images are pulled through to the output wherever the site has one.
  • 🧩 Resilient by design — one site failing or getting temporarily blocked never brings down the other five; you still get everything the rest could find.

🌐 Individual site actors

Each site below also exists as its own standalone, independently-maintained actor in case a single-site scraper is all you need: AutoTrader.ca, CarGurus.ca, Kijiji Autos, Craigslist Canada, Carpages.ca, and UsedCarCanada.ca. This actor doesn't call or depend on any of them — it's a fully separate implementation.

🗺️ Sites covered

SiteInventoryDefault on
autotrader (AutoTrader.ca)New & used
cargurus (CarGurus.ca)New & used
kijiji (Kijiji Autos)New & used
craigslist (Craigslist, Canadian cities)Used only
carpages (Carpages.ca)New & used
usedcarcanada (UsedCarCanada.ca)Used only⬜ opt-in

usedcarcanada needs a real browser and can take noticeably longer to get past that site's own bot defences, so it's left off by default — add it to the sites input if you want fuller coverage and don't mind the extra time. One site failing or getting temporarily blocked never affects the others — every site is independently retried and fully isolated from the rest of the run.

⚙️ Input

Only make is required — everything else has a sensible default, grouped into sections so the input form stays simple unless you need to go further.

FieldTypeDescription
makestringRequired. e.g. "Ford".
modelstringOptional. e.g. "F-150". Leave blank to search all models of the make.
conditionstring"any" (default), "new", or "used". "New only" skips craigslist and usedcarcanada, since they're used-only marketplaces; "used only" still queries all 6, since every site has used stock.
yearMin / yearMaxintegerOptional year range, where supported.
priceMaxintegerOptional max price (CAD), where supported.

🌍 Sites & result limits

FieldTypeDescription
sitesarrayWhich sites to query — one checkbox per site. Defaults to the 5 fastest ones; add usedcarcanada here for fuller coverage.
maxItemsPerSiteintegerStop each site once this many listings are collected. Default 5. Set to 0 for "no limit" (up to a 2,000/site safety ceiling).

Every site is queried at the same time from the moment the run starts, so results come back roughly as fast as the quickest sites can deliver them, and the total run time doesn't stack up site by site.

⚡ Caching

FieldTypeDescription
useCachebooleanDefault true. If an identical search (same make/model/filters/sites/limit) was already run before, instantly return those stored results instead of re-scraping every site again. Cached results never expire on their own — turn this off if a specific run needs to force a fresh scrape.

The cache persists across runs, keyed to the exact search (make/model/condition/year/price/sites/limit, case-insensitive). Change any of those and it's a cache miss — a fresh scrape — by design.

🔔 Notifications

FieldTypeDescription
slackWebhookUrlstringOptional. Posts a summary (result count per site, or errors) here when the run finishes. Create one under Slack → Apps → Incoming Webhooks.
discordWebhookUrlstringOptional. Same summary, posted to a Discord channel. Create one under a channel's Integrations → Webhooks settings.

Both are plain webhook POSTs — no extra credentials needed from you beyond the URL itself, and a failed webhook post never fails the run.

🛡️ Proxy

FieldTypeDescription
proxyConfigurationobjectRequired. Every site here blocks or aggressively rate-limits non-proxied traffic — a Canadian residential proxy is not optional, and each site fails fast with a clear error if one isn't available. Defaults to a CA-targeted residential proxy.

📦 Output

One row per listing, normalized to the same shape regardless of source site — fields are ordered for how a shopper would actually scan a listing:

{
"source": "cargurus",
"url": "https://www.cargurus.ca/Cars/inventorylisting/viewDetailsFilterViewInventoryListing.action?listingId=123456789",
"title": "2022 Honda Civic",
"image": "https://static.cargurus.com/images/forsale/2026/07/23/07/19/2022_honda_civic-pic.jpeg",
"make": "Honda",
"model": "Civic",
"price": 24500,
"vin": null,
"location": "Toronto, ON",
"sellerName": "Downtown Honda",
"sellerPhone": "(416) 555-0134",
"currency": "CAD",
"trim": "EX-L CVT",
"year": 2022,
"condition": "used",
"mileage": 38200,
"exteriorColor": "Sonic Grey Pearl",
"listedAt": null
}

Not every field is available from every site — null means that particular site doesn't expose that field (or it wasn't available for that listing), not a scraping error. vin is currently only reliably populated by kijiji and craigslist (both expose it on the listing itself); the rest only surface it on a detail page they'd otherwise need a second request to fetch.

📝 Notes

  • A Canadian residential proxy is required, not just recommended — every site here fails fast with a clear error if proxyConfiguration comes back empty, instead of wasting time on requests that were never going to succeed.
  • condition: "new" narrows results but doesn't change which sites are queried unless a site is exclusively used-only (craigslist, usedcarcanada) — those two are skipped automatically rather than returning an empty result set.

📬 Custom work / contact

Want a custom actor, a site added to this one, or anything tweaked for your use case? Reach out: