{
  "openapi": "3.0.1",
  "info": {
    "title": "Immowelt.de Property Scraper",
    "description": "[💰 $0.8 / 1K] Extract German property listings from Immowelt.de — price, €/m², rooms, living and plot area, address, energy class, photos, and agent contacts. Filter by location, sale/rent, property type, price, size, rooms, and year built.",
    "version": "1.0",
    "x-build-id": "o0e7fcc2cL2DbRjRD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~immowelt-de-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-immowelt-de-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/solidcode~immowelt-de-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-immowelt-de-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/solidcode~immowelt-de-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-immowelt-de-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": {
          "startUrls": {
            "title": "Immowelt URLs",
            "type": "array",
            "description": "Paste one or more Immowelt search URLs (e.g. https://www.immowelt.de/classified-search?distributionTypes=Buy&estateTypes=Apartment&locations=AD08DE8634) or single listing URLs (e.g. https://www.immowelt.de/expose/...). Any filters already in a search URL are kept. When you provide URLs here, the search filters below are ignored.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Where to search: a city, district, postcode, or federal state (e.g. 'Berlin', 'München', 'Prenzlauer Berg', '80331', 'Bayern'). Leave empty to search all of Germany. If Immowelt has no place by that name the run stops and tells you, rather than searching somewhere you didn't ask for. You can also paste an Immowelt location code such as AD08DE8634 if you have one."
          },
          "transactionType": {
            "title": "Sale or Rent",
            "enum": [
              "Buy",
              "Rent",
              "Buy_Auction",
              "Compulsory_Auction"
            ],
            "type": "string",
            "description": "Whether to find properties for sale or for rent."
          },
          "propertyTypes": {
            "title": "Property Types",
            "uniqueItems": true,
            "type": "array",
            "description": "Which kinds of property to include. Select one or more, or leave empty to include every type.",
            "items": {
              "type": "string",
              "enum": [
                "Apartment",
                "House",
                "Plot",
                "Office",
                "Parking",
                "Senior",
                "Miscellaneous"
              ],
              "enumTitles": [
                "Apartment / Flat",
                "House",
                "Land / Plot",
                "Office & Commercial",
                "Garage / Parking",
                "Senior Living",
                "Other"
              ]
            }
          },
          "projectTypes": {
            "title": "New Build or Existing",
            "uniqueItems": true,
            "type": "array",
            "description": "Narrow results to new builds, off-plan developments, existing properties, or investment properties. Leave empty to include all of them.",
            "items": {
              "type": "string",
              "enum": [
                "Resale",
                "New_Build",
                "Projected",
                "Investment"
              ],
              "enumTitles": [
                "Existing property",
                "New build",
                "Off-plan / planned",
                "Investment property"
              ]
            }
          },
          "keywords": {
            "title": "Keyword",
            "type": "string",
            "description": "Optional word that must appear in the listing, e.g. 'Villa', 'Altbau', 'Balkon', 'Penthouse'. This searches the listing text — it is not a location filter."
          },
          "priceMin": {
            "title": "Minimum Price (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price to include, in euros. For rentals this is the monthly rent. Leave empty for no minimum."
          },
          "priceMax": {
            "title": "Maximum Price (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price to include, in euros. For rentals this is the monthly rent. Leave empty for no maximum."
          },
          "livingAreaMin": {
            "title": "Minimum Living Area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Smallest living area to include, in square metres. Leave empty for no minimum."
          },
          "livingAreaMax": {
            "title": "Maximum Living Area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Largest living area to include, in square metres. Leave empty for no maximum."
          },
          "roomsMin": {
            "title": "Minimum Rooms",
            "minimum": 0,
            "type": "integer",
            "description": "Fewest rooms to include. Leave empty for no minimum."
          },
          "roomsMax": {
            "title": "Maximum Rooms",
            "minimum": 0,
            "type": "integer",
            "description": "Most rooms to include. Leave empty for no maximum."
          },
          "plotAreaMin": {
            "title": "Minimum Plot Size (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Smallest plot to include, in square metres. Applies to houses and land. Leave empty for no minimum."
          },
          "plotAreaMax": {
            "title": "Maximum Plot Size (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Largest plot to include, in square metres. Applies to houses and land. Leave empty for no maximum."
          },
          "constructionYearMin": {
            "title": "Built From (year)",
            "minimum": 1000,
            "type": "integer",
            "description": "Earliest year of construction, e.g. 1990. Leave empty for no minimum."
          },
          "constructionYearMax": {
            "title": "Built Until (year)",
            "minimum": 1000,
            "type": "integer",
            "description": "Latest year of construction, e.g. 2020. Leave empty for no maximum."
          },
          "sortBy": {
            "title": "Sort Results By",
            "enum": [
              "Default",
              "DateDesc",
              "PriceAsc",
              "PriceDesc",
              "SpaceAsc",
              "SpaceDesc"
            ],
            "type": "string",
            "description": "The order in which listings are collected. Newest first is the most useful setting for monitoring a market."
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of listings to return across all URLs and searches combined — this is a limit for the whole run, not for each search. Set to 0 to collect everything the searches find. Either way a single run returns at most 50,000 listings; if you enter a higher number the run collects up to that limit and says so in the log. A page is always finished once it starts, so you may get a few results more than you asked for — never fewer. Tip: start with 20–50 to check the results, then increase."
          },
          "includeDetails": {
            "title": "Include Full Listing Details",
            "type": "boolean",
            "description": "Opens each property's own page to add nine extra fields: map coordinates, the complete description (search results only show the first ~200 characters), year built, heating type, energy certificate type and consumption figures, the full amenities list, and the commission/brokerage fee. Charged extra for every listing that is successfully enriched — see the pricing tab. The extra details are added to the first 10,000 listings in a run; anything beyond that is still collected and saved with its search-result data, at no extra charge. Leave it off for a fast, cheaper run with the ~49 fields shown in search results (price, €/m², rooms, area, address, energy class, floor, photos, floor plans and agent contacts)."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}