{
  "openapi": "3.0.1",
  "info": {
    "title": "AutoTrader.ca Scraper: Canadian Cars and Prices",
    "description": "Pull AutoTrader.ca cars, trucks, RVs, boats and more from all of Canada, no login, past 4,000 ads a search. Rows hold CAD price, AutoTrader.ca price badge, model year, trim, km, VIN where shown, dealer name, phone and street. Track new ads and price drops; CSV, Excel or API; pay per listing.",
    "version": "0.1",
    "x-build-id": "0r7b7HezUvbZ938Xy"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation_craft~autotrader-ca-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation_craft-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/automation_craft~autotrader-ca-scraper/runs": {
      "post": {
        "operationId": "runs-sync-automation_craft-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/automation_craft~autotrader-ca-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-automation_craft-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": {
          "makeModels": {
            "title": "Makes and models",
            "type": "array",
            "description": "Makes, or makes with a model, as AutoTrader.ca lists them: \"Toyota\", \"Toyota RAV4\", \"Ford F-150\", \"Honda Civic\", and a trim text after \" / \" (\"Toyota RAV4 / XLE\"). Ids work too (\"70\", \"70|2143\"). A name that matches several models is a free row with the candidates. The names follow the vehicle type below.",
            "items": {
              "type": "string"
            }
          },
          "makes": {
            "title": "Car makes (pick from the list)",
            "type": "array",
            "description": "Car makes picked from AutoTrader.ca's own list (124 makes); each is searched like a make written in \"Makes and models\". Cars and trucks only.",
            "items": {
              "type": "string",
              "enum": [
                "AC",
                "Acadian",
                "Acura",
                "Alfa Romeo",
                "Allard",
                "Alpina",
                "Alvis",
                "AM General",
                "AMC",
                "American Bantam",
                "Amphicar",
                "ASA",
                "Aston Martin",
                "Asuna",
                "Auburn",
                "Audi",
                "Aurora",
                "Austin",
                "Austin-Healey",
                "Bentley",
                "BMW",
                "BrightDrop",
                "Bugatti",
                "Buick",
                "Cadillac",
                "Chamonix",
                "Chevrolet",
                "Chrysler",
                "Citroen",
                "Clenet",
                "Cord",
                "Daewoo",
                "Daihatsu",
                "Datsun",
                "De Tomaso",
                "Dodge",
                "Eagle",
                "Excalibur",
                "Factory Five Racing",
                "Ferrari",
                "Fiat",
                "Fisker",
                "Ford",
                "Freightliner",
                "Genesis",
                "Geo",
                "GMC",
                "Hino",
                "Honda",
                "HUMMER",
                "Hyundai",
                "Ineos",
                "Infiniti",
                "International",
                "Isuzu",
                "Jaguar",
                "Jeep",
                "Jensen",
                "Karma",
                "Kia",
                "Koenigsegg",
                "Lada",
                "Lamborghini",
                "Lancia",
                "Land Rover",
                "Lexus",
                "Lincoln",
                "Lordstown",
                "Lotus",
                "Lucid",
                "Maserati",
                "Maybach",
                "Mazda",
                "McLaren",
                "Mercedes-Benz",
                "Mercury",
                "Merkur",
                "Meteor",
                "MG",
                "MINI",
                "Mitsubishi",
                "Monarch",
                "Morgan",
                "MV-1",
                "Nissan",
                "Oakland",
                "Oldsmobile",
                "Panoz",
                "Peugeot",
                "Pininfarina",
                "Plymouth",
                "Polestar",
                "Pontiac",
                "Porsche",
                "RAM",
                "Rambler",
                "Renault",
                "Rivian",
                "Rolls-Royce",
                "Rover",
                "Saab",
                "Saleen",
                "Saturn",
                "Scion",
                "SEAT",
                "Shelby",
                "smart",
                "Spyker",
                "Sterling",
                "Studebaker",
                "Subaru",
                "Sunbeam",
                "Suzuki",
                "Tesla",
                "Toyota",
                "Triumph",
                "TVR",
                "Unspecified",
                "Vanderhall",
                "VinFast",
                "Volkswagen",
                "Volvo",
                "Willys",
                "Yugo"
              ]
            }
          },
          "vehicleType": {
            "title": "Vehicle type",
            "enum": [
              "car",
              "motorcycle",
              "rv",
              "heavy_truck",
              "trailer",
              "boat",
              "watercraft",
              "snowmobile",
              "heavy_equipment",
              "farm_equipment"
            ],
            "type": "string",
            "description": "The kind of vehicle every built search reads. Default: cars and trucks. Choosing a type with no make, place or other filter reads all of Canada for that type, newest first."
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Free text AutoTrader.ca searches in the ads (its own keyword search), such as \"sunroof\", \"AWD\", \"one owner\". Each keyword is its own search.",
            "items": {
              "type": "string"
            }
          },
          "provinces": {
            "title": "Provinces",
            "type": "array",
            "description": "Search these provinces or territories (each is its own search). Leave empty for all of Canada.",
            "items": {
              "type": "string",
              "enum": [
                "AB",
                "BC",
                "MB",
                "NB",
                "NL",
                "NS",
                "NT",
                "NU",
                "ON",
                "PE",
                "QC",
                "SK",
                "YT"
              ],
              "enumTitles": [
                "Alberta",
                "British Columbia",
                "Manitoba",
                "New Brunswick",
                "Newfoundland and Labrador",
                "Nova Scotia",
                "Northwest Territories",
                "Nunavut",
                "Ontario",
                "Prince Edward Island",
                "Quebec",
                "Saskatchewan",
                "Yukon"
              ]
            }
          },
          "locations": {
            "title": "Places (postal code, city or coordinates)",
            "type": "array",
            "description": "A Canadian postal code (\"M5V 2T6\"), a city with its province code (\"Toronto, ON\", \"Halifax, NS\") or coordinates (\"43.65, -79.38\"), searched with the radius below. AutoTrader.ca places each postal code or city itself, once per run; one it cannot place, or places outside the province named (a postal code names its province by its first letter), is a free row and its searches are not read.",
            "items": {
              "type": "string"
            }
          },
          "radiusKm": {
            "title": "Radius in kilometres",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "The radius around each place in whole kilometres, 1 to 1,000 (the site's form offers 10 to 400). Default 50 km when a place is given."
          },
          "dealers": {
            "title": "Dealers (their stock)",
            "type": "array",
            "description": "A dealer's stock: its id (the \"sellerId\" of its rows) or its dealer page link (https://www.autotrader.ca/dealers/47946545). With no make it reads the whole stock; with makes, keywords or filters, the stock within them.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "Search links",
            "type": "array",
            "description": "AutoTrader.ca search links copied from your browser after choosing a make and filters (https://www.autotrader.ca/cars/toyota/rav4/reg_on?...). Each is read with its own path parts and filters (the site applies them; the run checks on every page that it did); a parameter or path part this Actor does not know refuses the link (the site would ignore it and search wider).",
            "items": {
              "type": "string"
            }
          },
          "adUrls": {
            "title": "Ad links",
            "type": "array",
            "description": "AutoTrader.ca ad links (https://www.autotrader.ca/offers/...), ad ids, or old AutoTrader ad links (/a/.../5_<number>...), read with their details and delivered as given (billed as Listing by URL). A removed or unknown ad is a free row.",
            "items": {
              "type": "string"
            }
          },
          "resumeFromDatasetId": {
            "title": "Resume from an earlier run (dataset id)",
            "type": "string",
            "description": "The dataset id of an earlier run of this Actor in your account (its \"defaultDatasetId\"). Ads delivered in it are left out, free, so an interrupted run can be continued without paying for an ad twice. At most 500,000 rows are read."
          },
          "conditions": {
            "title": "Condition",
            "type": "array",
            "description": "New or used vehicles (both by default).",
            "items": {
              "type": "string",
              "enum": [
                "new",
                "used"
              ],
              "enumTitles": [
                "New",
                "Used"
              ]
            }
          },
          "sellerType": {
            "title": "Seller type",
            "enum": [
              "any",
              "dealer",
              "private"
            ],
            "type": "string",
            "description": "Dealers, private sellers, or both (default)."
          },
          "damagedVehicles": {
            "title": "Damaged vehicles",
            "enum": [
              "exclude",
              "include",
              "only"
            ],
            "type": "string",
            "description": "AutoTrader.ca leaves damaged vehicles out of its searches unless asked; about 1,100 are listed across Canada. Each row says whether the ad is marked damaged (`damaged`)."
          },
          "minPrice": {
            "title": "Price from (CAD)",
            "minimum": 0,
            "maximum": 99999999,
            "type": "integer",
            "description": "Lowest price in Canadian dollars. \"Price on Request\" ads are left out of any price filter by the site."
          },
          "maxPrice": {
            "title": "Price up to (CAD)",
            "minimum": 0,
            "maximum": 99999999,
            "type": "integer",
            "description": "Highest price in Canadian dollars."
          },
          "yearMin": {
            "title": "Model year from",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "Earliest model year."
          },
          "yearMax": {
            "title": "Model year up to",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "Latest model year."
          },
          "mileageMin": {
            "title": "Kilometres from",
            "minimum": 0,
            "maximum": 9999999,
            "type": "integer",
            "description": "Lowest odometer reading in km."
          },
          "mileageMax": {
            "title": "Kilometres up to",
            "minimum": 0,
            "maximum": 9999999,
            "type": "integer",
            "description": "Highest odometer reading in km."
          },
          "powerMin": {
            "title": "Power from",
            "minimum": 0,
            "maximum": 9999,
            "type": "integer",
            "description": "Lowest power, in the unit below (hp by default)."
          },
          "powerMax": {
            "title": "Power up to",
            "minimum": 0,
            "maximum": 9999,
            "type": "integer",
            "description": "Highest power, in the unit below (hp by default)."
          },
          "powerUnit": {
            "title": "Power unit",
            "enum": [
              "hp",
              "kw"
            ],
            "type": "string",
            "description": "The unit of \"Power from\" and \"Power up to\". Default hp."
          },
          "fuelTypes": {
            "title": "Fuel",
            "type": "array",
            "description": "Any of these fuels.",
            "items": {
              "type": "string",
              "enum": [
                "gasoline",
                "diesel",
                "electric",
                "hybrid",
                "flex_fuel",
                "natural_gas",
                "propane",
                "other"
              ],
              "enumTitles": [
                "Gasoline",
                "Diesel",
                "Electric",
                "Gas/electric hybrid",
                "Flex fuel",
                "Natural gas",
                "Propane (LPG)",
                "Other"
              ]
            }
          },
          "transmission": {
            "title": "Transmission",
            "type": "array",
            "description": "Automatic or manual.",
            "items": {
              "type": "string",
              "enum": [
                "automatic",
                "manual"
              ],
              "enumTitles": [
                "Automatic",
                "Manual"
              ]
            }
          },
          "bodyTypes": {
            "title": "Body type",
            "type": "array",
            "description": "Any of these body types, by the site's name or number: \"Hatchback\" (1), \"Convertible\" (2), \"Coupe\" (3), \"Wagon\" (5), \"Sedan\" (6), \"Minivan\" (12), \"SUV\" (14), \"Pick-up Truck\" (15), \"Others\" (7) for cars; other vehicle types have their own lists (a name the type does not list is refused).",
            "items": {
              "type": "string"
            }
          },
          "driveTypes": {
            "title": "Drivetrain",
            "type": "array",
            "description": "Any of these drivetrains.",
            "items": {
              "type": "string",
              "enum": [
                "all_wheel_drive",
                "four_by_four",
                "front_wheel_drive",
                "rear_wheel_drive"
              ],
              "enumTitles": [
                "All wheel drive",
                "4x4",
                "Front wheel drive",
                "Rear wheel drive"
              ]
            }
          },
          "colors": {
            "title": "Exterior colour",
            "type": "array",
            "description": "Any of these exterior colours, by name: \"Beige\", \"Blue\", \"Brown\", \"Bronze\", \"Yellow\", \"Grey\", \"Green\", \"Red\", \"Black\", \"Silver\", \"Violet\", \"White\", \"Orange\", \"Gold\".",
            "items": {
              "type": "string"
            }
          },
          "interiorColors": {
            "title": "Interior colour",
            "type": "array",
            "description": "Any of these interior colours, by name: \"Beige\", \"Black\", \"Grey\", \"Brown\", \"Other\", \"Blue\", \"Red\", \"Green\", \"Yellow\", \"Orange\", \"White\".",
            "items": {
              "type": "string"
            }
          },
          "upholstery": {
            "title": "Upholstery",
            "type": "array",
            "description": "Any of these upholsteries: \"Alcantara\", \"Cloth\", \"Full leather\", \"Other\", \"Part leather\", \"Velour\".",
            "items": {
              "type": "string"
            }
          },
          "paintTypes": {
            "title": "Paint",
            "type": "array",
            "description": "Any of these paint types: \"Metallic\", \"Others\", \"Perl Effect\", \"Mica (Stoned)\", \"Uni/Basic\".",
            "items": {
              "type": "string"
            }
          },
          "cylinders": {
            "title": "Cylinders",
            "type": "array",
            "description": "Any of these cylinder counts (ads that state none are left out by the site).",
            "items": {
              "type": "string",
              "enum": [
                "3",
                "4",
                "6",
                "8",
                "10_or_more"
              ],
              "enumTitles": [
                "3",
                "4",
                "6",
                "8",
                "10 or more"
              ]
            }
          },
          "priceBadges": {
            "title": "Price badge",
            "type": "array",
            "description": "Any of these AutoTrader.ca price badges (its own rating of the price against the market).",
            "items": {
              "type": "string",
              "enum": [
                "great_price",
                "good_price",
                "fair_price",
                "above_average_price",
                "no_badge"
              ],
              "enumTitles": [
                "Great price",
                "Good price",
                "Fair price",
                "Above average price",
                "No badge"
              ]
            }
          },
          "equipment": {
            "title": "Equipment (all of these)",
            "type": "array",
            "description": "Equipment every vehicle must have, by its name as the site lists it or its number: \"Blind spot monitor\", \"Heated seats\", \"Navigation system\", \"Sunroof\", \"Apple CarPlay\" and the others of the site's list (136 items), plus \"With full service history\" and \"Non-smoking vehicle\".",
            "items": {
              "type": "string"
            }
          },
          "certifications": {
            "title": "Certified pre-owned programs",
            "type": "array",
            "description": "Vehicles of any of these certified programs, by name or number as the site lists them: \"GM Certified\", \"Honda Certified\", \"Toyota Certified\", \"Nissan Certified\", \"BMW Certified\", \"Acura Certified\", \"Lexus Certified\", \"Volkswagen Certified\" and the others.",
            "items": {
              "type": "string"
            }
          },
          "seatsMin": {
            "title": "Seats from",
            "minimum": 1,
            "maximum": 99,
            "type": "integer",
            "description": "Fewest seats."
          },
          "seatsMax": {
            "title": "Seats up to",
            "minimum": 1,
            "maximum": 99,
            "type": "integer",
            "description": "Most seats."
          },
          "doorsMin": {
            "title": "Doors from",
            "minimum": 2,
            "maximum": 9,
            "type": "integer",
            "description": "Fewest doors."
          },
          "doorsMax": {
            "title": "Doors up to",
            "minimum": 2,
            "maximum": 9,
            "type": "integer",
            "description": "Most doors."
          },
          "previousOwnersMax": {
            "title": "Previous owners, at most",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "At most 1, 2 or 3 previous owners (4 means 4 or more, as on the site)."
          },
          "onlineWithinDays": {
            "title": "Online within days",
            "minimum": 1,
            "maximum": 14,
            "type": "integer",
            "description": "Ads online for at most this many days, as AutoTrader.ca filters them: 1 to 7, or 14."
          },
          "priceReducedOnly": {
            "title": "Reduced price only",
            "type": "boolean",
            "description": "Only ads whose price was reduced (the site's \"Reduced\" filter)."
          },
          "filters": {
            "title": "Other AutoTrader.ca filters",
            "type": "object",
            "description": "Any other filter of the site, by its own parameter name and value, such as {\"seatsfrom\": 7, \"bcol\": [\"11\"]}. A name this Actor does not know refuses the run (the site would ignore it and search wider)."
          },
          "includeKeywords": {
            "title": "Must contain one of these words",
            "type": "array",
            "description": "Whole words looked for in the title, trim and description (and the equipment when details are read). A row needs one of them.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Must not contain these words",
            "type": "array",
            "description": "Whole words that leave a row out, looked for where the words above are.",
            "items": {
              "type": "string"
            }
          },
          "priceOnRequest": {
            "title": "\"Price on Request\" ads",
            "enum": [
              "include",
              "exclude"
            ],
            "type": "string",
            "description": "Ads that show no price (\"Price on Request\"; one in five of the newest ads). Included by default, with an empty price and priceOnRequest true."
          },
          "customFilters": {
            "title": "Custom filters",
            "type": "array",
            "description": "Rules on 36 output fields (price, mileageKm, modelYear, powerHp, city, dealerName, vin and others), all of which must hold: [{\"field\": \"powerHp\", \"op\": \"gte\", \"value\": 200}, {\"field\": \"city\", \"op\": \"notEquals\", \"value\": \"Toronto\"}]. Ops: includes, notIncludes, equals, notEquals, gt, gte, lt, lte."
          },
          "excludeAdIds": {
            "title": "Leave out these ads",
            "type": "array",
            "description": "Ad ids or links never delivered.",
            "items": {
              "type": "string"
            }
          },
          "postedWithinHours": {
            "title": "Online within hours",
            "minimum": 1,
            "maximum": 720,
            "type": "integer",
            "description": "Only ads that went online within this many hours of the run's start (needs details on; the moment is on the details)."
          },
          "postedWithinDays": {
            "title": "Online within days (exact)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Only ads that went online within this many days of the run's start (needs details on)."
          },
          "postedAfter": {
            "title": "Online on or after (date)",
            "type": "string",
            "description": "Only ads that went online on or after this day, YYYY-MM-DD in UTC (needs details on)."
          },
          "postedBefore": {
            "title": "Online before or on (date)",
            "type": "string",
            "description": "Only ads that went online on or before this day, YYYY-MM-DD in UTC (needs details on)."
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "newest",
              "oldest",
              "price_low",
              "price_high",
              "mileage_low",
              "mileage_high",
              "year_new",
              "year_old",
              "power_high",
              "power_low",
              "best",
              "distance"
            ],
            "type": "string",
            "description": "The order of every built search. Default: newest first. A search link keeps its own sort."
          },
          "maxItems": {
            "title": "Maximum listings",
            "minimum": 1,
            "maximum": 500000,
            "type": "integer",
            "description": "The most listing rows the run delivers (searches, links and updates together). Default 100."
          },
          "maxItemsPerSearch": {
            "title": "Maximum listings per search",
            "minimum": 1,
            "maximum": 500000,
            "type": "integer",
            "description": "The most listing rows one search delivers."
          },
          "maxPagesPerSearch": {
            "title": "Maximum pages per search",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "The most result pages (200 rows each) one search reads. A monitor reads 3 by default."
          },
          "startPage": {
            "title": "Start page",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "The result page each search starts on (not with a monitor)."
          },
          "splitLargeSearches": {
            "title": "Split large searches",
            "type": "boolean",
            "description": "On by default: a search with more ads than one walk reaches (about 3,400 of the site's 4,000 row cap) is split into slices with count calls (province, seller type, model year, price), so every ad is read; the coverage row counts any ad no slice could hold. Off for monitors."
          },
          "includeDetails": {
            "title": "Listing details (add-on)",
            "type": "boolean",
            "description": "Read each search row's details: the full description, the equipment list, body type, colours, drivetrain, seats, doors, cylinders, city and highway fuel consumption where shown, the VIN where AutoTrader.ca shows it (inside its Carfax link: 23 and 65 percent of the ads in two of our runs), the Carfax report link, the dealer's stock number, Google rating and homepage, the market price median with the price against it, coordinates, and the moment the ad went online. Billed as Listing details per row read."
          },
          "includeRawRecord": {
            "title": "Include the source record",
            "type": "boolean",
            "description": "Attach AutoTrader.ca's own record of the ad (and of its details when read) to each row, as \"rawRecord\". Private sellers' records only with personal data on. Free."
          },
          "includePersonalData": {
            "title": "Include private sellers' personal data",
            "type": "boolean",
            "description": "Off by default. On: private sellers' phone numbers as AutoTrader.ca shows them, their seller id, the ad's full link, their exact coordinates, their full postal code and their source record when asked for (off, those are left out, coordinates rounded to about 1 km and the postal code cut to its first three characters). Titles, trims and descriptions are always delivered exactly as AutoTrader.ca serves them, whatever this setting. Dealers' contact details are business data and always delivered. You are responsible for a lawful use, PIPEDA and privacy laws included."
          },
          "currency": {
            "title": "Also show prices in",
            "enum": [
              "CAD",
              "USD",
              "EUR",
              "GBP",
              "AUD",
              "MXN",
              "JPY",
              "CHF",
              "CNY",
              "INR"
            ],
            "type": "string",
            "description": "Prices stay in Canadian dollars; another currency adds a converted price at the European Central Bank's rate of the day."
          },
          "imageSize": {
            "title": "Image size",
            "enum": [
              "small",
              "medium",
              "large"
            ],
            "type": "string",
            "description": "The size of the image links. Default large."
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "text",
              "html",
              "markdown",
              "all"
            ],
            "type": "string",
            "description": "The format of the description."
          },
          "descriptionMaxLength": {
            "title": "Description length, at most",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Cut descriptions to this many characters."
          },
          "compactOutput": {
            "title": "Compact rows",
            "type": "boolean",
            "description": "Only the core fields on each row (what a row paid for stays)."
          },
          "excludeEmptyFields": {
            "title": "Leave out empty fields",
            "type": "boolean",
            "description": "Drop fields that are empty on a row."
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "A short name (\"rav4-ontario\"). The monitor remembers every ad it delivered; known ads are free. One name holds one set of settings."
          },
          "deliverBaseline": {
            "title": "Deliver the first run's ads",
            "type": "boolean",
            "description": "On by default: the monitor's first run delivers the ads its searches list now. Off: the first run stores them as known without delivering them (only the results pages read are charged), and later runs deliver what is new or changed. Off cannot be combined with ad links or with the details add-on (the first run reads no details)."
          },
          "trackChanges": {
            "title": "Track changes",
            "type": "boolean",
            "description": "Also deliver known ads whose price (or a tracked field) changed or that came back, and ads that left every search (removed), billed as Listing update."
          },
          "changeTypes": {
            "title": "Changes to deliver",
            "type": "array",
            "description": "Which changes a monitor with change tracking delivers. Default: all.",
            "items": {
              "type": "string",
              "enum": [
                "priceDrop",
                "priceIncrease",
                "updated",
                "reappeared",
                "removed"
              ],
              "enumTitles": [
                "Price drops",
                "Price increases",
                "Field changes",
                "Reappeared ads",
                "Removed ads"
              ]
            }
          },
          "minPriceChange": {
            "title": "Smallest price change (CAD)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "number",
            "description": "A price change smaller than this many dollars is not delivered; the price last delivered stays the baseline, so small changes add up."
          },
          "minPriceChangePercent": {
            "title": "Smallest price change (percent)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "A price change smaller than this share of the price last delivered is not delivered."
          },
          "trackFields": {
            "title": "Tracked fields",
            "type": "array",
            "description": "The fields whose change makes a Listing update. Default: price. Compared on the search rows the monitor reads (a value only the details show is compared when they are read).",
            "items": {
              "type": "string",
              "enum": [
                "price",
                "mileageKm",
                "title",
                "trim",
                "modelYear",
                "powerKw",
                "fuel",
                "transmission",
                "priceBadge",
                "imageCount"
              ],
              "enumTitles": [
                "Price",
                "Kilometres",
                "Title",
                "Trim",
                "Model year",
                "Power",
                "Fuel",
                "Transmission",
                "Price badge",
                "Number of images"
              ]
            }
          },
          "emitUnchanged": {
            "title": "Deliver unchanged ads too",
            "type": "boolean",
            "description": "Deliver known ads without a change as well (billed as Listing), each marked unchanged."
          },
          "markReposts": {
            "title": "Mark reposts",
            "type": "boolean",
            "description": "Mark a new ad whose vehicle the monitor delivered under another id (same seller, make, model, model year, kilometres and trim)."
          },
          "skipReposts": {
            "title": "Skip reposts",
            "type": "boolean",
            "description": "Leave such reposts out (free)."
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Rows are POSTed here in batches of 100 (JSON)."
          },
          "webhookSecret": {
            "title": "Webhook secret",
            "type": "string",
            "description": "Signs each batch (HMAC SHA-256, header X-Signature-Sha256)."
          },
          "webhookHeaders": {
            "title": "Webhook headers",
            "type": "object",
            "description": "Extra headers, such as {\"Authorization\": \"Bearer ...\"}."
          },
          "telegramBotToken": {
            "title": "Telegram bot token",
            "type": "string",
            "description": "The token BotFather gave your bot."
          },
          "telegramChatId": {
            "title": "Telegram chat id",
            "type": "string",
            "description": "Your chat id, or a channel name starting with @."
          },
          "slackWebhookUrl": {
            "title": "Slack webhook URL",
            "type": "string",
            "description": "An incoming webhook of your Slack workspace."
          },
          "discordWebhookUrl": {
            "title": "Discord webhook URL",
            "type": "string",
            "description": "A webhook of your Discord channel."
          },
          "whatsappAccessToken": {
            "title": "WhatsApp Cloud API token",
            "type": "string",
            "description": "Your WhatsApp Cloud API token."
          },
          "whatsappPhoneNumberId": {
            "title": "WhatsApp phone number id",
            "type": "string",
            "description": "The id of your WhatsApp Cloud API number."
          },
          "whatsappTo": {
            "title": "WhatsApp recipient",
            "type": "string",
            "description": "The number to message, international form without +."
          },
          "notificationLimit": {
            "title": "Listings per message",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "The most listings named in each chat message. Default 10."
          },
          "notifyOnlyChanges": {
            "title": "Notify only new and changed",
            "type": "boolean",
            "description": "With a monitor, leave unchanged ads out of the messages (default on)."
          },
          "failIfIncomplete": {
            "title": "Fail the run when something was not read",
            "type": "boolean",
            "description": "Mark the run failed when a search or ad link was not read completely (the rows stay delivered)."
          },
          "maxFailedRequestsPercent": {
            "title": "Fail the run above this share of failed reads (percent)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Mark the run failed when more than this share of its pages and ad reads failed (the rows stay delivered)."
          },
          "requestsPerSecond": {
            "title": "Requests per second",
            "minimum": 0.5,
            "maximum": 4,
            "type": "number",
            "description": "The pace of requests to AutoTrader.ca (default 3)."
          },
          "maxRequestRetries": {
            "title": "Retries per request",
            "minimum": 0,
            "maximum": 4,
            "type": "integer",
            "description": "How many times a page or ad read that failed is asked again (default 2; 0 sends each read once). A refusal by the site is asked again once, on the same address after a pause, when retries are left; a second refusal ends the reading of the run."
          },
          "maxConcurrency": {
            "title": "Requests in flight",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "How many requests to AutoTrader.ca run at once (default 2); the pace above still holds."
          },
          "cacheHours": {
            "title": "Answer identical runs from the cache (hours)",
            "minimum": 1,
            "maximum": 720,
            "type": "integer",
            "description": "When set, a run whose settings are all the same as an earlier run within this many hours is answered from the rows that run stored (up to 2,000 rows; billed as fresh rows of their kind, no results page; each row carries \"cached\": true and the moment it was read), without reading AutoTrader.ca. A run that reads everything it was asked stores its rows. Not with a monitor."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Leave it as it is: the run reads from its own address and uses Apify's datacenter proxy only when that address cannot reach the site. \"Use Apify proxy\" starts with the datacenter proxy; your own proxy links are used as given."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}