# ImmobilienScout24 Scraper — Germany Real Estate (`logiover/immobilienscout24-de-scraper-germany-real-estate`) Actor

Scrape real estate listings from ImmobilienScout24.de — Germany's #1 property portal. Fast JSON API extraction, no browser or API key. Filter apartments, houses, plots & garages (buy/rent) by city, price (EUR), m², rooms & year. Returns price, €/m², GPS, address, agent contact, features & images.

- **URL**: https://apify.com/logiover/immobilienscout24-de-scraper-germany-real-estate.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Real estate, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## ImmobilienScout24 Scraper — German Real Estate Listings, Prices & Leads (No API)

![ImmobilienScout24 Scraper — Germany Real Estate Data Extractor](https://img.shields.io/badge/Apify-Actor-00A67E?logo=apify&logoColor=white) ![No API key](https://img.shields.io/badge/No%20API%20key-required-2ea44f) ![Pay per result](https://img.shields.io/badge/Pricing-Pay%20per%20result-1C7ED6) ![Real Estate](https://img.shields.io/badge/Category-Real%20Estate-8B5CF6) ![Export](https://img.shields.io/badge/Export-JSON%20%7C%20CSV%20%7C%20Excel-F59E0B)

Scrape property listings from **ImmobilienScout24.de** (IS24), Germany's #1 real estate portal with millions of active listings — apartments, houses, plots, garages, WG rooms, investment properties and compulsory auctions, for **sale (kaufen) or rent (mieten)**. Get **price, price/m² (€/m²), GPS coordinates, the full German address breakdown, agent contact details, property features & image galleries** in clean structured JSON, straight from the IS24 **mobile JSON API**. **Fast, no browser, no AWS WAF challenge, no API key, no login.**

> ### 🏆 Why this ImmobilienScout24 scraper?
> **70+ fields per listing** · **thousands of listings per run** · direct mobile JSON API (no browser, no WAF) · agent name + agency + phone · residential-proxy ready · export to JSON / CSV / Excel. The unofficial **ImmobilienScout24 API alternative** for German real-estate market research, investment screening and lead generation.

---

### ✨ What this Actor does / Key features

- 🏠 **12 real estate types** — apartments, houses, plots/land, garages, short-term stays, flat-share rooms (WG), investment properties, new-build house types and compulsory auctions, for sale or rent.
- 📍 **City & district targeting** — enter any German location by name (`Berlin`, `München`, `Hamburg`, `Prenzlauer Berg`, `Frankfurt am Main`); names auto-resolve to IS24 geocodes. Raw geocodes are supported too.
- 💰 **Powerful filters** — price range (EUR), living-space range (m²), room range, construction-year range, new-build only and commission-free (provisionsfrei) only.
- 🔀 **Flexible sorting** — newest first, price, living space or rooms, ascending or descending, plus IS24 relevance.
- 🗺️ **Full address & GPS** — street, house number, postcode, quarter, district, city and region, plus latitude/longitude for every listing.
- 🧱 **Rich property detail** — year built, condition, interior quality, heating type, energy class, and balcony / cellar / lift / fitted-kitchen / barrier-free flags via optional detail (expose) enrichment.
- 👤 **Agent contact data** — agent name, agency/company, phone number, star rating and verification status.
- 🖼️ **Image galleries** — main image URL plus the full list of image URLs and image count.
- ⚡ **Direct API extraction** — reads IS24's own mobile JSON endpoints; no headless browser, no AWS WAF challenge, no `__NEXT_DATA__` scraping.
- 🛡️ **Proxy support** — Apify Proxy integration; residential + country=DE strongly recommended.

### 🚀 Quick start (3 steps)

1. **Configure** — type one or more German locations (e.g. `Berlin`, `München`) and pick a real estate type such as `apartmentbuy` or `apartmentrent`. Add price/space/room filters if you want.
2. **Run** — click **Start**. The Actor resolves each location, paginates the mobile API, and streams listings into your dataset.
3. **Get your data** — open the **Output** tab and export to **JSON, CSV, Excel or XML**, or pull it via the Apify API.

### 📥 Input

Give the Actor at least one `locations` value. Everything else is optional.

#### Example — apartments for sale in Berlin & München
```json
{
  "locations": ["Berlin", "München"],
  "realEstateType": "apartmentbuy",
  "priceMin": 200000,
  "priceMax": 600000,
  "livingSpaceMin": 50,
  "livingSpaceMax": 100,
  "roomsMin": 2,
  "roomsMax": 3,
  "sort": "newest",
  "fetchDetails": true,
  "maxListings": 500,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "DE" }
}
````

#### Example — commission-free rentals in Hamburg (lead generation)

```json
{
  "locations": ["Hamburg"],
  "realEstateType": "apartmentrent",
  "noCommissionOnly": true,
  "sort": "newest",
  "maxListings": 1000
}
```

#### Example — new-build developer offers in Frankfurt am Main

```json
{
  "locations": ["Frankfurt am Main"],
  "realEstateType": "apartmentbuy",
  "newBuildingOnly": true,
  "fetchDetails": false,
  "maxListings": 300
}
```

| Field | Type | Description |
|-------|------|-------------|
| `locations` | array | German city/district/quarter names or raw IS24 geocodes. Each becomes its own task (e.g. `Berlin`, `München`, `1276003001`). **Required.** |
| `realEstateType` | string | `apartmentbuy`, `apartmentrent`, `housebuy`, `houserent`, `livingBuySite`, `garagebuy`, `garagerent`, `shortTermAccommodation`, `flatShareRoom`, `investment`, `compulsoryAuction` or `houseType`. |
| `priceMin` / `priceMax` | integer | Price range in EUR (purchase price for buy, base rent for rent). 0 = no bound. |
| `livingSpaceMin` / `livingSpaceMax` | integer | Living-space range in m². 0 = no bound. |
| `roomsMin` / `roomsMax` | integer | Room-count range (0–20). 0 = no bound. |
| `constructionYearMin` / `constructionYearMax` | integer | Construction-year range. 0 = no bound. |
| `newBuildingOnly` | boolean | Restrict to new-build (Neubau) listings only. |
| `noCommissionOnly` | boolean | Restrict to commission-free (provisionsfrei) listings only. |
| `sort` | string | newest, price\_asc/desc, living\_space\_asc/desc, rooms\_asc/desc or standard (relevance). |
| `fetchDetails` | boolean | Fetch each listing's detail (expose) page for rich fields. Adds one request per listing. Default `true`. |
| `maxListings` | integer | Total cap across all location tasks. 0 = unlimited. |
| `maxPagesPerTask` | integer | Pagination depth per location (20 listings per page). |
| `requestDelay` | integer | Delay between API requests in ms (keep ≥ 300 ms). |
| `maxRetries` | integer | Retries per request on HTTP/proxy errors (rotates proxy IP). |
| `proxyConfiguration` | object | Apify Proxy settings. Residential + country=DE strongly recommended. |

> **Finding a location:** just type the city or district name — `Berlin`, `Hamburg`, `München`, `Köln`, `Frankfurt am Main`, `Prenzlauer Berg`, `Charlottenburg`. The Actor calls IS24's geo-autocomplete to resolve the name to the correct geocode automatically. For a pinpoint match you can also paste the raw numeric geocode (e.g. Berlin = `1276003001`).

### 📤 Output

One row per listing — **70+ fields** — exportable to JSON, CSV, Excel or XML. Here is a trimmed sample record:

```json
{
  "id": "155123456",
  "detailUrl": "https://www.immobilienscout24.de/expose/155123456",
  "title": "Moderne 3-Zimmer-Wohnung mit Balkon in Prenzlauer Berg",
  "realEstateType": "apartmentbuy",
  "transactionType": "buy",
  "listingType": "premium",
  "isPrivate": "false",
  "newlyConstructed": "false",
  "publishedRelative": "3 days ago",
  "price": "545000",
  "purchasePrice": "545000",
  "currency": "EUR",
  "pricePerSqm": "7267",
  "hasCommission": "false",
  "livingSpaceSqm": "75",
  "rooms": "3",
  "floor": "3",
  "numberOfFloors": "5",
  "yearConstructed": "1998",
  "condition": "well_kept",
  "energyEfficiencyClass": "C",
  "hasBalcony": "true",
  "hasCellar": "true",
  "hasLift": "true",
  "street": "Kastanienallee",
  "houseNumber": "12",
  "postalCode": "10435",
  "city": "Berlin",
  "district": "Pankow",
  "quarter": "Prenzlauer Berg",
  "latitude": "52.5389",
  "longitude": "13.4108",
  "mainImageUrl": "https://pictures.immobilienscout24.de/.../image.jpg",
  "imageCount": "18",
  "agentName": "Anna Müller",
  "agentCompany": "Berlin Premium Immobilien GmbH",
  "agentPhone": "+49 30 1234567",
  "agentVerified": "true",
  "searchGeoLabel": "Berlin",
  "scrapedAt": "2026-07-06T12:00:00.000Z"
}
```

<details>
<summary><b>📋 Full field reference (click to expand)</b></summary>

| Field | Description |
|-------|-------------|
| `id` / `realEstateId` | IS24 listing (scout) ID |
| `detailUrl` / `reportUrl` | Listing (expose) detail URL / fraud-report URL |
| `title` | Listing title |
| `realEstateType` / `transactionType` / `listingType` | apartmentbuy/…, buy/rent, listing tier |
| `isPrivate` / `isProject` / `isNewObject` / `newlyConstructed` | private-seller / project / newly-listed / new-build flags |
| `publishedRelative` / `publicationState` | relative publish time, publication state |
| `price` / `purchasePrice` / `currency` / `pricePerSqm` / `hasCommission` | headline price, purchase price, currency (EUR), €/m², commission flag |
| `baseRent` / `totalRent` / `serviceCharge` / `heatingCosts` / `deposit` | cold & warm rent, Nebenkosten, heating, deposit (rent listings) |
| `livingSpaceSqm` / `plotAreaSqm` / `rooms` / `floor` / `numberOfFloors` | living & plot area, rooms, floor, building floors |
| `yearConstructed` / `condition` / `interiorQuality` / `apartmentType` / `buildingType` | year built, condition, interior standard, flat/building type |
| `heatingType` / `firingType` / `energyEfficiencyClass` | heating, energy source, energy class (A+..H) |
| `hasBalcony` / `hasGarden` / `hasCellar` / `hasLift` / `hasKitchen` / `isBarrierFree` | feature flags |
| `isRented` / `petsAllowed` / `parkingType` | let-status (investment), pets policy, parking |
| `addressLine` / `street` / `houseNumber` / `postalCode` / `region` / `city` / `district` / `quarter` / `fullAddress` | full address breakdown |
| `latitude` / `longitude` | GPS coordinates |
| `mainImageUrl` / `imageUrls` / `imageCount` | image gallery |
| `agentName` / `agentCompany` / `agentPhone` / `agentRating` / `agentRatingCount` / `agentVerified` | agent lead data |
| `searchLocationInput` / `searchGeocode` / `searchGeoLabel` / `searchRealEstateType` / `searchUrl` | search context |
| `scrapedAt` | scrape timestamp (ISO 8601) |

</details>

### 💡 Use cases

- **Market research** — build €/m² heatmaps by city, district and quarter across Germany.
- **Investment screening** — combine `purchasePrice`, `baseRent` and `isRented` to compute gross rental yield per area.
- **Lead generation** — filter `isPrivate: true` for direct-owner listings, or cluster listings by `agentCompany` and grab `agentPhone` for outreach.
- **Price tracking** — re-run on a schedule and diff against prior datasets using `id` and `publishedRelative`.
- **New-build monitoring** — set `newBuildingOnly: true` to track Neubau projects and developer inventory.
- **Cross-city comparison** — pass multiple `locations` in one run to benchmark prices across Berlin, München, Hamburg, Köln and Frankfurt.

### 👥 Who uses it

Real-estate agencies & proptech teams · property investors & buy-to-let landlords · mortgage and valuation analysts · relocation services · market researchers & data journalists · lead-gen agencies building owner/agency contact lists.

### 💰 Pricing

This Actor runs on a simple **pay-per-result** model — you pay for the listings you extract, with no separate Apify platform fees to calculate. Try it on the **free tier** first, then scale up. See the **Pricing** tab on this page for the current rate.

### ❓ Frequently Asked Questions

**Is it legal to scrape ImmobilienScout24?**
The Actor only collects publicly available property listing data. You are responsible for using the data in compliance with ImmobilienScout24's terms and applicable laws such as the GDPR.

**Does ImmobilienScout24 have a public API?**
ImmobilienScout24 does not offer an open public data API for browsing listings. This Actor reads the portal's own mobile JSON endpoints instead, giving you structured German real estate data without any API key.

**Is this an ImmobilienScout24 API alternative?**
Yes. IS24 has no open public listings API, so this Actor works as an unofficial ImmobilienScout24 API alternative — it reads the portal's mobile JSON endpoints and returns structured German real estate data with no API key and no scraping of the WAF-protected website.

**Can I scrape ImmobilienScout24 without an API or login?**
Yes. No IS24 account, login or API key is needed — only an Apify account and a proxy. The Actor pulls publicly available property listings over direct HTTP from the mobile backend.

**Do I need a proxy?**
Yes. Apify Proxy is required, and residential with country=DE is strongly recommended — the mobile API is served from Germany, so German residential IPs are the most reliable. The public IS24 website is protected by an AWS WAF JavaScript challenge, which this Actor avoids entirely by using the mobile API.

**How do I target a specific city or district?**
Just type the name (`Berlin`, `München`, `Prenzlauer Berg`) into `locations`. The Actor calls IS24's geo-autocomplete to resolve it to the right geocode. To pin an exact area, paste the numeric geocode directly.

**How do I scrape apartments for sale in Berlin from ImmobilienScout24?**
Set `locations` to `["Berlin"]`, `realEstateType` to `apartmentbuy`, and optionally add price and living-space filters. The scraper returns Berlin apartments with price, €/m², rooms, address, GPS and agent contact — ideal for Wohnung-kaufen market analysis.

**What is the difference between base rent and total rent?**
For rentals, `baseRent` is the cold rent (Kaltmiete), while `totalRent` is the warm rent (Warmmiete) including service charges and heating. `serviceCharge` and `heatingCosts` are also returned separately.

**Can I calculate rental yield from ImmobilienScout24 data?**
Yes. Scrape `apartmentbuy` and `apartmentrent` (or `housebuy`/`houserent`) for the same city: buy rows carry `purchasePrice` and `pricePerSqm`, while rent rows carry `baseRent` and `totalRent`, so you can compute gross rental yield per district.

**How do I export ImmobilienScout24 data to CSV or JSON?**
Run the Actor, then export the resulting dataset as CSV, JSON, Excel or XML from the Apify console or via the Apify API.

**How much data can I get?**
You can scrape thousands of listings per run. IS24 caps very deep pagination, so narrow with price, living-space and room filters (or split by district) to reach more inventory across multiple locations.

### 🔗 More real estate scrapers by logiover

Building a cross-country property dataset? Pair ImmobilienScout24 with the rest of the European real-estate suite:

| Country | Actor |
|---|---|
| 🇵🇱 Poland | [Otodom.pl Scraper](https://apify.com/logiover/otodom-pl-scraper-polish-real-estate-data) |
| 🇦🇹 Austria | [Willhaben Scraper](https://apify.com/logiover/willhaben-at-scraper) · [WG-Gesucht Scraper](https://apify.com/logiover/wg-gesucht-scraper) |
| 🇨🇿 Czechia | [Sreality.cz Scraper](https://apify.com/logiover/sreality-cz-scraper-czech-real-estate-data) |
| 🇬🇷 Greece | [Spitogatos Scraper](https://apify.com/logiover/spitogatos-gr-real-estate-scraper-greece-properties-data) · [XE.gr Scraper](https://apify.com/logiover/xe-gr-real-estate-scraper-greece-property-data) |
| 🇮🇹 Italy | [Casa.it Scraper](https://apify.com/logiover/casa-it-scraper-italy-real-estate) · [Subito Scraper](https://apify.com/logiover/subito-it-property-scraper) |
| 🇪🇸 Spain | [Habitaclia Scraper](https://apify.com/logiover/habitaclia-com-spain-scraper) · [Pisos.com Scraper](https://apify.com/logiover/pisos-com-property-scraper) |
| 🇫🇷 France | [Bien'ici Scraper](https://apify.com/logiover/bien-ici-fr-scraper-france-real-estate) |
| 🇵🇹 Portugal | [Imovirtual Scraper](https://apify.com/logiover/imovirtual-pt-scraper-portugal-real-estate) |
| 🇷🇴 Romania | [Storia.ro Scraper](https://apify.com/logiover/storia-ro-scraper-romania-real-estate) |
| 🇳🇱 Netherlands | [Funda Scraper](https://apify.com/logiover/funda-scraper) |
| 🇮🇪 Ireland | [Daft.ie Scraper](https://apify.com/logiover/daft-ie-scraper) · [MyHome.ie Scraper](https://apify.com/logiover/myhome-ie-scraper) |
| 🇺🇸 USA | [Realtor.com Scraper](https://apify.com/logiover/realtor-com-scraper) · [Redfin Scraper](https://apify.com/logiover/redfin-scraper) |

👉 Browse all **[logiover scrapers on Apify Store](https://apify.com/logiover)** — 180+ actors across real estate, jobs, crypto, social media & B2B data.

### ⏰ Scheduling & integration

Schedule this Actor on Apify to track the German property market daily or weekly. Export results to JSON, CSV or Excel, sync to Google Sheets, or push to your database, BI tools and webhooks through the Apify API. Connect it to **Make, n8n or Zapier** to build automated real-estate pipelines. Combine multiple `locations` and real estate types to build a nationwide German real estate dataset.

### ⭐ Support & feedback

Found a bug or need an extra field? Open an issue on the **Issues** tab — response is usually fast. If this Actor saves you time, a **★★★★★ review** on the Store page genuinely helps and is hugely appreciated. 🙏

### ⚖️ Legal

This Actor extracts only publicly available data and is intended for legitimate research, analytics and lead-generation use. You are responsible for complying with ImmobilienScout24's terms of service, GDPR and any applicable local laws.

***

### 📝 Changelog

#### 2026-07-06

- ✨ README overhaul: richer output sample, ready-to-run example scenarios, cross-country real-estate suite links, and clearer quick-start.

#### 2026-07-06 — Initial release

- First release. Scrapes ImmobilienScout24.de (Germany's #1 property portal) via the IS24 mobile JSON API — no browser, no AWS WAF challenge, no API key.
- Free-text location resolution (city, district, quarter) into IS24 geocodes, plus raw-geocode support.
- Filters: 12 real estate types (buy & rent), price, living space, rooms, construction year, new-build only and commission-free only, with sorting.
- Optional per-listing detail (expose) enrichment: rooms, m², price breakdown, year built, condition, heating, energy class, feature flags, agent name/company/phone, GPS and full address.

# Actor input Schema

## `locations` (type: `array`):

City, district or quarter names to search — each becomes its own scraping task (e.g. `Berlin`, `München`, `Hamburg`, `Prenzlauer Berg`, `Frankfurt am Main`). Names are auto-resolved to IS24 geocodes. You can also paste a raw numeric IS24 geocode (e.g. `1276003001` for Berlin) for an exact match.

## `realEstateType` (type: `string`):

What to search for. Buy and rent are separate types on IS24.

## `priceMin` (type: `integer`):

Minimum price (purchase price for buy, base rent for rent) in euros. 0 = no minimum.

## `priceMax` (type: `integer`):

Maximum price (purchase price for buy, base rent for rent) in euros. 0 = no maximum.

## `livingSpaceMin` (type: `integer`):

Minimum living space in square meters. 0 = no minimum.

## `livingSpaceMax` (type: `integer`):

Maximum living space in square meters. 0 = no maximum.

## `roomsMin` (type: `integer`):

Minimum number of rooms. 0 = no minimum.

## `roomsMax` (type: `integer`):

Maximum number of rooms. 0 = no maximum.

## `constructionYearMin` (type: `integer`):

Earliest construction year. 0 = no minimum.

## `constructionYearMax` (type: `integer`):

Latest construction year. 0 = no maximum.

## `newBuildingOnly` (type: `boolean`):

Restrict to new-build (Neubau) listings only.

## `noCommissionOnly` (type: `boolean`):

Restrict to listings without buyer/tenant commission (provisionsfrei).

## `sort` (type: `string`):

Result ordering.

## `fetchDetails` (type: `boolean`):

Fetch each listing's detail page (expose) for rich fields: exact rooms, m², price breakdown (base rent, service charge, heating), year built, condition, heating type, balcony/cellar/lift/kitchen flags, agent name, company and phone. Adds one request per listing. Turn off for a faster, lighter run (list-level fields only).

## `maxListings` (type: `integer`):

Total cap across all location tasks (0 = unlimited).

## `maxPagesPerTask` (type: `integer`):

Pagination depth per location (20 listings per page). IS24 caps deep pagination — narrow with price/space filters to reach more inventory.

## `requestDelay` (type: `integer`):

Delay between API requests. The mobile API is tolerant; keep ≥ 300 ms to be polite.

## `maxRetries` (type: `integer`):

Retries per request on HTTP/proxy errors (rotates proxy IP each attempt).

## `proxyConfiguration` (type: `object`):

Apify Proxy is required. Residential with country=DE is strongly recommended — the IS24 mobile API is served from Germany and datacenter IPs are less reliable.

## Actor input object example

```json
{
  "locations": [
    "Berlin"
  ],
  "realEstateType": "apartmentbuy",
  "priceMin": 0,
  "priceMax": 0,
  "livingSpaceMin": 0,
  "livingSpaceMax": 0,
  "roomsMin": 0,
  "roomsMax": 0,
  "constructionYearMin": 0,
  "constructionYearMax": 0,
  "newBuildingOnly": false,
  "noCommissionOnly": false,
  "sort": "newest",
  "fetchDetails": true,
  "maxListings": 25,
  "maxPagesPerTask": 5,
  "requestDelay": 700,
  "maxRetries": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  }
}
```

# Actor output Schema

## `id` (type: `string`):

IS24 listing (scout) ID

## `detailUrl` (type: `string`):

Full URL to the listing (expose) page

## `title` (type: `string`):

Listing title

## `realEstateType` (type: `string`):

apartmentbuy / apartmentrent / housebuy / ...

## `transactionType` (type: `string`):

buy or rent

## `listingType` (type: `string`):

IS24 listing tier (XL, premium, etc.)

## `isPrivate` (type: `string`):

True if posted by a private seller/landlord

## `isProject` (type: `string`):

True if part of a new-build project

## `isNewObject` (type: `string`):

Newly listed flag

## `newlyConstructed` (type: `string`):

New construction (Neubau)

## `publishedRelative` (type: `string`):

Relative publish time (e.g. '19 days ago')

## `publicationState` (type: `string`):

Listing publication state

## `price` (type: `string`):

Headline price (purchase price or base rent)

## `purchasePrice` (type: `string`):

Purchase price (buy listings)

## `baseRent` (type: `string`):

Cold/base monthly rent (rent listings)

## `totalRent` (type: `string`):

Warm/total monthly rent (rent listings)

## `serviceCharge` (type: `string`):

Monthly service charge (Nebenkosten)

## `heatingCosts` (type: `string`):

Monthly heating costs

## `deposit` (type: `string`):

Rental deposit (Kaution)

## `currency` (type: `string`):

Currency (EUR)

## `pricePerSqm` (type: `string`):

Price per square meter

## `hasCommission` (type: `string`):

True if buyer/tenant commission is due

## `livingSpaceSqm` (type: `string`):

Living space in m²

## `plotAreaSqm` (type: `string`):

Plot/land area in m² (houses, land)

## `rooms` (type: `string`):

Number of rooms

## `floor` (type: `string`):

Floor number

## `numberOfFloors` (type: `string`):

Total floors in the building

## `yearConstructed` (type: `string`):

Construction year

## `condition` (type: `string`):

Property condition

## `interiorQuality` (type: `string`):

Interior quality (fitting standard)

## `apartmentType` (type: `string`):

Type of flat (apartment, loft, penthouse, ...)

## `buildingType` (type: `string`):

Type of building/house

## `heatingType` (type: `string`):

Heating type

## `firingType` (type: `string`):

Energy source / firing type

## `energyEfficiencyClass` (type: `string`):

Energy efficiency class (A+..H)

## `hasBalcony` (type: `string`):

Has balcony/terrace

## `hasGarden` (type: `string`):

Has garden

## `hasCellar` (type: `string`):

Has cellar/basement

## `hasLift` (type: `string`):

Has elevator/lift

## `hasKitchen` (type: `string`):

Has fitted kitchen (Einbauküche)

## `isBarrierFree` (type: `string`):

Barrier-free / accessible

## `isRented` (type: `string`):

Currently let (relevant for investment buys)

## `petsAllowed` (type: `string`):

Pets policy

## `parkingType` (type: `string`):

Parking / garage type

## `addressLine` (type: `string`):

Address line from search card

## `street` (type: `string`):

Street name

## `houseNumber` (type: `string`):

House number

## `postalCode` (type: `string`):

ZIP / postal code

## `region` (type: `string`):

Federal state / region

## `city` (type: `string`):

City

## `district` (type: `string`):

District (Bezirk)

## `quarter` (type: `string`):

Quarter / neighbourhood (Ortsteil)

## `fullAddress` (type: `string`):

Composed full address

## `latitude` (type: `string`):

GPS latitude

## `longitude` (type: `string`):

GPS longitude

## `mainImageUrl` (type: `string`):

Cover photo URL

## `imageUrls` (type: `string`):

All listing image URLs

## `imageCount` (type: `string`):

Number of images on the card

## `agentName` (type: `string`):

Contact / agent name

## `agentCompany` (type: `string`):

Agency / company name

## `agentPhone` (type: `string`):

Contact phone number

## `agentRating` (type: `string`):

Agent star rating (0-5)

## `agentRatingCount` (type: `string`):

Number of agent ratings

## `agentVerified` (type: `string`):

Whether the agent is identity-verified

## `realEstateId` (type: `string`):

IS24 scout ID (from detail)

## `reportUrl` (type: `string`):

IS24 fraud-report URL for the listing

## `searchLocationInput` (type: `string`):

Location term entered in the input

## `searchGeocode` (type: `string`):

IS24 geocode used for the search

## `searchGeoLabel` (type: `string`):

Label of the resolved geocode

## `searchRealEstateType` (type: `string`):

Real estate type used for the search

## `searchUrl` (type: `string`):

Full API search URL used

## `scrapedAt` (type: `string`):

ISO 8601 timestamp

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "locations": [
        "Berlin"
    ],
    "maxListings": 25,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "DE"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/immobilienscout24-de-scraper-germany-real-estate").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "locations": ["Berlin"],
    "maxListings": 25,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "DE",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/immobilienscout24-de-scraper-germany-real-estate").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "locations": [
    "Berlin"
  ],
  "maxListings": 25,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  }
}' |
apify call logiover/immobilienscout24-de-scraper-germany-real-estate --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=logiover/immobilienscout24-de-scraper-germany-real-estate",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "ImmobilienScout24 Scraper — Germany Real Estate",
        "description": "Scrape real estate listings from ImmobilienScout24.de — Germany's #1 property portal. Fast JSON API extraction, no browser or API key. Filter apartments, houses, plots & garages (buy/rent) by city, price (EUR), m², rooms & year. Returns price, €/m², GPS, address, agent contact, features & images.",
        "version": "1.0",
        "x-build-id": "XSffNXkUZMB3dxmdi"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/logiover~immobilienscout24-de-scraper-germany-real-estate/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-logiover-immobilienscout24-de-scraper-germany-real-estate",
                "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/logiover~immobilienscout24-de-scraper-germany-real-estate/runs": {
            "post": {
                "operationId": "runs-sync-logiover-immobilienscout24-de-scraper-germany-real-estate",
                "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/logiover~immobilienscout24-de-scraper-germany-real-estate/run-sync": {
            "post": {
                "operationId": "run-sync-logiover-immobilienscout24-de-scraper-germany-real-estate",
                "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",
                "required": [
                    "locations"
                ],
                "properties": {
                    "locations": {
                        "title": "Locations",
                        "type": "array",
                        "description": "City, district or quarter names to search — each becomes its own scraping task (e.g. `Berlin`, `München`, `Hamburg`, `Prenzlauer Berg`, `Frankfurt am Main`). Names are auto-resolved to IS24 geocodes. You can also paste a raw numeric IS24 geocode (e.g. `1276003001` for Berlin) for an exact match.",
                        "default": [
                            "Berlin"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "realEstateType": {
                        "title": "Real Estate Type",
                        "enum": [
                            "apartmentbuy",
                            "apartmentrent",
                            "housebuy",
                            "houserent",
                            "livingBuySite",
                            "garagebuy",
                            "garagerent",
                            "shortTermAccommodation",
                            "flatShareRoom",
                            "investment",
                            "compulsoryAuction",
                            "houseType"
                        ],
                        "type": "string",
                        "description": "What to search for. Buy and rent are separate types on IS24.",
                        "default": "apartmentbuy"
                    },
                    "priceMin": {
                        "title": "Min Price (EUR)",
                        "minimum": 0,
                        "maximum": 1000000000,
                        "type": "integer",
                        "description": "Minimum price (purchase price for buy, base rent for rent) in euros. 0 = no minimum.",
                        "default": 0
                    },
                    "priceMax": {
                        "title": "Max Price (EUR)",
                        "minimum": 0,
                        "maximum": 1000000000,
                        "type": "integer",
                        "description": "Maximum price (purchase price for buy, base rent for rent) in euros. 0 = no maximum.",
                        "default": 0
                    },
                    "livingSpaceMin": {
                        "title": "Min Living Space (m²)",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Minimum living space in square meters. 0 = no minimum.",
                        "default": 0
                    },
                    "livingSpaceMax": {
                        "title": "Max Living Space (m²)",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Maximum living space in square meters. 0 = no maximum.",
                        "default": 0
                    },
                    "roomsMin": {
                        "title": "Min Rooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Minimum number of rooms. 0 = no minimum.",
                        "default": 0
                    },
                    "roomsMax": {
                        "title": "Max Rooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum number of rooms. 0 = no maximum.",
                        "default": 0
                    },
                    "constructionYearMin": {
                        "title": "Min Construction Year",
                        "minimum": 0,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Earliest construction year. 0 = no minimum.",
                        "default": 0
                    },
                    "constructionYearMax": {
                        "title": "Max Construction Year",
                        "minimum": 0,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Latest construction year. 0 = no maximum.",
                        "default": 0
                    },
                    "newBuildingOnly": {
                        "title": "New Buildings Only",
                        "type": "boolean",
                        "description": "Restrict to new-build (Neubau) listings only.",
                        "default": false
                    },
                    "noCommissionOnly": {
                        "title": "Commission-Free Only",
                        "type": "boolean",
                        "description": "Restrict to listings without buyer/tenant commission (provisionsfrei).",
                        "default": false
                    },
                    "sort": {
                        "title": "Sort Order",
                        "enum": [
                            "newest",
                            "price_asc",
                            "price_desc",
                            "living_space_asc",
                            "living_space_desc",
                            "rooms_asc",
                            "rooms_desc",
                            "standard"
                        ],
                        "type": "string",
                        "description": "Result ordering.",
                        "default": "newest"
                    },
                    "fetchDetails": {
                        "title": "Fetch Full Listing Details",
                        "type": "boolean",
                        "description": "Fetch each listing's detail page (expose) for rich fields: exact rooms, m², price breakdown (base rent, service charge, heating), year built, condition, heating type, balcony/cellar/lift/kitchen flags, agent name, company and phone. Adds one request per listing. Turn off for a faster, lighter run (list-level fields only).",
                        "default": true
                    },
                    "maxListings": {
                        "title": "Max Listings",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Total cap across all location tasks (0 = unlimited).",
                        "default": 100
                    },
                    "maxPagesPerTask": {
                        "title": "Max Pages per Task",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Pagination depth per location (20 listings per page). IS24 caps deep pagination — narrow with price/space filters to reach more inventory.",
                        "default": 5
                    },
                    "requestDelay": {
                        "title": "Request Delay (ms)",
                        "minimum": 0,
                        "maximum": 30000,
                        "type": "integer",
                        "description": "Delay between API requests. The mobile API is tolerant; keep ≥ 300 ms to be polite.",
                        "default": 700
                    },
                    "maxRetries": {
                        "title": "Max Retries",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Retries per request on HTTP/proxy errors (rotates proxy IP each attempt).",
                        "default": 3
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Apify Proxy is required. Residential with country=DE is strongly recommended — the IS24 mobile API is served from Germany and datacenter IPs are less reliable."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
