{
  "openapi": "3.0.1",
  "info": {
    "title": "immowelt Scraper",
    "description": "Property offers from immowelt.de and immowelt.at as clean JSON: price, price per m², rooms, living and plot area, energy class, condition, district, photos; expose pages add year built, costs and features. Agency or private as a flag; contact data never collected. Pay per result.",
    "version": "0.1",
    "x-build-id": "dbirrH5nmYGSETz1d"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lowlanddata~immowelt-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lowlanddata-immowelt-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/lowlanddata~immowelt-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lowlanddata-immowelt-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/lowlanddata~immowelt-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lowlanddata-immowelt-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",
        "properties": {
          "location": {
            "title": "Location",
            "type": "string",
            "description": "The town, district or postcode to search: <code>berlin</code>, <code>muenchen</code>, <code>frankfurt-am-main</code>, <code>berlin-koepenick</code>, <code>10115</code>, <code>wien</code> (with <b>country</b> at). Umlauts are written out for you. A search address copied from the site works too. Leave it out only when you re-check offers through <b>listingIds</b>."
          },
          "country": {
            "title": "Country site",
            "enum": [
              "de",
              "at"
            ],
            "type": "string",
            "description": "immowelt.de for Germany or immowelt.at for Austria. The columns are the same on both.",
            "default": "de"
          },
          "offerType": {
            "title": "Buy or rent",
            "enum": [
              "buy",
              "rent"
            ],
            "type": "string",
            "description": "Offers for sale or for rent.",
            "default": "buy"
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Apartments, houses, plots of land, or any mix. Defaults to apartments and houses.",
            "items": {
              "type": "string",
              "enum": [
                "apartment",
                "house",
                "land"
              ],
              "enumTitles": [
                "Apartments",
                "Houses",
                "Plots of land"
              ]
            },
            "default": [
              "apartment",
              "house"
            ]
          },
          "listingIds": {
            "title": "Specific offer IDs",
            "type": "array",
            "description": "Re-check offers you already know instead of searching: one per line, as the id at the end of the offer address (the <code>exposeId</code> of every dataset item), the Online-ID shown on the page (the <code>listingId</code>), or the offer's full address. Each one is read from its own page, so it carries the full description, the energy data, the costs and the feature list. An offer that is gone from the site is skipped, named in the log and not billed. <b>When given, the search fields of this form are ignored</b> and the run status says which; <b>country</b> still picks the site. Up to 50.",
            "items": {
              "type": "string"
            }
          },
          "priceMinEur": {
            "title": "Minimum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include offers priced at least this many euros (the purchase price, or the rent)."
          },
          "priceMaxEur": {
            "title": "Maximum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include offers priced at most this many euros."
          },
          "roomsMin": {
            "title": "Minimum rooms",
            "minimum": 0,
            "type": "number",
            "description": "Only include offers with at least this many rooms."
          },
          "roomsMax": {
            "title": "Maximum rooms",
            "minimum": 0,
            "type": "number",
            "description": "Only include offers with at most this many rooms."
          },
          "livingAreaMinSqm": {
            "title": "Minimum living area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include offers with at least this living area in square metres."
          },
          "livingAreaMaxSqm": {
            "title": "Maximum living area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include offers with at most this living area in square metres."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "price_asc",
              "price_desc",
              "relevance"
            ],
            "type": "string",
            "description": "Order of results: newest (best for monitoring), price_asc, price_desc, or relevance (the site's own order).",
            "default": "newest"
          },
          "maxItems": {
            "title": "Max offers",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many offers. Free-plan runs are capped at 5 items. The form starts at 25 for a cheap first run - that is the form's prefill, not a cap on your plan; clear it to use the default of 1000. The site serves every page of a query, so a whole town comes through when you raise it.",
            "default": 1000
          },
          "scrapeDetails": {
            "title": "Fetch expose pages",
            "type": "boolean",
            "description": "The search card carries the price, rooms, area, floor, energy class, condition and a trimmed description. Turn this on to read each offer's own page for the full description, the location text, year built, heating, energy source and certificate, commission, running costs, the feature list, the agency's reference number and the site's own price-per-m² comparison for the area. One extra request per offer, so a run is slower. Agency names, contact persons, phone numbers, streets and coordinates are never read.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Proxy settings. immowelt answers only consumer networks, so the default is an Apify residential proxy; the price covers it. Leave it as it is.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "reportFailures": {
            "title": "Report failures to the developer",
            "type": "boolean",
            "description": "When a run fails, send the developer the actor name and build, an error category, the error message (truncated) and a one-way hash of your input - so a bug can be fixed without anyone asking you to reproduce it. <b>Your input itself, your results and your identity are never sent, and successful runs send nothing at all.</b> Switch this off and the actor behaves exactly the same.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}