{
  "openapi": "3.0.1",
  "info": {
    "title": "Willhaben.at Scraper — Austria Real Estate, Cars, Marketplace",
    "description": "Willhaben.at scraper for analysts, dealers and AI agents: Austrian real estate (rent/buy, houses, plots, commercial), cars, motorbikes, vans and marketplace goods.",
    "version": "0.1",
    "x-build-id": "hvrBVoN0BUgn8g7Ah"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yadroo~willhaben-at/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yadroo-willhaben-at",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/yadroo~willhaben-at/runs": {
      "post": {
        "operationId": "runs-sync-yadroo-willhaben-at",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/yadroo~willhaben-at/run-sync": {
      "post": {
        "operationId": "run-sync-yadroo-willhaben-at",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "category": {
            "title": "Category (vertical)",
            "enum": [
              "mietwohnungen",
              "eigentumswohnung",
              "haus-kaufen",
              "haus-mieten",
              "grundstuecke",
              "gewerbeimmobilien-kaufen",
              "gewerbeimmobilien-mieten",
              "ferienimmobilien-kaufen",
              "ferienimmobilien-mieten",
              "auto",
              "motorrad",
              "nutzfahrzeuge",
              "wohnwagen",
              "marktplatz",
              "immobilien/mietwohnungen",
              "immobilien/eigentumswohnung",
              "immobilien/haus-kaufen",
              "gebrauchtwagen/auto/gebrauchtwagenboerse",
              "kaufen-und-verkaufen/marktplatz"
            ],
            "type": "string",
            "description": "willhaben.at search vertical. Real estate: mietwohnungen, eigentumswohnung, haus-kaufen, haus-mieten, grundstuecke, gewerbeimmobilien-kaufen/-mieten, ferienimmobilien-kaufen/-mieten. Vehicles: auto, motorrad, nutzfahrzeuge, wohnwagen. General goods: marktplatz. Legacy path values of v0.1 still work.",
            "default": "mietwohnungen"
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "facets",
              "categories"
            ],
            "type": "string",
            "description": "search = listings; facets = one row per filter value (label, URL value, hits) for the current search, useful to discover make/model/equipment ids or to count supply; categories = marktplatz ATTRIBUTE_TREE ids.",
            "default": "search"
          },
          "region": {
            "title": "Region",
            "type": "string",
            "description": "Bundesland slug (wien, niederoesterreich, oberoesterreich, steiermark, tirol, salzburg, kaernten, vorarlberg, burgenland, ausland), a district/city name (\"Graz\", \"Linz\", \"Innsbruck\", \"Mödling\", \"St. Pölten\"), a Vienna district (\"wien-7\", \"1070\", \"Neubau\") or a numeric areaId. A name that fits several districts (\"Krems\") fails with the candidates; a unique start of a name (\"Spittal\") is accepted and reported in the status. Empty = all Austria. Full list: README → Reference."
          },
          "areas": {
            "title": "Additional areas",
            "type": "array",
            "description": "More districts/cities/areaIds searched together with region (OR), e.g. [\"wien-2\",\"wien-20\",\"Mödling\"]. Same rules as region.",
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Free-text search, e.g. \"golf 7 tdi\", \"iphone 15\", \"altbau\"."
          },
          "priceFrom": {
            "title": "Price from, €",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price (monthly rent for rental verticals)."
          },
          "priceTo": {
            "title": "Price to, €",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price (monthly rent for rental verticals)."
          },
          "sellerType": {
            "title": "Seller type",
            "enum": [
              "all",
              "private",
              "dealer"
            ],
            "type": "string",
            "description": "Vehicles & marktplatz: server-side filter. Real estate: applied client-side (the site has no such filter).",
            "default": "all"
          },
          "roomsFrom": {
            "title": "Rooms from",
            "minimum": 0,
            "maximum": 99,
            "type": "integer",
            "description": "Real estate: minimum number of rooms (site buckets 1,2,3,4,5,6–9,10+)."
          },
          "roomsTo": {
            "title": "Rooms to",
            "minimum": 0,
            "maximum": 99,
            "type": "integer",
            "description": "Real estate: maximum number of rooms."
          },
          "livingAreaFrom": {
            "title": "Living area from, m²",
            "minimum": 0,
            "type": "integer",
            "description": "Flats/houses/holiday homes."
          },
          "livingAreaTo": {
            "title": "Living area to, m²",
            "minimum": 0,
            "type": "integer",
            "description": "Flats/houses/holiday homes."
          },
          "plotAreaFrom": {
            "title": "Plot area from, m²",
            "minimum": 0,
            "type": "integer",
            "description": "Houses, flats with garden, plots."
          },
          "plotAreaTo": {
            "title": "Plot area to, m²",
            "minimum": 0,
            "type": "integer",
            "description": "Houses, flats with garden, plots."
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Names or ids, e.g. [\"Penthouse\",\"Maisonette\",\"Dachgeschoßwohnung\"], [\"Einfamilienhaus\",\"Reihenhaus\"], [\"Baugrundstück\"], [\"Büro/Ordination\",\"Lagerhalle\"]. English aliases work (penthouse, detached, office, warehouse). Case, umlauts (ü = ue) and separators do not matter; any other value fails with \"did you mean\" and the valid list. Full list: README.",
            "items": {
              "type": "string"
            }
          },
          "features": {
            "title": "Features",
            "type": "array",
            "description": "Any of: Abstellraum (storage), Barrierefrei (accessible), Carport, Einbauküche (kitchen), Fahrstuhl (lift), Garage, Keller (cellar), Parkplatz (parking), Möbliert (furnished), Verkabelung (cabling). Any other value fails with the valid list.",
            "items": {
              "type": "string"
            }
          },
          "outdoorAreas": {
            "title": "Outdoor areas",
            "type": "array",
            "description": "Any of: Balkon (balcony), Dachterrasse (roof-terrace), Garten (garden), Loggia, Terrasse (terrace), Wintergarten (winter-garden). Any other value fails with the valid list.",
            "items": {
              "type": "string"
            }
          },
          "availableNow": {
            "title": "Available immediately",
            "type": "boolean",
            "description": "Only objects available right away.",
            "default": false
          },
          "newBuildOnly": {
            "title": "New-build projects only",
            "type": "boolean",
            "description": "Only Neubauprojekte.",
            "default": false
          },
          "make": {
            "title": "Make",
            "type": "string",
            "description": "Brand as shown on willhaben, e.g. \"VW\", \"BMW\", \"Mercedes-Benz\", \"Škoda\" (case/diacritics-insensitive; a unique start such as \"Mercedes\" is accepted and reported in the status). Unknown or ambiguous makes fail with the valid list."
          },
          "model": {
            "title": "Model",
            "type": "string",
            "description": "Model of the chosen make, e.g. \"Golf\", \"3er-Reihe\", \"Octavia\". Requires make. Same matching rules as make."
          },
          "yearFrom": {
            "title": "First registration from (year)",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "e.g. 2018"
          },
          "yearTo": {
            "title": "First registration to (year)",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "e.g. 2022"
          },
          "mileageFrom": {
            "title": "Mileage from, km",
            "minimum": 0,
            "type": "integer",
            "description": "Vehicles: minimum mileage in km."
          },
          "mileageTo": {
            "title": "Mileage to, km",
            "minimum": 0,
            "type": "integer",
            "description": "Vehicles: maximum mileage in km."
          },
          "powerKwFrom": {
            "title": "Power from, kW",
            "minimum": 0,
            "type": "integer",
            "description": "Vehicles: minimum engine power in kW (1 kW ≈ 1.36 PS)."
          },
          "powerKwTo": {
            "title": "Power to, kW",
            "minimum": 0,
            "type": "integer",
            "description": "Vehicles: maximum engine power in kW."
          },
          "fuel": {
            "title": "Fuel",
            "type": "array",
            "description": "Any of: petrol (Benzin), diesel, electric (Elektro), gas (LPG/CNG), hybrid (Elektro/Benzin), hybrid-diesel, hydrogen. Any other value fails with \"did you mean\" and the valid list.",
            "items": {
              "type": "string"
            }
          },
          "transmission": {
            "title": "Transmission",
            "enum": [
              "automatic",
              "manual"
            ],
            "type": "string",
            "description": "Gearbox."
          },
          "wheelDrive": {
            "title": "Wheel drive",
            "enum": [
              "awd",
              "fwd",
              "rwd"
            ],
            "type": "string",
            "description": "Drive type."
          },
          "bodyTypes": {
            "title": "Body types",
            "type": "array",
            "description": "Cars: cabrio, compact, minibus, kombi, sedan (Limousine), microcar, coupe, suv, or the willhaben labels. Other vehicle verticals: labels from mode \"facets\". An unknown or ambiguous value fails with the valid list (it is never dropped silently).",
            "items": {
              "type": "string"
            }
          },
          "vehicleCondition": {
            "title": "Vehicle condition",
            "type": "array",
            "description": "Cars: used (Gebrauchtwagen), one-year (Jahreswagen), new (Neuwagen), classic (Oldtimer), pre-registered (Tageszulassung), accident (Unfallwagen), demo (Vorführwagen). Other vehicle verticals: labels from mode \"facets\". An unknown value fails with the valid list.",
            "items": {
              "type": "string"
            }
          },
          "colors": {
            "title": "Colours",
            "type": "array",
            "description": "e.g. black, white, grey, silver, blue, red (German labels work too). An unknown value fails with the valid list.",
            "items": {
              "type": "string"
            }
          },
          "equipment": {
            "title": "Equipment",
            "type": "array",
            "description": "Labels as on willhaben, e.g. \"Anhängerkupplung\", \"Navigationssystem\", \"Sitzheizung vorne\", \"Rückfahrkamera\" (see mode \"facets\"). An unknown or ambiguous label fails with the valid list.",
            "items": {
              "type": "string"
            }
          },
          "warrantyOnly": {
            "title": "With warranty only",
            "type": "boolean",
            "description": "Vehicles: only ads with a warranty (Garantie).",
            "default": false
          },
          "inspectionOnly": {
            "title": "With condition report (§57a) only",
            "type": "boolean",
            "description": "Vehicles: only ads with a valid §57a condition report (\"Pickerl\" / Begutachtung).",
            "default": false
          },
          "marketCategory": {
            "title": "Marketplace category",
            "type": "string",
            "description": "Top-level name/alias (smartphones, computer, furniture, fashion, sport, toys, games, cameras, car-parts, books, baby, pets, watches, antiques, home, beauty, services, boats, leisure) or any numeric ATTRIBUTE_TREE id (mode \"categories\" lists sub-categories)."
          },
          "itemCondition": {
            "title": "Item condition",
            "type": "array",
            "description": "Any of: new, like-new (Neuwertig), refurbished (Generalüberholt), used, defective, display (Ausstellungsstück). Any other value fails with the valid list.",
            "items": {
              "type": "string"
            }
          },
          "handover": {
            "title": "Handover",
            "enum": [
              "pickup",
              "shipping"
            ],
            "type": "string",
            "description": "How the item is handed over."
          },
          "payliveryOnly": {
            "title": "PayLivery only",
            "type": "boolean",
            "description": "Only ads with willhaben PayLivery (buy online with payment + shipping protection).",
            "default": false
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "newest",
              "relevance",
              "price_asc",
              "price_desc",
              "area_asc",
              "area_desc",
              "mileage_asc",
              "mileage_desc",
              "year_desc",
              "year_asc",
              "model"
            ],
            "type": "string",
            "description": "Sort order. Orders not offered for the vertical fall back to newest with a warning.",
            "default": "newest"
          },
          "sinceHours": {
            "title": "Published within (hours)",
            "minimum": 1,
            "maximum": 8760,
            "type": "integer",
            "description": "Only ads published in the last N hours. Sent to the site as a day filter and re-checked on the exact publish time — ideal for scheduled alerts (e.g. 24 on a daily schedule)."
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Search mode: stop after this many ads (facets/categories return every value of one request). Up to 100 ads per page request. With detail: true roughly 2,000–2,500 ads fit into the default 1-hour run timeout; the run stops before the timeout and keeps every ad saved so far.",
            "default": 50
          },
          "maxPages": {
            "title": "Max pages",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Safety cap on search pages (up to 100 ads each). The status says when it stopped the run.",
            "default": 20
          },
          "detail": {
            "title": "Open detail pages",
            "type": "boolean",
            "description": "+1 request per ad (about 1.5 s per ad, so roughly 2,000–2,500 ads per hour): full description, all images, exact address parts, seller name/registration date/active ads, company name, website, phone (if published), detail attributes, equipment, shipping options, rent breakdown (Miete, Betriebskosten, Kaution), first registration. Ads are saved in small batches as they are ready. If willhaben blocks detail pages, the run keeps the list data, marks items with detailError and says so in the status.",
            "default": false
          },
          "includeTopAds": {
            "title": "Include paid top ads",
            "type": "boolean",
            "description": "Top ads (Top-Anzeigen, isTopAd: true) are listings whose sellers paid for a top placement (usually under 10 % of the ads); they match your filters and sort like any other ad. Off (default): they are skipped and the status counts them. On: they are kept and flagged with isTopAd. Paid highlights on ordinary ads (isHighlighted) are always kept.",
            "default": false
          },
          "dedupe": {
            "title": "Dedupe",
            "type": "boolean",
            "description": "Kept for older inputs; it has no effect. Each ad id is stored (and charged) at most once per run, whatever this is set to.",
            "default": true
          },
          "fields": {
            "title": "Output fields",
            "type": "array",
            "description": "Search mode only: keep only these fields per item, in this order (e.g. [\"title\",\"price\",\"pricePerSqm\",\"location\",\"url\"]); id always comes first unless you place it. A wrong letter case or a small typo (\"titel\") is corrected and reported; unknown names are left out with a warning, and if none is valid the run fails with the list. Empty = all fields. Facets/categories rows are always complete.",
            "items": {
              "type": "string"
            }
          },
          "extraParams": {
            "title": "Extra URL parameters",
            "type": "object",
            "description": "Any other willhaben search parameter copied from a willhaben URL, e.g. {\"NO_OF_DOORS_FROM\": 4, \"BATTERY_CAPACITY_FROM\": 60}. Arrays repeat the parameter."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}