{
  "openapi": "3.0.1",
  "info": {
    "title": "ImmobilienScout24.de Scraper - Properties, Prices & Agents",
    "description": "$0.9💰/1K for Gold discount. Extract property listings from immobilienscout24.de, Germany's #1 real estate platform with 9,000+ active listings per city. Get fully-detailed listings including price, GPS coordinates, amenities, images, agent contacts, and more.",
    "version": "2.0",
    "x-build-id": "9YCzaWaJQO6Kh7A02"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~immoscout24-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-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/abotapi~immoscout24-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-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/abotapi~immoscout24-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-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": {
          "mode": {
            "title": "1. Search mode",
            "enum": [
              "location",
              "url"
            ],
            "type": "string",
            "description": "Location mode = pick state + city + filters below. URL mode = paste any immobilienscout24.de search URL already refined in a browser (recommended for complex filters).",
            "default": "location"
          },
          "locations": {
            "title": "Locations to search (Location mode)",
            "type": "array",
            "description": "Places to search. Type a city, town, district or quarter NAME (e.g. München, Munich, Köln, Frankfurt, Prenzlauer Berg, Titisee-Neustadt): it is looked up on ImmobilienScout24's own location search, so no ids or URL slugs are needed. The state is optional: pick it only to choose between places with the same name (e.g. Neustadt). A name that cannot be found is reported in the log and skipped.",
            "items": {
              "type": "object",
              "properties": {
                "state": {
                  "title": "State (Bundesland, optional)",
                  "type": "string",
                  "description": "Optional. Pick the federal state to choose between places with the same name; leave empty to let the site's location search find the place.",
                  "enum": [
                    "baden-wuerttemberg",
                    "bayern",
                    "berlin",
                    "brandenburg",
                    "bremen",
                    "hamburg",
                    "hessen",
                    "mecklenburg-vorpommern",
                    "niedersachsen",
                    "nordrhein-westfalen",
                    "rheinland-pfalz",
                    "saarland",
                    "sachsen",
                    "sachsen-anhalt",
                    "schleswig-holstein",
                    "thueringen"
                  ],
                  "enumTitles": [
                    "Baden-Württemberg",
                    "Bayern (Bavaria)",
                    "Berlin",
                    "Brandenburg",
                    "Bremen",
                    "Hamburg",
                    "Hessen",
                    "Mecklenburg-Vorpommern",
                    "Niedersachsen (Lower Saxony)",
                    "Nordrhein-Westfalen (NRW)",
                    "Rheinland-Pfalz",
                    "Saarland",
                    "Sachsen (Saxony)",
                    "Sachsen-Anhalt",
                    "Schleswig-Holstein",
                    "Thüringen"
                  ],
                  "editor": "select"
                },
                "city": {
                  "title": "City, town or district",
                  "type": "string",
                  "description": "Place name as you would type it, e.g. München, Munich, Köln, Frankfurt am Main, Prenzlauer Berg.",
                  "editor": "textfield"
                }
              }
            }
          },
          "listingType": {
            "title": "Listing Type (Location mode)",
            "enum": [
              "buy",
              "rent"
            ],
            "type": "string",
            "description": "Buy or rent. Location mode only.",
            "default": "buy"
          },
          "propertyType": {
            "title": "Property Type",
            "enum": [
              "apartment",
              "house",
              "land",
              "garage",
              "flatShareRoom",
              "shortTermAccommodation",
              "houseBuild",
              "office",
              "retail",
              "gastronomy",
              "industry",
              "tradeSite",
              "investment",
              "compulsoryAuction"
            ],
            "type": "string",
            "description": "Type of property to search, residential or commercial. Building plots, house-building offers, investment properties and compulsory auctions exist only for sale; flat-share rooms and short-term furnished housing only for rent — for those the matching listing type is used automatically.",
            "default": "apartment"
          },
          "priceMin": {
            "title": "Price Min (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price in EUR"
          },
          "priceMax": {
            "title": "Price Max (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price in EUR"
          },
          "roomsMin": {
            "title": "Rooms Min",
            "minimum": 1,
            "type": "integer",
            "description": "Minimum number of rooms"
          },
          "roomsMax": {
            "title": "Rooms Max",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of rooms"
          },
          "livingSpaceMin": {
            "title": "Living Space Min (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum living area in square meters"
          },
          "livingSpaceMax": {
            "title": "Living Space Max (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum living area in square meters"
          },
          "constructionYearMin": {
            "title": "Construction Year From",
            "minimum": 1800,
            "type": "integer",
            "description": "Earliest construction year"
          },
          "constructionYearMax": {
            "title": "Construction Year To",
            "minimum": 1800,
            "type": "integer",
            "description": "Latest construction year"
          },
          "equipment": {
            "title": "Amenities",
            "uniqueItems": true,
            "type": "array",
            "description": "Required amenities (all must be present)",
            "items": {
              "type": "string",
              "enum": [
                "balcony",
                "builtinkitchen",
                "garden",
                "lift",
                "cellar",
                "guesttoilet",
                "barrierfree",
                "parking"
              ],
              "enumTitles": [
                "Balkon / Terrasse",
                "Einbauküche (Built-in kitchen)",
                "Garten",
                "Aufzug (Lift)",
                "Keller (Cellar)",
                "Gäste-WC (Guest toilet)",
                "Barrierefrei (Barrier-free)",
                "Stellplatz / Garage (Parking)"
              ]
            }
          },
          "apartmentTypes": {
            "title": "Apartment type",
            "uniqueItems": true,
            "type": "array",
            "description": "Apartments only (Property type = Apartment): only these apartment types, e.g. penthouse or maisonette. Leave empty for no filter. Ignored for other property types (the log says so).",
            "items": {
              "type": "string",
              "enum": [
                "apartment",
                "groundfloor",
                "raisedgroundfloor",
                "halfbasement",
                "roofstorey",
                "loft",
                "maisonette",
                "penthouse",
                "terracedflat",
                "other"
              ],
              "enumTitles": [
                "Etagenwohnung (Apartment)",
                "Erdgeschosswohnung (Ground floor)",
                "Hochparterre (Raised ground floor)",
                "Souterrain (Half basement)",
                "Dachgeschoss (Top floor / attic)",
                "Loft",
                "Maisonette",
                "Penthouse",
                "Terrassenwohnung (Terrace flat)",
                "Sonstige (Other)"
              ]
            }
          },
          "buildingTypes": {
            "title": "House type",
            "uniqueItems": true,
            "type": "array",
            "description": "Houses only (Property type = House): only these house types, e.g. single-family house or villa. Leave empty for no filter. Ignored for other property types (the log says so).",
            "items": {
              "type": "string",
              "enum": [
                "singlefamilyhouse",
                "multifamilyhouse",
                "semidetachedhouse",
                "terracehouse",
                "bungalow",
                "villa",
                "farmhouse",
                "specialrealestate",
                "otherrealestate"
              ],
              "enumTitles": [
                "Einfamilienhaus (Single-family house)",
                "Mehrfamilienhaus (Multi-family house)",
                "Doppelhaushälfte (Semi-detached house)",
                "Reihenhaus (Terraced house)",
                "Bungalow",
                "Villa",
                "Bauernhaus (Farmhouse)",
                "Besondere Immobilie (Special property)",
                "Sonstige (Other)"
              ]
            }
          },
          "noCommission": {
            "title": "Commission-free only",
            "type": "boolean",
            "description": "Only return provisionsfreie listings (no buyer's agent commission). Available for properties FOR SALE only: this site has no commission-free filter for rentals, so the option is ignored on rent searches.",
            "default": false
          },
          "energyEfficiencyClasses": {
            "title": "Energy efficiency class",
            "uniqueItems": true,
            "type": "array",
            "description": "Only listings whose energy certificate shows one of these classes. Leave empty for no filter.",
            "items": {
              "type": "string",
              "enum": [
                "a_plus",
                "a",
                "b",
                "c",
                "d",
                "e",
                "f",
                "g",
                "h"
              ],
              "enumTitles": [
                "A+",
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G",
                "H"
              ]
            }
          },
          "heatingTypes": {
            "title": "Heating type",
            "uniqueItems": true,
            "type": "array",
            "description": "Only listings with one of these heating types. Leave empty for no filter.",
            "items": {
              "type": "string",
              "enum": [
                "central",
                "selfContainedCentral",
                "stove"
              ],
              "enumTitles": [
                "Zentralheizung (Central heating)",
                "Etagenheizung (Self-contained central heating)",
                "Ofenheizung (Stove heating)"
              ]
            }
          },
          "petsAllowed": {
            "title": "Pets allowed",
            "uniqueItems": true,
            "type": "array",
            "description": "Rentals only: only listings that allow pets (yes) or allow them by arrangement (negotiable). Leave empty for no filter.",
            "items": {
              "type": "string",
              "enum": [
                "yes",
                "negotiable"
              ],
              "enumTitles": [
                "Ja (Yes)",
                "Nach Vereinbarung (By arrangement)"
              ]
            }
          },
          "floorMin": {
            "title": "Floor (min)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest floor the apartment may be on (0 = ground floor). Leave empty for no limit."
          },
          "floorMax": {
            "title": "Floor (max)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest floor the apartment may be on. Leave empty for no limit."
          },
          "publishedAfter": {
            "title": "Published on or after",
            "type": "string",
            "description": "Only listings first published on or after this date (for example 2026-10-01). Leave empty for no filter."
          },
          "radiusKm": {
            "title": "Radius (km)",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Search a circle of this many km around Radius centre, instead of the city area. Needs Radius centre."
          },
          "radiusCenter": {
            "title": "Radius centre (latitude, longitude)",
            "type": "string",
            "description": "Centre of the radius search as \"latitude, longitude\", for example \"52.5200, 13.4050\" for central Berlin. The first location's city name is used as its label."
          },
          "sortBy": {
            "title": "Sort By",
            "enum": [
              "default",
              "newest",
              "priceAsc",
              "priceDesc",
              "roomsDesc",
              "roomsAsc",
              "livingSpaceDesc",
              "livingSpaceAsc",
              "projectsFirst"
            ],
            "type": "string",
            "description": "Result ordering",
            "default": "default"
          },
          "urls": {
            "title": "Search URLs (URL mode)",
            "type": "array",
            "description": "Full immobilienscout24.de links with your own filters. Supported: city, district/quarter, state-wide and nationwide searches, every category (apartments, houses, plots, garages, shared rooms, temporary housing, offices and other commercial), map searches (radius /Suche/radius/... and drawn area /Suche/shape/...), pagenumber=N start pages, and a single listing page (/expose/<id>, or just its number, e.g. 166798088). A link without https:// works too. Overview pages (region overviews, price atlas, guides, the home page), agent profiles and the Austrian/Swiss sites are skipped with a warning. If a URL contains pagenumber=N, scraping starts from page N and walks forward. Tip: open immobilienscout24.de in your browser, apply filters, then paste the resulting URL here. In URL mode, all the Location-mode fields above are ignored.",
            "items": {
              "type": "string"
            },
            "default": [
              "https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-kaufen"
            ]
          },
          "includeDetails": {
            "title": "Include listing details",
            "type": "boolean",
            "description": "Also load each listing's full details: description texts, floor, condition, heating and energy certificate, rent breakdown (base rent, service and heating costs, deposit, Hausgeld), purchase side costs (commission, notary, land transfer tax, land registry), price per m², usable area, bedrooms, bathrooms, pets, parking, availability, virtual tour link, agent details and every other attribute the listing states. Slower: one extra request per listing.",
            "default": false
          },
          "excludeNewBuildProjects": {
            "title": "Exclude new-build projects",
            "type": "boolean",
            "description": "Hide listings that belong to new-build developer projects. Works in both modes (it is added to pasted search URLs too).",
            "default": false
          },
          "maxPages": {
            "title": "Max Pages",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum pages to scrape per location (20 listings per page). Leave empty to read every page; use Max Listings to cap the result count."
          },
          "maxListings": {
            "title": "Max Listings",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum total listings to collect across all searches. Defaults to 40; set 0 for unlimited (every page, which can be thousands of listings per search).",
            "default": 40
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings. German residential proxy recommended for best results."
          },
          "resumeFromRunId": {
            "title": "Resume from a previous run (optional)",
            "type": "string",
            "description": "Paste a previous run ID or dataset ID to continue a full-catalogue walk across separate runs. Listings already collected there (matched by listing id) are skipped, so this run only saves the new ones. Leave empty for a normal fresh run. For recurring monitoring of the same search instead, use Incremental mode below."
          },
          "incrementalMode": {
            "title": "Incremental changes for scheduled runs",
            "type": "boolean",
            "description": "Turn this on for daily/weekly recurring monitoring of the same search. The first run returns all matching listings as NEW. Later runs return only NEW, UPDATED, and REAPPEARED listings by default. Turn on \"Emit unchanged listings\" or \"Emit expired listings\" only when you also want those rows returned (and billed). State is kept separately per search (location/URLs, filters, sort); use State key below to name or deliberately share a monitoring campaign.",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional, incremental mode only)",
            "type": "string",
            "description": "Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the search inputs above."
          },
          "emitUnchanged": {
            "title": "Emit unchanged listings (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return listings that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you specifically want the full snapshot every run.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired listings (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return listings that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, not when Max Pages/Max Listings capped it, a block stopped it early, or a pasted URL/Resume started mid-walk.",
            "default": false
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "Optional. Field names to exclude from change detection in addition to the defaults (scrapedAt, isNew, priceInfo, financeMonthlyRate — already ignored because they change independently of the listing itself). Use this if another field in your setup turns out to be noisy.",
            "items": {
              "type": "string"
            }
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON — the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}