{
  "openapi": "3.0.1",
  "info": {
    "title": "ImmoScout24 Scraper",
    "description": "Scrape ImmoScout24 listings for any German city, district or postcode: rent or price, €/m², living space, rooms, address with coordinates, energy class, photos, realtor 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": "TZMdS1CIL6n2CItYV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lergassy~immoscout24-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lergassy-immoscout24-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~immoscout24-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lergassy-immoscout24-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~immoscout24-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lergassy-immoscout24-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>) or <code>Germany</code> for the whole country. Each place is looked up in ImmoScout24'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": "🔗 ImmoScout24 search or listing URLs",
            "type": "array",
            "description": "Give this or <code>locations</code>. Paste search result URLs from immobilienscout24.de exactly as your browser shows them, e.g. <code>https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-mieten?price=-1000.0</code>. The URL keeps its own place, property type and filters (price, rooms, living space, radius, sort order). Single listing URLs (<code>…/expose/123456789</code>) work too.",
            "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",
              "flatshareroom",
              "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 apartments and houses to rent: whether the price range and the <code>price</code> column mean cold rent (Kaltmiete, ImmoScout24's default) or total 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). 1.5 and 2.5 are valid."
          },
          "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 (room size for WG rooms)."
          },
          "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"
            ],
            "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). Berlin apartments for rent are about 4,500 listings; all of Germany is over 80,000.",
            "default": 50
          },
          "includeDetails": {
            "title": "📄 Listing details (included in the price)",
            "type": "boolean",
            "description": "On by default and included in the listing price: opens every listing page and adds full description texts, all photos, cold and warm rent, ancillary and heating costs, deposit, buyer commission, floor, year built, condition, heating and energy data, balcony / garden / lift / kitchen / cellar flags, bedrooms, bathrooms, realtor name, company, rating and address. Switch off only for the fastest search-level rows.",
            "default": true
          },
          "includeRealtorPhone": {
            "title": "📞 Realtor phone (paid add-on)",
            "type": "boolean",
            "description": "Add the phone numbers a professional realtor shows on the listing page (<code>realtorPhone</code>, <code>realtorPhones</code>) plus realtor name and company. Charged as \"Add-on: Realtor phone\" only for listings that really have a phone number. Never filled for private landlords or sellers.",
            "default": false
          },
          "language": {
            "title": "Language of titles and labels",
            "enum": [
              "de",
              "en"
            ],
            "type": "string",
            "description": "<code>de</code> returns titles as the advertiser wrote them. <code>en</code> returns ImmoScout24's English translation of titles and labels. Description texts stay in the original language either way.",
            "default": "de"
          },
          "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}