{
  "openapi": "3.0.1",
  "info": {
    "title": "Willhaben.at $1💰 URL Search | Keyword Filtering | Rich Output",
    "description": "From $1/1K. Extract structured listing data directly from Willhaben.at into clean JSON with 40+ fields, including GPS coordinates, photos, dates, seller details, and category-specific attributes. Search by filters or any Willhaben URL.",
    "version": "1.0",
    "x-build-id": "yMSpRIPZjVKklN3al"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~willhaben-at-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-willhaben-at-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/abotapi~willhaben-at-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-willhaben-at-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/abotapi~willhaben-at-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-willhaben-at-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "How to find listings: build a search from filters, or paste search-page URLs.",
            "default": "search"
          },
          "category": {
            "title": "Category",
            "enum": [
              "kaufen-und-verkaufen/marktplatz",
              "immobilien/mietwohnungen",
              "immobilien/eigentumswohnung",
              "immobilien/haus-kaufen",
              "immobilien/haus-mieten",
              "immobilien/grundstuecke",
              "gebrauchtwagen/auto/gebrauchtwagenboerse",
              "gebrauchtwagen/wohnwagen-wohnmobile",
              "jobs"
            ],
            "type": "string",
            "description": "Listing category (Search mode). Pick a section of willhaben.at to scrape.",
            "default": "kaufen-und-verkaufen/marktplatz"
          },
          "categoryPath": {
            "title": "Custom category path (advanced)",
            "type": "string",
            "description": "Optional. Override Category with any willhaben SEO path, e.g. 'immobilien/anlageobjekte' or 'gebrauchtwagen/motorrad'. Leave empty to use the Category above. Copy the path that follows '/iad/' from a willhaben URL."
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Free-text keyword to search within the category, e.g. 'iphone', 'bmw', 'altbau'. Leave empty to list everything in the category."
          },
          "areaId": {
            "title": "Area ID (location)",
            "type": "integer",
            "description": "Optional willhaben location ID to restrict results to a region/district. Example: 900 = Vienna (Wien). Find the ID in the URL after picking a location on willhaben.at. Leave empty for all of Austria. Not applied to the Jobs category."
          },
          "minPrice": {
            "title": "Min price (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price filter. Leave empty for no minimum. Not applied to the Jobs category."
          },
          "maxPrice": {
            "title": "Max price (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price filter. Leave empty for no maximum."
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "default",
              "newest",
              "price-asc",
              "price-desc"
            ],
            "type": "string",
            "description": "Result ordering (Search mode).",
            "default": "default"
          },
          "customParameters": {
            "title": "Extra filters (advanced)",
            "type": "array",
            "description": "Optional raw willhaben query parameters as KEY=VALUE strings, e.g. 'YEAR_MODEL_FROM=2018', 'MILEAGE_TO=100000', 'CAR_MODEL/MAKE=139'. Lets you replicate any filter the site offers. One per line.",
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Search URLs",
            "type": "array",
            "description": "willhaben.at search-page URLs to scrape (URL mode). Multi-URL supported. Filter fields above are ignored in this mode. Pagination starts at the page in the URL and walks forward.",
            "items": {
              "type": "string"
            }
          },
          "fetchDetails": {
            "title": "Fetch detail pages",
            "type": "boolean",
            "description": "Open each listing's detail page to add contact name, dealer/organisation info, address detail and the full attribute set. Slower and costs an extra fetch per listing. Leave off for fast list-only scraping (the list already carries ~40 fields).",
            "default": false
          },
          "maxListings": {
            "title": "Max listings",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of listings to scrape across all searches. Set 0 for unlimited.",
            "default": 20
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum pages to paginate per search (~25 listings/page). Defaults to the highest allowed value so Max listings is the effective hard cap.",
            "default": 500
          },
          "proxy": {
            "title": "Proxy",
            "type": "object",
            "description": "willhaben.at only accepts traffic from Austrian (or nearby EU) residential connections. Datacenter proxies are rejected. Use Apify Residential with country AT for reliable results. The actor rotates AT and DE residential exits automatically."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}