# Autotrader Canada Scraper (`calm_builder/autotrader-canada`) Actor

High-performance scraper for AutoTrader.ca. Extract comprehensive vehicle listings, including pricing, specs, VINs, and dealer details. Supports multiple search URLs, "Newest First" sorting, and parallel extraction. Optimized for anti-bot detection with automatic Canadian residential proxy support.

- **URL**: https://apify.com/calm\_builder/autotrader-canada.md
- **Developed by:** [Coder](https://apify.com/calm_builder) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 33 total users, 14 monthly users, 97.4% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## AutoTrader.ca Scraper

Extract structured vehicle listing data from public AutoTrader.ca search result pages.

This Actor is designed for users who need clean, reliable AutoTrader.ca data for research, market monitoring, pricing analysis, inventory tracking, lead generation, or workflow automation. It supports multiple search URLs in one run and can return either fast listing-level results or more detailed vehicle records depending on your selected input settings.

### What This Actor Does

- Collects listings from public AutoTrader.ca search result URLs
- Supports multiple search URLs in a single run
- Returns structured vehicle data ready for analysis, export, or automation
- Can collect basic listing data or more detailed vehicle information
- Works well for dealer monitoring, vehicle research, and pricing intelligence

### Common Use Cases

- Monitor used car and dealer inventory
- Track prices for specific makes, models, years, or regions
- Build automotive datasets for research or analytics
- Feed AutoTrader.ca listing data into CRMs, spreadsheets, or internal tools
- Compare listing availability across multiple search result pages

### Input

Provide one or more public AutoTrader.ca search result URLs and choose the options that match your use case.

#### Input Fields

| Field | Type | Description |
| --- | --- | --- |
| `startUrls` | Array | One or more public AutoTrader.ca search result URLs. |
| `maxListings` | Integer | Maximum number of listings to collect for each input URL. |
| `fetchDetails` | Boolean | When enabled, the Actor collects more detailed vehicle information where available. |
| `scrapeNewListings` | Boolean | Prioritizes newer listings when supported by the source page. |
| `proxyConfiguration` | Object | Optional proxy settings for runs that need a custom proxy setup. |

#### Input Notes

- Use public AutoTrader.ca search result pages as input
- Each input URL is handled independently
- If detailed extraction is disabled, the Actor returns faster, lighter results

### Output

The dataset contains one structured item per collected listing.

#### Common Output Fields

| Field | Description |
| --- | --- |
| `id` | Listing identifier when available |
| `url` | Direct URL of the listing |
| `sourceUrl` | Input search URL that produced the result |
| `title` | Listing title or vehicle headline |
| `price` | Listing price when available |
| `odometer` | Mileage or odometer information |
| `location` | Listing location |
| `main_image_url` | Primary image URL when available |
| `all_images` | Array of listing images when available |

#### Additional Vehicle Fields

When more detailed extraction is enabled, results may also include:

- make
- model
- year
- trim
- condition or status
- body style
- transmission
- drivetrain
- fuel type
- VIN
- stock number
- dealer details
- feature highlights
- pricing analysis fields
- photo counts and image collections
- additional vehicle specifications shown publicly on the listing

The exact field set can vary because AutoTrader.ca does not expose the same data for every listing.

#### Example Output Areas

Depending on the listing, output may include details from areas such as:

| Area | Examples |
| --- | --- |
| Pricing | `price`, `strikethrough_price`, `price_delta_text`, `average_market_price`, `price_evaluation` |
| Vehicle details | `make`, `model`, `year`, `trim`, `vin`, `transmission`, `drivetrain` |
| Dealer information | `dealer_name`, `dealer_phone`, `dealer_address`, `dealer_website`, `dealer_google_rating` |
| Media | `photo_count`, `photo_urls`, `main_image_url`, `thumbnail_urls`, `has_video` |
| Vehicle specifications | `specs`, `highlights`, `feature_highlights_list`, `feature_options` |
| Reports and references | `carfax`, `carproof_report_url`, `dealer_page_url`, `sourceUrl` |

### Example Output

```json
{
  "detail_url": "https://www.autotrader.ca/a/toyota/corolla/laval/quebec/5_69397193_ct2004331241275/",
  "ad_id": "5_69397193",
  "title": "2021 Toyota Corolla CVT * Camera * Cruise * Bluetooth *",
  "price": "15,995",
  "odometer": "160,959 km",
  "location": "Laval",
  "dealer_name": "HGregoire Nissan Chomedey Laval",
  "condition": "used",
  "make": "Toyota",
  "model": "Corolla",
  "year": "2021",
  "trim": "CVT * Camera * Cruise * Bluetooth *",
  "vin": "XXXXXXXXXXXXXXXXX",
  "stock_number": "CH6203",
  "price_delta_text": "$2,310 Below Market",
  "average_market_price": "$18,305",
  "dealer_phone": "1-877-627-0569",
  "dealer_address": "4299 Desserte Nord Autoroute 440, Laval, QC",
  "dealer_google_rating": 4.4,
  "transmission": "Automatic",
  "drivetrain": "FWD",
  "photo_count": 27,
  "highlights": [
    "Anti-Lock Brakes (ABS)",
    "Power Mirrors",
    "Spoiler",
    "Power Windows"
  ],
  "sourceUrl": "https://www.autotrader.ca/cars/toyota/corolla/qc/montreal/?rcp=100&rcs=0"
}
````

### Why Use This Actor

- Clean structured output that is easy to export and automate
- Supports multi-URL collection in one run
- Flexible enough for both lightweight and more detailed extraction
- Useful for both business workflows and research projects

### Notes

- Use public AutoTrader.ca search result URLs as input
- Data availability can vary from one listing to another
- Results depend on what AutoTrader.ca currently shows publicly for each listing
- In some environments, an appropriate proxy setup can improve collection reliability
- Some fields are present only for listings with richer public detail pages

### Good Fit For

- automotive marketplaces
- pricing research
- inventory monitoring
- automotive lead generation
- dealer and vehicle analytics

### Output Quality

This Actor is designed to return usable, analysis-ready data while staying practical for production use. If you need broader coverage, more specialized output, or a workflow adapted to a specific automotive use case, the Actor can be extended further over time.

# Actor input Schema

## `startUrls` (type: `array`):

Add one or more AutoTrader.ca search URLs. Each URL must be from autotrader.ca (Canadian site). At least one non-empty URL is required.

## `maxListings` (type: `integer`):

Maximum number of listings to scrape per search URL (default: 10). Total listings = maxListings × number of URLs.

## `fetchDetails` (type: `boolean`):

Fetch full detail page for each listing (slower but more complete data). If disabled, only list-page data is saved.

## `scrapeNewListings` (type: `boolean`):

Sort by newest listings first.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.autotrader.ca/cars/honda/reg_qc/cit_montreal?offer=N%2CU&cy=CA&damaged_listing=exclude&desc=0&sort=standard&ustate=N%2CU&zip=Montreal%2CQC&zipr=100&lat=45.50884&lon=-73.58781&atype=C&search_id=h8hmbe0r5q&search_type=C&size=20&source=homepage_search-mask"
    }
  ],
  "maxListings": 10,
  "fetchDetails": false,
  "scrapeNewListings": false
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.autotrader.ca/cars/honda/reg_qc/cit_montreal?offer=N%2CU&cy=CA&damaged_listing=exclude&desc=0&sort=standard&ustate=N%2CU&zip=Montreal%2CQC&zipr=100&lat=45.50884&lon=-73.58781&atype=C&search_id=h8hmbe0r5q&search_type=C&size=20&source=homepage_search-mask"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("calm_builder/autotrader-canada").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 = { "startUrls": [{ "url": "https://www.autotrader.ca/cars/honda/reg_qc/cit_montreal?offer=N%2CU&cy=CA&damaged_listing=exclude&desc=0&sort=standard&ustate=N%2CU&zip=Montreal%2CQC&zipr=100&lat=45.50884&lon=-73.58781&atype=C&search_id=h8hmbe0r5q&search_type=C&size=20&source=homepage_search-mask" }] }

# Run the Actor and wait for it to finish
run = client.actor("calm_builder/autotrader-canada").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.autotrader.ca/cars/honda/reg_qc/cit_montreal?offer=N%2CU&cy=CA&damaged_listing=exclude&desc=0&sort=standard&ustate=N%2CU&zip=Montreal%2CQC&zipr=100&lat=45.50884&lon=-73.58781&atype=C&search_id=h8hmbe0r5q&search_type=C&size=20&source=homepage_search-mask"
    }
  ]
}' |
apify call calm_builder/autotrader-canada --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=calm_builder/autotrader-canada",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Autotrader Canada Scraper",
        "description": "High-performance scraper for AutoTrader.ca. Extract comprehensive vehicle listings, including pricing, specs, VINs, and dealer details. Supports multiple search URLs, \"Newest First\" sorting, and parallel extraction. Optimized for anti-bot detection with automatic Canadian residential proxy support.",
        "version": "0.0",
        "x-build-id": "yDFdrUW1QJcwQe6u6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/calm_builder~autotrader-canada/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-calm_builder-autotrader-canada",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/calm_builder~autotrader-canada/runs": {
            "post": {
                "operationId": "runs-sync-calm_builder-autotrader-canada",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/calm_builder~autotrader-canada/run-sync": {
            "post": {
                "operationId": "run-sync-calm_builder-autotrader-canada",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Search URLs",
                        "minItems": 1,
                        "type": "array",
                        "description": "Add one or more AutoTrader.ca search URLs. Each URL must be from autotrader.ca (Canadian site). At least one non-empty URL is required.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxListings": {
                        "title": "Maximum Listings per URL",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Maximum number of listings to scrape per search URL (default: 10). Total listings = maxListings × number of URLs.",
                        "default": 10
                    },
                    "fetchDetails": {
                        "title": "Fetch listing details",
                        "type": "boolean",
                        "description": "Fetch full detail page for each listing (slower but more complete data). If disabled, only list-page data is saved.",
                        "default": false
                    },
                    "scrapeNewListings": {
                        "title": "New listings first",
                        "type": "boolean",
                        "description": "Sort by newest listings first.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
