{
  "openapi": "3.0.1",
  "info": {
    "title": "AutoTrader UK Scraper - Cars, Prices, Specs & Dealers",
    "description": "Pull structured vehicle listings from autotrader.co.uk at scale. Search by filters or use AutoTrader URLs. Returns price, make, model, year, mileage, full specs, finance, vehicle history check, photo gallery, and dealer contact details.",
    "version": "1.2",
    "x-build-id": "5lhwDBTItvnsw00fF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~autotrader/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-autotrader",
        "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/abotapi~autotrader/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-autotrader",
        "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/abotapi~autotrader/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-autotrader",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "search = pick a vehicle type, postcode and filters. url = paste AutoTrader search or advert URLs.",
            "default": "search"
          },
          "channel": {
            "title": "Vehicle type",
            "enum": [
              "cars",
              "vans",
              "bikes",
              "motorhomes",
              "caravans",
              "trucks",
              "farm",
              "plant"
            ],
            "type": "string",
            "description": "Which AutoTrader marketplace to search.",
            "default": "cars"
          },
          "postcode": {
            "title": "Postcode",
            "type": "string",
            "description": "UK postcode used as the search centre and to compute distance to each seller. Required by the site.",
            "default": "SW1A 1AA"
          },
          "make": {
            "title": "Make",
            "type": "string",
            "description": "Exact AutoTrader make, e.g. BMW, Ford, Volkswagen. Leave empty for all makes."
          },
          "model": {
            "title": "Model",
            "type": "string",
            "description": "Exact AutoTrader model, e.g. '3 Series'. Only applies when a make is set."
          },
          "minPrice": {
            "title": "Min price (£)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum total price. Leave empty for no minimum."
          },
          "maxPrice": {
            "title": "Max price (£)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum total price. Leave empty for no maximum."
          },
          "minYear": {
            "title": "Min year",
            "minimum": 1900,
            "type": "integer",
            "description": "Earliest registration/manufacture year. Leave empty for any."
          },
          "maxYear": {
            "title": "Max year",
            "minimum": 1900,
            "type": "integer",
            "description": "Latest registration/manufacture year. Leave empty for any."
          },
          "minMileage": {
            "title": "Min mileage",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum mileage. Leave empty for any."
          },
          "maxMileage": {
            "title": "Max mileage",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum mileage. Leave empty for any."
          },
          "fuelType": {
            "title": "Fuel type",
            "enum": [
              "",
              "Petrol",
              "Diesel",
              "Electric",
              "Hybrid",
              "Petrol Plug-in Hybrid",
              "Diesel Plug-in Hybrid",
              "Petrol Hybrid",
              "Diesel Hybrid",
              "Bi Fuel",
              "Hydrogen"
            ],
            "type": "string",
            "description": "Filter by fuel type. Leave empty for any.",
            "default": ""
          },
          "bodyType": {
            "title": "Body type",
            "enum": [
              "",
              "Hatchback",
              "Saloon",
              "Estate",
              "SUV",
              "Coupe",
              "Convertible",
              "MPV",
              "Pickup"
            ],
            "type": "string",
            "description": "Filter by body type (car values shown; other vehicle types accept their own).",
            "default": ""
          },
          "transmission": {
            "title": "Transmission",
            "enum": [
              "",
              "Automatic",
              "Manual"
            ],
            "type": "string",
            "description": "Filter by gearbox. Leave empty for any.",
            "default": ""
          },
          "colour": {
            "title": "Colour",
            "type": "string",
            "description": "Filter by exterior colour, e.g. Black, Blue, White. Leave empty for any."
          },
          "drivetrain": {
            "title": "Drivetrain",
            "enum": [
              "",
              "Front Wheel Drive",
              "Rear Wheel Drive",
              "Four Wheel Drive"
            ],
            "type": "string",
            "description": "Filter by drivetrain. Leave empty for any.",
            "default": ""
          },
          "sellerType": {
            "title": "Seller type",
            "enum": [
              "any",
              "trade",
              "private"
            ],
            "type": "string",
            "description": "Trade (dealer) or private seller.",
            "default": "any"
          },
          "minEngineSize": {
            "title": "Min engine size (litres)",
            "type": "string",
            "description": "Minimum engine size in litres, e.g. 1.6. Leave empty for any."
          },
          "maxEngineSize": {
            "title": "Max engine size (litres)",
            "type": "string",
            "description": "Maximum engine size in litres, e.g. 3.0. Leave empty for any."
          },
          "doors": {
            "title": "Doors",
            "minimum": 0,
            "type": "integer",
            "description": "Exact number of doors. Leave empty for any."
          },
          "seats": {
            "title": "Seats",
            "minimum": 1,
            "type": "integer",
            "description": "Exact number of seats. Leave empty for any."
          },
          "radius": {
            "title": "Search radius (miles)",
            "minimum": 1,
            "type": "integer",
            "description": "Limit results to this many miles from the postcode. Leave empty for national."
          },
          "writeoffStatus": {
            "title": "Write-off status",
            "enum": [
              "include",
              "exclude",
              "only"
            ],
            "type": "string",
            "description": "Include all, exclude written-off vehicles, or show only written-off vehicles.",
            "default": "include"
          },
          "priceSearchType": {
            "title": "Price basis",
            "enum": [
              "total",
              "monthly"
            ],
            "type": "string",
            "description": "Whether the price filters apply to total price or monthly finance payment.",
            "default": "total"
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "relevance",
              "price_asc",
              "price_desc",
              "distance",
              "mileage",
              "year_dsc",
              "year_asc",
              "most_recent"
            ],
            "type": "string",
            "description": "Result ordering. Note: featured/sponsored adverts may appear first regardless of sort.",
            "default": "relevance"
          },
          "urls": {
            "title": "URLs",
            "type": "array",
            "description": "Paste AutoTrader search URLs (e.g. https://www.autotrader.co.uk/car-search?make=BMW&postcode=SW1A1AA) or advert URLs (e.g. https://www.autotrader.co.uk/car-details/202601038902613). Multi-URL supported.",
            "items": {
              "type": "string"
            }
          },
          "fetchDetails": {
            "title": "Fetch full advert details",
            "type": "boolean",
            "description": "ON: each listing gets full description, spec breakdown, 10-point history check, service history, finance details, full gallery with image tags and complete dealer contact (one extra request per listing). OFF: faster, listing-grid fields only.",
            "default": true
          },
          "includeFinanceGuides": {
            "title": "Include finance guide text",
            "type": "boolean",
            "description": "OFF (default): keep only advert-specific finance (monthly price, FCA name/number, lender type). ON: also include AutoTrader's static PCP/HP/CS explainer text, which is identical for every advert and large. Only applies when 'Fetch full advert details' is ON.",
            "default": false
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many result pages (about 20 listings each) to walk per search. AutoTrader caps a single search at 100 pages (about 2,000 listings). Subdivide with filters to go beyond that.",
            "default": 1
          },
          "maxListings": {
            "title": "Max listings (0 = unlimited)",
            "minimum": 0,
            "type": "integer",
            "description": "Overall cap across all searches/URLs. 0 means no cap (bounded by max pages).",
            "default": 0
          },
          "proxy": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy. Datacenter (the default) is enough; residential is used automatically only if datacenter exits get rejected.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxResidentialRequests": {
            "title": "Residential usage cap",
            "minimum": 0,
            "type": "integer",
            "description": "Budget control: the most residential exits the run may use before falling back to the backup pool. 0 disables residential entirely (datacenter + backup only). Residential is only used if datacenter gets rejected.",
            "default": 400
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, Integrations, then select it here. Notion gets a page per vehicle; other connectors get a best-effort write. Each item is written as a condensed, human-readable summary (a title plus key fields), not the full JSON. Leave empty to skip. Supported: Notion, Linear, Airtable, Apify."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL or id of the Notion page under which vehicle pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on vehicles written to each connector per run. Does not affect the dataset.",
            "default": 50
          },
          "resumeFromRunId": {
            "title": "Resume from a previous run",
            "type": "string",
            "description": "Paste a previous run ID or dataset ID to continue a large crawl of listings without returning or charging for listings already collected there. Use this after an interrupted run, or when continuing a listing pull in another run. For recurring monitoring of the same search, use Incremental mode below instead."
          },
          "incrementalMode": {
            "title": "Incremental changes for scheduled runs",
            "type": "boolean",
            "description": "Turn this on for recurring monitoring of the same search. The first run returns all matching listings as NEW. Later runs normally return only NEW, UPDATED, and REAPPEARED listings. Turn on \"Emit unchanged\" or \"Emit expired\" only when you also want those listings returned (and billed). State is kept separately for each mode/filter combination; use State key when you want to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above.",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional, incremental mode only)",
            "type": "string",
            "description": "Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the mode/filters, so different searches never mix state with each other."
          },
          "emitUnchanged": {
            "title": "Emit unchanged listings (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return listings that have not changed since the last run, marked UNCHANGED. This returns (and bills) extra rows you already have, so leave it off unless you specifically want the full snapshot every run.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired listings (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return listings that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, not when Max listings/Max pages capped it, a page was blocked, or Resume was used. This returns (and bills) extra synthetic rows, so leave it off unless you need expiry tracking.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}