{
  "openapi": "3.0.1",
  "info": {
    "title": "AutoTrader.ca Scraper - Canada Car Listings | $0.49/1K",
    "description": "Scrape AutoTrader.ca car listings across Canada: price, year, mileage, VIN, dealer, location and photos. Search by make/model, province, postal code or URL; monitor new ads. $0.49 per 1,000 cars.",
    "version": "0.1",
    "x-build-id": "MGiu8NfbbGymAvOvY"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawloop~autotrader-ca-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawloop-autotrader-ca-scraper",
        "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/crawloop~autotrader-ca-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawloop-autotrader-ca-scraper",
        "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/crawloop~autotrader-ca-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawloop-autotrader-ca-scraper",
        "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",
        "properties": {
          "startUrls": {
            "title": "Start URLs (search or listing pages)",
            "type": "array",
            "description": "AutoTrader.ca search URLs (/cars/...) or listing URLs (/offers/...). Filters already in the URL are kept. When this is empty, the Actor builds a search from Make, Model, and the filters below.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "make": {
            "title": "Make",
            "type": "string",
            "description": "Make slug as it appears in the URL path, for example toyota or honda. Used when Start URLs are empty."
          },
          "model": {
            "title": "Model",
            "type": "string",
            "description": "Model slug as it appears in the URL path, for example camry. Combined with Make into /cars/<make>/<model>/."
          },
          "yearFrom": {
            "title": "Year from",
            "minimum": 1950,
            "maximum": 2035,
            "type": "integer",
            "description": "Earliest model year. Sent as fregfrom."
          },
          "yearTo": {
            "title": "Year to",
            "minimum": 1950,
            "maximum": 2035,
            "type": "integer",
            "description": "Latest model year. Sent as fregto."
          },
          "priceFrom": {
            "title": "Price from (CAD)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price in Canadian dollars. Sent as pricefrom."
          },
          "priceTo": {
            "title": "Price to (CAD)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price in Canadian dollars. Sent as priceto."
          },
          "mileageTo": {
            "title": "Max mileage (km)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum odometer reading in kilometres. Sent as kmto."
          },
          "condition": {
            "title": "Condition",
            "enum": [
              "all",
              "used",
              "new"
            ],
            "type": "string",
            "description": "New, used, or both. Sent as offer=N, offer=U, or offer=N,U.",
            "default": "all"
          },
          "province": {
            "title": "Province",
            "type": "string",
            "description": "Province code or name (ON, QC, BC, Alberta, …). Added as a path segment such as /reg_on/, which is how AutoTrader.ca links provinces. Leave empty for all of Canada."
          },
          "postalCode": {
            "title": "Postal code",
            "type": "string",
            "description": "Canadian postal code, for example M5V 2T6. Sent as zip with spaces removed and letters upper-cased (M5V3L9). A space in the code is dropped by the site."
          },
          "radiusKm": {
            "title": "Radius (km)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Search radius in kilometres, sent as radius. Narrows results only when a postal code is set. Defaults to 100 km when a postal code is given and this is left empty."
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "standard",
              "price",
              "price_desc",
              "mileage",
              "mileage_desc",
              "model_year",
              "age",
              "distance",
              "make",
              "power",
              "financerate",
              "leasing_rate"
            ],
            "type": "string",
            "description": "Sort order. Values match the site sorting keys (price, mileage, model_year, age, distance, standard, …).",
            "default": "standard"
          },
          "maxItems": {
            "title": "Max listings",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum listings to save. 0 means no cap (still limited by Max pages and the site's numberOfPages).",
            "default": 100
          },
          "maxPages": {
            "title": "Max pages",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum search pages to open. Each page has about 20 listings. The run also stops at the site's numberOfPages. 0 means follow numberOfPages with no extra cap.",
            "default": 20
          },
          "scrapeDetails": {
            "title": "Open each listing",
            "type": "boolean",
            "description": "Open each offer page and add description, equipment, warranty, colours, drivetrain, doors, and seats. Off by default: search cards already include price, kilometres, fuel, transmission, location, and dealer.",
            "default": false
          },
          "includePhones": {
            "title": "Include public dealer phone numbers",
            "type": "boolean",
            "description": "Off by default. When on, dealerPhone is the business number already shown on the dealer listing. Private-seller numbers are not collected.",
            "default": false
          },
          "monitorMode": {
            "title": "Monitor mode (new listings and price drops)",
            "type": "boolean",
            "description": "The first run stores a baseline and saves no rows. Later runs save only new listings and price drops.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor state store",
            "type": "string",
            "description": "Named key-value store that keeps the monitor baseline between runs.",
            "default": "autotrader-ca-monitor"
          },
          "resetMonitorState": {
            "title": "Reset monitor state",
            "type": "boolean",
            "description": "Ignore the saved baseline and seed it again on this run. No listing rows are saved on a seed run.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "No proxy by default. If a request is blocked (403, 429, or a challenge page), the run switches once to Apify Proxy RESIDENTIAL in CA and continues. Your group and country are used exactly as set. Country CA is filled in only when you choose RESIDENTIAL and leave country empty.",
            "default": {
              "useApifyProxy": 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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}