{
  "openapi": "3.0.1",
  "info": {
    "title": "Immowelt Scraper",
    "description": "Scrape Immowelt.de listings for any German city, district or postcode: cold and warm rent or price, €/m², living space, rooms, address, energy class, all photos, agency and phone. Filter by price, rooms and size. Export JSON or CSV, call it via API, schedule it, or use n8n, Make and Zapier.",
    "version": "0.1",
    "x-build-id": "8iqhx5pCdNt1wOkjC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lergassy~immowelt-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lergassy-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/lergassy~immowelt-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lergassy-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/lergassy~immowelt-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lergassy-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": {
          "locations": {
            "title": "📍 Locations (city, district or postcode)",
            "type": "array",
            "description": "Give this or <code>startUrls</code>. One place per line, in Germany: a city (<code>Berlin</code>, <code>München</code>), a district (<code>Hamburg Eimsbüttel</code>, <code>Berlin Kreuzberg</code>), a postcode (<code>10115</code>), a federal state (<code>Bayern</code>) or <code>Deutschland</code> for the whole country. Each place is looked up in immowelt's own place search and searched with the property type and filters below. Empty together with startUrls = a demo search for Berlin.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "🔗 Immowelt search or listing URLs",
            "type": "array",
            "description": "Give this or <code>locations</code>. Paste immowelt.de search URLs as your browser shows them, e.g. <code>https://www.immowelt.de/classified-search?distributionTypes=Rent&estateTypes=Apartment&locations=AD08DE8634&priceMax=1200</code> or <code>https://www.immowelt.de/suche/mieten/wohnung/berlin/ad08de8634</code>. The URL keeps its own place, type, filters and sort order. Listing URLs (<code>…/expose/26RGHWFIUULV</code>) always come with details (Listing + Listing details).",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "propertyType": {
            "title": "🏠 Property type",
            "enum": [
              "apartmentrent",
              "apartmentbuy",
              "houserent",
              "housebuy",
              "shorttermaccommodation",
              "livingbuysite",
              "garagerent",
              "garagebuy",
              "office",
              "investment",
              "compulsoryauction"
            ],
            "type": "string",
            "description": "What to search for in Locations. Search URLs carry their own type and ignore this field.",
            "default": "apartmentrent"
          },
          "priceMin": {
            "title": "💶 Price from (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price in euros: monthly rent for rentals, purchase price for sales. Empty = no lower limit."
          },
          "priceMax": {
            "title": "💶 Price up to (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price in euros: monthly rent for rentals, purchase price for sales. Empty = no upper limit."
          },
          "priceType": {
            "title": "Rent price is",
            "enum": [
              "base",
              "total"
            ],
            "type": "string",
            "description": "For rentals: whether the price range means cold rent (Kaltmiete, immowelt's default) or warm rent (Warmmiete). Ignored for sales.",
            "default": "base"
          },
          "roomsMin": {
            "title": "🛏️ Rooms from",
            "minimum": 0,
            "type": "number",
            "description": "Minimum number of rooms, as counted in Germany (living room + bedrooms; kitchen and bath not counted)."
          },
          "roomsMax": {
            "title": "🛏️ Rooms up to",
            "minimum": 0,
            "type": "number",
            "description": "Maximum number of rooms."
          },
          "livingSpaceMin": {
            "title": "📐 Living space from (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum living space in square metres (floor space for offices)."
          },
          "livingSpaceMax": {
            "title": "📐 Living space up to (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum living space in square metres."
          },
          "sortBy": {
            "title": "↕️ Sort by",
            "enum": [
              "relevance",
              "newest",
              "priceAsc",
              "priceDesc",
              "livingSpaceAsc",
              "livingSpaceDesc",
              "pricePerSqmAsc"
            ],
            "type": "string",
            "description": "Order of results. With a small Max listings this decides which listings you get — use Newest first for a daily feed.",
            "default": "relevance"
          },
          "maxItems": {
            "title": "💯 Max listings",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum listings for the whole run, shared evenly between your locations and URLs (a place with fewer listings leaves its share to the next). immowelt shows at most 10,000 listings per search: split bigger areas by district or price range. Berlin apartments for rent are about 5,900 listings.",
            "default": 50
          },
          "includeDetails": {
            "title": "📄 Listing details ($)",
            "type": "boolean",
            "description": "Paid add-on, charged as \"Add-on: Listing details\" per listing that really got them. Opens every listing page and adds the full description, location and features texts, features list, balcony / garden / cellar / lift / kitchen flags, coordinates, ancillary and heating costs, deposit, commission, year built, condition, heating, energy certificate (type, validity, demand), floor plans and documents.",
            "default": false
          },
          "onlyNewRowsStore": {
            "title": "🔁 Only new listings — memory name",
            "pattern": "^[A-Za-z0-9-]{0,63}$",
            "type": "string",
            "description": "Give this run a name — <code>my-berlin-watch</code> — and the Actor remembers every listing it delivered under that name. Every later run with the same name writes and charges <b>only listings you have not received before</b>. Schedule it daily with Sort by = Newest first to get a feed of new listings. Leave empty to get everything found, every time."
          },
          "includeRunSummary": {
            "title": "🧾 Add a free summary row at the end of the run",
            "type": "boolean",
            "description": "One extra free row at the end with the run's totals: rows delivered, free rows, what was charged and how much in US dollars. It carries type \"notice\", so a filter on the data rows skips it. Switch off if your pipeline cannot tolerate an extra row.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}