# Autotrader.ca Listings Scraper (`piotrv1001/autotrader-ca-listings-scraper`) Actor

Scrape Autotrader.ca car listings by search URL or filters (make, model, price, year, mileage, location). Get price, specs, description, photos, dealer name and phone. Splits big searches past the 4,000 cap, newest first, optional full vehicle details.

- **URL**: https://apify.com/piotrv1001/autotrader-ca-listings-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### 🚗 Autotrader.ca Listings Scraper

Extract new and used car listings from **Autotrader.ca**, Canada's largest car marketplace. The **Autotrader.ca Listings Scraper** turns any search into clean, structured data: price, year, mileage, specs, full description, photos, dealer name and phone, and location - ready for price monitoring, inventory analysis, lead generation and market research.

### ✨ Features

- 🔍 **Search your way**: paste any Autotrader.ca search URL, or use the built-in filters - make, model, condition, price, year, mileage, seller type, postal code or city with radius.
- 📦 **Complete exports**: Autotrader.ca shows at most 4,000 cars per search. Bigger searches are split into price bands automatically, so you get every car, not just the first 4,000.
- 🆕 **Newest first by default**: ideal for monitoring fresh inventory and new price drops. Also sort by price, mileage, year or relevance.
- 📞 **Dealer contacts included**: dealer name, phone number and logo come with every listing at no extra cost.
- 📝 **Rich listing data**: full description, all photos in high resolution, transmission, fuel type, engine size, power, suggested retail price.
- 🔬 **Optional full vehicle details**: body type, exterior and interior colours, doors, seats, drivetrain, cylinders, horsepower, full equipment list, stock number, listing date and exact coordinates.
- 🧹 **No duplicates**: every car is saved once, even when searches overlap.

### 🛠️ How It Works

1. **Choose what to scrape** - paste one or more Autotrader.ca search URLs, or fill in the filters (e.g. Make `Toyota`, Model `RAV4`, Condition `Used`, Location `Calgary`).
2. **Set the limit** - `Max listings` (default 50; set 0 for everything the search has).
3. **Run** - download the results as JSON, CSV, Excel or via the API.

Run with an empty input to get the 50 newest cars listed in Canada.

### ⚙️ Input example

```json
{
    "make": "Toyota",
    "model": "RAV4",
    "condition": "used",
    "priceMax": 35000,
    "location": "Toronto",
    "radiusKm": 100,
    "sort": "newest",
    "maxItems": 100,
    "includeDetails": false
}
```

Or paste a search URL:

```json
{
    "searchUrls": ["https://www.autotrader.ca/cars/honda/civic?offer=U"],
    "maxItems": 500
}
```

### 📊 Sample Output Data

```json
{
    "id": "17a2dd29-0e0f-4df6-84e7-a22390090484",
    "legacyId": "71327363",
    "url": "https://www.autotrader.ca/offers/ford-f-150-2-7l-eco-leather-moonroof-bo-sound-gasoline-white-cat_ma29gr16518tr11290-17a2dd29-0e0f-4df6-84e7-a22390090484",
    "title": "Ford F 150 2.7L ECO | LEATHER | MOONROOF | B&O SOUND",
    "make": "Ford",
    "model": "F 150",
    "modelGroup": "F-150",
    "version": "2.7L ECO | LEATHER | MOONROOF | B&O SOUND",
    "year": 2026,
    "condition": "New",
    "price": 69433,
    "priceFormatted": "$ 69,433",
    "priceOnRequest": false,
    "currency": "CAD",
    "suggestedRetailPrice": 85330,
    "mileageKm": 20,
    "transmission": "Automatic",
    "fuelType": "Gasoline",
    "engineCc": 2700,
    "power": "239 kW (321 hp)",
    "description": "2026 F150 XLT COMES EQUIPPED WITH, TRAILER BRAKE CONTROLLER, MOBILE OFFICE PACKAGE...",
    "imageUrl": "https://prod.pictures.autoscout24.net/listing-images/17a2dd29-0e0f-4df6-84e7-a22390090484_0e2af917-bbd3-47e6-b543-b80e00c78850.jpg/1280x960.webp",
    "images": ["https://prod.pictures.autoscout24.net/listing-images/17a2dd29-..._0e2af917-....jpg/1280x960.webp"],
    "sellerType": "Dealer",
    "sellerId": "47940701",
    "sellerName": "Grimsby Ford",
    "sellerPhone": "+13656512568",
    "sellerLogo": "https://prod.pictures.autoscout24.net/dealer-info/47940701-original-580d90e4-7b8d-47a9-8784-a182ff33c7ba.jpg/resize/100x50%3E/quality/90",
    "street": "455 SOUTH SERVICE RD",
    "city": "GRIMSBY",
    "province": "ON",
    "postalCode": "L3M 4H8",
    "isSponsored": false,
    "detailsScraped": false
}
```

With **Include full vehicle details** enabled, each car also gets:

```json
{
    "createdAt": "2026-09-17T19:47:14.864Z",
    "status": "Active",
    "stockNumber": "26W3L320",
    "bodyType": "Pick-up Truck",
    "exteriorColor": "White",
    "exteriorColorOriginal": "Oxford White",
    "interiorColor": "Black",
    "doors": 4,
    "seats": 5,
    "drivetrain": "4x4",
    "gears": 10,
    "cylinders": 6,
    "powerHp": 321,
    "powerKw": 239,
    "equipment": {
        "comfortAndConvenience": ["Air conditioning", "Cruise control", "Power windows"],
        "safetyAndSecurity": ["ABS", "Backup camera"]
    },
    "latitude": 43.20709,
    "longitude": -79.60094,
    "dealerWebsite": "https://www.grimsbyford.com",
    "detailsScraped": true
}
```

### 💰 Pricing

Pay only for the data you get:

| Event | Price |
| --- | --- |
| Actor start | $0.00005 per run |
| Listing (each car saved) | $0.001 |
| Listing details (each car with **Include full vehicle details**) | $0.002 extra |

Examples: 1,000 cars = **$1.00**; 1,000 cars with full details = **$3.00**. Set a maximum cost per run in the run options and the scraper stops when it is reached.

### ❓ FAQ

**How many cars can I get?** Everything a search shows on Autotrader.ca. Searches above 4,000 results are split by price automatically. Cars without a public price ("price on request") can only be reached within the first 4,000 results of a search, so very large exports may miss a few of them.

**Is the VIN included?** No - Autotrader.ca no longer publishes the VIN or the CARFAX report on the listing page.

**Can I monitor new listings?** Yes. Keep the default "Newest first" sort, set `Max listings` to the number of new cars you expect between runs, and schedule the scraper.

Get Canadian car market data in minutes with the **Autotrader.ca Listings Scraper**! 🚀

# Actor input Schema

## `searchUrls` (type: `array`):

Paste one or more Autotrader.ca search result URLs (set your filters on autotrader.ca, then copy the address bar), e.g. https://www.autotrader.ca/cars/honda/civic?offer=U. All filters, sorting and the page number in the URL are kept. When you add URLs, the filter fields below are ignored.

## `make` (type: `string`):

Car make, e.g. Toyota, Ford, Mercedes-Benz. Leave empty for all makes.

## `model` (type: `string`):

Car model, e.g. RAV4, F-150, Civic. Works together with Make.

## `condition` (type: `string`):

New cars, used cars, or both.

## `priceMin` (type: `integer`):

Only cars priced at or above this amount.

## `priceMax` (type: `integer`):

Only cars priced at or below this amount.

## `yearMin` (type: `integer`):

Oldest model year, e.g. 2018.

## `yearMax` (type: `integer`):

Newest model year, e.g. 2024.

## `mileageMax` (type: `integer`):

Only cars with at most this many kilometres.

## `sellerType` (type: `string`):

Dealers, private sellers, or both.

## `location` (type: `string`):

Search around a Canadian postal code or city, e.g. M5V 2T6 or Calgary. Leave empty to search all of Canada.

## `radiusKm` (type: `integer`):

Distance around the location (10-400 km). Used only when a location is set.

## `sort` (type: `string`):

Order of the results. Newest first is best for monitoring new listings.

## `maxItems` (type: `integer`):

Maximum number of cars to save across all searches. Set 0 for no limit. Searches with more than 4,000 results are split automatically, so large exports are complete.

## `includeDetails` (type: `boolean`):

Open each car's listing page to add body type, colours, doors and seats, drivetrain, cylinders, horsepower, full equipment list, stock number, listing date and exact coordinates. Charged as an extra event per car.

## `proxyConfiguration` (type: `object`):

Proxy servers used for the requests. The default works well.

## Actor input object example

```json
{
  "make": "Toyota",
  "model": "RAV4",
  "condition": "all",
  "sellerType": "all",
  "radiusKm": 100,
  "sort": "newest",
  "maxItems": 50,
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "make": "Toyota",
    "model": "RAV4",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/autotrader-ca-listings-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "make": "Toyota",
    "model": "RAV4",
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/autotrader-ca-listings-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "make": "Toyota",
  "model": "RAV4",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call piotrv1001/autotrader-ca-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/autotrader-ca-listings-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/KdKiqQwb3recFzjvn/builds/3pRcXArqdGvCYGrxo/openapi.json
