{
  "openapi": "3.0.1",
  "info": {
    "title": "ImmoScout24 Scraper - ImmobilienScout24.de Rent & Sale",
    "description": "Scrape ImmoScout24 (immobilienscout24.de) apartments and houses for rent and sale from a search URL or a place with filters. One record per listing: price, cold and warm rent, m², rooms, address, coordinates, features, energy data, photos, agency. New-listings monitoring. $0.60 per 1,000 on Bronze.",
    "version": "0.1",
    "x-build-id": "28YnWQibxbKf2dSII"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/amitaviv~immoscout24-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-amitaviv-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/amitaviv~immoscout24-scraper/runs": {
      "post": {
        "operationId": "runs-sync-amitaviv-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/amitaviv~immoscout24-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-amitaviv-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": {
          "startUrls": {
            "title": "Search URLs",
            "type": "array",
            "description": "ImmoScout24 search URLs copied from the browser's address bar, e.g. https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-mieten?price=-1500.0&numberofrooms=2.0- (Berlin flats to rent, up to 1,500 EUR cold rent, 2 rooms or more). Each URL is one search; several are fine. Region (/Suche/de/…), radius (/Suche/radius/…) and drawn-area (/Suche/shape/…) searches for wohnung-mieten, wohnung-kaufen, haus-mieten and haus-kaufen. The URL's filters are applied as they are; of its sort order only \"newest first\" (sorting=2) is applied, any other is replaced by the site's standard order. URLs without https:// are accepted. A listing URL (…/expose/123456) returns that one listing. Default: empty. Leave empty to search by \"location\" instead; both can be used in one run.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location (instead of a URL)",
            "type": "string",
            "description": "Instead of (or as well as) a URL: a German city, district or federal state as you would type it on the site, e.g. München, Berlin Kreuzberg or Sachsen. Separate several with a semicolon (Hamburg; Köln); each is one search. The first match of the site's own place lookup is used. Postcodes are not supported: paste a search URL for those. Combined with the deal type, property type, price, rooms and living-space fields below. Default: empty."
          },
          "dealType": {
            "title": "Rent or buy",
            "enum": [
              "rent",
              "buy"
            ],
            "type": "string",
            "description": "For the places in \"location\" (a pasted URL keeps its own): rent (default) or buy.",
            "default": "rent"
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "apartment",
              "house"
            ],
            "type": "string",
            "description": "For the places in \"location\" (a pasted URL keeps its own): apartment (default) or house.",
            "default": "apartment"
          },
          "priceMin": {
            "title": "Price from (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price in whole euros for the places in \"location\", e.g. 800: cold rent per month for rentals, purchase price for sales. Default: no minimum."
          },
          "priceMax": {
            "title": "Price to (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price in whole euros for the places in \"location\", e.g. 1500: cold rent per month for rentals, purchase price for sales. Default: no maximum. A value below priceMin fails the run before any request."
          },
          "roomsMin": {
            "title": "Rooms from",
            "type": "string",
            "description": "Minimum number of rooms for the places in \"location\", written as text, e.g. \"2\" or \"2.5\" (\"2,5\" is read the same; German room counts include the living room). Default: no minimum. A value that is not a number fails the run instead of being ignored."
          },
          "roomsMax": {
            "title": "Rooms to",
            "type": "string",
            "description": "Maximum number of rooms for the places in \"location\", written as text, e.g. \"4\". Default: no maximum. Must not be below roomsMin."
          },
          "areaMin": {
            "title": "Living space from (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum living space in square metres (m²) for the places in \"location\", e.g. 50. Default: no minimum."
          },
          "areaMax": {
            "title": "Living space to (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum living space in square metres (m²) for the places in \"location\", e.g. 90. Default: no maximum. A value below areaMin fails the run before any request."
          },
          "maxItemsPerQuery": {
            "title": "Max listings per search",
            "minimum": 1,
            "maximum": 300000,
            "type": "integer",
            "description": "Maximum number of listings delivered for each search (each URL and each place), from 1 to 300,000; default 100. Apart from the start fee you pay only per delivered listing, so this also caps the cost. To take a whole search, set this above the number of results the site shows; a whole search that comes up short of the site's count is read a second time for the missing listings, and nothing is charged twice.",
            "default": 100
          },
          "includeDetails": {
            "title": "Full details",
            "type": "boolean",
            "description": "On (default): each listing is completed from its detail record (warm rent, service charges, deposit, features, energy data, construction year, condition, descriptions, all photos, agency name, rating and business phone); one extra request per listing. Off: only what the result list shows (price, living space, rooms, address, coordinates, energy class, one image, private/commercial flag); about 10 times faster. The price per listing is the same either way.",
            "default": true
          },
          "includeHomeBuilderOffers": {
            "title": "Include home-builder offers",
            "type": "boolean",
            "description": "House-for-sale searches also contain offers of prefabricated-house companies (\"Bauen mit …\"), which are not existing properties. Off (default): they are left out and counted in the run summary. On: they are delivered with isHomeBuilderOffer = true.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new listings (monitoring)",
            "type": "boolean",
            "description": "Off (default): every run delivers the listings it finds. On: return and charge only listings that earlier runs of this actor in your account have not delivered for the same search, for scheduled monitoring. Searches are then read newest first and stop at the first page that holds a known listing. The first run delivers the newest listings up to the maximum and treats the rest of the pages it read as seen; later runs deliver only listings that appeared since, so set maxItemsPerQuery above the number of new listings you expect between two runs. The memory is a key-value store named immoscout24-scraper-monitor in your account; delete it to start over.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor name (optional)",
            "type": "string",
            "description": "Only with onlyNew. A free name for the monitor memory, e.g. berlin-hourly. Runs with the same search and the same monitor name share one memory; give two schedules different names to keep their memories apart. Default: empty (one shared memory per search)."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Default and recommended: no proxy. The source answered every request from Apify's own addresses in our tests. Its search endpoint does have a rate limit (seen from another datacenter address, never from Apify's). If a run reports that it was blocked or rate-limited, switch on Apify Proxy (datacenter is enough); each retry then goes out from a different address. Runs through the proxy are slower.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}