{
  "openapi": "3.0.1",
  "info": {
    "title": "AutoTrader South Africa Cars Scraper: Price, Mileage & Dealers",
    "description": "Extract used and new car listings from AutoTrader.co.za, South Africa's largest car marketplace, with real price, year, and mileage filters matched to the site's own filter panel. Get dealer details, exact coordinates, ratings, and full photo galleries as JSON or CSV. From $0.66 per 1,000 listings.",
    "version": "0.2",
    "x-build-id": "8n4rf5dpiBmBz34mD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~autotrader-za-cars-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-autotrader-za-cars-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/getascraper~autotrader-za-cars-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-autotrader-za-cars-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/getascraper~autotrader-za-cars-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-autotrader-za-cars-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": "Custom Start URLs (optional)",
            "type": "array",
            "description": "Paste one or more AutoTrader.co.za car search links directly, built however you like on the site itself. When set, this replaces Make/Model and the filters below. Leave empty to build the search from those fields instead.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "make": {
            "title": "Make (optional)",
            "type": "string",
            "description": "Car brand, e.g. \"Toyota\", \"Volkswagen\", \"Land Rover\". Matches AutoTrader's own make filter, applied as part of the search URL. Leave blank to search all makes.",
            "default": ""
          },
          "model": {
            "title": "Model (optional)",
            "type": "string",
            "description": "Car model, e.g. \"Hilux\", \"Polo\", \"Range Rover Evoque\". Only used together with Make. Leave blank to search all models of the chosen make.",
            "default": ""
          },
          "priceFrom": {
            "title": "Price From (ZAR)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum asking price in South African Rand."
          },
          "priceTo": {
            "title": "Price To (ZAR)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum asking price in South African Rand."
          },
          "yearFrom": {
            "title": "Year From",
            "minimum": 1980,
            "maximum": 2100,
            "type": "integer",
            "description": "Earliest model year."
          },
          "yearTo": {
            "title": "Year To",
            "minimum": 1980,
            "maximum": 2100,
            "type": "integer",
            "description": "Latest model year."
          },
          "mileageFromKm": {
            "title": "Mileage From (km)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum odometer reading in kilometers."
          },
          "mileageToKm": {
            "title": "Mileage To (km)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum odometer reading in kilometers."
          },
          "sortOrder": {
            "title": "Sort Order",
            "enum": [
              "",
              "PriceLow",
              "PriceHigh",
              "Newest",
              "MileageLow",
              "MileageHigh"
            ],
            "type": "string",
            "description": "How results are ordered. Default follows AutoTrader's own default relevance order.",
            "default": ""
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Optional proxy settings. AutoTrader.co.za works with a direct connection by default.",
            "default": {
              "useApifyProxy": false
            }
          },
          "maxItems": {
            "title": "Maximum Listings",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of unique car listings to return.",
            "default": 25
          },
          "maxPages": {
            "title": "Maximum Search Pages",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum number of search result pages to visit.",
            "default": 5
          },
          "monitorMode": {
            "title": "Monitor mode",
            "enum": [
              "all",
              "newOnly",
              "monitor"
            ],
            "type": "string",
            "description": "All listings returns every match (the default one-off scrape). New listings only returns listings not seen in earlier runs that share the same monitor name. Monitor also reports price drops and price increases on listings seen before. Schedule the Actor with a monitoring mode to track a filtered slice of the AutoTrader.co.za market over time, which competing AutoTrader South Africa scrapers do not offer as a built-in mode.",
            "default": "all"
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "A label for this saved search, used only in the monitoring modes. Runs sharing a name share the same memory of past listings, so keep one name per filter set (for example 'hilux-under-400k'). Defaults to 'default'.",
            "default": ""
          },
          "minPriceDropZar": {
            "title": "Minimum price drop to report (ZAR)",
            "minimum": 0,
            "type": "integer",
            "description": "In Monitor mode, only report a price drop when the price fell by at least this many Rand. Leave at 0 to report every price change. Price increases and new listings are always reported.",
            "default": 0
          },
          "reportRemoved": {
            "title": "Report removed listings",
            "type": "boolean",
            "description": "In Monitor mode, also emit listings that were seen before but are no longer in the results, marked as removed. Only reliable when the run covers every matching listing (set Maximum Listings and Maximum Search Pages high enough to reach the end of the results).",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}