{
  "openapi": "3.0.1",
  "info": {
    "title": "Canada Car Scraper: AutoTrader.ca, Kijiji & CarGurus in One",
    "description": "Search AutoTrader.ca, Kijiji and CarGurus.ca at once with one filter form. Duplicates are merged into one row per car, with VIN, each site's price and link, the price gap, CarGurus deal rating and market value, dealer phone and private sellers.",
    "version": "0.1",
    "x-build-id": "Z8Kpe7aArTbE37OjJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fayoussef~canada-car-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fayoussef-canada-car-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/fayoussef~canada-car-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fayoussef-canada-car-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/fayoussef~canada-car-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fayoussef-canada-car-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": {
          "vehicles": {
            "title": "Vehicles",
            "type": "array",
            "description": "One make or make + model per line, for example \"Toyota RAV4\", \"Ford F-150\" or just \"Honda\". Each line is searched on every site. Leave empty to search all makes.",
            "items": {
              "type": "string"
            }
          },
          "postal_code": {
            "title": "Postal code",
            "type": "string",
            "description": "Canadian postal code to search around, full (\"M5V 3L9\") or the first three characters (\"M5V\"). Not needed when the radius is 0."
          },
          "radius_km": {
            "title": "Radius (km)",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "How far from the postal code to search. 0 searches all of Canada.",
            "default": 100
          },
          "max_results": {
            "title": "Max vehicles",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Stop after this many vehicles. A car listed on several sites counts once. ⚠️ Free-plan runs are capped at 25.",
            "default": 200
          },
          "condition": {
            "title": "Condition",
            "enum": [
              "used",
              "new",
              "any"
            ],
            "type": "string",
            "description": "Used, new or both. CarGurus.ca lists used cars only, so a new-car search covers AutoTrader.ca and Kijiji.",
            "default": "used"
          },
          "seller_type": {
            "title": "Seller",
            "enum": [
              "any",
              "dealer",
              "private"
            ],
            "type": "string",
            "description": "Dealers, private sellers or both. Private sellers are on Kijiji and AutoTrader.ca (CarGurus.ca lists dealers only).",
            "default": "any"
          },
          "year_from": {
            "title": "Year from",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "Oldest model year to include."
          },
          "year_to": {
            "title": "Year to",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "Newest model year to include."
          },
          "price_min": {
            "title": "Price from (CAD)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest asking price in Canadian dollars."
          },
          "price_max": {
            "title": "Price to (CAD)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest asking price in Canadian dollars."
          },
          "mileage_max_km": {
            "title": "Max mileage (km)",
            "minimum": 1,
            "type": "integer",
            "description": "Highest odometer reading in kilometres."
          },
          "sort_by": {
            "title": "Order",
            "enum": [
              "newest",
              "price_low"
            ],
            "type": "string",
            "description": "Newest listings first, or cheapest first. With a large search and a small Max vehicles, this decides which cars are kept.",
            "default": "newest"
          },
          "sources": {
            "title": "Sites",
            "type": "array",
            "description": "Which sites to search. All three by default.",
            "items": {
              "type": "string",
              "enum": [
                "autotrader",
                "kijiji",
                "cargurus"
              ],
              "enumTitles": [
                "AutoTrader.ca",
                "Kijiji",
                "CarGurus.ca"
              ]
            },
            "default": [
              "autotrader",
              "kijiji",
              "cargurus"
            ]
          },
          "only_new_listings": {
            "title": "Only new vehicles since the last run",
            "type": "boolean",
            "description": "Return only cars that were not found by the previous run of the same search. Schedule the Actor (daily, hourly) to get a feed of fresh inventory. The first run returns everything and becomes the baseline.",
            "default": false
          },
          "watchlist_name": {
            "title": "Watchlist name",
            "type": "string",
            "description": "Optional label for the memory of seen cars. Leave empty to tie the memory to the search filters; set a name to keep the memory when you edit the filters."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}