# Immoscout24 Scraper with Contacts | All In One (`fatihtahta/immobilienscout24-scraper`) Actor

Extract ImmobilienScout24 listings across Germany, Austria, and Switzerland with rich property detail, agency contacts, media, development data, and flexible market filters. Built for enterprise-grade real estate intelligence, lead enrichment, and automated analytics pipelines.

- **URL**: https://apify.com/fatihtahta/immobilienscout24-scraper.md
- **Developed by:** [Fatih Tahta](https://apify.com/fatihtahta) (community)
- **Categories:** Real estate, Lead generation, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 property listings

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

## Immoscout24 Scraper Enterprise Grade

**Slug:** `fatihtahta/immoscout24-scraper`

### Overview

Immoscout24 Scraper Enterprise Grade collects structured property listing records, including listing identity, URLs, titles, pricing, location details, property attributes, agency and contact information, media, development data, publication dates, and source context. The public ImmoScout24 marketplaces at [https://www.immobilienscout24.de](https://www.immobilienscout24.de) and [https://www.immobilienscout24.at](https://www.immobilienscout24.at) provide high-value real estate inventory data for market analysis, operational reporting, lead qualification, and portfolio monitoring. The actor turns property search results and direct search URLs into repeatable JSON datasets that are ready for analytics, enrichment, and downstream automation. It is designed for dependable recurring data acquisition, with consistent input controls and structured output that supports validation, comparison, and synchronization over time.

### Why Use This Actor

- **Market research and analytics teams:** collect normalized real estate inventory, pricing, availability, geography, and property attributes for market intelligence and operational reporting.
- **Product and content teams:** maintain property catalogs, location pages, owned search experiences, or editorial datasets using structured extraction from public listing records.
- **Developers and data engineering teams:** feed repeatable collection jobs into downstream systems, ETL pipelines, warehouses, alerts, and APIs with predictable JSON records.
- **Lead generation and enrichment teams:** identify agencies, listings, public contacts, developments, and property attributes that can support qualification and CRM enrichment workflows.
- **Monitoring and competitive tracking teams:** schedule recurring runs to observe changes in listed properties, price bands, publication windows, amenities, and regional supply.

### Common Use Cases

- **Market intelligence:** monitor supply, pricing, availability, floor area, room count, energy classes, locations, and property segment movement.
- **Lead generation:** build targeted prospect lists from public property listings, agencies, developments, and listing-level contact details.
- **Competitive monitoring:** track newly published listings, price-positioned inventory, Search+ verified listings, or ImmoScout24-published listings across selected markets.
- **Catalog and directory building:** populate owned databases with structured public records for properties, developments, media, agencies, and geographic coverage.
- **Data enrichment:** add current public property attributes, address details, media links, and source context to existing CRM, BI, or analytics datasets.
- **Recurring reporting:** schedule periodic runs for dashboards, alerts, regional trend analysis, and operational review workflows.

### Quick Start

1. Choose a listing scope with `country`, `deal_type`, and `property_type`, or provide one or more ImmoScout24 search URLs in `start_url`.
2. Add a `location` and optional filters such as price, floor area, room count, amenities, energy class, publication window, or listing source.
3. Set a small `limit` for the first validation run so you can inspect the output quickly.
4. Run the actor in Apify Console.
5. Review the first dataset records and confirm that the fields, regions, and listing types match your workflow.
6. Increase `limit`, adjust filters, add direct URLs, enable enrichment, or schedule the actor once the output is verified.

### Input Parameters

The actor supports structured searches by country, listing mode, property type, location, filters, sorting, optional enrichment, and direct ImmoScout24 search URLs.

| Parameter | Type | Description | Default |
| --- | --- | --- | --- |
| `start_url` | array of strings | Optional direct ImmoScout24 search result URLs from `https://www.immobilienscout24.de` or `https://www.immobilienscout24.at`. Use this when you already configured a search on the website. `limit` applies separately to each URL. | – |
| `deal_type` | string | Listing mode. Allowed values: `buy`, `rent`. | `buy` |
| `property_type` | string | Property segment. Allowed values: `apartment`, `house`, `house_and_apartment`, `land`, `new_development`, `garage_parking`, `investment_property`, `foreclosure_auction`, `office`, `industrial`, `retail`, `hospitality`, `special_purpose`, `commercial_land`. | `apartment` |
| `country` | string | Country for structured searches. Allowed values: `germany`, `austria`, `spain`, `italy`. Direct URLs carry their own country context. | `germany` |
| `location` | string | City, state, ZIP code, neighborhood, region, or market. Leave empty for broader country-level discovery or when direct URLs already include the target location. | – |
| `min_price` | integer | Minimum listing price in euros. | – |
| `max_price` | integer | Maximum listing price in euros. | – |
| `min_floor_area` | integer | Minimum usable floor area in square meters. | – |
| `max_floor_area` | integer | Maximum usable floor area in square meters. | – |
| `min_bedroom` | integer | Minimum room count. | – |
| `max_bedroom` | integer | Maximum room count. | – |
| `excluded_listing_conditions` | array of strings | Listing conditions to exclude. Allowed values: `new_development`, `foreclosure_auction`, `off_market_accepting_offers`. | `[]` |
| `only_plus_listings` | boolean | Save only listings marked as Search+ verified. | `false` |
| `only_immoscout24` | boolean | Save only listings published directly on ImmoScout24. | `false` |
| `unit_amenities` | array of strings | Required amenities. Allowed values: `balcony`, `garden`, `garage_parking`, `fitted_kitchen`, `elevator`, `basement_storage`, `guest_bathroom`. | `[]` |
| `energy_efficiency_class` | array of strings | Required energy efficiency classes. Allowed values: `a_plus`, `a`, `b`, `c`, `d`, `e`, `f`, `g`, `h`. | `[]` |
| `sort_by` | string | Result ordering for structured searches. Allowed values: `default`, `price_desc`, `price_asc`, `newest`. Direct URLs keep the ordering already present in the URL. | `default` |
| `publication_date` | string | Publication window for recently added listings. Allowed values: `24_hours`, `3_days`, `7_days`, `2_weeks`, `1_month`. | – |
| `enrich_data` | boolean | Collect fuller listing records, such as descriptions, media, contact information, address details, and property attributes. Turn off for faster validation runs when standard fields are enough. | `false` |
| `limit` | integer | Maximum number of listings to save for each structured search or direct URL. Minimum value: `1`. | –; Console prefill: `100` |

### Choosing Inputs

Use structured inputs when you want a repeatable search based on `country`, `deal_type`, `property_type`, `location`, and supported filters. Use `start_url` when you already have a configured ImmoScout24 search URL, such as a saved search or a website search that combines several criteria.

Narrower filters, such as a specific location, price range, floor area range, room count, amenities, energy class, listing source, or publication window, produce more targeted datasets. Broader inputs improve discovery and are better for market sizing, inventory monitoring, or exploratory analysis. Start with a small `limit`, inspect the first records, and then increase coverage after confirming that the output matches your use case. Use `sort_by` for structured searches when ordering matters, such as newest listings first or price-based review.

### Example Inputs

#### Example: Munich rental monitoring

```json
{
  "country": "germany",
  "deal_type": "rent",
  "property_type": "apartment",
  "location": "Munich",
  "publication_date": "24_hours",
  "sort_by": "newest",
  "limit": 100,
  "enrich_data": false
}
````

#### Example: Direct URL collection

```json
{
  "start_url": [
    "https://www.immobilienscout24.at/regional/wien/wien/haus-mieten?numberOfRoomsFrom=2&primaryPriceTo=12000"
  ],
  "country": "austria",
  "deal_type": "rent",
  "property_type": "house",
  "limit": 75,
  "enrich_data": true
}
```

#### Example: Targeted purchase search with amenities

```json
{
  "country": "germany",
  "deal_type": "buy",
  "property_type": "apartment",
  "location": "Berlin",
  "min_price": 500000,
  "max_price": 1500000,
  "unit_amenities": ["balcony", "elevator"],
  "limit": 50
}
```

### Output

#### 9.1 Output destination

The actor writes results to an Apify dataset as JSON records. The dataset is designed for direct consumption by analytics tools, ETL pipelines, and downstream APIs with minimal post-processing.

When multiple entity types or record shapes exist, the README documents each shape separately based on the provided Example Output. The provided example output contains one top-level record shape: a property listing record.

#### 9.2 Record envelope and stable identifiers

Each property listing record is organized as a JSON object with top-level listing identity, property classification, pricing, location, property attributes, agency details, media, development details, listing dates, detailed attributes, and source context. The recommended idempotency key is `listing_id`, with `url` as a strong secondary key and `source_context.fingerprint` available for source-context comparison when present.

For deduplication and upserts, store records by `listing_id` and update the existing row when the same listing appears in repeated runs. Stable identifiers make records easier to merge, deduplicate, and sync across repeated runs into warehouses, CRMs, search indexes, or monitoring systems. `source_context.source_url` identifies the search page or input scope that produced the record, while `source_context.fingerprint` provides an additional repeat-run comparison value.

#### 9.3 Examples

##### Example: property listing

```json
{
  "listing_id": "900123456",
  "url": "https://www.immobilienscout24.de/expose/900123456",
  "title": "Familiengerecht wohnen: 4-Zimmer-Wohnung im Quartier Lindenhof",
  "real_estate_type": "search:ApartmentBuy",
  "deal_type": "buy",
  "property_type": "apartment",
  "pricing": {
    "price": {
      "value": 708000,
      "currency": "EUR",
      "marketing_type": "PURCHASE",
      "price_interval_type": "ONE_TIME_CHARGE"
    }
  },
  "location": {
    "street": "Beispielstraße",
    "house_number": "12",
    "street_and_house_number": "Beispielstraße 12",
    "postal_code": "10115",
    "city": "Musterstadt",
    "quarter": "Mitte",
    "region": "Berlin",
    "country": "Deutschland",
    "coordinates": {
      "latitude": 52.53211,
      "longitude": 13.38472
    },
    "precise_house_number": true,
    "coordinate_available": true,
    "show_full_address": true,
    "description": "Beispielstraße 12, Musterstadt, Berlin"
  },
  "property": {
    "living_space": 111.15,
    "rooms": 4,
    "construction_year": 2026,
    "energy_efficiency_class": "A+",
    "barrier_free": true,
    "amenities": {
      "built_in_kitchen": false,
      "balcony": true,
      "garden": false,
      "floorplan_available": true,
      "streaming_video_available": false
    },
    "features": [
      "balcony",
      "cellar",
      "handicappedAccessible",
      "hasNoCourtage",
      "lift"
    ]
  },
  "agency": {
    "company_name": "Musterstadt Development GmbH",
    "company_customer_id": "002.00000012345",
    "realtor_sso_id": "100000001",
    "logo_url": "https://pictures.immobilienscout24.de/usercontent/11111111-2222-4333-8444-555555555555.JPEG/ORIG/resize/%WIDTH%x%HEIGHT%%3E/quality/50",
    "private_offer": false,
    "contact": {
      "salutation": "NO_SALUTATION",
      "first_name": "Musterstadt",
      "last_name": "Vertriebsteam",
      "phone_number": "+49 30 12345678",
      "company": "Musterstadt Development GmbH",
      "details": {
        "contact_person": {
          "first_name": "Musterstadt",
          "last_name": "Vertriebsteam"
        },
        "phone_numbers": {
          "phone_number": {
            "contact_number": "+49 30 12345678"
          }
        },
        "contact_button": {
          "has_email": true,
          "disabled": false
        },
        "realtor_information": {
          "company_name": "Musterstadt Development GmbH",
          "realtor_logo": "https://pictures.immobilienscout24.de/usercontent/11111111-2222-4333-8444-555555555555.JPEG/ORIG/resize/150x150%3E/quality/60",
          "private_offer": false
        }
      }
    }
  },
  "media": {
    "images": [
      {
        "url": "https://pictures.immobilienscout24.de/listings/49e0b9db-7a0d-46b7-a2bb-e06d483c073c-2022448510.jpg/ORIG/legacy_thumbnail/%WIDTH%x%HEIGHT%/format/jpg/quality/50",
        "is_floorplan": false,
        "is_title_picture": false,
        "type": "common:Picture"
      },
      {
        "url": "https://pictures.immobilienscout24.de/listings/ebcd57df-4d6f-4d68-a1ee-49334d79aeaa-2022448512.jpg/ORIG/legacy_thumbnail/%WIDTH%x%HEIGHT%/format/jpg/quality/50",
        "is_floorplan": false,
        "is_title_picture": false,
        "type": "common:Picture"
      },
      {
        "url": "https://pictures.immobilienscout24.de/listings/025ad32a-e63f-48ac-80e5-36ce40d12ec3-2022448513.jpg/ORIG/legacy_thumbnail/%WIDTH%x%HEIGHT%/format/jpg/quality/50",
        "is_floorplan": false,
        "is_title_picture": false,
        "type": "common:Picture"
      },
      {
        "url": "https://pictures.immobilienscout24.de/listings/1527c6f3-bba9-4510-9009-48d3e1fd4bd4-2022448518.jpg/ORIG/legacy_thumbnail/%WIDTH%x%HEIGHT%/format/jpg/quality/50",
        "is_floorplan": false,
        "is_title_picture": false,
        "type": "common:Picture"
      },
      {
        "url": "https://pictures.immobilienscout24.de/listings/31e3321a-c0a4-4253-80e1-c6734ada77d4-2022448520.jpg/ORIG/legacy_thumbnail/%WIDTH%x%HEIGHT%/format/jpg/quality/50",
        "is_floorplan": false,
        "is_title_picture": false,
        "type": "common:Picture"
      },
      {
        "url": "https://pictures.immobilienscout24.de/listings/04e23d80-6955-45ed-8f12-8ec6bae57eba-2022448508.jpg/ORIG/legacy_thumbnail/%WIDTH%x%HEIGHT%/format/jpg/quality/50",
        "is_floorplan": false,
        "is_title_picture": false,
        "type": "common:Picture"
      },
      {
        "url": "https://pictures.immobilienscout24.de/listings/e94a9b05-5332-4362-a48d-5fb20b476e46-2022448928.jpg/ORIG/legacy_thumbnail/%WIDTH%x%HEIGHT%/format/jpg/quality/50",
        "is_floorplan": true,
        "is_title_picture": false,
        "type": "common:Picture"
      },
      {
        "id": "1",
        "caption": "Kinderzimmer",
        "url": "https://pictures.immobilienscout24.de/listings/49e0b9db-7a0d-46b7-a2bb-e06d483c073c-2022448510.jpg/ORIG/legacy_thumbnail/0x0/format/webp/quality/60",
        "urls": {
          "gallery": "https://pictures.immobilienscout24.de/listings/49e0b9db-7a0d-46b7-a2bb-e06d483c073c-2022448510.jpg/ORIG/legacy_thumbnail/0x0/format/webp/quality/60",
          "full_size": "https://pictures.immobilienscout24.de/listings/49e0b9db-7a0d-46b7-a2bb-e06d483c073c-2022448510.jpg/ORIG/resize/1106x830%3E/format/webp/quality/60",
          "thumbnail": "https://pictures.immobilienscout24.de/listings/49e0b9db-7a0d-46b7-a2bb-e06d483c073c-2022448510.jpg/ORIG/legacy_thumbnail/80x60/format/webp/quality/60"
        },
        "type": "PICTURE"
      },
      {
        "id": "2",
        "caption": "Schlafzimmer",
        "url": "https://pictures.immobilienscout24.de/listings/ebcd57df-4d6f-4d68-a1ee-49334d79aeaa-2022448512.jpg/ORIG/legacy_thumbnail/0x0/format/webp/quality/60",
        "urls": {
          "gallery": "https://pictures.immobilienscout24.de/listings/ebcd57df-4d6f-4d68-a1ee-49334d79aeaa-2022448512.jpg/ORIG/legacy_thumbnail/0x0/format/webp/quality/60",
          "full_size": "https://pictures.immobilienscout24.de/listings/ebcd57df-4d6f-4d68-a1ee-49334d79aeaa-2022448512.jpg/ORIG/resize/1106x830%3E/format/webp/quality/60",
          "thumbnail": "https://pictures.immobilienscout24.de/listings/ebcd57df-4d6f-4d68-a1ee-49334d79aeaa-2022448512.jpg/ORIG/legacy_thumbnail/80x60/format/webp/quality/60"
        },
        "type": "PICTURE"
      },
      {
        "id": "3",
        "caption": "Außenvisualisierung",
        "url": "https://pictures.immobilienscout24.de/listings/025ad32a-e63f-48ac-80e5-36ce40d12ec3-2022448513.jpg/ORIG/legacy_thumbnail/0x0/format/webp/quality/60",
        "urls": {
          "gallery": "https://pictures.immobilienscout24.de/listings/025ad32a-e63f-48ac-80e5-36ce40d12ec3-2022448513.jpg/ORIG/legacy_thumbnail/0x0/format/webp/quality/60",
          "full_size": "https://pictures.immobilienscout24.de/listings/025ad32a-e63f-48ac-80e5-36ce40d12ec3-2022448513.jpg/ORIG/resize/1106x830%3E/format/webp/quality/60",
          "thumbnail": "https://pictures.immobilienscout24.de/listings/025ad32a-e63f-48ac-80e5-36ce40d12ec3-2022448513.jpg/ORIG/legacy_thumbnail/80x60/format/webp/quality/60"
        },
        "type": "PICTURE"
      },
      {
        "id": "4",
        "caption": "Wohnbereich",
        "url": "https://pictures.immobilienscout24.de/listings/1527c6f3-bba9-4510-9009-48d3e1fd4bd4-2022448518.jpg/ORIG/legacy_thumbnail/0x0/format/webp/quality/60",
        "urls": {
          "gallery": "https://pictures.immobilienscout24.de/listings/1527c6f3-bba9-4510-9009-48d3e1fd4bd4-2022448518.jpg/ORIG/legacy_thumbnail/0x0/format/webp/quality/60",
          "full_size": "https://pictures.immobilienscout24.de/listings/1527c6f3-bba9-4510-9009-48d3e1fd4bd4-2022448518.jpg/ORIG/resize/1106x830%3E/format/webp/quality/60",
          "thumbnail": "https://pictures.immobilienscout24.de/listings/1527c6f3-bba9-4510-9009-48d3e1fd4bd4-2022448518.jpg/ORIG/legacy_thumbnail/80x60/format/webp/quality/60"
        },
        "type": "PICTURE"
      },
      {
        "id": "5",
        "caption": "Außenvisualisierung",
        "url": "https://pictures.immobilienscout24.de/listings/31e3321a-c0a4-4253-80e1-c6734ada77d4-2022448520.jpg/ORIG/legacy_thumbnail/0x0/format/webp/quality/60",
        "urls": {
          "gallery": "https://pictures.immobilienscout24.de/listings/31e3321a-c0a4-4253-80e1-c6734ada77d4-2022448520.jpg/ORIG/legacy_thumbnail/0x0/format/webp/quality/60",
          "full_size": "https://pictures.immobilienscout24.de/listings/31e3321a-c0a4-4253-80e1-c6734ada77d4-2022448520.jpg/ORIG/resize/1106x830%3E/format/webp/quality/60",
          "thumbnail": "https://pictures.immobilienscout24.de/listings/31e3321a-c0a4-4253-80e1-c6734ada77d4-2022448520.jpg/ORIG/legacy_thumbnail/80x60/format/webp/quality/60"
        },
        "type": "PICTURE"
      },
      {
        "id": "6",
        "caption": "Außenvisualisierung",
        "url": "https://pictures.immobilienscout24.de/listings/04e23d80-6955-45ed-8f12-8ec6bae57eba-2022448508.jpg/ORIG/legacy_thumbnail/0x0/format/webp/quality/60",
        "urls": {
          "gallery": "https://pictures.immobilienscout24.de/listings/04e23d80-6955-45ed-8f12-8ec6bae57eba-2022448508.jpg/ORIG/legacy_thumbnail/0x0/format/webp/quality/60",
          "full_size": "https://pictures.immobilienscout24.de/listings/04e23d80-6955-45ed-8f12-8ec6bae57eba-2022448508.jpg/ORIG/resize/1106x830%3E/format/webp/quality/60",
          "thumbnail": "https://pictures.immobilienscout24.de/listings/04e23d80-6955-45ed-8f12-8ec6bae57eba-2022448508.jpg/ORIG/legacy_thumbnail/80x60/format/webp/quality/60"
        },
        "type": "PICTURE"
      },
      {
        "id": "7",
        "caption": "Quartier_Lindenhof_Haus_A_WE_064",
        "url": "https://pictures.immobilienscout24.de/listings/e94a9b05-5332-4362-a48d-5fb20b476e46-2022448928.jpg/ORIG/legacy_thumbnail/0x0/format/webp/quality/60",
        "urls": {
          "gallery": "https://pictures.immobilienscout24.de/listings/e94a9b05-5332-4362-a48d-5fb20b476e46-2022448928.jpg/ORIG/legacy_thumbnail/0x0/format/webp/quality/60",
          "full_size": "https://pictures.immobilienscout24.de/listings/e94a9b05-5332-4362-a48d-5fb20b476e46-2022448928.jpg/ORIG/resize/1106x830%3E/format/webp/quality/60",
          "thumbnail": "https://pictures.immobilienscout24.de/listings/e94a9b05-5332-4362-a48d-5fb20b476e46-2022448928.jpg/ORIG/legacy_thumbnail/80x60/format/webp/quality/60"
        },
        "type": "FLOORPLAN"
      }
    ],
    "documents": [
      {
        "title": "Quartier_Lindenhof_Haus_A_WE_064",
        "url": "https://d2qfnj9mv71tll.cloudfront.net/11111111-2222-4333-8444-555555555555-2022449065.pdf"
      }
    ],
    "floor_plan_available": true,
    "image_count": 7,
    "total_items_count": 8
  },
  "development": {
    "id": "900001",
    "title": "Zwischen Stadtleben und grünem Innenhof",
    "name": "Quartier Lindenhof",
    "url": "https://www.immobilienscout24.de/neubau/musterstadt-development-gmbh/quartier-lindenhof/900001.html",
    "address": "Beispielstraße 12, 10115 Musterstadt",
    "is_presale": false,
    "attributes": {
      "preis": "274.000 - 1.350.000 €",
      "wohnfläche": "43,00 - 215,00 m²",
      "bezugsfrei ab": "August 2028",
      "wohneinheiten": 126,
      "ausstattung": "Gehoben",
      "zimmer": "1 - 7"
    },
    "picture": "https://pictures.immobilienscout24.de/dims3/S3/http://s3-eu-west-1.amazonaws.com/pda-pro-pictures-projectpictures-8hecgpgpb9fo/100000001/11111111-2222-4333-8444-555555555555.jpg"
  },
  "attributes": {
    "kaufpreis": "708.000 €",
    "wohnfläche": "111,15 m²",
    "zimmer": 4
  },
  "listing_dates": {
    "created": "2026-05-04T17:32:16.000+02:00",
    "published": "2026-05-04T17:32:16.000+02:00",
    "modified": "2026-05-04T14:09:52.080+02:00"
  },
  "details": {
    "listing_type": "XXL",
    "has_new_flag": true,
    "number_of_grouped_objects": 7,
    "courtage": {
      "has_courtage": "NO"
    },
    "description": {
      "object": "Mit dem Quartier Lindenhof entsteht in Musterstadt ein neues Wohnensemble mit klarer städtebaulicher Struktur und hoher Aufenthaltsqualität. Der Standort verbindet kurze Wege in die Innenstadt mit ruhigen Innenhöfen, begrünten Freiflächen und einer modernen Architektur. Fünf individuell gestaltete Gebäude prägen das Quartier und fügen sich zugleich in die gewachsene Umgebung ein. Versetzte Höhen, zurückhaltende Fassadenmaterialien und helle Gemeinschaftsflächen schaffen eine abwechslungsreiche Wohnatmosphäre. Ein offenes Konzept mit Wegen für Fußgänger und Radfahrer unterstreicht den Anspruch eines durchdachten Stadtquartiers.",
      "furnishing": "Die Wohnungen im Quartier Lindenhof sind durchgängig barrierearm konzipiert und bieten ein komfortables Wohngefühl. Parkettböden, Fußbodenheizung und großformatige Fenster sorgen für eine helle und hochwertige Ausstattung. Die Badezimmer sind mit modernen Keramikfliesen und langlebigen Armaturen ausgestattet. Alle Ebenen sind per Aufzug erreichbar, wodurch ein bequemer Zugang zur Tiefgarage, zu privaten Kellerräumen und zu gemeinschaftlichen Fahrradabstellräumen gewährleistet ist. Je nach Lage verfügen die Wohnungen über Balkon, Loggia, Terrasse oder Gartenanteil. Eckdaten der Wohnung • Wohnfläche: ca. 111 m² • Wohnen/Essen/Kochen: ca. 38 m² • Schlafzimmer: ca. 13 m² • Zimmer 1: ca. 11 m² • Zimmer 2: ca. 10 m² • Zwei Badezimmer • Abstellraum • Balkon: ca. 15 m² Ausstattungshighlights • Barrierearme Ausführung der Wohnungen • Energieeffiziente Fußbodenheizung • Hochwertiges Eichenparkett • Markenarmaturen und Keramikfliesen • Aufzug mit Zugang zu allen Ebenen • Tiefgarage mit PKW-Stellplätzen • Begrünte Innenhöfe und gemeinschaftliche Außenanlagen • Nachhaltiges Energiekonzept • Photovoltaikanlagen zur Stromerzeugung • Terrasse, Balkon, Loggia oder Gartenanteil je nach Lage",
      "location": "Das Quartier liegt in Musterstadt in einem gewachsenen städtischen Umfeld. Einkaufsmöglichkeiten, Gastronomie, Schulen und Kitas sind bequem erreichbar. Die Innenstadt ist fußläufig oder mit dem Fahrrad gut angebunden und bietet ein vielfältiges Angebot für den täglichen Bedarf. Gleichzeitig sorgen nahegelegene Grünflächen und Radwege für gute Freizeit- und Erholungsmöglichkeiten. Die Umgebung verbindet urbane Infrastruktur mit ruhigen Wohnstraßen und kurzen Wegen zu öffentlichen Verkehrsmitteln.",
      "other": "Provision trägt der Verkäufer."
    },
    "main_criteria": [
      {
        "type": "PRICE",
        "label_key": "mainCriteria.purchasePrice.label",
        "value": "708.000 €",
        "metadata": {
          "is_tenant_network_listing": false,
          "is_highlight": false,
          "is_price_on_request": false,
          "is_luxury_expose": false,
          "show_price_reduction": false,
          "price_per_sqm": "6.370 €/m²"
        }
      },
      {
        "type": "NUMBER_OF_ROOMS",
        "label_key": "mainCriteria.numberOfRooms.label",
        "value": 4
      },
      {
        "type": "LIVING_SPACE",
        "label_key": "mainCriteria.livingSpaceApproximated.label",
        "value": 111.15,
        "metadata": {
          "postfix": "m²"
        }
      },
      {
        "type": "MONTHLY_RATE_BUTTON",
        "metadata": {
          "cwid": "002.00000012345",
          "city": "Musterstadt",
          "expose_type": "APARTMENT_BUY",
          "postcode": "10115",
          "geo_code": 110000000000,
          "exclusive": true,
          "purchase_price": 708000,
          "expose_id": 900123456,
          "region": "Berlin",
          "has_courtage": false
        }
      },
      {
        "type": "COUNTER_OFFER_AREA",
        "label_key": "counterOfferArea"
      }
    ],
    "breadcrumbs": [
      {
        "title": "Wohnung kaufen",
        "url": "https://www.immobilienscout24.de/wohnen/eigentumswohnung.html"
      },
      {
        "title": "Berlin-Mitte",
        "url": "https://www.immobilienscout24.de/Suche/de/berlin/berlin-mitte/wohnung-kaufen"
      },
      {
        "title": "Berlin",
        "url": "https://www.immobilienscout24.de/Suche/de/berlin/wohnung-kaufen"
      },
      {
        "title": "Musterstadt",
        "url": "https://www.immobilienscout24.de/Suche/de/berlin/musterstadt/wohnung-kaufen"
      }
    ],
    "available_services": {
      "square_meters": 111.15,
      "number_of_rooms": 4,
      "zip_code": "10115",
      "is_gas_heating": false,
      "credit_card_service": true,
      "credit_wizard_service": false,
      "heating_costs_in_service_charge": false,
      "is_fiber_internet": false
    },
    "detail_attributes": {
      "heating_type": "floor_heating",
      "year_constructed": 2026,
      "firing_types": "electricity",
      "condition": "first_time_use",
      "interior_quality": "sophisticated",
      "parking_space": "no_information",
      "type_of_flat": "apartment",
      "floor": 3,
      "object_number": "QLH_A_WE_064",
      "living_space": 111.15,
      "number_of_rooms": "4",
      "purchase_price": 708000,
      "zip_code": "10115",
      "street": "Beispielstraße",
      "house_number": "12",
      "region1": "Berlin",
      "region2": "Berlin_Mitte",
      "region3": "Musterstadt",
      "courtage": false,
      "private_offer": false,
      "has_kitchen": false,
      "balcony": true,
      "cellar": true,
      "lift": true,
      "garden": false,
      "barrier_free": true,
      "rented": false
    },
    "object_number": "QLH_A_WE_064",
    "tags": [
      "Provisionsfrei für Kaufende",
      "Balkon/Terrasse",
      "Keller",
      "Aufzug",
      "Stufenlos"
    ]
  },
  "source_context": {
    "seed_id": "search_buy_apartment_germany_da39a3ee5e6b4b0d3255",
    "seed_type": "search",
    "country": "germany",
    "page_index": 1,
    "source_url": "https://www.immobilienscout24.de/Suche/de/wohnung-kaufen?enteredFrom=filter_removals",
    "loaded_url": "https://www.immobilienscout24.de/Suche/de/wohnung-kaufen?enteredFrom=filter_removals",
    "domain": "www.immobilienscout24.de",
    "fingerprint": "4affa6073cc88076c9cd",
    "scraped_time": "2026-05-19T09:45:13.965942Z"
  }
}
```

### Field Reference

#### Property listing record

**listing\_id** *(string, required)*: Stable ImmoScout24 listing identifier.

**url** *(string, required)*: Public listing URL.

**title** *(string, optional)*: Listing headline.

**real\_estate\_type** *(string, optional)*: Source classification for the listing type.

**deal\_type** *(string, required)*: Transaction mode, such as `buy` or `rent`.

**property\_type** *(string, required)*: Normalized property segment, such as `apartment`.

**pricing.price.value** *(number, optional)*: Listing price amount.

**pricing.price.currency** *(string, optional)*: Price currency, such as `EUR`.

**pricing.price.marketing\_type** *(string, optional)*: Price marketing classification.

**pricing.price.price\_interval\_type** *(string, optional)*: Price interval classification.

**location.street** *(string, optional)*: Street name when available.

**location.house\_number** *(string, optional)*: House number when available.

**location.street\_and\_house\_number** *(string, optional)*: Combined street and house number.

**location.postal\_code** *(string, optional)*: Postal code.

**location.city** *(string, optional)*: City or municipality.

**location.quarter** *(string, optional)*: Neighborhood, quarter, or local area.

**location.region** *(string, optional)*: Region, state, canton, or comparable administrative area.

**location.country** *(string, optional)*: Country label as provided in the listing.

**location.coordinates.latitude / location.coordinates.longitude** *(number, optional)*: Geographic coordinates when available.

**location.precise\_house\_number** *(boolean, optional)*: Whether the house number is precise.

**location.coordinate\_available** *(boolean, optional)*: Whether coordinates are available.

**location.show\_full\_address** *(boolean, optional)*: Whether the listing exposes a full address.

**location.description** *(string, optional)*: Human-readable address or location description.

**property.living\_space** *(number, optional)*: Living area in square meters.

**property.rooms** *(number, optional)*: Number of rooms.

**property.construction\_year** *(number, optional)*: Construction year.

**property.energy\_efficiency\_class** *(string, optional)*: Energy efficiency class.

**property.barrier\_free** *(boolean, optional)*: Whether the property is marked as barrier-free.

**property.amenities.built\_in\_kitchen** *(boolean, optional)*: Built-in kitchen indicator.

**property.amenities.balcony** *(boolean, optional)*: Balcony indicator.

**property.amenities.garden** *(boolean, optional)*: Garden indicator.

**property.amenities.floorplan\_available** *(boolean, optional)*: Whether a floor plan is available.

**property.amenities.streaming\_video\_available** *(boolean, optional)*: Whether streaming video is available.

**property.features** *(array of strings, optional)*: Feature labels or normalized amenity values.

**agency.company\_name** *(string, optional)*: Agency or company name.

**agency.company\_customer\_id** *(string, optional)*: Public company customer identifier when available.

**agency.realtor\_sso\_id** *(string, optional)*: Public realtor identifier when available.

**agency.logo\_url** *(string, optional)*: Agency logo URL.

**agency.private\_offer** *(boolean, optional)*: Whether the listing is marked as a private offer.

**agency.contact.salutation** *(string, optional)*: Contact salutation.

**agency.contact.first\_name / agency.contact.last\_name** *(string, optional)*: Public contact name fields.

**agency.contact.phone\_number** *(string, optional)*: Public phone number when visible.

**agency.contact.company** *(string, optional)*: Contact company name.

**agency.contact.details.contact\_person.first\_name / agency.contact.details.contact\_person.last\_name** *(string, optional)*: Nested contact person name fields.

**agency.contact.details.phone\_numbers.phone\_number.contact\_number** *(string, optional)*: Nested public contact number.

**agency.contact.details.contact\_button.has\_email** *(boolean, optional)*: Whether the listing exposes an email contact option.

**agency.contact.details.contact\_button.disabled** *(boolean, optional)*: Whether the contact button is disabled.

**agency.contact.details.realtor\_information.company\_name** *(string, optional)*: Realtor company name.

**agency.contact.details.realtor\_information.realtor\_logo** *(string, optional)*: Realtor logo URL.

**agency.contact.details.realtor\_information.private\_offer** *(boolean, optional)*: Private-offer flag in realtor information.

**media.images** *(array of objects, optional)*: Listing image and floor plan media items.

**media.images\[].id** *(string, optional)*: Media item identifier when available.

**media.images\[].caption** *(string, optional)*: Media caption.

**media.images\[].url** *(string, optional)*: Media URL.

**media.images\[].urls.gallery** *(string, optional)*: Gallery image URL.

**media.images\[].urls.full\_size** *(string, optional)*: Full-size image URL.

**media.images\[].urls.thumbnail** *(string, optional)*: Thumbnail image URL.

**media.images\[].is\_floorplan** *(boolean, optional)*: Whether the media item is a floor plan.

**media.images\[].is\_title\_picture** *(boolean, optional)*: Whether the media item is the title image.

**media.images\[].type** *(string, optional)*: Media type label, such as `PICTURE`, `FLOORPLAN`, or `common:Picture`.

**media.documents** *(array of objects, optional)*: Listing documents.

**media.documents\[].title** *(string, optional)*: Document title.

**media.documents\[].url** *(string, optional)*: Document URL.

**media.floor\_plan\_available** *(boolean, optional)*: Whether a floor plan is available.

**media.image\_count** *(number, optional)*: Number of image items.

**media.total\_items\_count** *(number, optional)*: Total media item count.

**development.id** *(string, optional)*: Development identifier when the listing belongs to a development.

**development.title** *(string, optional)*: Development headline.

**development.name** *(string, optional)*: Development name.

**development.url** *(string, optional)*: Public development URL.

**development.address** *(string, optional)*: Development address.

**development.is\_presale** *(boolean, optional)*: Presale indicator.

**development.attributes.preis** *(string, optional)*: Development price range.

**development.attributes.wohnfläche** *(string, optional)*: Development living-area range.

**development.attributes.bezugsfrei ab** *(string, optional)*: Availability timing.

**development.attributes.wohneinheiten** *(number, optional)*: Number of residential units.

**development.attributes.ausstattung** *(string, optional)*: Fit-out or quality label.

**development.attributes.zimmer** *(string, optional)*: Room range.

**development.picture** *(string, optional)*: Development image URL.

**attributes.kaufpreis** *(string, optional)*: Display purchase price.

**attributes.wohnfläche** *(string, optional)*: Display living area.

**attributes.zimmer** *(number, optional)*: Display room count.

**listing\_dates.created** *(string, optional)*: Listing creation timestamp.

**listing\_dates.published** *(string, optional)*: Listing publication timestamp.

**listing\_dates.modified** *(string, optional)*: Listing modification timestamp.

**details.listing\_type** *(string, optional)*: Listing presentation type.

**details.has\_new\_flag** *(boolean, optional)*: Whether the listing is marked as new.

**details.number\_of\_grouped\_objects** *(number, optional)*: Number of grouped objects when available.

**details.courtage.has\_courtage** *(string, optional)*: Brokerage-fee indicator.

**details.description.object** *(string, optional)*: Main property description.

**details.description.furnishing** *(string, optional)*: Furnishing and fit-out description.

**details.description.location** *(string, optional)*: Listing-provided location description.

**details.description.other** *(string, optional)*: Additional listing notes.

**details.main\_criteria** *(array of objects, optional)*: Main listing criteria shown as typed label-value entries.

**details.main\_criteria\[].type** *(string, optional)*: Criterion type.

**details.main\_criteria\[].label\_key** *(string, optional)*: Criterion label key.

**details.main\_criteria\[].value** *(string, number, or boolean, optional)*: Criterion value.

**details.main\_criteria\[].metadata.is\_tenant\_network\_listing** *(boolean, optional)*: Tenant-network listing indicator.

**details.main\_criteria\[].metadata.is\_highlight** *(boolean, optional)*: Highlight indicator.

**details.main\_criteria\[].metadata.is\_price\_on\_request** *(boolean, optional)*: Price-on-request indicator.

**details.main\_criteria\[].metadata.is\_luxury\_expose** *(boolean, optional)*: Luxury-listing indicator.

**details.main\_criteria\[].metadata.show\_price\_reduction** *(boolean, optional)*: Price-reduction display indicator.

**details.main\_criteria\[].metadata.price\_per\_sqm** *(string, optional)*: Price per square meter.

**details.main\_criteria\[].metadata.postfix** *(string, optional)*: Value suffix, such as `m²`.

**details.main\_criteria\[].metadata.cwid** *(string, optional)*: Company identifier associated with the criterion when available.

**details.main\_criteria\[].metadata.city** *(string, optional)*: City in criterion metadata.

**details.main\_criteria\[].metadata.expose\_type** *(string, optional)*: Listing exposure type.

**details.main\_criteria\[].metadata.postcode** *(string, optional)*: Postal code in criterion metadata.

**details.main\_criteria\[].metadata.geo\_code** *(number, optional)*: Geographic code.

**details.main\_criteria\[].metadata.exclusive** *(boolean, optional)*: Exclusivity indicator.

**details.main\_criteria\[].metadata.purchase\_price** *(number, optional)*: Purchase price in metadata.

**details.main\_criteria\[].metadata.expose\_id** *(number, optional)*: Listing ID in metadata.

**details.main\_criteria\[].metadata.region** *(string, optional)*: Region in criterion metadata.

**details.main\_criteria\[].metadata.has\_courtage** *(boolean, optional)*: Brokerage-fee indicator in metadata.

**details.breadcrumbs** *(array of objects, optional)*: Listing navigation breadcrumbs.

**details.breadcrumbs\[].title** *(string, optional)*: Breadcrumb title.

**details.breadcrumbs\[].url** *(string, optional)*: Breadcrumb URL.

**details.available\_services.square\_meters** *(number, optional)*: Square-meter value used by available services.

**details.available\_services.number\_of\_rooms** *(number, optional)*: Room count used by available services.

**details.available\_services.zip\_code** *(string, optional)*: ZIP code used by available services.

**details.available\_services.is\_gas\_heating** *(boolean, optional)*: Gas-heating indicator.

**details.available\_services.credit\_card\_service** *(boolean, optional)*: Whether a credit card service is indicated.

**details.available\_services.credit\_wizard\_service** *(boolean, optional)*: Whether a credit wizard service is indicated.

**details.available\_services.heating\_costs\_in\_service\_charge** *(boolean, optional)*: Whether heating costs are included in service charges.

**details.available\_services.is\_fiber\_internet** *(boolean, optional)*: Fiber internet indicator.

**details.detail\_attributes.heating\_type** *(string, optional)*: Heating type.

**details.detail\_attributes.year\_constructed** *(number, optional)*: Construction year.

**details.detail\_attributes.firing\_types** *(string, optional)*: Energy or firing type.

**details.detail\_attributes.condition** *(string, optional)*: Property condition.

**details.detail\_attributes.interior\_quality** *(string, optional)*: Interior quality label.

**details.detail\_attributes.parking\_space** *(string, optional)*: Parking information.

**details.detail\_attributes.type\_of\_flat** *(string, optional)*: Flat type.

**details.detail\_attributes.floor** *(number, optional)*: Floor number.

**details.detail\_attributes.object\_number** *(string, optional)*: Object number.

**details.detail\_attributes.living\_space** *(number, optional)*: Living space in square meters.

**details.detail\_attributes.number\_of\_rooms** *(string, optional)*: Room count.

**details.detail\_attributes.purchase\_price** *(number, optional)*: Purchase price amount.

**details.detail\_attributes.zip\_code** *(string, optional)*: ZIP code.

**details.detail\_attributes.street** *(string, optional)*: Street.

**details.detail\_attributes.house\_number** *(string, optional)*: House number.

**details.detail\_attributes.region1 / details.detail\_attributes.region2 / details.detail\_attributes.region3** *(string, optional)*: Region hierarchy values.

**details.detail\_attributes.courtage** *(boolean, optional)*: Brokerage-fee indicator.

**details.detail\_attributes.private\_offer** *(boolean, optional)*: Private-offer indicator.

**details.detail\_attributes.has\_kitchen** *(boolean, optional)*: Kitchen indicator.

**details.detail\_attributes.balcony** *(boolean, optional)*: Balcony indicator.

**details.detail\_attributes.cellar** *(boolean, optional)*: Cellar indicator.

**details.detail\_attributes.lift** *(boolean, optional)*: Lift or elevator indicator.

**details.detail\_attributes.garden** *(boolean, optional)*: Garden indicator.

**details.detail\_attributes.barrier\_free** *(boolean, optional)*: Barrier-free indicator.

**details.detail\_attributes.rented** *(boolean, optional)*: Whether the property is marked as rented.

**details.object\_number** *(string, optional)*: Listing object number.

**details.tags** *(array of strings, optional)*: Display tags associated with the listing.

**source\_context.seed\_id** *(string, optional)*: Identifier for the input scope that produced the record.

**source\_context.seed\_type** *(string, optional)*: Source input type, such as `search`.

**source\_context.country** *(string, optional)*: Country context for the record.

**source\_context.page\_index** *(number, optional)*: Result page index associated with the record.

**source\_context.source\_url** *(string, optional)*: Search or source URL associated with the record.

**source\_context.loaded\_url** *(string, optional)*: Loaded public URL associated with the record.

**source\_context.domain** *(string, optional)*: Source domain.

**source\_context.fingerprint** *(string, optional)*: Additional stable comparison value for source-context deduplication.

**source\_context.scraped\_time** *(string, optional)*: Timestamp when the record was collected.

### Data Quality, Guarantees, And Handling

- **Structured records:** results are normalized into predictable JSON objects for downstream use.
- **Best-effort extraction:** fields may vary by region, session, availability, account visibility, listing type, source data quality, or UI experiments.
- **Optional fields:** null-check optional fields in downstream code, especially media, contact, development, detailed attributes, and address-level fields.
- **Deduplication:** use `listing_id` as the strongest stable key, with `url` and `source_context.fingerprint` as useful secondary comparison values when present.
- **Freshness:** results reflect the publicly available data at run time.
- **Repeated runs:** use the recommended idempotency key when syncing data into warehouses, CRMs, search indexes, or reporting systems.

### Tips For Best Results

- Start with a small `limit` to validate the output shape before scaling up.
- Use one country, location, deal type, and property segment per run when you need clean segmentation.
- Leave optional filters empty when the goal is broad discovery.
- Add price, floor area, room count, amenity, energy class, and publication-date filters gradually to understand how each field changes coverage.
- Use `start_url` for saved searches or complex website searches you want to repeat exactly.
- Enable `enrich_data` when your workflow needs descriptions, media, contact information, address details, and deeper property attributes.
- Use `listing_id` for deduplication when storing results over time.

### How to Run on Apify

1. Open the Actor in Apify Console.
2. Configure the available input fields for the target country, listing mode, property type, location, filters, or direct URLs.
3. Set the maximum number of outputs to collect with `limit`.
4. Click **Start** and wait for the run to finish.
5. Open the dataset and inspect the first records.
6. Download results in JSON, CSV, Excel, or other supported formats.

### Scheduling & Automation

#### Scheduling

**Automated Data Collection**

Use Apify schedules to run the actor automatically and keep listing datasets fresh for dashboards, enrichment workflows, and monitoring systems. Recurring runs are especially useful for newly published listings, regional inventory tracking, and price or availability monitoring.

- Navigate to **Schedules** in Apify Console
- Create a new schedule (daily, weekly, or custom cron)
- Configure input parameters
- Enable notifications for run completion
- Add webhooks for automated processing

#### Integration Options

- **BI dashboards:** monitor pricing, supply, publication windows, location coverage, and property attributes over time.
- **Data warehouses:** store normalized listing records for historical analysis, segmentation, forecasting, and operational reporting.
- **CRM enrichment:** sync public agency, contact, listing, development, and property attributes into account or lead records.
- **Google Sheets or Airtable:** review smaller market slices, validate target lists, and share curated listing datasets with business users.
- **Webhooks:** trigger ingestion, alerting, validation, or notification workflows after each completed run.
- **ETL and enrichment pipelines:** combine property records with portfolio, territory, or customer datasets.

### Export Formats And Downstream Use

Apify datasets can be exported from the Console or consumed by downstream systems for operational use. Choose the format that matches your review, automation, or analytics workflow.

- **JSON:** for APIs, applications, and data pipelines
- **CSV or Excel:** for spreadsheet workflows and manual review
- **API access:** for automated ingestion into company systems
- **BI and warehouses:** for reporting, dashboards, and historical analysis

### Performance

The following run times are estimates:

- **Small runs (< 1,000 outputs):** ~3–5 minutes
- **Medium runs (1,000–5,000 outputs):** ~5–15 minutes
- **Large runs (5,000+ outputs):** ~15–30 minutes

Execution time varies based on filters, result volume, and how much information is returned per record. Highly filtered runs can finish faster, while broad discovery or detail-rich records may take longer.

### Limitations

- Availability depends on what <https://www.immobilienscout24.de> and <https://www.immobilienscout24.at> publicly expose at run time.
- Some optional fields may be missing on sparse records, private offers, regional variants, or listings without media, contact, or development information.
- Very broad searches may take longer or require higher `limit` values to collect the desired number of records.
- Target-side changes can affect field availability, labels, naming, or visibility.
- Regional, account, or availability differences may change visible results.
- Direct URLs should be public ImmoScout24 search result URLs that already represent the scope you want to collect.

### Troubleshooting

- **No results returned:** check filters, location or category spelling, direct URLs, and whether the target site has matching public records.
- **Fewer results than expected:** broaden filters, raise `limit`, or verify that enough matching listings are publicly available.
- **Some fields are empty:** optional fields depend on what each listing publicly provides.
- **Run takes longer than expected:** reduce scope, lower `limit` for validation, or split broad collection into smaller country, location, or segment runs.
- **Output changed:** compare the current output with the field reference and report a small sample if support is needed.

### FAQ

#### What data does this actor collect?

It collects public ImmoScout24 property listing data, including listing IDs, URLs, titles, pricing, locations, property attributes, agency details, contact information when visible, media, development details, listing dates, and source context.

#### Can I filter by location, category, date, price, or other criteria?

Yes. The actor supports country, buy or rent mode, property type, location, price range, floor area range, room count, excluded listing conditions, listing source filters, amenities, energy class, publication window, sorting, enrichment, and maximum result limits.

#### Can I use direct ImmoScout24 search URLs?

Yes. Use `start_url` when you already have one or more public ImmoScout24 search result URLs. This is useful for saved searches or website searches that already contain the scope you want.

#### Why did I receive fewer results than my limit?

The `limit` is a maximum, not a guarantee. You may receive fewer records if the selected scope has fewer public matches, filters are narrow, the location is sparse, or listings are not visible at run time.

#### Can I schedule recurring runs?

Yes. You can create schedules in Apify Console for daily, weekly, or custom recurring runs and use notifications or webhooks after completion.

#### How do I avoid duplicates across runs?

Use `listing_id` as the primary idempotency key. If needed, compare `url` and `source_context.fingerprint` as secondary values when syncing repeated runs.

#### Can I export the data to CSV, Excel, or JSON?

Yes. Apify datasets support exports to JSON, CSV, Excel, and other formats available in the Apify Console.

#### Does this actor collect private data?

The actor is intended for publicly available listing information. Contact details may appear only when they are publicly visible in the listing data returned at run time.

#### What should I include when reporting an issue?

Include the input used, with sensitive values removed if applicable, the run ID, expected versus actual behavior, and a small output sample if it helps explain the issue.

### Compliance & Ethics

#### Responsible Data Collection

This actor collects publicly available **real estate listing** information from **https://www.immobilienscout24.de and https://www.immobilienscout24.at** for legitimate business purposes. Users are responsible for ensuring that their use of collected data complies with applicable laws, regulations, contractual obligations, and platform terms.

Legitimate use cases include:

- **Real estate and property technology** research and market analysis
- **Portfolio, pricing, and inventory monitoring**
- **CRM, BI, and analytics enrichment**

This section is informational and not legal advice.

#### Best Practices

- Use collected data in accordance with applicable laws, regulations, and the target site’s terms
- Respect individual privacy and personal information
- Use data responsibly and avoid disruptive or excessive collection
- Do not use this actor for spamming, harassment, or other harmful purposes
- Follow relevant data protection requirements where applicable, such as GDPR and CCPA

### Support

For help, use the Issues tab or the actor page. Include the input used, with sensitive values redacted if applicable, the run ID, expected versus actual behavior, and a small output sample when it helps clarify the issue.

# Actor input Schema

## `start_url` (type: `array`):

Optional ImmoScout24 search results URLs from https://www.immobilienscout24.de or https://www.immobilienscout24.at. Use this for saved searches or complex website filters; Max results applies separately to each URL.

## `deal_type` (type: `string`):

Select whether the actor should collect properties offered for purchase or for rent.

## `property_type` (type: `string`):

Select the property segment that best matches your use case. Broader options can discover more listings, while narrower options keep the dataset focused.

## `country` (type: `string`):

Choose the ImmoScout24 country to search. Direct Start URLs are detected from their URL country path.

## `location` (type: `string`):

Enter a city, state, ZIP code, neighborhood, or market to search on ImmobilienScout24. Leave this empty when you want a broad country-wide search or when your Start URLs already contain the desired location.

## `min_price` (type: `integer`):

Enter the minimum listing price in euros. Leave empty to include listings below any price threshold.

## `max_price` (type: `integer`):

Enter the maximum listing price in euros. Leave empty to include listings above any price threshold.

## `min_floor_area` (type: `integer`):

Enter the minimum usable floor area in square meters. Leave empty to include smaller listings.

## `max_floor_area` (type: `integer`):

Enter the maximum usable floor area in square meters. Leave empty to include larger listings.

## `min_bedroom` (type: `integer`):

Enter the minimum number of rooms to include. Leave empty to avoid applying a lower room-count filter.

## `max_bedroom` (type: `integer`):

Enter the maximum number of rooms to include. Leave empty to avoid applying an upper room-count filter.

## `excluded_listing_conditions` (type: `array`):

Select any listing conditions you want removed from the result set. Leave empty to keep all supported listing conditions.

## `only_plus_listings` (type: `boolean`):

Turn this on to save only listings marked as Search+ verified on ImmoScout24. Leave it off to keep both verified and non-verified listings.

## `only_immoscout24` (type: `boolean`):

Turn this on to save only listings published directly on ImmoScout24. Leave it off to include all supported listing sources.

## `unit_amenities` (type: `array`):

Select one or more amenities that each listing should include. More required amenities usually produce a narrower, more targeted dataset.

## `energy_efficiency_class` (type: `array`):

Choose one or more energy efficiency classes to include. Leave empty to avoid filtering by energy class.

## `sort_by` (type: `string`):

Select how structured searches should be ordered. Direct Start URL inputs keep the sorting already present in each URL.

## `publication_date` (type: `string`):

Only collect listings first published within the selected timeframe. This is useful for monitoring fresh inventory rather than reviewing the full market.

## `enrich_data` (type: `boolean`):

Enable this for more complete property listings. This may make the run slower because the actor may spend more time collecting details for each result. Turn it off for faster runs when the standard result fields are enough.

## `limit` (type: `integer`):

Set the maximum number of listings to save for each structured search or direct Start URL. Leave empty to collect as many matching listings as are available.

## Actor input object example

```json
{
  "start_url": [
    "https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-kaufen",
    "https://www.immobilienscout24.at/regional/wien/wien/haus-mieten?numberOfRoomsFrom=2&primaryPriceTo=12000"
  ],
  "deal_type": "buy",
  "property_type": "apartment",
  "country": "germany",
  "excluded_listing_conditions": [],
  "only_plus_listings": false,
  "only_immoscout24": false,
  "unit_amenities": [],
  "energy_efficiency_class": [],
  "sort_by": "default",
  "enrich_data": false,
  "limit": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "start_url": [
        "https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-kaufen",
        "https://www.immobilienscout24.at/regional/wien/wien/haus-mieten?numberOfRoomsFrom=2&primaryPriceTo=12000"
    ],
    "limit": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("fatihtahta/immobilienscout24-scraper").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 = {
    "start_url": [
        "https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-kaufen",
        "https://www.immobilienscout24.at/regional/wien/wien/haus-mieten?numberOfRoomsFrom=2&primaryPriceTo=12000",
    ],
    "limit": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("fatihtahta/immobilienscout24-scraper").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 '{
  "start_url": [
    "https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-kaufen",
    "https://www.immobilienscout24.at/regional/wien/wien/haus-mieten?numberOfRoomsFrom=2&primaryPriceTo=12000"
  ],
  "limit": 100
}' |
apify call fatihtahta/immobilienscout24-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Immoscout24 Scraper with Contacts | All In One",
        "description": "Extract ImmobilienScout24 listings across Germany, Austria, and Switzerland with rich property detail, agency contacts, media, development data, and flexible market filters. Built for enterprise-grade real estate intelligence, lead enrichment, and automated analytics pipelines.",
        "version": "0.0",
        "x-build-id": "RMT5AbRCszgJRNTdr"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fatihtahta~immobilienscout24-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fatihtahta-immobilienscout24-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/fatihtahta~immobilienscout24-scraper/runs": {
            "post": {
                "operationId": "runs-sync-fatihtahta-immobilienscout24-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/fatihtahta~immobilienscout24-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-fatihtahta-immobilienscout24-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": {
                    "start_url": {
                        "title": "Add ImmoScout24 Search URLs",
                        "type": "array",
                        "description": "Optional ImmoScout24 search results URLs from https://www.immobilienscout24.de or https://www.immobilienscout24.at. Use this for saved searches or complex website filters; Max results applies separately to each URL.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "deal_type": {
                        "title": "Choose Buy or Rent Listings",
                        "enum": [
                            "buy",
                            "rent"
                        ],
                        "type": "string",
                        "description": "Select whether the actor should collect properties offered for purchase or for rent.",
                        "default": "buy"
                    },
                    "property_type": {
                        "title": "Choose Property Type",
                        "enum": [
                            "apartment",
                            "house",
                            "house_and_apartment",
                            "land",
                            "new_development",
                            "garage_parking",
                            "investment_property",
                            "foreclosure_auction",
                            "office",
                            "industrial",
                            "retail",
                            "hospitality",
                            "special_purpose",
                            "commercial_land"
                        ],
                        "type": "string",
                        "description": "Select the property segment that best matches your use case. Broader options can discover more listings, while narrower options keep the dataset focused.",
                        "default": "apartment"
                    },
                    "country": {
                        "title": "Choose Country",
                        "enum": [
                            "germany",
                            "austria",
                            "spain",
                            "italy"
                        ],
                        "type": "string",
                        "description": "Choose the ImmoScout24 country to search. Direct Start URLs are detected from their URL country path.",
                        "default": "germany"
                    },
                    "location": {
                        "title": "Add a Location",
                        "type": "string",
                        "description": "Enter a city, state, ZIP code, neighborhood, or market to search on ImmobilienScout24. Leave this empty when you want a broad country-wide search or when your Start URLs already contain the desired location."
                    },
                    "min_price": {
                        "title": "Set Minimum Price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Enter the minimum listing price in euros. Leave empty to include listings below any price threshold."
                    },
                    "max_price": {
                        "title": "Set Maximum Price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Enter the maximum listing price in euros. Leave empty to include listings above any price threshold."
                    },
                    "min_floor_area": {
                        "title": "Set Minimum Floor Area",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Enter the minimum usable floor area in square meters. Leave empty to include smaller listings."
                    },
                    "max_floor_area": {
                        "title": "Set Maximum Floor Area",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Enter the maximum usable floor area in square meters. Leave empty to include larger listings."
                    },
                    "min_bedroom": {
                        "title": "Set Minimum Rooms",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Enter the minimum number of rooms to include. Leave empty to avoid applying a lower room-count filter."
                    },
                    "max_bedroom": {
                        "title": "Set Maximum Rooms",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Enter the maximum number of rooms to include. Leave empty to avoid applying an upper room-count filter."
                    },
                    "excluded_listing_conditions": {
                        "title": "Exclude Listing Conditions",
                        "type": "array",
                        "description": "Select any listing conditions you want removed from the result set. Leave empty to keep all supported listing conditions.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "new_development",
                                "foreclosure_auction",
                                "off_market_accepting_offers"
                            ],
                            "enumTitles": [
                                "New developments | exclude",
                                "Foreclosure auctions | exclude",
                                "Off-market offers | exclude"
                            ]
                        },
                        "default": []
                    },
                    "only_plus_listings": {
                        "title": "Include Only Search+ Verified Listings",
                        "type": "boolean",
                        "description": "Turn this on to save only listings marked as Search+ verified on ImmoScout24. Leave it off to keep both verified and non-verified listings.",
                        "default": false
                    },
                    "only_immoscout24": {
                        "title": "Include Only ImmoScout24-Published Listings",
                        "type": "boolean",
                        "description": "Turn this on to save only listings published directly on ImmoScout24. Leave it off to include all supported listing sources.",
                        "default": false
                    },
                    "unit_amenities": {
                        "title": "Require Amenities",
                        "type": "array",
                        "description": "Select one or more amenities that each listing should include. More required amenities usually produce a narrower, more targeted dataset.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "balcony",
                                "garden",
                                "garage_parking",
                                "fitted_kitchen",
                                "elevator",
                                "basement_storage",
                                "guest_bathroom"
                            ],
                            "enumTitles": [
                                "Balcony",
                                "Garden",
                                "Garage or parking space",
                                "Fitted kitchen",
                                "Elevator",
                                "Basement storage",
                                "Guest bathroom"
                            ]
                        },
                        "default": []
                    },
                    "energy_efficiency_class": {
                        "title": "Require Energy Classes",
                        "type": "array",
                        "description": "Choose one or more energy efficiency classes to include. Leave empty to avoid filtering by energy class.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "a_plus",
                                "a",
                                "b",
                                "c",
                                "d",
                                "e",
                                "f",
                                "g",
                                "h"
                            ],
                            "enumTitles": [
                                "A+",
                                "A",
                                "B",
                                "C",
                                "D",
                                "E",
                                "F",
                                "G",
                                "H"
                            ]
                        },
                        "default": []
                    },
                    "sort_by": {
                        "title": "Choose Result Order",
                        "enum": [
                            "default",
                            "price_desc",
                            "price_asc",
                            "newest"
                        ],
                        "type": "string",
                        "description": "Select how structured searches should be ordered. Direct Start URL inputs keep the sorting already present in each URL.",
                        "default": "default"
                    },
                    "publication_date": {
                        "title": "Choose Publication Window",
                        "enum": [
                            "24_hours",
                            "3_days",
                            "7_days",
                            "2_weeks",
                            "1_month"
                        ],
                        "type": "string",
                        "description": "Only collect listings first published within the selected timeframe. This is useful for monitoring fresh inventory rather than reviewing the full market."
                    },
                    "enrich_data": {
                        "title": "Collect Richer Property Listing Details",
                        "type": "boolean",
                        "description": "Enable this for more complete property listings. This may make the run slower because the actor may spend more time collecting details for each result. Turn it off for faster runs when the standard result fields are enough.",
                        "default": false
                    },
                    "limit": {
                        "title": "Set Max Results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Set the maximum number of listings to save for each structured search or direct Start URL. Leave empty to collect as many matching listings as are available."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
