AutoTrader.ca Listings Scraper avatar

AutoTrader.ca Listings Scraper

Pricing

Pay per event

Go to Apify Store
AutoTrader.ca Listings Scraper

AutoTrader.ca Listings Scraper

Scrape AutoTrader.ca car listings by make, model and condition (used or new), nationwide. One clean row per listing: price, mileage, year, trim, seller, city, province, photos and description. We handle blocks, retries and proxy rotation.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share


🎯 What this scrapes

Pulling car listings off AutoTrader.ca by hand means paging through search results, untangling the data, and keeping it all alive when pages stop answering. This Actor takes one make, one model and a condition (used or new) and returns one typed row per listing across Canada: price in CAD, mileage, year, trim, body type, seller, city, province, photos and the full description. Up to 4,000 listings per make, model and condition.

🔥 What we handle for you

  • 🛡️ We rotate browser fingerprints — curl-cffi impersonation (Chrome / Safari) so every request looks like a real browser, not Python.
  • 🌐 We rotate residential proxies through Apify Proxy — fresh session and exit IP on every block.
  • 🔁 We retry with exponential backoff on 408 / 429 / 5xx and blocked pages — up to 5 attempts per page, Retry-After honoured.
  • 🧱 We isolate faults — one blocked page or one malformed listing never sinks the whole run; partial results land with a clear status message.
  • 🧊 We keep the dataset clean — Pydantic-validated rows, de-duplicated listing IDs, numeric price and mileage, ISO-8601 timestamps.
  • 💰 You pay only for results that land. No listings, no result charge (only the small actor-start fee).

💡 Use cases

  • Dealer pricing — benchmark your asking prices against live listings for the same make, model and trim.
  • Valuation and price-comparison tools — feed current Canadian asking prices and mileage into your model.
  • Market analysis — track supply, price and mileage distribution for a model over time on a schedule.
  • Inventory sourcing — spot underpriced used units across the country before they move.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Fill in the input form — most fields have sensible defaults.
  3. Click Start. Output streams into the run's dataset.
  4. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.

📥 Input

FieldTypeRequiredDefaultNotes
makestringno'toyota'Vehicle make, for example toyota, honda or land rover. Case and spaces are normalised for you.
modelstringno'corolla'Vehicle model, for example corolla, civic or rav4. Case and spaces are normalised for you.
conditionstringno'used'Search used or new vehicles.
maxResultsintegerno60Maximum listings to emit. Each page holds 20 listings; one make, model and condition yields at most 4,000.
proxyConfigurationobjectno{'useApifyProxy': True, 'apifyProxyGroups': ['RESIDENTIAL']}Apify Proxy settings. The default uses residential exits and rotates the session on every block.

Example input

{
"make": "toyota",
"model": "corolla",
"condition": "used",
"maxResults": 40,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
]
}
}

📤 Output

Every row is one dataset item.

FieldTypeNotes
listing_idstringStable listing UUID.
urlstringDirect AutoTrader.ca link to the listing.
titlestringYear, make, model and trim.
year['integer', 'null']Model year.
make['string', 'null']Vehicle make.
model['string', 'null']Vehicle model.
trim['string', 'null']Trim / version text as the seller wrote it.
body_type['string', 'null']Body type, e.g. Sedan.
price_cad['integer', 'null']Asking price in Canadian dollars.
price_formatted['string', 'null']Price as displayed on the listing.
price_evaluation['integer', 'null']Site price rating bucket when provided.
mileage_km['integer', 'null']Odometer reading in kilometres.
transmission['string', 'null']Transmission type.
fuel['string', 'null']Fuel type.
engine_cc['integer', 'null']Engine displacement in cc when provided.
conditionstringused or new.
city['string', 'null']Seller city.
province['string', 'null']Province code, e.g. ON.
postal_code['string', 'null']Postal code shown on the listing.
street['string', 'null']Street address shown on the listing.
seller_name['string', 'null']Dealer or seller name.
seller_type['string', 'null']Dealer or Private.
seller_phone['string', 'null']Publicly displayed seller phone number.
ad_tier['string', 'null']Listing ad tier.
result_type['string', 'null']Organic or Sponsored.
image_urlsarrayListing photo URLs (may be empty).
image_countintegerNumber of photo URLs.
description['string', 'null']Seller description as plain text.
scraped_atstringISO-8601 UTC row-creation timestamp.

Example output

{
"listing_id": "79df9408-002a-44d1-90a3-3355eb9b1770",
"url": "https://www.autotrader.ca/offers/toyota-corolla-le-79df9408-002a-44d1-90a3-3355eb9b1770",
"title": "2018 Toyota Corolla LE",
"year": 2018,
"make": "Toyota",
"model": "Corolla",
"trim": "LE",
"body_type": "Sedan",
"price_cad": 13990,
"price_formatted": "$ 13,990",
"price_evaluation": 1,
"mileage_km": 144425,
"transmission": "Automatic",
"fuel": "Gasoline",
"engine_cc": 1800,
"condition": "used",
"city": "North York",
"province": "ON",
"postal_code": "M3J 2E5",
"street": "1113 Finch Ave West",
"seller_name": "First Choice Motors",
"seller_type": "Dealer",
"seller_phone": "647-367-7998",
"ad_tier": "T10",
"result_type": "Organic",
"image_urls": [
"https://example.com/photo-1.webp"
],
"image_count": 36,
"description": "Certified with warranty.\nHeated seats.",
"scraped_at": "2026-10-07T12:00:00+00:00"
}

💰 Pricing

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.2One-off warm-up charge per run
result$0.0025Per dataset item

Example: 1 000 listings at the rates above ≈ $2.70. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

🚧 Limitations

  • Search is by make, model and condition (used or new) only. There is no postal-code, radius, province, city, price, year or mileage filter, and results are nationwide.
  • One make, model and condition returns at most 4,000 listings.
  • Listing pages only: no VIN, full spec sheet, price history or sold/expired listings.
  • Phone numbers are included only when the listing itself displays them.

❓ FAQ

Can I filter by province, city or postal code?

Not in v1. Search is by make, model and condition only, and results are nationwide. Each row carries city, province and postal_code, so you can filter the dataset yourself afterwards.

How many listings can one run return?

Up to 4,000 for a single make, model and condition (200 pages of 20). Run several models to cover more.

What happens if nothing matches?

The run finishes successfully with zero rows and a status message naming what was searched. An empty search is not a failure, and you are charged only the start fee.

Do I need an AutoTrader account or API key?

No. Everything we return is publicly displayed on the listing pages.

Are duplicate listings removed?

Yes. A listing that appears on more than one page is emitted once.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.