{
  "description": "Scrape Willhaben.at marketplace items, cars, real estate or jobs — by keyword, location, price and category filters, or by pasting URLs.",
  "properties": {
    "availableNow": {
      "default": false,
      "description": "(mode=searchRealEstate) Only listings available now.",
      "title": "Available immediately",
      "type": "boolean"
    },
    "bodyType": {
      "description": "(mode=searchCars)",
      "editor": "select",
      "enum": [
        "2",
        "4",
        "12",
        "5",
        "6",
        "3",
        "9",
        "10"
      ],
      "enumTitles": [
        "Convertible / roadster",
        "Small / compact car",
        "Minibus",
        "Estate / family van",
        "Saloon",
        "Microcar",
        "Sports car / coupé",
        "SUV / off-road"
      ],
      "title": "Body type",
      "type": "string"
    },
    "carCondition": {
      "description": "(mode=searchCars)",
      "editor": "select",
      "enum": [
        "20",
        "50",
        "10",
        "93",
        "91",
        "30",
        "40"
      ],
      "enumTitles": [
        "Used",
        "Year-old car",
        "New",
        "Classic / vintage",
        "Day registration",
        "Accident-damaged",
        "Demonstration car"
      ],
      "title": "Vehicle condition",
      "type": "string"
    },
    "carMake": {
      "description": "(mode=searchCars) Vehicle manufacturer.",
      "editor": "select",
      "enum": [
        "10004",
        "10012",
        "1000",
        "10031",
        "10025",
        "1002",
        "1003",
        "1734",
        "10042",
        "10066",
        "1004",
        "1005",
        "1069",
        "1006",
        "10034",
        "1007",
        "10017",
        "10001",
        "10057",
        "1008",
        "1012",
        "1009",
        "1010",
        "10018",
        "10026",
        "1011",
        "1013",
        "10037",
        "1014",
        "10061",
        "10019",
        "10043",
        "10032",
        "1015",
        "1016",
        "10044",
        "1017",
        "10071",
        "10062",
        "10067",
        "10039",
        "10030",
        "10016",
        "1018",
        "10041",
        "10065",
        "1019",
        "1020",
        "10035",
        "10009",
        "1021",
        "1022",
        "10027",
        "10052",
        "1023",
        "1024",
        "1059",
        "1025",
        "10005",
        "1026",
        "1027",
        "1028",
        "1029",
        "10048",
        "1030",
        "10014",
        "1031",
        "1032",
        "10045",
        "10003",
        "10028",
        "1033",
        "10055",
        "1035",
        "10020",
        "1036",
        "1037",
        "1038",
        "10013",
        "10058",
        "1039",
        "1040",
        "1041",
        "10054",
        "1042",
        "10069",
        "10047",
        "10053",
        "1043",
        "1045",
        "10029",
        "1047",
        "1048",
        "1049",
        "1051",
        "10063",
        "1052",
        "1053",
        "1054",
        "1056",
        "1057",
        "10033",
        "1058",
        "9999",
        "10050",
        "1060",
        "1061",
        "1073",
        "10002",
        "10008",
        "1062",
        "10023",
        "10015",
        "1064",
        "1065",
        "1066",
        "10051",
        "10070",
        "10024"
      ],
      "enumTitles": [
        "Abarth",
        "Aixam",
        "Alfa Romeo",
        "Alpina",
        "Alpine",
        "Aston Martin",
        "Audi",
        "Austin",
        "BAIC",
        "BAW",
        "Bentley",
        "BMW",
        "British Leyland",
        "Buick",
        "BYD",
        "Cadillac",
        "Casalini",
        "Caterham",
        "Chery",
        "Chevrolet",
        "Chevrolet / Daewoo",
        "Chrysler",
        "Citroën",
        "Corvette",
        "Cupra",
        "Dacia",
        "Daihatsu",
        "DFSK",
        "Dodge",
        "Dongfeng",
        "DS Automobiles",
        "Elaris",
        "Eli",
        "Ferrari",
        "Fiat",
        "Fisker",
        "Ford",
        "GAC",
        "Geco",
        "Geely",
        "Genesis",
        "GMC",
        "Graf Carello",
        "Honda",
        "Hongqi",
        "Hudson",
        "Hummer",
        "Hyundai",
        "Ineos",
        "Infiniti",
        "Isuzu",
        "IVECO",
        "JAC",
        "Jaecoo",
        "Jaguar",
        "Jeep",
        "KGM/SsangYong",
        "KIA",
        "KTM",
        "Lada",
        "Lamborghini",
        "Lancia",
        "Land Rover",
        "Leapmotor",
        "Lexus",
        "Ligier",
        "Lincoln",
        "Lotus",
        "LYNK & Co",
        "Mahindra",
        "MAN",
        "Maserati",
        "Matra",
        "Mazda",
        "McLaren",
        "Mercedes-Benz",
        "Mercury",
        "MG",
        "Microcar",
        "Microlino",
        "MINI",
        "Mitsubishi",
        "Morgan",
        "NIO",
        "Nissan",
        "NSU",
        "Oldsmobile",
        "Omoda",
        "Opel",
        "Peugeot",
        "Polestar",
        "Pontiac",
        "Porsche",
        "Puch",
        "Renault",
        "Riley",
        "Rolls-Royce",
        "Rover",
        "Saab",
        "Seat",
        "Skoda",
        "Skywell Automobile",
        "smart",
        "Sonstige",
        "Steyr",
        "Subaru",
        "Suzuki",
        "Talbot",
        "Tata",
        "Tesla",
        "Toyota",
        "Trabant",
        "Triumph",
        "Volvo",
        "VW",
        "Wiesmann",
        "XPENG",
        "Zeekr",
        "ZhiDou"
      ],
      "title": "Car make",
      "type": "string"
    },
    "carModel": {
      "description": "(mode=searchCars) Model name, e.g. '3er-Reihe' or 'Golf'. Requires Car make.",
      "editor": "textfield",
      "title": "Car model",
      "type": "string"
    },
    "color": {
      "description": "(mode=searchCars)",
      "editor": "select",
      "enum": [
        "1",
        "2",
        "4",
        "3",
        "7",
        "8",
        "6",
        "5",
        "11",
        "13",
        "14",
        "15",
        "17",
        "10",
        "9"
      ],
      "enumTitles": [
        "Beige",
        "Blue",
        "Brown",
        "Bronze",
        "Yellow",
        "Gold",
        "Grey",
        "Green",
        "Orange",
        "Red",
        "Black",
        "Silver",
        "Other",
        "Purple",
        "White"
      ],
      "title": "Exterior colour",
      "type": "string"
    },
    "driveType": {
      "description": "(mode=searchCars)",
      "editor": "select",
      "enum": [
        "2",
        "1",
        "3"
      ],
      "enumTitles": [
        "All-wheel drive",
        "Rear-wheel drive",
        "Front-wheel drive"
      ],
      "title": "Drive type",
      "type": "string"
    },
    "emitExpired": {
      "default": false,
      "description": "(incrementalMode) After a complete scan, also emit listings/jobs that disappeared since the last run.",
      "title": "Include expired records",
      "type": "boolean"
    },
    "emitUnchanged": {
      "default": false,
      "description": "(incrementalMode) Also return records whose tracked fields did not change.",
      "title": "Include unchanged records",
      "type": "boolean"
    },
    "employmentMode": {
      "description": "(mode=searchJobs)",
      "editor": "select",
      "enum": [
        "110",
        "113",
        "109",
        "11796"
      ],
      "enumTitles": [
        "Vollzeit (full-time)",
        "Teilzeit (part-time)",
        "Freiberuflich (freelance)",
        "Geringfügig (marginal)"
      ],
      "title": "Employment type",
      "type": "string"
    },
    "equipment": {
      "description": "(mode=searchRealEstate) e.g. lift, cellar, parking, built-in kitchen.",
      "editor": "select",
      "enum": [
        "24",
        "25",
        "26",
        "27",
        "4",
        "23",
        "250",
        "15",
        "28"
      ],
      "enumTitles": [
        "Storage room",
        "Barrier-free",
        "Carport",
        "Built-in kitchen",
        "Lift",
        "Garage",
        "Cellar",
        "Parking space",
        "Partially / fully furnished"
      ],
      "title": "Real-estate equipment",
      "type": "string"
    },
    "freeAreaType": {
      "description": "(mode=searchRealEstate) Balcony, terrace, garden, etc.",
      "editor": "select",
      "enum": [
        "20",
        "40",
        "60",
        "30",
        "10",
        "50"
      ],
      "enumTitles": [
        "Balcony",
        "Roof terrace",
        "Garden",
        "Loggia",
        "Terrace",
        "Winter garden"
      ],
      "title": "Outdoor area",
      "type": "string"
    },
    "fuelType": {
      "description": "(mode=searchCars)",
      "editor": "select",
      "enum": [
        "100001",
        "100003",
        "100004",
        "100011",
        "100013",
        "100022",
        "110000"
      ],
      "enumTitles": [
        "Petrol",
        "Diesel",
        "Electric",
        "Gas",
        "Hybrid petrol / electric",
        "Hybrid diesel / electric",
        "Hydrogen"
      ],
      "title": "Fuel type",
      "type": "string"
    },
    "includeDetails": {
      "default": false,
      "description": "Add the full description, seller/contact data and extra car or real-estate details from each listing/job page. Slower and more expensive.",
      "prefill": false,
      "title": "Fetch detail pages",
      "type": "boolean"
    },
    "includeRawAttributes": {
      "default": false,
      "description": "Add every source attribute as a rawAttributes list. Useful for category-specific analysis; increases output size.",
      "prefill": false,
      "title": "Include raw attributes",
      "type": "boolean"
    },
    "incrementalMode": {
      "default": false,
      "description": "Return only new/changed listings or jobs on recurring runs. The first run returns everything as NEW.",
      "title": "Incremental monitoring",
      "type": "boolean"
    },
    "jobCompanyType": {
      "description": "(mode=searchJobs)",
      "editor": "select",
      "enum": [
        "agency",
        "direct_employer"
      ],
      "enumTitles": [
        "Staffing agency",
        "Direct employer"
      ],
      "title": "Employer type",
      "type": "string"
    },
    "jobOperationArea": {
      "description": "(mode=searchJobs)",
      "editor": "select",
      "enum": [
        "12666",
        "12681",
        "12746",
        "12769",
        "17007",
        "12887",
        "12984",
        "13094",
        "13186",
        "13260",
        "13272",
        "13342",
        "13359",
        "13375",
        "13440",
        "12806",
        "13483"
      ],
      "enumTitles": [
        "Assistance / secretarial / administration",
        "Education / pedagogy / research",
        "Consulting / law",
        "Purchasing / logistics / transport",
        "Facility management / security / cleaning",
        "Finance / accounting / controlling",
        "Hospitality / tourism / leisure / helpers",
        "Crafts / skilled trades",
        "IT / EDP",
        "Management / executive",
        "Marketing / media / PR / graphics / culture",
        "Public service",
        "Human resources",
        "Care / social / health",
        "Production / manufacturing",
        "Technical professions / engineering / architecture",
        "Sales / retail"
      ],
      "title": "Job field",
      "type": "string"
    },
    "jobPosition": {
      "description": "(mode=searchJobs)",
      "editor": "select",
      "enum": [
        "13540",
        "13541",
        "13539",
        "13542",
        "13543",
        "13544",
        "28428"
      ],
      "enumTitles": [
        "Team lead",
        "Apprenticeship",
        "Management / executive",
        "Employee",
        "Internship",
        "Project management",
        "Traineeship"
      ],
      "title": "Job position",
      "type": "string"
    },
    "jobRegion": {
      "description": "(mode=searchJobs)",
      "editor": "select",
      "enum": [
        "13553",
        "13602",
        "13677",
        "13859",
        "14096",
        "13783",
        "14366",
        "14445",
        "14486",
        "13552",
        "14513",
        "14523"
      ],
      "enumTitles": [
        "Burgenland",
        "Kärnten",
        "Niederösterreich",
        "Oberösterreich",
        "Salzburg",
        "Steiermark",
        "Tirol",
        "Vorarlberg",
        "Wien",
        "Österreich",
        "Deutschland",
        "Schweiz"
      ],
      "title": "Job region",
      "type": "string"
    },
    "jobTimeLimit": {
      "description": "(mode=searchJobs)",
      "editor": "select",
      "enum": [
        "all",
        "last_24_hours",
        "last_72_hours",
        "last_week"
      ],
      "enumTitles": [
        "Any time",
        "Last 24 hours",
        "Last 72 hours",
        "Last week"
      ],
      "title": "Job posting age",
      "type": "string"
    },
    "livingAreaFrom": {
      "description": "(mode=searchRealEstate)",
      "maximum": 100000,
      "minimum": 0,
      "title": "Living area from (m²)",
      "type": "integer"
    },
    "livingAreaTo": {
      "description": "(mode=searchRealEstate)",
      "maximum": 100000,
      "minimum": 0,
      "title": "Living area to (m²)",
      "type": "integer"
    },
    "location": {
      "description": "e.g. 'Wien', 'Graz', '1050'. Resolved through Willhaben's location search. For jobs it is sent as the job location.",
      "editor": "textfield",
      "title": "City / district / postcode",
      "type": "string"
    },
    "maxItems": {
      "default": 20,
      "description": "Maximum listings or jobs to return.",
      "maximum": 50000,
      "minimum": 1,
      "prefill": 3,
      "title": "Max items",
      "type": "integer"
    },
    "mileageFrom": {
      "description": "(mode=searchCars) Minimum mileage.",
      "maximum": 2000000,
      "minimum": 0,
      "title": "Mileage from (km)",
      "type": "integer"
    },
    "mileageTo": {
      "description": "(mode=searchCars) Maximum mileage.",
      "maximum": 2000000,
      "minimum": 0,
      "title": "Mileage to (km)",
      "type": "integer"
    },
    "mode": {
      "default": "searchItems",
      "description": "Choose a marketplace section, cars, real estate, jobs, or paste Willhaben URLs.",
      "editor": "select",
      "enum": [
        "searchItems",
        "searchCars",
        "searchRealEstate",
        "searchJobs",
        "byUrls"
      ],
      "enumTitles": [
        "Marketplace items",
        "Cars & vehicles",
        "Real estate",
        "Jobs",
        "Paste URLs"
      ],
      "prefill": "searchItems",
      "title": "What to scrape",
      "type": "string"
    },
    "plotAreaFrom": {
      "description": "(mode=searchRealEstate)",
      "maximum": 10000000,
      "minimum": 0,
      "title": "Plot area from (m²)",
      "type": "integer"
    },
    "plotAreaTo": {
      "description": "(mode=searchRealEstate)",
      "maximum": 10000000,
      "minimum": 0,
      "title": "Plot area to (m²)",
      "type": "integer"
    },
    "powerFrom": {
      "description": "(mode=searchCars) Minimum engine power.",
      "maximum": 2000,
      "minimum": 0,
      "title": "Power from (kW)",
      "type": "integer"
    },
    "powerTo": {
      "description": "(mode=searchCars) Maximum engine power.",
      "maximum": 2000,
      "minimum": 0,
      "title": "Power to (kW)",
      "type": "integer"
    },
    "priceMax": {
      "description": "Maximum listing price in euros. Ignored for jobs.",
      "maximum": 10000000,
      "minimum": 0,
      "title": "Max price (EUR)",
      "type": "integer"
    },
    "priceMin": {
      "description": "Minimum listing price in euros. Ignored for jobs.",
      "maximum": 10000000,
      "minimum": 0,
      "title": "Min price (EUR)",
      "type": "integer"
    },
    "propertySubtype": {
      "description": "(mode=searchRealEstate) Optional subtype such as penthouse, detached house or building plot.",
      "editor": "select",
      "enum": [
        "110",
        "105",
        "111",
        "113",
        "100",
        "101",
        "102",
        "112",
        "3",
        "16",
        "27",
        "2",
        "9",
        "11",
        "15",
        "1",
        "22",
        "17",
        "19",
        "21",
        "118",
        "14",
        "119",
        "116",
        "117",
        "18"
      ],
      "enumTitles": [
        "Attic apartment",
        "Ground-floor apartment",
        "Garconnière",
        "Co-operative apartment",
        "Loft / studio",
        "Maisonette",
        "Penthouse",
        "Roof-space conversion",
        "Apartment",
        "Room / shared flat",
        "Other apartment",
        "Alpine hut",
        "Farmhouse",
        "Bungalow",
        "Semi-detached house",
        "Detached house",
        "Garden house",
        "Co-operative house",
        "Country house",
        "Building plot",
        "Commercial plot",
        "Plot / land",
        "Industrial plot",
        "Allotment garden",
        "Agricultural / forestry land",
        "Other plot"
      ],
      "title": "Property subtype",
      "type": "string"
    },
    "query": {
      "default": "",
      "description": "Free-text keyword, e.g. 'sofa', 'iPhone', 'BMW', 'Wohnung'. Leave empty to browse the category.",
      "editor": "textfield",
      "prefill": "sofa",
      "title": "Search keyword",
      "type": "string"
    },
    "radiusKm": {
      "description": "(mode=searchJobs) Radius around the location, 1-100 km.",
      "maximum": 100,
      "minimum": 1,
      "title": "Job radius (km)",
      "type": "integer"
    },
    "realEstateCategory": {
      "default": "rentApartment",
      "description": "(mode=searchRealEstate) Which property market to search.",
      "editor": "select",
      "enum": [
        "rentApartment",
        "buyApartment",
        "rentHouse",
        "buyHouse",
        "land",
        "newBuild",
        "commercialRent",
        "commercialBuy",
        "holidayRent",
        "holidayBuy",
        "otherRealEstate"
      ],
      "enumTitles": [
        "Apartment for rent",
        "Apartment for sale",
        "House for rent",
        "House for sale",
        "Land / plot",
        "New-build project",
        "Commercial property for rent",
        "Commercial property for sale",
        "Holiday property for rent",
        "Holiday property for sale",
        "Other real estate"
      ],
      "title": "Real-estate category",
      "type": "string"
    },
    "rooms": {
      "description": "(mode=searchRealEstate) Room-count bucket.",
      "editor": "select",
      "enum": [
        "1X1",
        "2X2",
        "3X3",
        "4X4",
        "5X5",
        "6X9",
        "10X",
        "0X0"
      ],
      "enumTitles": [
        "1 room",
        "2 rooms",
        "3 rooms",
        "4 rooms",
        "5 rooms",
        "6-9 rooms",
        "10+ rooms",
        "Not specified"
      ],
      "title": "Rooms",
      "type": "string"
    },
    "sellerType": {
      "description": "Filter by private seller or commercial dealer. Applies to marketplace items and cars; ignored for real estate and jobs.",
      "editor": "select",
      "enum": [
        "private",
        "dealer"
      ],
      "enumTitles": [
        "Private seller",
        "Dealer / business"
      ],
      "title": "Seller type",
      "type": "string"
    },
    "sortBy": {
      "default": "relevance",
      "description": "Result ordering. Jobs support relevance and newest; other orders are mapped to newest for jobs.",
      "editor": "select",
      "enum": [
        "relevance",
        "newest",
        "distance",
        "priceAsc",
        "priceDesc"
      ],
      "enumTitles": [
        "Relevance",
        "Newest first",
        "Distance (nearest first)",
        "Price: low to high",
        "Price: high to low"
      ],
      "prefill": "relevance",
      "title": "Sort order",
      "type": "string"
    },
    "startUrls": {
      "description": "(mode=byUrls) Paste search, category, single listing, job search or single job URLs. Filters already in the URL are preserved.",
      "editor": "requestListSources",
      "items": {
        "properties": {
          "url": {
            "description": "Paste a Willhaben search, category, listing, job search or job URL.",
            "title": "Willhaben URL",
            "type": "string"
          }
        },
        "type": "object"
      },
      "title": "Willhaben URLs",
      "type": "array"
    },
    "state": {
      "description": "Restrict listings to one Austrian federal state (or other countries). Location overrides this when both are set.",
      "editor": "select",
      "enum": [
        "Burgenland",
        "Kärnten",
        "Niederösterreich",
        "Oberösterreich",
        "Salzburg",
        "Steiermark",
        "Tirol",
        "Vorarlberg",
        "Wien",
        "andere Länder"
      ],
      "enumTitles": [
        "Burgenland",
        "Kärnten",
        "Niederösterreich",
        "Oberösterreich",
        "Salzburg",
        "Steiermark",
        "Tirol",
        "Vorarlberg",
        "Wien",
        "andere Länder"
      ],
      "title": "Federal state",
      "type": "string"
    },
    "stateKey": {
      "description": "(incrementalMode) Stable name for this search so later runs compare against the right state. Leave empty to derive it from the filters.",
      "editor": "textfield",
      "title": "Monitoring campaign name",
      "type": "string"
    },
    "transmission": {
      "description": "(mode=searchCars)",
      "editor": "select",
      "enum": [
        "180004",
        "180001"
      ],
      "enumTitles": [
        "Automatic",
        "Manual"
      ],
      "title": "Transmission",
      "type": "string"
    },
    "vehicleCategory": {
      "default": "cars",
      "description": "(mode=searchCars) Which vehicle section to search.",
      "editor": "select",
      "enum": [
        "cars",
        "motorcycles",
        "caravans",
        "commercial"
      ],
      "enumTitles": [
        "Cars & used cars",
        "Motorcycles & quads",
        "Caravans & motorhomes",
        "Commercial vehicles & pickups"
      ],
      "title": "Vehicle category",
      "type": "string"
    },
    "yearFrom": {
      "description": "(mode=searchCars) Earliest registration year.",
      "maximum": 2100,
      "minimum": 1900,
      "title": "First registration from",
      "type": "integer"
    },
    "yearTo": {
      "description": "(mode=searchCars) Latest registration year.",
      "maximum": 2100,
      "minimum": 1900,
      "title": "First registration to",
      "type": "integer"
    }
  },
  "required": [
    "mode"
  ],
  "schemaVersion": 1,
  "title": "Willhaben Scraper Input",
  "type": "object"
}
