{
  "data": {
    "id": "10AHfQXOlb4fyOst2",
    "actId": "sSrZYqOzOQO2bTYr4",
    "userId": "zq8lKbpLzTjGDayPC",
    "startedAt": "2026-10-28T08:01:50.045Z",
    "finishedAt": "2026-10-28T08:01:53.638Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 3466,
      "runTimeSecs": 3.466,
      "computeUnits": 0.003851111111111111,
      "imageSizeBytes": 318772224
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "GK9YjZRyQZVzOdoH5",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Willhaben Scraper Input\",\n  \"description\": \"Scrape Willhaben.at marketplace items, cars, real estate or jobs — by keyword, location, price and category filters, or by pasting URLs.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"What to scrape\",\n      \"type\": \"string\",\n      \"description\": \"Choose a marketplace section, cars, real estate, jobs, or paste Willhaben URLs.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"searchItems\",\n        \"searchCars\",\n        \"searchRealEstate\",\n        \"searchJobs\",\n        \"byUrls\"\n      ],\n      \"enumTitles\": [\n        \"Marketplace items\",\n        \"Cars & vehicles\",\n        \"Real estate\",\n        \"Jobs\",\n        \"Paste URLs\"\n      ],\n      \"default\": \"searchItems\",\n      \"prefill\": \"searchItems\"\n    },\n    \"query\": {\n      \"title\": \"Search keyword\",\n      \"type\": \"string\",\n      \"description\": \"Free-text keyword, e.g. 'sofa', 'iPhone', 'BMW', 'Wohnung'. Leave empty to browse the category.\",\n      \"editor\": \"textfield\",\n      \"default\": \"\",\n      \"prefill\": \"sofa\"\n    },\n    \"startUrls\": {\n      \"title\": \"Willhaben URLs\",\n      \"type\": \"array\",\n      \"description\": \"(mode=byUrls) Paste search, category, single listing, job search or single job URLs. Filters already in the URL are preserved.\",\n      \"editor\": \"requestListSources\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"url\": {\n            \"type\": \"string\",\n            \"title\": \"Willhaben URL\",\n            \"description\": \"Paste a Willhaben search, category, listing, job search or job URL.\"\n          }\n        }\n      }\n    },\n    \"state\": {\n      \"title\": \"Federal state\",\n      \"type\": \"string\",\n      \"description\": \"Restrict listings to one Austrian federal state (or other countries). Location overrides this when both are set.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"Burgenland\",\n        \"Kärnten\",\n        \"Niederösterreich\",\n        \"Oberösterreich\",\n        \"Salzburg\",\n        \"Steiermark\",\n        \"Tirol\",\n        \"Vorarlberg\",\n        \"Wien\",\n        \"andere Länder\"\n      ],\n      \"enumTitles\": [\n        \"Burgenland\",\n        \"Kärnten\",\n        \"Niederösterreich\",\n        \"Oberösterreich\",\n        \"Salzburg\",\n        \"Steiermark\",\n        \"Tirol\",\n        \"Vorarlberg\",\n        \"Wien\",\n        \"andere Länder\"\n      ]\n    },\n    \"location\": {\n      \"title\": \"City / district / postcode\",\n      \"type\": \"string\",\n      \"description\": \"e.g. 'Wien', 'Graz', '1050'. Resolved through Willhaben's location search. For jobs it is sent as the job location.\",\n      \"editor\": \"textfield\"\n    },\n    \"radiusKm\": {\n      \"title\": \"Job radius (km)\",\n      \"type\": \"integer\",\n      \"description\": \"(mode=searchJobs) Radius around the location, 1-100 km.\",\n      \"minimum\": 1,\n      \"maximum\": 100\n    },\n    \"sortBy\": {\n      \"title\": \"Sort order\",\n      \"type\": \"string\",\n      \"description\": \"Result ordering. Jobs support relevance and newest; other orders are mapped to newest for jobs.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"relevance\",\n        \"newest\",\n        \"distance\",\n        \"priceAsc\",\n        \"priceDesc\"\n      ],\n      \"enumTitles\": [\n        \"Relevance\",\n        \"Newest first\",\n        \"Distance (nearest first)\",\n        \"Price: low to high\",\n        \"Price: high to low\"\n      ],\n      \"default\": \"relevance\",\n      \"prefill\": \"relevance\"\n    },\n    \"priceMin\": {\n      \"title\": \"Min price (EUR)\",\n      \"type\": \"integer\",\n      \"description\": \"Minimum listing price in euros. Ignored for jobs.\",\n      \"minimum\": 0,\n      \"maximum\": 10000000\n    },\n    \"priceMax\": {\n      \"title\": \"Max price (EUR)\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum listing price in euros. Ignored for jobs.\",\n      \"minimum\": 0,\n      \"maximum\": 10000000\n    },\n    \"maxItems\": {\n      \"title\": \"Max items\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum listings or jobs to return.\",\n      \"minimum\": 1,\n      \"maximum\": 50000,\n      \"default\": 20,\n      \"prefill\": 3\n    },\n    \"includeDetails\": {\n      \"title\": \"Fetch detail pages\",\n      \"type\": \"boolean\",\n      \"description\": \"Add the full description, seller/contact data and extra car or real-estate details from each listing/job page. Slower and more expensive.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeRawAttributes\": {\n      \"title\": \"Include raw attributes\",\n      \"type\": \"boolean\",\n      \"description\": \"Add every source attribute as a rawAttributes list. Useful for category-specific analysis; increases output size.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"sellerType\": {\n      \"title\": \"Seller type\",\n      \"type\": \"string\",\n      \"description\": \"Filter by private seller or commercial dealer. Applies to marketplace items and cars; ignored for real estate and jobs.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"private\",\n        \"dealer\"\n      ],\n      \"enumTitles\": [\n        \"Private seller\",\n        \"Dealer / business\"\n      ]\n    },\n    \"vehicleCategory\": {\n      \"title\": \"Vehicle category\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchCars) Which vehicle section to search.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"cars\",\n        \"motorcycles\",\n        \"caravans\",\n        \"commercial\"\n      ],\n      \"enumTitles\": [\n        \"Cars & used cars\",\n        \"Motorcycles & quads\",\n        \"Caravans & motorhomes\",\n        \"Commercial vehicles & pickups\"\n      ],\n      \"default\": \"cars\"\n    },\n    \"carMake\": {\n      \"title\": \"Car make\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchCars) Vehicle manufacturer.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"10004\",\n        \"10012\",\n        \"1000\",\n        \"10031\",\n        \"10025\",\n        \"1002\",\n        \"1003\",\n        \"1734\",\n        \"10042\",\n        \"10066\",\n        \"1004\",\n        \"1005\",\n        \"1069\",\n        \"1006\",\n        \"10034\",\n        \"1007\",\n        \"10017\",\n        \"10001\",\n        \"10057\",\n        \"1008\",\n        \"1012\",\n        \"1009\",\n        \"1010\",\n        \"10018\",\n        \"10026\",\n        \"1011\",\n        \"1013\",\n        \"10037\",\n        \"1014\",\n        \"10061\",\n        \"10019\",\n        \"10043\",\n        \"10032\",\n        \"1015\",\n        \"1016\",\n        \"10044\",\n        \"1017\",\n        \"10071\",\n        \"10062\",\n        \"10067\",\n        \"10039\",\n        \"10030\",\n        \"10016\",\n        \"1018\",\n        \"10041\",\n        \"10065\",\n        \"1019\",\n        \"1020\",\n        \"10035\",\n        \"10009\",\n        \"1021\",\n        \"1022\",\n        \"10027\",\n        \"10052\",\n        \"1023\",\n        \"1024\",\n        \"1059\",\n        \"1025\",\n        \"10005\",\n        \"1026\",\n        \"1027\",\n        \"1028\",\n        \"1029\",\n        \"10048\",\n        \"1030\",\n        \"10014\",\n        \"1031\",\n        \"1032\",\n        \"10045\",\n        \"10003\",\n        \"10028\",\n        \"1033\",\n        \"10055\",\n        \"1035\",\n        \"10020\",\n        \"1036\",\n        \"1037\",\n        \"1038\",\n        \"10013\",\n        \"10058\",\n        \"1039\",\n        \"1040\",\n        \"1041\",\n        \"10054\",\n        \"1042\",\n        \"10069\",\n        \"10047\",\n        \"10053\",\n        \"1043\",\n        \"1045\",\n        \"10029\",\n        \"1047\",\n        \"1048\",\n        \"1049\",\n        \"1051\",\n        \"10063\",\n        \"1052\",\n        \"1053\",\n        \"1054\",\n        \"1056\",\n        \"1057\",\n        \"10033\",\n        \"1058\",\n        \"9999\",\n        \"10050\",\n        \"1060\",\n        \"1061\",\n        \"1073\",\n        \"10002\",\n        \"10008\",\n        \"1062\",\n        \"10023\",\n        \"10015\",\n        \"1064\",\n        \"1065\",\n        \"1066\",\n        \"10051\",\n        \"10070\",\n        \"10024\"\n      ],\n      \"enumTitles\": [\n        \"Abarth\",\n        \"Aixam\",\n        \"Alfa Romeo\",\n        \"Alpina\",\n        \"Alpine\",\n        \"Aston Martin\",\n        \"Audi\",\n        \"Austin\",\n        \"BAIC\",\n        \"BAW\",\n        \"Bentley\",\n        \"BMW\",\n        \"British Leyland\",\n        \"Buick\",\n        \"BYD\",\n        \"Cadillac\",\n        \"Casalini\",\n        \"Caterham\",\n        \"Chery\",\n        \"Chevrolet\",\n        \"Chevrolet / Daewoo\",\n        \"Chrysler\",\n        \"Citroën\",\n        \"Corvette\",\n        \"Cupra\",\n        \"Dacia\",\n        \"Daihatsu\",\n        \"DFSK\",\n        \"Dodge\",\n        \"Dongfeng\",\n        \"DS Automobiles\",\n        \"Elaris\",\n        \"Eli\",\n        \"Ferrari\",\n        \"Fiat\",\n        \"Fisker\",\n        \"Ford\",\n        \"GAC\",\n        \"Geco\",\n        \"Geely\",\n        \"Genesis\",\n        \"GMC\",\n        \"Graf Carello\",\n        \"Honda\",\n        \"Hongqi\",\n        \"Hudson\",\n        \"Hummer\",\n        \"Hyundai\",\n        \"Ineos\",\n        \"Infiniti\",\n        \"Isuzu\",\n        \"IVECO\",\n        \"JAC\",\n        \"Jaecoo\",\n        \"Jaguar\",\n        \"Jeep\",\n        \"KGM/SsangYong\",\n        \"KIA\",\n        \"KTM\",\n        \"Lada\",\n        \"Lamborghini\",\n        \"Lancia\",\n        \"Land Rover\",\n        \"Leapmotor\",\n        \"Lexus\",\n        \"Ligier\",\n        \"Lincoln\",\n        \"Lotus\",\n        \"LYNK & Co\",\n        \"Mahindra\",\n        \"MAN\",\n        \"Maserati\",\n        \"Matra\",\n        \"Mazda\",\n        \"McLaren\",\n        \"Mercedes-Benz\",\n        \"Mercury\",\n        \"MG\",\n        \"Microcar\",\n        \"Microlino\",\n        \"MINI\",\n        \"Mitsubishi\",\n        \"Morgan\",\n        \"NIO\",\n        \"Nissan\",\n        \"NSU\",\n        \"Oldsmobile\",\n        \"Omoda\",\n        \"Opel\",\n        \"Peugeot\",\n        \"Polestar\",\n        \"Pontiac\",\n        \"Porsche\",\n        \"Puch\",\n        \"Renault\",\n        \"Riley\",\n        \"Rolls-Royce\",\n        \"Rover\",\n        \"Saab\",\n        \"Seat\",\n        \"Skoda\",\n        \"Skywell Automobile\",\n        \"smart\",\n        \"Sonstige\",\n        \"Steyr\",\n        \"Subaru\",\n        \"Suzuki\",\n        \"Talbot\",\n        \"Tata\",\n        \"Tesla\",\n        \"Toyota\",\n        \"Trabant\",\n        \"Triumph\",\n        \"Volvo\",\n        \"VW\",\n        \"Wiesmann\",\n        \"XPENG\",\n        \"Zeekr\",\n        \"ZhiDou\"\n      ]\n    },\n    \"carModel\": {\n      \"title\": \"Car model\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchCars) Model name, e.g. '3er-Reihe' or 'Golf'. Requires Car make.\",\n      \"editor\": \"textfield\"\n    },\n    \"yearFrom\": {\n      \"title\": \"First registration from\",\n      \"type\": \"integer\",\n      \"description\": \"(mode=searchCars) Earliest registration year.\",\n      \"minimum\": 1900,\n      \"maximum\": 2100\n    },\n    \"yearTo\": {\n      \"title\": \"First registration to\",\n      \"type\": \"integer\",\n      \"description\": \"(mode=searchCars) Latest registration year.\",\n      \"minimum\": 1900,\n      \"maximum\": 2100\n    },\n    \"mileageFrom\": {\n      \"title\": \"Mileage from (km)\",\n      \"type\": \"integer\",\n      \"description\": \"(mode=searchCars) Minimum mileage.\",\n      \"minimum\": 0,\n      \"maximum\": 2000000\n    },\n    \"mileageTo\": {\n      \"title\": \"Mileage to (km)\",\n      \"type\": \"integer\",\n      \"description\": \"(mode=searchCars) Maximum mileage.\",\n      \"minimum\": 0,\n      \"maximum\": 2000000\n    },\n    \"fuelType\": {\n      \"title\": \"Fuel type\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchCars)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"100001\",\n        \"100003\",\n        \"100004\",\n        \"100011\",\n        \"100013\",\n        \"100022\",\n        \"110000\"\n      ],\n      \"enumTitles\": [\n        \"Petrol\",\n        \"Diesel\",\n        \"Electric\",\n        \"Gas\",\n        \"Hybrid petrol / electric\",\n        \"Hybrid diesel / electric\",\n        \"Hydrogen\"\n      ]\n    },\n    \"transmission\": {\n      \"title\": \"Transmission\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchCars)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"180004\",\n        \"180001\"\n      ],\n      \"enumTitles\": [\n        \"Automatic\",\n        \"Manual\"\n      ]\n    },\n    \"bodyType\": {\n      \"title\": \"Body type\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchCars)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"2\",\n        \"4\",\n        \"12\",\n        \"5\",\n        \"6\",\n        \"3\",\n        \"9\",\n        \"10\"\n      ],\n      \"enumTitles\": [\n        \"Convertible / roadster\",\n        \"Small / compact car\",\n        \"Minibus\",\n        \"Estate / family van\",\n        \"Saloon\",\n        \"Microcar\",\n        \"Sports car / coupé\",\n        \"SUV / off-road\"\n      ]\n    },\n    \"carCondition\": {\n      \"title\": \"Vehicle condition\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchCars)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"20\",\n        \"50\",\n        \"10\",\n        \"93\",\n        \"91\",\n        \"30\",\n        \"40\"\n      ],\n      \"enumTitles\": [\n        \"Used\",\n        \"Year-old car\",\n        \"New\",\n        \"Classic / vintage\",\n        \"Day registration\",\n        \"Accident-damaged\",\n        \"Demonstration car\"\n      ]\n    },\n    \"driveType\": {\n      \"title\": \"Drive type\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchCars)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"2\",\n        \"1\",\n        \"3\"\n      ],\n      \"enumTitles\": [\n        \"All-wheel drive\",\n        \"Rear-wheel drive\",\n        \"Front-wheel drive\"\n      ]\n    },\n    \"color\": {\n      \"title\": \"Exterior colour\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchCars)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"1\",\n        \"2\",\n        \"4\",\n        \"3\",\n        \"7\",\n        \"8\",\n        \"6\",\n        \"5\",\n        \"11\",\n        \"13\",\n        \"14\",\n        \"15\",\n        \"17\",\n        \"10\",\n        \"9\"\n      ],\n      \"enumTitles\": [\n        \"Beige\",\n        \"Blue\",\n        \"Brown\",\n        \"Bronze\",\n        \"Yellow\",\n        \"Gold\",\n        \"Grey\",\n        \"Green\",\n        \"Orange\",\n        \"Red\",\n        \"Black\",\n        \"Silver\",\n        \"Other\",\n        \"Purple\",\n        \"White\"\n      ]\n    },\n    \"powerFrom\": {\n      \"title\": \"Power from (kW)\",\n      \"type\": \"integer\",\n      \"description\": \"(mode=searchCars) Minimum engine power.\",\n      \"minimum\": 0,\n      \"maximum\": 2000\n    },\n    \"powerTo\": {\n      \"title\": \"Power to (kW)\",\n      \"type\": \"integer\",\n      \"description\": \"(mode=searchCars) Maximum engine power.\",\n      \"minimum\": 0,\n      \"maximum\": 2000\n    },\n    \"realEstateCategory\": {\n      \"title\": \"Real-estate category\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchRealEstate) Which property market to search.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"rentApartment\",\n        \"buyApartment\",\n        \"rentHouse\",\n        \"buyHouse\",\n        \"land\",\n        \"newBuild\",\n        \"commercialRent\",\n        \"commercialBuy\",\n        \"holidayRent\",\n        \"holidayBuy\",\n        \"otherRealEstate\"\n      ],\n      \"enumTitles\": [\n        \"Apartment for rent\",\n        \"Apartment for sale\",\n        \"House for rent\",\n        \"House for sale\",\n        \"Land / plot\",\n        \"New-build project\",\n        \"Commercial property for rent\",\n        \"Commercial property for sale\",\n        \"Holiday property for rent\",\n        \"Holiday property for sale\",\n        \"Other real estate\"\n      ],\n      \"default\": \"rentApartment\"\n    },\n    \"propertySubtype\": {\n      \"title\": \"Property subtype\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchRealEstate) Optional subtype such as penthouse, detached house or building plot.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"110\",\n        \"105\",\n        \"111\",\n        \"113\",\n        \"100\",\n        \"101\",\n        \"102\",\n        \"112\",\n        \"3\",\n        \"16\",\n        \"27\",\n        \"2\",\n        \"9\",\n        \"11\",\n        \"15\",\n        \"1\",\n        \"22\",\n        \"17\",\n        \"19\",\n        \"21\",\n        \"118\",\n        \"14\",\n        \"119\",\n        \"116\",\n        \"117\",\n        \"18\"\n      ],\n      \"enumTitles\": [\n        \"Attic apartment\",\n        \"Ground-floor apartment\",\n        \"Garconnière\",\n        \"Co-operative apartment\",\n        \"Loft / studio\",\n        \"Maisonette\",\n        \"Penthouse\",\n        \"Roof-space conversion\",\n        \"Apartment\",\n        \"Room / shared flat\",\n        \"Other apartment\",\n        \"Alpine hut\",\n        \"Farmhouse\",\n        \"Bungalow\",\n        \"Semi-detached house\",\n        \"Detached house\",\n        \"Garden house\",\n        \"Co-operative house\",\n        \"Country house\",\n        \"Building plot\",\n        \"Commercial plot\",\n        \"Plot / land\",\n        \"Industrial plot\",\n        \"Allotment garden\",\n        \"Agricultural / forestry land\",\n        \"Other plot\"\n      ]\n    },\n    \"rooms\": {\n      \"title\": \"Rooms\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchRealEstate) Room-count bucket.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"1X1\",\n        \"2X2\",\n        \"3X3\",\n        \"4X4\",\n        \"5X5\",\n        \"6X9\",\n        \"10X\",\n        \"0X0\"\n      ],\n      \"enumTitles\": [\n        \"1 room\",\n        \"2 rooms\",\n        \"3 rooms\",\n        \"4 rooms\",\n        \"5 rooms\",\n        \"6-9 rooms\",\n        \"10+ rooms\",\n        \"Not specified\"\n      ]\n    },\n    \"livingAreaFrom\": {\n      \"title\": \"Living area from (m²)\",\n      \"type\": \"integer\",\n      \"description\": \"(mode=searchRealEstate)\",\n      \"minimum\": 0,\n      \"maximum\": 100000\n    },\n    \"livingAreaTo\": {\n      \"title\": \"Living area to (m²)\",\n      \"type\": \"integer\",\n      \"description\": \"(mode=searchRealEstate)\",\n      \"minimum\": 0,\n      \"maximum\": 100000\n    },\n    \"plotAreaFrom\": {\n      \"title\": \"Plot area from (m²)\",\n      \"type\": \"integer\",\n      \"description\": \"(mode=searchRealEstate)\",\n      \"minimum\": 0,\n      \"maximum\": 10000000\n    },\n    \"plotAreaTo\": {\n      \"title\": \"Plot area to (m²)\",\n      \"type\": \"integer\",\n      \"description\": \"(mode=searchRealEstate)\",\n      \"minimum\": 0,\n      \"maximum\": 10000000\n    },\n    \"freeAreaType\": {\n      \"title\": \"Outdoor area\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchRealEstate) Balcony, terrace, garden, etc.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"20\",\n        \"40\",\n        \"60\",\n        \"30\",\n        \"10\",\n        \"50\"\n      ],\n      \"enumTitles\": [\n        \"Balcony\",\n        \"Roof terrace\",\n        \"Garden\",\n        \"Loggia\",\n        \"Terrace\",\n        \"Winter garden\"\n      ]\n    },\n    \"equipment\": {\n      \"title\": \"Real-estate equipment\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchRealEstate) e.g. lift, cellar, parking, built-in kitchen.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"24\",\n        \"25\",\n        \"26\",\n        \"27\",\n        \"4\",\n        \"23\",\n        \"250\",\n        \"15\",\n        \"28\"\n      ],\n      \"enumTitles\": [\n        \"Storage room\",\n        \"Barrier-free\",\n        \"Carport\",\n        \"Built-in kitchen\",\n        \"Lift\",\n        \"Garage\",\n        \"Cellar\",\n        \"Parking space\",\n        \"Partially / fully furnished\"\n      ]\n    },\n    \"availableNow\": {\n      \"title\": \"Available immediately\",\n      \"type\": \"boolean\",\n      \"description\": \"(mode=searchRealEstate) Only listings available now.\",\n      \"default\": false\n    },\n    \"jobRegion\": {\n      \"title\": \"Job region\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchJobs)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"13553\",\n        \"13602\",\n        \"13677\",\n        \"13859\",\n        \"14096\",\n        \"13783\",\n        \"14366\",\n        \"14445\",\n        \"14486\",\n        \"13552\",\n        \"14513\",\n        \"14523\"\n      ],\n      \"enumTitles\": [\n        \"Burgenland\",\n        \"Kärnten\",\n        \"Niederösterreich\",\n        \"Oberösterreich\",\n        \"Salzburg\",\n        \"Steiermark\",\n        \"Tirol\",\n        \"Vorarlberg\",\n        \"Wien\",\n        \"Österreich\",\n        \"Deutschland\",\n        \"Schweiz\"\n      ]\n    },\n    \"employmentMode\": {\n      \"title\": \"Employment type\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchJobs)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"110\",\n        \"113\",\n        \"109\",\n        \"11796\"\n      ],\n      \"enumTitles\": [\n        \"Vollzeit (full-time)\",\n        \"Teilzeit (part-time)\",\n        \"Freiberuflich (freelance)\",\n        \"Geringfügig (marginal)\"\n      ]\n    },\n    \"jobPosition\": {\n      \"title\": \"Job position\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchJobs)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"13540\",\n        \"13541\",\n        \"13539\",\n        \"13542\",\n        \"13543\",\n        \"13544\",\n        \"28428\"\n      ],\n      \"enumTitles\": [\n        \"Team lead\",\n        \"Apprenticeship\",\n        \"Management / executive\",\n        \"Employee\",\n        \"Internship\",\n        \"Project management\",\n        \"Traineeship\"\n      ]\n    },\n    \"jobOperationArea\": {\n      \"title\": \"Job field\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchJobs)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"12666\",\n        \"12681\",\n        \"12746\",\n        \"12769\",\n        \"17007\",\n        \"12887\",\n        \"12984\",\n        \"13094\",\n        \"13186\",\n        \"13260\",\n        \"13272\",\n        \"13342\",\n        \"13359\",\n        \"13375\",\n        \"13440\",\n        \"12806\",\n        \"13483\"\n      ],\n      \"enumTitles\": [\n        \"Assistance / secretarial / administration\",\n        \"Education / pedagogy / research\",\n        \"Consulting / law\",\n        \"Purchasing / logistics / transport\",\n        \"Facility management / security / cleaning\",\n        \"Finance / accounting / controlling\",\n        \"Hospitality / tourism / leisure / helpers\",\n        \"Crafts / skilled trades\",\n        \"IT / EDP\",\n        \"Management / executive\",\n        \"Marketing / media / PR / graphics / culture\",\n        \"Public service\",\n        \"Human resources\",\n        \"Care / social / health\",\n        \"Production / manufacturing\",\n        \"Technical professions / engineering / architecture\",\n        \"Sales / retail\"\n      ]\n    },\n    \"jobCompanyType\": {\n      \"title\": \"Employer type\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchJobs)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"agency\",\n        \"direct_employer\"\n      ],\n      \"enumTitles\": [\n        \"Staffing agency\",\n        \"Direct employer\"\n      ]\n    },\n    \"jobTimeLimit\": {\n      \"title\": \"Job posting age\",\n      \"type\": \"string\",\n      \"description\": \"(mode=searchJobs)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"last_24_hours\",\n        \"last_72_hours\",\n        \"last_week\"\n      ],\n      \"enumTitles\": [\n        \"Any time\",\n        \"Last 24 hours\",\n        \"Last 72 hours\",\n        \"Last week\"\n      ]\n    },\n    \"incrementalMode\": {\n      \"title\": \"Incremental monitoring\",\n      \"type\": \"boolean\",\n      \"description\": \"Return only new/changed listings or jobs on recurring runs. The first run returns everything as NEW.\",\n      \"default\": false\n    },\n    \"stateKey\": {\n      \"title\": \"Monitoring campaign name\",\n      \"type\": \"string\",\n      \"description\": \"(incrementalMode) Stable name for this search so later runs compare against the right state. Leave empty to derive it from the filters.\",\n      \"editor\": \"textfield\"\n    },\n    \"emitUnchanged\": {\n      \"title\": \"Include unchanged records\",\n      \"type\": \"boolean\",\n      \"description\": \"(incrementalMode) Also return records whose tracked fields did not change.\",\n      \"default\": false\n    },\n    \"emitExpired\": {\n      \"title\": \"Include expired records\",\n      \"type\": \"boolean\",\n      \"description\": \"(incrementalMode) After a complete scan, also emit listings/jobs that disappeared since the last run.\",\n      \"default\": false\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# Willhaben Marketplace, Cars, Real Estate & Jobs Scraper\n\nWillhaben.at is Austria's largest classifieds site — marketplace goods, used cars, apartments, houses, land and jobs all live in one place. This actor turns those listings into structured records: prices, locations, seller details, car specifications, property areas and energy data, job salaries, images and direct links. Search by keyword and filters, or paste any Willhaben search or listing URL. No login, cookies, API key or proxy setup is needed.\n\n## What this actor does\n\n- **Marketplace, cars, real estate and jobs in one actor** — choose a section or paste URLs from any of them.\n- **Location-aware search** — filter by federal state, city, district or Austrian postcode.\n- **Real filters, not post-filtering** — price, car make/model/year/mileage/fuel/transmission/body/drive/colour/power, property type/rooms/area/outdoor space/equipment, and job region/field/employment type/employer type.\n- **Optional detail enrichment** — add full descriptions, seller contact details, equipment lists, energy certificates and rent breakdowns from each listing page.\n- **Incremental monitoring** — on recurring runs return only new, changed, expired or reappeared listings/jobs.\n- **Omit-empty output** — a field the source does not carry is left out, never sent as `null` or blank.\n\n## Output per listing\n\nEvery record has `recordType: \"listing\"` and the `mode` that produced it.\n\n**Identity and pricing**\n\n- `adId`, `uuid`, `heading`, `description`, `descriptionSnippet`\n- `price`, `currency`, `priceDisplay`, `oldPrice`, `priceReductionDate`, `pricePerSquareMeter`\n- `adUrl`, `categoryId`, `locationId`\n\n**Location**\n\n- `location`, `district`, `state`, `postcode`, `address`, `street`, `municipality`, `postalName`, `country`\n- `latitude`, `longitude`\n\n**Dates, status and seller**\n\n- `publishedDate`, `changedDate`, `endDate`, `firstPublishedDate`\n- `status`, `isPrivate`, `sellerType`\n- `seller`, `sellerId`, `sellerContactName`, `sellerPhone`, `sellerWebsite`, `sellerLogoUrl`\n\n**Media and extras**\n\n- `imageUrl`, `imageUrls`, `imageCount`, `floorPlanUrls`\n- `rawAttributes` (when \"Include raw attributes\" is on)\n- `scrapedAt`\n\n### Cars & vehicles\n\n- `carMake`, `carModel`, `carMakeId`, `carModelId`, `carModelDetail`, `vehicleCategory`\n- `year`, `registrationMonth`, `mileageKm`, `fuelType`, `transmission`\n- `engineDisplacementCc`, `powerKw`, `consumptionLper100km`, `co2EmissionsGperKm`, `batteryCapacityKwh`\n- `bodyType`, `condition`, `driveType`, `color`, `doors`, `seats`, `owners`\n- `warranty`, `inspection`, `inspectionValidUntil`, `equipment[]`\n\n### Real estate\n\n- `propertyType`, `propertyTypeId`, `rooms`, `roomsCount`, `livingAreaSqm`, `usableAreaSqm`, `plotAreaSqm`\n- `floor`, `floorSurface`, `freeAreaType`, `freeAreaSqm`, `heating`, `buildingCondition`, `constructionYear`\n- `energyClassHwb`, `energyDemandHwb`, `energyClassFgee`, `energyDemandFgee`\n- `availableDate`, `availableNow`, `ownershipType`, `rentalTerm`\n- `rentPerMonth`, `rentNet`, `rentVat`, `totalEncumbrance`, `deposit`, `additionalCosts`, `monthlyCosts`\n- `equipment[]`\n\n## Output per job\n\nJob records have `recordType: \"job\"`.\n\n- `jobId`, `jobTitle`, `description`, `jobUrl`\n- `companyName`, `companyId`, `companySlug`, `companyUid`, `companyAddress`, `companyLogoUrl`\n- `position`, `salary`, `salaryTimeFrame`, `employmentTime`, `employmentModes[]`\n- `locations[]` — objects with `name`, `federalState`, `country`\n- `publishedDate`, `modifiedDate`, `expiryDate`\n- `isExpired`, `isTopJob`, `overpay`, `brandNew`, `internalApplication`\n- `contactName`, `contactEmail`, `languageSkills[]`, `professionalExperience`\n- `mode`, `scrapedAt`\n\nAdd `includeDetails` to fill full descriptions, expiry dates, company addresses, contact details and language skills where the source publishes them. Contact email is only present on some job ads.\n\n## Incremental output\n\nWhen `incrementalMode` is on, each record also has:\n\n- `changeType` — `NEW`, `UPDATED`, `UNCHANGED`, `REAPPEARED` or `EXPIRED`\n- `changedFields[]` — tracked fields that changed on an `UPDATED` record\n- `firstSeenAt`, `lastSeenAt`, `previousPrice`\n- `emitUnchanged` / `emitExpired` control whether unchanged or missing records are included\n\nThe first run returns everything as `NEW`. Later runs compare against the saved state for the same `stateKey` (or the same filters when `stateKey` is empty).\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `searchItems` | `searchItems`, `searchCars`, `searchRealEstate`, `searchJobs` or `byUrls` |\n| `query` | string | – | Keyword to search for |\n| `startUrls` | array | – | Willhaben search, category, listing, job search or job URLs (mode `byUrls`) |\n| `state` | string | – | Austrian federal state or other countries |\n| `location` | string | – | City, district or postcode; for jobs it is the job location |\n| `radiusKm` | integer | – | Job search radius, 1–100 km |\n| `sortBy` | string | `relevance` | `relevance`, `newest`, `priceAsc`, `priceDesc`, `distance` |\n| `priceMin`, `priceMax` | integer | – | Price range in EUR (ignored for jobs) |\n| `maxItems` | integer | `20` | Maximum listings or jobs (1–50,000) |\n| `includeDetails` | boolean | `false` | Fetch full descriptions, contact/seller and extra detail fields |\n| `includeRawAttributes` | boolean | `false` | Add every source attribute as `rawAttributes` |\n| `sellerType` | string | – | `private` or `dealer` (marketplace items and cars; ignored for real estate and jobs) |\n| `vehicleCategory` | string | `cars` | `cars`, `motorcycles`, `caravans` or `commercial` |\n| `carMake` | string | – | Car manufacturer |\n| `carModel` | string | – | Model name; requires `carMake` |\n| `yearFrom`, `yearTo` | integer | – | First-registration year range |\n| `mileageFrom`, `mileageTo` | integer | – | Mileage range in km |\n| `fuelType` | string | – | Petrol, diesel, electric, gas, hybrid or hydrogen |\n| `transmission` | string | – | Automatic or manual |\n| `bodyType` | string | – | Convertible, compact, estate, saloon, SUV, etc. |\n| `carCondition` | string | – | Used, new, classic, demonstration car, etc. |\n| `driveType` | string | – | All-wheel, rear-wheel or front-wheel drive |\n| `color` | string | – | Exterior colour |\n| `powerFrom`, `powerTo` | integer | – | Engine power range in kW |\n| `realEstateCategory` | string | `rentApartment` | Rent/buy apartment or house, land, new-build, commercial, holiday or other |\n| `propertySubtype` | string | – | Penthouse, detached house, building plot, etc. |\n| `rooms` | string | – | Room-count bucket (`1`, `2`, … `10+`, not specified) |\n| `livingAreaFrom`, `livingAreaTo` | integer | – | Living area range in m² |\n| `plotAreaFrom`, `plotAreaTo` | integer | – | Plot area range in m² |\n| `freeAreaType` | string | – | Balcony, terrace, garden, loggia, winter garden or roof terrace |\n| `equipment` | string | – | Lift, cellar, parking, built-in kitchen, etc. |\n| `availableNow` | boolean | `false` | Only properties available immediately |\n| `jobRegion` | string | – | Austrian state, Austria, Germany or Switzerland |\n| `employmentMode` | string | – | Full-time, part-time, freelance or marginal |\n| `jobPosition` | string | – | Management, team lead, employee, apprenticeship, internship, etc. |\n| `jobOperationArea` | string | – | Job field such as IT, care, finance, sales or trades |\n| `jobCompanyType` | string | – | Staffing agency or direct employer |\n| `jobTimeLimit` | string | – | Any time, last 24 hours, last 72 hours or last week |\n| `incrementalMode` | boolean | `false` | Return only new/changed records on recurring runs |\n| `stateKey` | string | – | Stable name for the monitoring campaign |\n| `emitUnchanged` | boolean | `false` | Include unchanged records |\n| `emitExpired` | boolean | `false` | Include records that disappeared after a complete scan |\n\n### Example: marketplace furniture\n\n```json\n{\n  \"mode\": \"searchItems\",\n  \"query\": \"sofa\",\n  \"state\": \"Wien\",\n  \"priceMax\": 800,\n  \"sortBy\": \"priceAsc\",\n  \"maxItems\": 100\n}\n```\n\n### Example: used BMW with detail enrichment\n\n```json\n{\n  \"mode\": \"searchCars\",\n  \"carMake\": \"1005\",\n  \"carModel\": \"3er-Reihe\",\n  \"yearFrom\": 2018,\n  \"mileageTo\": 120000,\n  \"fuelType\": \"100003\",\n  \"priceMax\": 30000,\n  \"includeDetails\": true,\n  \"maxItems\": 50\n}\n```\n\n### Example: Vienna rental apartments\n\n```json\n{\n  \"mode\": \"searchRealEstate\",\n  \"realEstateCategory\": \"rentApartment\",\n  \"state\": \"Wien\",\n  \"rooms\": \"2X2\",\n  \"livingAreaFrom\": 55,\n  \"priceMax\": 1400,\n  \"maxItems\": 100\n}\n```\n\n### Example: chef jobs in Vienna\n\n```json\n{\n  \"mode\": \"searchJobs\",\n  \"query\": \"Koch\",\n  \"jobRegion\": \"14486\",\n  \"employmentMode\": \"110\",\n  \"jobTimeLimit\": \"last_week\",\n  \"includeDetails\": true,\n  \"maxItems\": 50\n}\n```\n\n### Example: paste search and listing URLs\n\n```json\n{\n  \"mode\": \"byUrls\",\n  \"startUrls\": [\n    { \"url\": \"https://www.willhaben.at/iad/immobilien/mietwohnungen/wien?PRICE_TO=1200\" },\n    { \"url\": \"https://www.willhaben.at/iad/gebrauchtwagen/d/auto/bmw-3er-reihe-320d-1234567890/\" },\n    { \"url\": \"https://www.willhaben.at/jobs/suche?keyword=koch&region=14486\" }\n  ],\n  \"maxItems\": 30\n}\n```\n\n## Use cases\n\n- **Car dealers and buyers** — track make/model/year/mileage/price across Austria and compare private vs dealer offers.\n- **Real-estate analysts** — build €/m², rent, energy-class and availability datasets by district.\n- **Property hunters** — monitor Vienna or Graz rentals and new-build projects with incremental runs.\n- **Recruiters and job analysts** — export job ads with salary, company, employment type and location.\n- **Resellers** — watch marketplace categories for new listings and price reductions.\n- **Market researchers** — collect cross-section supply data for Austrian goods and property.\n\n## FAQ\n\n**Is this affiliated with Willhaben?**\nNo. This actor reads publicly visible listings and has no relationship with Willhaben.at.\n\n**Do I need an account, cookies or an API key?**\nNo. Listings, search pages and job ads are read without logging in.\n\n**Do I need to configure a proxy?**\nNo. The actor chooses a working connection automatically. Just fill in the input and run it.\n\n**Why are some fields missing on some records?**\nSellers do not always publish every attribute. A field the source does not carry is omitted, never sent as `null` or a blank value.\n\n**Why is car mileage or first registration missing on some cars?**\nSome sellers leave those fields empty. The actor returns the data the listing actually contains.\n\n**What does \"Fetch detail pages\" add?**\nFull descriptions, seller/contact details, equipment lists, energy certificates, rent breakdowns, floor plans and extra car specification fields. It is optional because it makes the run slower.\n\n**How many records can one run return?**\nUp to `maxItems`, which can be set to 50,000. Willhaben serves at most 199,800 records per search query; for larger jobs, split by state or price range and combine the results.\n\n**Can I run this on a schedule and only get new listings?**\nYes. Turn on `incrementalMode`; the first run establishes the baseline and later runs return new, changed, expired or reappeared records according to `emitUnchanged` and `emitExpired`.\n\n**Do price and seller-type filters work for jobs and real estate?**\nJob ads have no listing price, so price filters are ignored for jobs. Willhaben does not apply seller-type filtering to real estate or jobs; those filters are ignored and the run reports it in its status message.\n\n**Are image and listing links usable outside Apify?**\nYes. Image URLs and listing/job links are public absolute URLs.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "willhaben-marketplace-cars-and-real-estate",
      "title": "Willhaben Marketplace, Cars, Real Estate & Jobs Scraper",
      "description": "Scrape Willhaben.at marketplace items, used cars, real estate and jobs by keyword, location, price or category filters. Get prices, GPS, seller data, car specs, property areas, energy data and job salaries, with optional detail enrichment.",
      "version": "1.0",
      "buildTag": "latest",
      "defaultRunOptions": {
        "build": "latest",
        "timeoutSecs": 3600,
        "memoryMbytes": 1024
      },
      "dockerfile": "./Dockerfile",
      "readme": "# Willhaben Marketplace, Cars, Real Estate & Jobs Scraper\n\nWillhaben.at is Austria's largest classifieds site — marketplace goods, used cars, apartments, houses, land and jobs all live in one place. This actor turns those listings into structured records: prices, locations, seller details, car specifications, property areas and energy data, job salaries, images and direct links. Search by keyword and filters, or paste any Willhaben search or listing URL. No login, cookies, API key or proxy setup is needed.\n\n## What this actor does\n\n- **Marketplace, cars, real estate and jobs in one actor** — choose a section or paste URLs from any of them.\n- **Location-aware search** — filter by federal state, city, district or Austrian postcode.\n- **Real filters, not post-filtering** — price, car make/model/year/mileage/fuel/transmission/body/drive/colour/power, property type/rooms/area/outdoor space/equipment, and job region/field/employment type/employer type.\n- **Optional detail enrichment** — add full descriptions, seller contact details, equipment lists, energy certificates and rent breakdowns from each listing page.\n- **Incremental monitoring** — on recurring runs return only new, changed, expired or reappeared listings/jobs.\n- **Omit-empty output** — a field the source does not carry is left out, never sent as `null` or blank.\n\n## Output per listing\n\nEvery record has `recordType: \"listing\"` and the `mode` that produced it.\n\n**Identity and pricing**\n\n- `adId`, `uuid`, `heading`, `description`, `descriptionSnippet`\n- `price`, `currency`, `priceDisplay`, `oldPrice`, `priceReductionDate`, `pricePerSquareMeter`\n- `adUrl`, `categoryId`, `locationId`\n\n**Location**\n\n- `location`, `district`, `state`, `postcode`, `address`, `street`, `municipality`, `postalName`, `country`\n- `latitude`, `longitude`\n\n**Dates, status and seller**\n\n- `publishedDate`, `changedDate`, `endDate`, `firstPublishedDate`\n- `status`, `isPrivate`, `sellerType`\n- `seller`, `sellerId`, `sellerContactName`, `sellerPhone`, `sellerWebsite`, `sellerLogoUrl`\n\n**Media and extras**\n\n- `imageUrl`, `imageUrls`, `imageCount`, `floorPlanUrls`\n- `rawAttributes` (when \"Include raw attributes\" is on)\n- `scrapedAt`\n\n### Cars & vehicles\n\n- `carMake`, `carModel`, `carMakeId`, `carModelId`, `carModelDetail`, `vehicleCategory`\n- `year`, `registrationMonth`, `mileageKm`, `fuelType`, `transmission`\n- `engineDisplacementCc`, `powerKw`, `consumptionLper100km`, `co2EmissionsGperKm`, `batteryCapacityKwh`\n- `bodyType`, `condition`, `driveType`, `color`, `doors`, `seats`, `owners`\n- `warranty`, `inspection`, `inspectionValidUntil`, `equipment[]`\n\n### Real estate\n\n- `propertyType`, `propertyTypeId`, `rooms`, `roomsCount`, `livingAreaSqm`, `usableAreaSqm`, `plotAreaSqm`\n- `floor`, `floorSurface`, `freeAreaType`, `freeAreaSqm`, `heating`, `buildingCondition`, `constructionYear`\n- `energyClassHwb`, `energyDemandHwb`, `energyClassFgee`, `energyDemandFgee`\n- `availableDate`, `availableNow`, `ownershipType`, `rentalTerm`\n- `rentPerMonth`, `rentNet`, `rentVat`, `totalEncumbrance`, `deposit`, `additionalCosts`, `monthlyCosts`\n- `equipment[]`\n\n## Output per job\n\nJob records have `recordType: \"job\"`.\n\n- `jobId`, `jobTitle`, `description`, `jobUrl`\n- `companyName`, `companyId`, `companySlug`, `companyUid`, `companyAddress`, `companyLogoUrl`\n- `position`, `salary`, `salaryTimeFrame`, `employmentTime`, `employmentModes[]`\n- `locations[]` — objects with `name`, `federalState`, `country`\n- `publishedDate`, `modifiedDate`, `expiryDate`\n- `isExpired`, `isTopJob`, `overpay`, `brandNew`, `internalApplication`\n- `contactName`, `contactEmail`, `languageSkills[]`, `professionalExperience`\n- `mode`, `scrapedAt`\n\nAdd `includeDetails` to fill full descriptions, expiry dates, company addresses, contact details and language skills where the source publishes them. Contact email is only present on some job ads.\n\n## Incremental output\n\nWhen `incrementalMode` is on, each record also has:\n\n- `changeType` — `NEW`, `UPDATED`, `UNCHANGED`, `REAPPEARED` or `EXPIRED`\n- `changedFields[]` — tracked fields that changed on an `UPDATED` record\n- `firstSeenAt`, `lastSeenAt`, `previousPrice`\n- `emitUnchanged` / `emitExpired` control whether unchanged or missing records are included\n\nThe first run returns everything as `NEW`. Later runs compare against the saved state for the same `stateKey` (or the same filters when `stateKey` is empty).\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `searchItems` | `searchItems`, `searchCars`, `searchRealEstate`, `searchJobs` or `byUrls` |\n| `query` | string | – | Keyword to search for |\n| `startUrls` | array | – | Willhaben search, category, listing, job search or job URLs (mode `byUrls`) |\n| `state` | string | – | Austrian federal state or other countries |\n| `location` | string | – | City, district or postcode; for jobs it is the job location |\n| `radiusKm` | integer | – | Job search radius, 1–100 km |\n| `sortBy` | string | `relevance` | `relevance`, `newest`, `priceAsc`, `priceDesc`, `distance` |\n| `priceMin`, `priceMax` | integer | – | Price range in EUR (ignored for jobs) |\n| `maxItems` | integer | `20` | Maximum listings or jobs (1–50,000) |\n| `includeDetails` | boolean | `false` | Fetch full descriptions, contact/seller and extra detail fields |\n| `includeRawAttributes` | boolean | `false` | Add every source attribute as `rawAttributes` |\n| `sellerType` | string | – | `private` or `dealer` (marketplace items and cars; ignored for real estate and jobs) |\n| `vehicleCategory` | string | `cars` | `cars`, `motorcycles`, `caravans` or `commercial` |\n| `carMake` | string | – | Car manufacturer |\n| `carModel` | string | – | Model name; requires `carMake` |\n| `yearFrom`, `yearTo` | integer | – | First-registration year range |\n| `mileageFrom`, `mileageTo` | integer | – | Mileage range in km |\n| `fuelType` | string | – | Petrol, diesel, electric, gas, hybrid or hydrogen |\n| `transmission` | string | – | Automatic or manual |\n| `bodyType` | string | – | Convertible, compact, estate, saloon, SUV, etc. |\n| `carCondition` | string | – | Used, new, classic, demonstration car, etc. |\n| `driveType` | string | – | All-wheel, rear-wheel or front-wheel drive |\n| `color` | string | – | Exterior colour |\n| `powerFrom`, `powerTo` | integer | – | Engine power range in kW |\n| `realEstateCategory` | string | `rentApartment` | Rent/buy apartment or house, land, new-build, commercial, holiday or other |\n| `propertySubtype` | string | – | Penthouse, detached house, building plot, etc. |\n| `rooms` | string | – | Room-count bucket (`1`, `2`, … `10+`, not specified) |\n| `livingAreaFrom`, `livingAreaTo` | integer | – | Living area range in m² |\n| `plotAreaFrom`, `plotAreaTo` | integer | – | Plot area range in m² |\n| `freeAreaType` | string | – | Balcony, terrace, garden, loggia, winter garden or roof terrace |\n| `equipment` | string | – | Lift, cellar, parking, built-in kitchen, etc. |\n| `availableNow` | boolean | `false` | Only properties available immediately |\n| `jobRegion` | string | – | Austrian state, Austria, Germany or Switzerland |\n| `employmentMode` | string | – | Full-time, part-time, freelance or marginal |\n| `jobPosition` | string | – | Management, team lead, employee, apprenticeship, internship, etc. |\n| `jobOperationArea` | string | – | Job field such as IT, care, finance, sales or trades |\n| `jobCompanyType` | string | – | Staffing agency or direct employer |\n| `jobTimeLimit` | string | – | Any time, last 24 hours, last 72 hours or last week |\n| `incrementalMode` | boolean | `false` | Return only new/changed records on recurring runs |\n| `stateKey` | string | – | Stable name for the monitoring campaign |\n| `emitUnchanged` | boolean | `false` | Include unchanged records |\n| `emitExpired` | boolean | `false` | Include records that disappeared after a complete scan |\n\n### Example: marketplace furniture\n\n```json\n{\n  \"mode\": \"searchItems\",\n  \"query\": \"sofa\",\n  \"state\": \"Wien\",\n  \"priceMax\": 800,\n  \"sortBy\": \"priceAsc\",\n  \"maxItems\": 100\n}\n```\n\n### Example: used BMW with detail enrichment\n\n```json\n{\n  \"mode\": \"searchCars\",\n  \"carMake\": \"1005\",\n  \"carModel\": \"3er-Reihe\",\n  \"yearFrom\": 2018,\n  \"mileageTo\": 120000,\n  \"fuelType\": \"100003\",\n  \"priceMax\": 30000,\n  \"includeDetails\": true,\n  \"maxItems\": 50\n}\n```\n\n### Example: Vienna rental apartments\n\n```json\n{\n  \"mode\": \"searchRealEstate\",\n  \"realEstateCategory\": \"rentApartment\",\n  \"state\": \"Wien\",\n  \"rooms\": \"2X2\",\n  \"livingAreaFrom\": 55,\n  \"priceMax\": 1400,\n  \"maxItems\": 100\n}\n```\n\n### Example: chef jobs in Vienna\n\n```json\n{\n  \"mode\": \"searchJobs\",\n  \"query\": \"Koch\",\n  \"jobRegion\": \"14486\",\n  \"employmentMode\": \"110\",\n  \"jobTimeLimit\": \"last_week\",\n  \"includeDetails\": true,\n  \"maxItems\": 50\n}\n```\n\n### Example: paste search and listing URLs\n\n```json\n{\n  \"mode\": \"byUrls\",\n  \"startUrls\": [\n    { \"url\": \"https://www.willhaben.at/iad/immobilien/mietwohnungen/wien?PRICE_TO=1200\" },\n    { \"url\": \"https://www.willhaben.at/iad/gebrauchtwagen/d/auto/bmw-3er-reihe-320d-1234567890/\" },\n    { \"url\": \"https://www.willhaben.at/jobs/suche?keyword=koch&region=14486\" }\n  ],\n  \"maxItems\": 30\n}\n```\n\n## Use cases\n\n- **Car dealers and buyers** — track make/model/year/mileage/price across Austria and compare private vs dealer offers.\n- **Real-estate analysts** — build €/m², rent, energy-class and availability datasets by district.\n- **Property hunters** — monitor Vienna or Graz rentals and new-build projects with incremental runs.\n- **Recruiters and job analysts** — export job ads with salary, company, employment type and location.\n- **Resellers** — watch marketplace categories for new listings and price reductions.\n- **Market researchers** — collect cross-section supply data for Austrian goods and property.\n\n## FAQ\n\n**Is this affiliated with Willhaben?**\nNo. This actor reads publicly visible listings and has no relationship with Willhaben.at.\n\n**Do I need an account, cookies or an API key?**\nNo. Listings, search pages and job ads are read without logging in.\n\n**Do I need to configure a proxy?**\nNo. The actor chooses a working connection automatically. Just fill in the input and run it.\n\n**Why are some fields missing on some records?**\nSellers do not always publish every attribute. A field the source does not carry is omitted, never sent as `null` or a blank value.\n\n**Why is car mileage or first registration missing on some cars?**\nSome sellers leave those fields empty. The actor returns the data the listing actually contains.\n\n**What does \"Fetch detail pages\" add?**\nFull descriptions, seller/contact details, equipment lists, energy certificates, rent breakdowns, floor plans and extra car specification fields. It is optional because it makes the run slower.\n\n**How many records can one run return?**\nUp to `maxItems`, which can be set to 50,000. Willhaben serves at most 199,800 records per search query; for larger jobs, split by state or price range and combine the results.\n\n**Can I run this on a schedule and only get new listings?**\nYes. Turn on `incrementalMode`; the first run establishes the baseline and later runs return new, changed, expired or reappeared records according to `emitUnchanged` and `emitExpired`.\n\n**Do price and seller-type filters work for jobs and real estate?**\nJob ads have no listing price, so price filters are ignored for jobs. Willhaben does not apply seller-type filtering to real estate or jobs; those filters are ignored and the run reports it in its status message.\n\n**Are image and listing links usable outside Apify?**\nYes. Image URLs and listing/job links are public absolute URLs.\n",
      "input": {
        "title": "Willhaben Scraper Input",
        "description": "Scrape Willhaben.at marketplace items, cars, real estate or jobs — by keyword, location, price and category filters, or by pasting URLs.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "What to scrape",
            "type": "string",
            "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"
            ],
            "default": "searchItems",
            "prefill": "searchItems"
          },
          "query": {
            "title": "Search keyword",
            "type": "string",
            "description": "Free-text keyword, e.g. 'sofa', 'iPhone', 'BMW', 'Wohnung'. Leave empty to browse the category.",
            "editor": "textfield",
            "default": "",
            "prefill": "sofa"
          },
          "startUrls": {
            "title": "Willhaben URLs",
            "type": "array",
            "description": "(mode=byUrls) Paste search, category, single listing, job search or single job URLs. Filters already in the URL are preserved.",
            "editor": "requestListSources",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "title": "Willhaben URL",
                  "description": "Paste a Willhaben search, category, listing, job search or job URL."
                }
              }
            }
          },
          "state": {
            "title": "Federal state",
            "type": "string",
            "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"
            ]
          },
          "location": {
            "title": "City / district / postcode",
            "type": "string",
            "description": "e.g. 'Wien', 'Graz', '1050'. Resolved through Willhaben's location search. For jobs it is sent as the job location.",
            "editor": "textfield"
          },
          "radiusKm": {
            "title": "Job radius (km)",
            "type": "integer",
            "description": "(mode=searchJobs) Radius around the location, 1-100 km.",
            "minimum": 1,
            "maximum": 100
          },
          "sortBy": {
            "title": "Sort order",
            "type": "string",
            "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"
            ],
            "default": "relevance",
            "prefill": "relevance"
          },
          "priceMin": {
            "title": "Min price (EUR)",
            "type": "integer",
            "description": "Minimum listing price in euros. Ignored for jobs.",
            "minimum": 0,
            "maximum": 10000000
          },
          "priceMax": {
            "title": "Max price (EUR)",
            "type": "integer",
            "description": "Maximum listing price in euros. Ignored for jobs.",
            "minimum": 0,
            "maximum": 10000000
          },
          "maxItems": {
            "title": "Max items",
            "type": "integer",
            "description": "Maximum listings or jobs to return.",
            "minimum": 1,
            "maximum": 50000,
            "default": 20,
            "prefill": 3
          },
          "includeDetails": {
            "title": "Fetch detail pages",
            "type": "boolean",
            "description": "Add the full description, seller/contact data and extra car or real-estate details from each listing/job page. Slower and more expensive.",
            "default": false,
            "prefill": false
          },
          "includeRawAttributes": {
            "title": "Include raw attributes",
            "type": "boolean",
            "description": "Add every source attribute as a rawAttributes list. Useful for category-specific analysis; increases output size.",
            "default": false,
            "prefill": false
          },
          "sellerType": {
            "title": "Seller type",
            "type": "string",
            "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"
            ]
          },
          "vehicleCategory": {
            "title": "Vehicle category",
            "type": "string",
            "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"
            ],
            "default": "cars"
          },
          "carMake": {
            "title": "Car make",
            "type": "string",
            "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"
            ]
          },
          "carModel": {
            "title": "Car model",
            "type": "string",
            "description": "(mode=searchCars) Model name, e.g. '3er-Reihe' or 'Golf'. Requires Car make.",
            "editor": "textfield"
          },
          "yearFrom": {
            "title": "First registration from",
            "type": "integer",
            "description": "(mode=searchCars) Earliest registration year.",
            "minimum": 1900,
            "maximum": 2100
          },
          "yearTo": {
            "title": "First registration to",
            "type": "integer",
            "description": "(mode=searchCars) Latest registration year.",
            "minimum": 1900,
            "maximum": 2100
          },
          "mileageFrom": {
            "title": "Mileage from (km)",
            "type": "integer",
            "description": "(mode=searchCars) Minimum mileage.",
            "minimum": 0,
            "maximum": 2000000
          },
          "mileageTo": {
            "title": "Mileage to (km)",
            "type": "integer",
            "description": "(mode=searchCars) Maximum mileage.",
            "minimum": 0,
            "maximum": 2000000
          },
          "fuelType": {
            "title": "Fuel type",
            "type": "string",
            "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"
            ]
          },
          "transmission": {
            "title": "Transmission",
            "type": "string",
            "description": "(mode=searchCars)",
            "editor": "select",
            "enum": [
              "180004",
              "180001"
            ],
            "enumTitles": [
              "Automatic",
              "Manual"
            ]
          },
          "bodyType": {
            "title": "Body type",
            "type": "string",
            "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"
            ]
          },
          "carCondition": {
            "title": "Vehicle condition",
            "type": "string",
            "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"
            ]
          },
          "driveType": {
            "title": "Drive type",
            "type": "string",
            "description": "(mode=searchCars)",
            "editor": "select",
            "enum": [
              "2",
              "1",
              "3"
            ],
            "enumTitles": [
              "All-wheel drive",
              "Rear-wheel drive",
              "Front-wheel drive"
            ]
          },
          "color": {
            "title": "Exterior colour",
            "type": "string",
            "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"
            ]
          },
          "powerFrom": {
            "title": "Power from (kW)",
            "type": "integer",
            "description": "(mode=searchCars) Minimum engine power.",
            "minimum": 0,
            "maximum": 2000
          },
          "powerTo": {
            "title": "Power to (kW)",
            "type": "integer",
            "description": "(mode=searchCars) Maximum engine power.",
            "minimum": 0,
            "maximum": 2000
          },
          "realEstateCategory": {
            "title": "Real-estate category",
            "type": "string",
            "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"
            ],
            "default": "rentApartment"
          },
          "propertySubtype": {
            "title": "Property subtype",
            "type": "string",
            "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"
            ]
          },
          "rooms": {
            "title": "Rooms",
            "type": "string",
            "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"
            ]
          },
          "livingAreaFrom": {
            "title": "Living area from (m²)",
            "type": "integer",
            "description": "(mode=searchRealEstate)",
            "minimum": 0,
            "maximum": 100000
          },
          "livingAreaTo": {
            "title": "Living area to (m²)",
            "type": "integer",
            "description": "(mode=searchRealEstate)",
            "minimum": 0,
            "maximum": 100000
          },
          "plotAreaFrom": {
            "title": "Plot area from (m²)",
            "type": "integer",
            "description": "(mode=searchRealEstate)",
            "minimum": 0,
            "maximum": 10000000
          },
          "plotAreaTo": {
            "title": "Plot area to (m²)",
            "type": "integer",
            "description": "(mode=searchRealEstate)",
            "minimum": 0,
            "maximum": 10000000
          },
          "freeAreaType": {
            "title": "Outdoor area",
            "type": "string",
            "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"
            ]
          },
          "equipment": {
            "title": "Real-estate equipment",
            "type": "string",
            "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"
            ]
          },
          "availableNow": {
            "title": "Available immediately",
            "type": "boolean",
            "description": "(mode=searchRealEstate) Only listings available now.",
            "default": false
          },
          "jobRegion": {
            "title": "Job region",
            "type": "string",
            "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"
            ]
          },
          "employmentMode": {
            "title": "Employment type",
            "type": "string",
            "description": "(mode=searchJobs)",
            "editor": "select",
            "enum": [
              "110",
              "113",
              "109",
              "11796"
            ],
            "enumTitles": [
              "Vollzeit (full-time)",
              "Teilzeit (part-time)",
              "Freiberuflich (freelance)",
              "Geringfügig (marginal)"
            ]
          },
          "jobPosition": {
            "title": "Job position",
            "type": "string",
            "description": "(mode=searchJobs)",
            "editor": "select",
            "enum": [
              "13540",
              "13541",
              "13539",
              "13542",
              "13543",
              "13544",
              "28428"
            ],
            "enumTitles": [
              "Team lead",
              "Apprenticeship",
              "Management / executive",
              "Employee",
              "Internship",
              "Project management",
              "Traineeship"
            ]
          },
          "jobOperationArea": {
            "title": "Job field",
            "type": "string",
            "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"
            ]
          },
          "jobCompanyType": {
            "title": "Employer type",
            "type": "string",
            "description": "(mode=searchJobs)",
            "editor": "select",
            "enum": [
              "agency",
              "direct_employer"
            ],
            "enumTitles": [
              "Staffing agency",
              "Direct employer"
            ]
          },
          "jobTimeLimit": {
            "title": "Job posting age",
            "type": "string",
            "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"
            ]
          },
          "incrementalMode": {
            "title": "Incremental monitoring",
            "type": "boolean",
            "description": "Return only new/changed listings or jobs on recurring runs. The first run returns everything as NEW.",
            "default": false
          },
          "stateKey": {
            "title": "Monitoring campaign name",
            "type": "string",
            "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"
          },
          "emitUnchanged": {
            "title": "Include unchanged records",
            "type": "boolean",
            "description": "(incrementalMode) Also return records whose tracked fields did not change.",
            "default": false
          },
          "emitExpired": {
            "title": "Include expired records",
            "type": "boolean",
            "description": "(incrementalMode) After a complete scan, also emit listings/jobs that disappeared since the last run.",
            "default": false
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Willhaben Marketplace, Cars, Real Estate & Jobs Scraper Output",
        "description": "Willhaben.at listings and jobs with prices, locations, seller data, car and property details, images and optional detail-page enrichment.",
        "properties": {
          "listings": {
            "type": "string",
            "title": "Willhaben listings and jobs",
            "description": "Dataset containing all scraped Willhaben listings and job ads.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Willhaben Listings",
              "transformation": {
                "fields": [
                  "recordType",
                  "heading",
                  "jobTitle",
                  "price",
                  "priceDisplay",
                  "location",
                  "state",
                  "propertyType",
                  "carMake",
                  "roomsCount",
                  "companyName",
                  "adUrl",
                  "jobUrl"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {}
    },
    "buildNumber": "1.0.2",
    "imageDigest": "a1eee8bb584bc4d82156d56b80e057fb6238f5393edd1339c24d0e68e8704730",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.003851111111111111
    }
  }
}