# Immobilienscout24 | Search | Detail(s) |Scraper| $2/1K Scraper (`memo23/immobilienscout24-scraper`)

Extract comprehensive German real estate data: property details (rent, size, rooms, location), high-res images, agent info with verification status, pricing insights, amenities (balcony, kitchen, cellar), contact forms, market analytics, and 40+ targeting parameters for research.

- **URL**: https://beta-securitybyobscurity.apify.com/memo23/immobilienscout24-scraper.md
- **Developed by:** [Muhamed Didovic](https://beta-securitybyobscurity.apify.com/memo23) (community)
- **Categories:** Real estate, Automation, Lead generation
- **Stats:** 49 total users, 29 monthly users, 95.9% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 results

This Actor is paid per result. You are not charged for the Apify platform usage, but only a fixed price for dataset items the Actor outputs.

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

# README

## Immobilienscout24.de Scraper

**Unlock the Full Power of immobilienscout24.de Real Estate Data** - The only scraper you need to track, analyze, and understand property listings on immobilienscout24.de with enterprise-grade reliability and precision. Whether you're monitoring rental market trends, tracking specific property types across German cities, or conducting comprehensive market research, our scraper delivers detailed, real-time insights while saving you time and resources.

*"From studio apartments to luxury properties, we turn immobilienscout24.de's data into your competitive advantage."*

### Overview

The ImmoScout24.de Scraper is your go-to tool for extracting comprehensive real estate data from Germany's leading property platform. Ideal for real estate agents, market analysts, property investors, and researchers, it tracks detailed listing information, pricing data, and property specifications across all major German cities. With easy setup and structured JSON export, it's perfect for anyone looking to gather comprehensive real estate data from ImmoScout24.de.

### What does ImmoScout24.de Scraper do?

The ImmoScout24.de Scraper is a powerful tool that enables you to:

#### Comprehensive Data Collection

- **Property Data**
  - Extract complete apartment and house details with specifications
  - Scrape comprehensive listing data including rent, costs, and fees
  - Gather detailed property features, amenities, and equipment
  - Analyze property types, floor plans, and architectural details
  - Download high-quality property images and media content
- **Location Data**
  - Scrape precise location information with coordinates
  - Extract neighborhood profiles and area information
  - Gather transportation connectivity and travel time data
  - Access price comparison data for similar properties in the area

#### Advanced Scraping Capabilities

- **API Integration**: Uses ImmoScout24's mobile API for reliable data extraction
- **Pagination Handling**: Automatically navigates through all search result pages
- **Efficient Processing**: Processes only new or updated listings in subsequent runs
- **Change Detection**: Identifies price changes, availability updates, and new listings
- **Scheduled Monitoring**: Set up automated runs to keep your property data current
- **Incremental Data Collection**: Build comprehensive real estate datasets over time

#### Flexible Scraping Options

- **Search Results**: Extract property listings by search criteria
  - Example: `https://www.immobilienscout24.de/Suche/de/berlin/wohnung-mieten`
- **Individual Listings**: Target specific properties using direct URLs
  - Example: `https://www.immobilienscout24.de/expose/160531543`

This tool is ideal for:

- German real estate market research and analysis
- Rental and purchase price analysis and competitive intelligence
- Market trend analysis across German cities and neighborhoods
- Building comprehensive property databases for business intelligence
- Tracking rent and price trends in the German real estate market
- Real estate agencies and property management companies
- Property investors and market analysts focusing on German markets

### Features

- **Comprehensive Data Extraction**: Detailed property information, pricing, costs, and specifications
- **Dual Scraping Modes**:
  - **Search Results**: Scrape all properties from search results
  - **Individual Listings**: Target specific properties using direct URLs
- **Flexible Input**: Supports multiple input formats:
  - Search result URLs from ImmoScout24.de
  - Direct property expose URLs
- **API Integration**: Leverages ImmoScout24's mobile API for structured data access
- **Automatic Pagination**: Handles multi-page results automatically with pagenumber parameter
- **Efficient Processing**: Concurrent scraping with configurable concurrency settings
- **Reliable Performance**: Built-in retry mechanisms and proxy support
- **Structured Data Export**: Download property data in JSON format for analysis

### Supported Listing Categories

The ImmoScout24.de Scraper can extract data from various types of property listings:

1. **Apartment Rentals** - Residential apartments for rent across Germany

   - Example: `https://www.immobilienscout24.de/Suche/de/berlin/wohnung-mieten`
   - Fields: `basicRent`, `totalRent`, `livingSpace`, `rooms`, `floor`, etc.

2. **Individual Property Exposes** - Detailed property listings with complete information

   - Example: `https://www.immobilienscout24.de/expose/160531543`
   - Fields: `header`, `sections`, `contact`, `basicInfo`, `adTargetingParameters`, etc.

3. **House Rentals** - Single-family homes and houses for rent
   - Example: `https://www.immobilienscout24.de/Suche/de/muenchen/haus-mieten`
   - Fields: `plotArea`, `houseType`, `constructionYear`, `energyCertificate`, etc.

Each category has its own unique data structure and fields, all of which are fully documented in this README.

### Quick Start

1. **Sign up for Apify**: Create your free account at [apify.com](https://apify.com).
2. **Find the Scraper**: Search for "ImmoScout24.de Scraper" in the Apify Store.
3. **Configure Input**: Set up your scraping parameters using the input schema.
4. **Run the Scraper**: Execute the scraper on the Apify platform.
5. **Data Collection**: The scraper will output all available property data from ImmoScout24.de.

### Input Configuration

Here's an example of how to set up the input for the ImmoScout24.de Scraper:

```json
{
    "startUrls": [
        {
            "url": "https://www.immobilienscout24.de/Suche/de/berlin/wohnung-mieten"
        },
        {
            "url": "https://www.immobilienscout24.de/expose/160531543"
        }
    ],
    "maxConcurrency": 10,
    "minConcurrency": 1,
    "maxRequestRetries": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
}
```

#### Input Fields Explanation

- `startUrls`: Array of objects containing one of these formats:
  - Search URL: `{"url": "https://www.immobilienscout24.de/Suche/de/berlin/wohnung-mieten"}`
  - Property URL: `{"url": "https://www.immobilienscout24.de/expose/160531543"}`
- `maxItems`: Maximum number of items to scrape (default: 1000).
- `monitoringMode`: When enabled, only scrapes new listings compared to previous runs (default: false).
- `maxConcurrency`: Maximum number of pages processed simultaneously (default: 10).
- `minConcurrency`: Minimum number of pages processed simultaneously (default: 1).
- `maxRequestRetries`: Number of retries for failed requests (default: 100).
- `proxyConfiguration`: Proxy settings for enhanced scraping reliability.

### Monitoring Mode

When `monitoringMode` is enabled, the scraper will only collect new listings that haven't been seen in previous runs. This is useful for:

- Tracking new properties as they come on the market
- Building a historical archive of property listings
- Monitoring specific areas for new opportunities without duplicating data

#### How Monitoring Mode Works

1. The scraper maintains a record of previously scraped property IDs
2. On subsequent runs with `monitoringMode: true`, it checks each property against this record
3. Only new properties (those not in the record) are processed and added to the output
4. The record is updated with any new property IDs found

### Output Structure

The scraper provides comprehensive information about forrent.com property listings. The output includes detailed property information, agent/agency details, location data, and multimedia content. Here's a breakdown of the main components:

#### Sample JSON Output

```json
{
    "header": {
        "id": "160531543",
        "title": "Description",
        "fraudReportUrl": "https://angebot-melden.immobilienscout24.de/report?realEstateId=160531543&publicationState=live",
        "displayStatusIcon": true,
        "shareMessage": "I found this offer on ImmoScout24:\nhttps://www.immobilienscout24.de/expose/160531543?utm_medium=social&utm_campaign=expose_sharing&utm_content=expose_toolbar&utm_source=other&referrer=taf\n\n        Details\n-------------------------\nBasic rent €7.02/m²: €414\nRooms:          2.5\nLiving space:   59 m²\nTotal rent:     €515\n\nLauterberger Str 5\n12347 Britz, Berlin",
        "publicationState": "active",
        "realEstateType": "apartmentrent"
    },
    "sections": [
        {
            "type": "MEDIA",
            "media": [
                {
                    "type": "PICTURE",
                    "caption": "www.tauschwohnung.com",
                    "previewImageUrl": "https://pictures.immobilienscout24.de/listings/af8d5720-26b0-4eee-80e8-b7bc1529c7f3-1922754470.png/ORIG/resize/800x600/format/webp/quality/80",
                    "imageUrlForWeb": "https://pictures.immobilienscout24.de/listings/af8d5720-26b0-4eee-80e8-b7bc1529c7f3-1922754470.png/ORIG/legacy_thumbnail/%WIDTH%x%HEIGHT%/format/jpg",
                    "fullImageUrl": "https://pictures.immobilienscout24.de/listings/af8d5720-26b0-4eee-80e8-b7bc1529c7f3-1922754470.png/ORIG/resize/1500x1000/format/webp/quality/80",
                    "generatedImages": []
                },
                ...
            ]
        },
        {
            "type": "TOP_ATTRIBUTES",
            "attributes": [
                {
                    "label": "Basic rent €7.02/m²",
                    "text": "€414",
                    "type": "TEXT"
                },
                {
                    "label": "Rooms",
                    "text": "2.5",
                    "type": "TEXT"
                },
                {
                    "label": "Living space",
                    "text": "59 m²",
                    "type": "TEXT"
                },
                {
                    "label": "Total rent",
                    "highlighted": true,
                    "text": "€515",
                    "type": "TEXT"
                }
            ]
        },
        {
            "type": "TITLE",
            "title": "Tauschwohnung: 2,5 Zimmer Hochparterre direkt am Teltowkanal"
        },
        {
            "type": "RELOCATION",
            "text": "How much would relocation cost?",
            "subText": "Get free offers",
            "reference": {
                "label": "",
                "url": "is24://relocationService?pag_source=expose_criteria&floor=0&street=Lauterberger%20Str&houseNumber=5&postcode=12347&city=Berlin",
                "type": "URL_LINK",
                "target": "INTERNAL",
                "trackingConfig": {
                    "category": "expose",
                    "action": "consumerservices",
                    "label": "relocation_criteria",
                    "event_name": "productintegration_click",
                    "event_product": "search",
                    "parameters": {
                        "event_parameter_1": "relocation_criteria"
                    }
                }
            }
        },
        {
            "type": "MAP",
            "title": "Map",
            "location": {
                "lat": 52.45787,
                "lng": 13.42804
            },
            "addressLine1": "Lauterberger Str 5",
            "addressLine2": "12347 Britz, Berlin",
            "zipCodeShapes": [],
            "enableEnterFullAddressAction": true
        },
        {
            "type": "REFERENCE_LIST",
            "references": [
                {
                    "label": "View price history for this address",
                    "url": "https://www.immobilienscout24.de/Suche/controller/executePriceInsightsSimple/radius?realestatetype=apartmentrent&geocoordinates=52.45787;13.42804;1&centerofsearchaddress=Berlin;12347;Lauterberger%20Str;;;Britz;5&utm_medium=app&utm_source=android&utm_campaign=resultlist_price_insights&utm_content=expose_pricedev",
                    "type": "URL_LINK",
                    "target": "WEB_INTERNAL",
                    "trackingConfig": {
                        "category": "expose",
                        "action": "atlas_tapped",
                        "label": "txt_link_address",
                        "event_name": "productintegration_click",
                        "event_product": "search",
                        "parameters": {
                            "event_parameter_1": "txt_link_address"
                        }
                    }
                }
            ]
        },
        {
            "type": "TRAVELTIME",
            "isBlocked": false,
            "exposeId": "160531543",
            "address": "Lauterberger Str 5, 12347 Britz, Berlin",
            "location": {
                "lat": 52.45787,
                "lng": 13.42804
            }
        },
        {
            "type": "ATTRIBUTE_LIST",
            "title": "Main criteria",
            "attributes": [
                {
                    "type": "TEXT",
                    "label": "Apartment type:",
                    "text": "Raised ground floor"
                },
                {
                    "type": "TEXT",
                    "label": "Floor:",
                    "text": "0"
                },
                {
                    "type": "CHECK",
                    "label": "Balcony/Terrace:"
                },
                {
                    "type": "CHECK",
                    "label": "Cellar:"
                },
                {
                    "type": "CHECK",
                    "label": "Fitted kitchen:"
                },
                {
                    "type": "LINK",
                    "label": "Credit report:",
                    "reference": {
                        "type": "URL_LINK",
                        "label": "Apply online",
                        "url": "https://bonitaetscheck.immobilienscout24.de/?utm_medium=app&utm_source=android&utm_campaign=solvency_check&utm_content=residential_expose_criteria",
                        "target": "WEB_INTERNAL",
                        "trackingConfig": {
                            "category": "expose",
                            "action": "consumerservices",
                            "label": "solvencycheck_criteria",
                            "event_name": "productintegration_click",
                            "event_product": "search",
                            "parameters": {
                                "event_parameter_1": "solvencycheck_criteria"
                            }
                        }
                    }
                },
                {
                    "type": "LINK",
                    "label": "Internet:",
                    "reference": {
                        "type": "URL_LINK",
                        "iconUrl": "https://www.immobilienscout24.de/content/dam/is24/expose-snippets/services/powered-by-telekom-new.png",
                        "label": "See rates",
                        "secondaryLabel": "up to 250 MBit/s",
                        "additionalInfoText": "The speed estimate is a non-binding statement based on the object's location. Binding availability statements will be only performed when ordering.",
                        "url": "https://rebrand.ly/speedcheckandroidapp?address=eyJvcnQiOiJCZXJsaW4iLCJvcnRzdGVpbCI6IiIsInN0cmFzc2UiOiJMYXV0ZXJiZXJnZXIgU3RyLiIsImhhdXNudW1tZXIiOiI1Iiwia2xzaWQiOjE2NjQ4NzI1LCJoYXVzbnVtbWVyenVzYXR6IjoiIiwicGx6IjoiMTIzNDcifQ%3D%3D",
                        "target": "WEB_INTERNAL",
                        "trackingConfig": {
                            "category": "clickout",
                            "action": "relocation",
                            "label": "internet_checkspeed_criteria",
                            "event_name": "expose_clickout",
                            "event_product": "search",
                            "parameters": {
                                "event_parameter_1": "internet_checkspeed_criteria"
                            }
                        },
                        "additionalInfoForIcon": {
                            "title": "Why this ad?",
                            "text": "We cooperate with Telekom Deutschland GmbH to provide information on internet availability at the location of the ad.",
                            "buttonText": "Further information",
                            "buttonUrl": "https://www.immobilienscout24.de/anbieten/dsa-info/telekom.html"
                        },
                        "onClickTrackingTag": "INTERNET_SPEED_CHECK"
                    }
                }
            ]
        },
        {
            "type": "ATTRIBUTE_LIST",
            "title": "Costs",
            "attributes": [
                {
                    "type": "TEXT",
                    "label": "Net rent (plus ancillary costs):",
                    "text": "€414"
                },
                {
                    "type": "TEXT",
                    "label": "Price/m²:",
                    "text": "€7.02/m²",
                    "additionalInfoText": "Calculated by ImmoScout24"
                },
                {
                    "type": "TEXT",
                    "label": "Ancillary costs:",
                    "text": "€101"
                },
                {
                    "type": "TEXT",
                    "label": "Total rent:",
                    "text": "€515 (heating costs excluded)"
                }
            ]
        },
        {
            "type": "PREMIUM_ADDITIONAL_INFO",
            "title": "Plus Members know more",
            "isExposeBuy": false,
            "chancenCheck": {
                "enabled": false,
                "title": "Plus Insights",
                "publishedLabel": "Published",
                "visitedLabel": "Views",
                "shortlistedLabel": "Saved",
                "contactedLabel": "Contacted"
            },
            "competitionAnalysis": {
                "enabled": false,
                "title": "Competition analysis",
                "plusUser": {
                    "label": "Plus members",
                    "count": null
                },
                "basicUser": {
                    "label": "Basic members",
                    "count": null
                },
                "totalUserCount": null,
                "description": "incl. 6 charts more with Plus+",
                "activationLabel": "with Plus or separate",
                "quickCartUrl": "https://www.immobilienscout24.de/warenkorb/mieterplus?isMobileView=true&utm_campaign=chancen_check&utm_content=residential_expose_competitionanalysis_cta",
                "trackingConfig": {
                    "event_name": "subscription_clickout",
                    "event_product": "expose",
                    "parameters": {
                        "event_parameter_1": "rent",
                        "event_parameter_2": "competition_analysis"
                    }
                }
            },
            "quickCartButton": {
                "enabled": true,
                "label": "Activate Plus now",
                "url": "https://www.immobilienscout24.de/warenkorb/mieterplus?isMobileView=true&utm_campaign=chancen_check&utm_content=residential_expose_plusinsights_cta",
                "trackingConfig": {
                    "event_name": "subscription_clickout",
                    "event_product": "expose",
                    "parameters": {
                        "event_parameter_1": "rent",
                        "event_parameter_2": "plus_insights"
                    }
                }
            },
            "visits": null,
            "contactRequests": null,
            "shortlistAddEvents": null,
            "prospectiveCustomersCount": {
                "basic": null,
                "premium": null,
                "total": null
            },
            "newExposeHoursThreshold": null,
            "calculated": null,
            "privateOffer": null,
            "onlineSince": null
        },
        {
            "type": "ATTRIBUTE_LIST",
            "title": "Building details & energy certificate",
            "attributes": [
                {
                    "type": "TEXT",
                    "label": "Substantial Energy Sources:",
                    "text": "No information"
                }
            ]
        },
        {
            "type": "AD",
            "ad": {
                "id": "/4467/IS24_APP_DE/app_Android_Phone_expose_contentbanner_1"
            }
        },
        {
            "type": "TEXT_AREA",
            "title": "Property description",
            "collapseAfterLines": 5,
            "text": "Ich biete meine Wohnung zum Tausch an, die in einer ruhigen Gegend direkt am Teltowkanal liegt. Der Kanal ist ideal für schöne Spaziergänge.\n\nDie Wohnung ist gut angebunden: Die näheste Busstation ist in direkter Nähe, der Bus zur Hermannstraße ist in etwa 10 Minuten erreichbar. Das Tempelhofer Feld ist ebenfalls nur 20 Minuten zu Fuß entfernt und perfekt für Spaziergänge oder Radtouren. Zwei Supermärkte sind innerhalb von 5 Minuten Fußweg erreichbar.\n\nEin besonderes Plus ist der nach Osten ausgerichtete Balkon. Im Frühling und Sommer ist es dort besonders schön, um gemütlich zu sitzen und zu brunchen.\n\nDie Wohnung verfügt über einen großen Keller, der viel Stauraum bietet. Die Kosten für Gas, also Heizung und Warmwasser, sind nicht in den Nebenkosten enthalten, dafür müsstest du einen eigenen Vertrag abschließen.\n\nIch freue mich auf deine Nachricht, wenn du Interesse hast!"
        },
        {
            "type": "TEXT_AREA",
            "title": "Further notes",
            "collapseAfterLines": 5,
            "text": "Wichtig\nDiese Wohnung auf Tauschwohnung.com ist nur für Personen geeignet, die eine passende Wohnung zum Tauschen haben. Die Registrierung ist 100 % kostenfrei und ermöglicht es dir, mit unserem Matching Algorithmus diese Wohnung oder viele andere auf unserer Plattform zu entdecken.\nVorteile mit Tauschwohnung:\n✅ Keine Massenbesichtigungen\n✅ Direkter Kontakt zum Tauschpartner\n✅ Günstige Mietpreise\n✅ Nr. 1 Wohnungstauschplattform in Deutschland."
        },
        {
            "type": "HOMEOWNER",
            "title": "Rent out with Tauschwohnung GmbH",
            "text": "Get a free and non-binding consultation for renting out your property. We look forward to your enquiry!",
            "featuredBarColor": "#00FFD0",
            "logoUrl": "https://pictures.immobilienscout24.de/usercontent/673f597c-5c74-4405-b30d-522c850afc4e.PNG/ORIG/resize/%WIDTH%x%HEIGHT%%3E/format/webp/quality/80",
            "reference": {
                "label": "Free consultation",
                "url": "https://www.immobilienscout24.de/anbieter/contact/tauschwohnung-gmbh/a27b21be31b1040bc277c05",
                "type": "BUTTON",
                "target": "WEB_INTERNAL"
            },
            "trackingConfig": {
                "title": "expose",
                "category": "expose",
                "action": "consumerservices",
                "label": "chancencheck"
            }
        },
        {
            "type": "REFERENCE_LIST",
            "title": "Services consistent with the flat",
            "references": [
                {
                    "type": "BUTTON",
                    "label": "Credit report:",
                    "url": "https://bonitaetscheck.immobilienscout24.de/?utm_medium=app&utm_source=android&utm_campaign=solvency_check&utm_content=residential_expose_services",
                    "target": "WEB_INTERNAL",
                    "trackingConfig": {
                        "category": "expose",
                        "action": "consumerservices",
                        "label": "solvencycheck_services",
                        "event_name": "productintegration_click",
                        "event_product": "search",
                        "parameters": {
                            "event_parameter_1": "solvencycheck_services"
                        }
                    }
                },
                {
                    "type": "BUTTON",
                    "label": "Find moving company",
                    "url": "is24://relocationService?pag_source=expose_services&floor=0&street=Lauterberger%20Str&houseNumber=5&postcode=12347&city=Berlin",
                    "target": "INTERNAL",
                    "trackingConfig": {
                        "category": "expose",
                        "action": "consumerservices",
                        "label": "relocation_services",
                        "event_name": "productintegration_click",
                        "event_product": "search",
                        "parameters": {
                            "event_parameter_1": "relocation_services"
                        }
                    }
                },
                {
                    "type": "BUTTON",
                    "label": "Visit MyProperty",
                    "url": "https://atlas.immobilienscout24.de/eigentuemerbereich?utm_medium=app&utm_source=android&utm_campaign=residential_atlas_myproperty&utm_content=residential_expose_service&street=Lauterberger%20Str&houseNumber=5&zipcode=12347&city=Berlin",
                    "target": "WEB_INTERNAL",
                    "trackingConfig": {
                        "category": "expose",
                        "action": "further_links",
                        "label": "myproperty_services",
                        "event_name": "productintegration_click",
                        "event_product": "search",
                        "parameters": {
                            "event_parameter_1": "myproperty_services"
                        }
                    }
                },
                {
                    "type": "BUTTON",
                    "label": "Calculate electricity consumption",
                    "url": "https://www.immobilienscout24.de/umzug/service/electricity-calculator-mobile.html?zipCode=12347&squareMeters=59&lang=en",
                    "target": "WEB_INTERNAL",
                    "trackingConfig": {
                        "category": "clickout",
                        "action": "electricity",
                        "label": "energy_services",
                        "event_name": "productintegration_click",
                        "event_product": "search",
                        "parameters": {
                            "event_parameter_1": "energy_services"
                        }
                    }
                },
                {
                    "type": "BUTTON",
                    "label": "Relocate internet",
                    "url": "https://rebrand.ly/service-android-app",
                    "target": "WEB_INTERNAL",
                    "trackingConfig": {
                        "category": "clickout",
                        "action": "internet",
                        "label": "internet_services",
                        "event_name": "expose_clickout",
                        "event_product": "search",
                        "parameters": {
                            "event_parameter_1": "internet_services"
                        }
                    },
                    "additionalInfoForIcon": {
                        "title": "Why this ad?",
                        "text": "We cooperate with Telekom Deutschland GmbH to provide information on internet availability at the location of the ad.",
                        "buttonText": "Further information",
                        "buttonUrl": "https://www.immobilienscout24.de/anbieten/dsa-info/telekom.html",
                        "iconUrl": "https://www.immobilienscout24.de/content/dam/is24/expose-snippets/services/powered-by-telekom-new.png"
                    }
                }
            ]
        },
        {
            "type": "PRICE_INFO",
            "title": "Information about price and location",
            "attributes": [],
            "priceBar": {
                "minPrice": "€5.30 /m²",
                "maxPrice": "€19.40 /m²",
                "minSimilarPrice": "€7.30 /m²",
                "maxSimilarPrice": "€14 /m²",
                "actualObject": "This listing €7.02 /m²",
                "priceIndicatorPositionInPercent": 0.12
            },
            "calculationInformation": {
                "title": "More information regarding this address",
                "offersLowerSimilarPrice": "15,9% within lower price range",
                "offersWithSimilarPrice": "68.2% within similar price range",
                "offersHigherSimilarPrice": "15,9% within higher price range",
                "furtherInformation": {
                    "target": "WEB",
                    "type": "URL_LINK",
                    "label": "Sources and further information",
                    "url": "https://www.immobilienscout24.de/immobilienbewertung/fragen-und-antworten/preis-lageinformationen-wohnung-miete.html"
                }
            }
        },
        {
            "type": "REFERENCE_LIST",
            "title": "Additional links",
            "references": [
                {
                    "type": "URL_LINK",
                    "label": "www.tauschwohnung.com",
                    "url": "https://twg.click/is24-homepage",
                    "target": "WEB"
                },
                {
                    "type": "URL_LINK",
                    "label": "Original-Exposé",
                    "url": "https://twg.click/is24-350127-547",
                    "target": "WEB"
                }
            ]
        },
        {
            "type": "AGENTS_INFO",
            "title": "Agent’s info",
            "company": "Tauschwohnung GmbH",
            "name": "Tauschwohnung Wohnungstausch",
            "logoUrl": "https://pictures.immobilienscout24.de/usercontent/673f597c-5c74-4405-b30d-522c850afc4e.PNG/ORIG/resize/%WIDTH%x%HEIGHT%%3E/format/webp/quality/80",
            "verifiedBy": [
                {
                    "id": "TNS_REALTOR_BADGE",
                    "label": "Identity verified",
                    "tooltip": "Your security is important to us. This provider has therefore been successfully verified and is additionally protected by multi-factor authentication.",
                    "reference": {
                        "label": "More Infos",
                        "url": "https://sicherheit.immobilienscout24.de/verifizierte-anbietende.html",
                        "type": "URL_LINK",
                        "target": "WEB_INTERNAL"
                    }
                }
            ],
            "dsaSelfDeclaration": {
                "text": "The provider has commited to ImmoScout24 to only offer products and services that comply with the applicable provisions of the law of the European Union."
            },
            "portraitUrl": "https://pictures.immobilienscout24.de/usercontent/ee5eb2d2-db68-457b-8a23-bacd2525adfb.PNG/ORIG/resize/%WIDTH%x%HEIGHT%%3E/format/webp/quality/80",
            "address": "",
            "references": [
                {
                    "label": "Agent’s imprint",
                    "url": "is24://imprint?text=Tauschwohnung%20GmbH%0AGraf-von-Lehndorff-Str.%2012%0A53175%20Bonn%0Ainfo%40tauschwohnung.com%0A%0ATauschwohnung%20GmbH%0D%0AGraf-von-Lehndorff-Str.%2012%0D%0A53175%20Bonn%0D%0ATel.%3A%20%2B49%20(0)%20228%2092939018%0D%0AE-Mail%3A%20support%40tauschwohnung.com%0D%0A%0D%0AGesch%C3%A4ftsf%C3%BChrer%3A%20Dario%20Bednarski%20und%20John%20Weinert%0D%0A%0D%0AHandelsregisternummer%3A%20HRB%2025876%0D%0ARegistergericht%3A%20Amtsgericht%20Bonn%0D%0AUSt-Ident.Nr.%3A%20DE%20273060580%0A",
                    "type": "URL_LINK",
                    "target": "INTERNAL"
                },
                {
                    "label": "Agent’s homepage",
                    "url": "https://www.tauschwohnung.com",
                    "type": "URL_LINK",
                    "target": "WEB"
                }
            ],
            "immoPartnerBadge": {
                "badgeUrl": "https://pro-badge-images-bucket.s3.eu-west-1.amazonaws.com/standard/silver_2025.png",
                "linkUrl": "https://www.immobilienscout24.de/anbieten/gewerbliche-anbieter/lp/profis-leicht-erkennen.html"
            }
        },
        {
            "type": "OBJECT_INFO",
            "text": "Scout-ID: 160531543 | Property ID: 350127"
        },
        {
            "type": "AD",
            "ad": {
                "id": "/4467/IS24_APP_DE/app_Android_Phone_expose"
            }
        },
        {
            "type": "FRAUD_REPORT",
            "text": "Something suspicious about this offer?",
            "reference": {
                "label": "Report offer!",
                "url": "https://angebot-melden.immobilienscout24.de/report?realEstateId=160531543&publicationState=live",
                "type": "URL_LINK",
                "target": "WEB_INTERNAL"
            }
        }
    ],
    "contact": {
        "type": "CONTACT",
        "callButtonLabel": "Call",
        "mailButtonLabel": "More Info",
        "messengerButtonLabel": "Messenger",
        "premiumProfileRequiredForContacting": "false",
        "phoneNumbers": [],
        "contactData": {
            "agent": {
                "name": "Tauschwohnung Wohnungstausch",
                "company": "Tauschwohnung GmbH",
                "rating": {},
                "logo": "https://pictures.immobilienscout24.de/usercontent/673f597c-5c74-4405-b30d-522c850afc4e.PNG/ORIG/resize/%WIDTH%x%HEIGHT%%3E/format/webp/quality/80",
                "verifiedBy": [
                    {
                        "id": "TNS_REALTOR_BADGE",
                        "label": "Identity verified",
                        "tooltip": "Your security is important to us. This provider has therefore been successfully verified and is additionally protected by multi-factor authentication.",
                        "reference": {
                            "label": "More Infos",
                            "url": "https://sicherheit.immobilienscout24.de/verifizierte-anbietende.html",
                            "type": "URL_LINK",
                            "target": "WEB_INTERNAL"
                        }
                    }
                ]
            },
            "realEstateType": "apartmentrent",
            "formFieldConfig": {
                "petsInHouseholdField": "OPTIONAL",
                "numberOfResidentsField": "OPTIONAL",
                "incomeAmountField": "OPTIONAL",
                "firstnameField": "MANDATORY",
                "lastnameField": "MANDATORY",
                "phoneNumberField": "OPTIONAL",
                "emailAddressField": "MANDATORY",
                "addressField": "OPTIONAL",
                "salutationField": "MANDATORY",
                "messageField": "OPTIONAL",
                "rentArrears": "OPTIONAL",
                "insolvencyProcess": "OPTIONAL",
                "smoker": "OPTIONAL",
                "commercialPurposes": "OPTIONAL"
            },
            "isExposeBuy": false
        },
        "clickOutUrl": "https://www.tauschwohnung.com/350127?mtm_source=is24&utm_source=is24&mtm_medium=immo-partner&utm_medium=immo-partner&mtm_campaign=is24&utm_campaign=is24&mtm_content=clickout&utm_content=clickout&mtm_group=traffic"
    },
    "tracking": {
        "realEstateType": "APARTMENT_RENT",
        "parameters": {
            "obj_scoutid": "160531543",
            "obj_nbp": "false",
            "obj_ityp": "apartment_rent",
            "obj_totalRent": "515",
            "obj_baseRent": "414",
            "obj_listFirstStatus": "false",
            "ga_cd_cxp_interactivepic": "false",
            "geo_land": "deutschland",
            "geo_bln": "berlin",
            "geo_krs": "berlin",
            "obj_ExclusiveExpose": "false",
            "obj_privateOffer": "false",
            "ga_cd_via": "premium",
            "ga_cd_application_requirements": "profile0",
            "ga_cd_customer_group": "others",
            "obj_commissionsettings": "flow:0"
        }
    },
    "adTargetingParameters": {
        "obj_regio1": "Berlin",
        "obj_serviceCharge": "101",
        "obj_telekomInternetUrlAddition": "eyJvcnQiOiJCZXJsaW4iLCJvcnRzdGVpbCI6IiIsInN0cmFzc2UiOiJMYXV0ZXJiZXJnZXIgU3RyLiIsImhhdXNudW1tZXIiOiI1Iiwia2xzaWQiOjE2NjQ4NzI1LCJoYXVzbnVtbWVyenVzYXR6IjoiIiwicGx6IjoiMTIzNDcifQ%3D%3D",
        "obj_cId": "18634500",
        "obj_newlyConst": "n",
        "obj_balcony": "y",
        "obj_picturecount": "6",
        "obj_totalRent": "515",
        "geo_ot": "britz",
        "obj_privateOffer": "false",
        "obj_scoutId": "160531543",
        "obj_firingTypes": "no_information",
        "obj_hasKitchen": "y",
        "obj_ExclusiveExpose": "false",
        "geo_bln": "berlin",
        "obj_cellar": "y",
        "obj_baseRent": "414",
        "obj_telekomInternetUrlBase": "https://www.telekom.de/festnetz/tarife-und-optionen/internet-dsl",
        "obj_houseNumber": "5",
        "obj_livingSpace": "59",
        "geo_krs": "berlin",
        "obj_zipCode": "12347",
        "obj_condition": "no_information",
        "obj_interiorQual": "no_information",
        "obj_highDemand": "false",
        "obj_petsAllowed": "no_information",
        "obj_street": "Lauterberger Str",
        "obj_lift": "n",
        "obj_depositLink": "n",
        "obj_baseRentRange": "3",
        "obj_streetPlain": "Lauterberger_Str",
        "obj_typeOfFlat": "raised_ground_floor",
        "obj_noRooms": "2.5",
        "obj_assistedLiving": "n",
        "obj_ityp": "0,active",
        "obj_telekomInternetAvailable": "true",
        "geo_land": "deutschland",
        "obj_immotype": "wohnung_miete",
        "obj_privateOfferInvestmentCheck": "false",
        "obj_contactFormInputFieldCount": "22",
        "obj_floor": "0",
        "obj_telekomInternetSpeed": "250 MBit/s",
        "obj_cwId": "009.62a83171-bf6a-4eb2-858e-d6e01b2d7d29",
        "geo_bg": "neukölln_bezirk",
        "obj_noRoomsRange": "2",
        "obj_garden": "n",
        "obj_regio4": "Britz",
        "obj_barrierFree": "n",
        "obj_international": "n",
        "obj_regio3": "Neukölln_Bezirk",
        "obj_objectnumber": "350127",
        "obj_livingSpaceRange": "2",
        "obj_regio2": "Berlin"
    },
    "basicInfo": {
        "reportUrl": "https://angebot-melden.immobilienscout24.de/report?realEstateId=160531543&publicationState=live",
        "id": "160531543",
        "title": "Tauschwohnung: 2,5 Zimmer Hochparterre direkt am Teltowkanal",
        "pictures": [
            {
                "urlScaleAndCrop": "https://pictures.immobilienscout24.de/listings/af8d5720-26b0-4eee-80e8-b7bc1529c7f3-1922754470.png/ORIG/legacy_thumbnail/%WIDTH%x%HEIGHT%/format/webp/quality/80"
            }
        ],
        "titlePicture": {
            "preview": "https://pictures.immobilienscout24.de/listings/af8d5720-26b0-4eee-80e8-b7bc1529c7f3-1922754470.png/ORIG/resize/800x600>/format/webp/quality/20",
            "full": "https://pictures.immobilienscout24.de/listings/af8d5720-26b0-4eee-80e8-b7bc1529c7f3-1922754470.png/ORIG/resize/800x600>/format/webp/quality/80"
        },
        "address": {
            "line": "Lauterberger Str 5, 12347 Berlin, Britz (Neukölln)",
            "lat": 52.4579,
            "lon": 13.428
        },
        "isProject": false,
        "isPrivate": false,
        "listingType": "L",
        "published": "a month ago",
        "isNewObject": false,
        "liveVideoTourAvailable": false,
        "listOnlyOnIs24": false,
        "attributes": [
            {
                "label": "",
                "value": "€414"
            },
            {
                "label": "",
                "value": "59 m²"
            },
            {
                "label": "",
                "value": "2.5 rms"
            }
        ],
        "realEstateType": "apartmentrent",
        "realtor": {
            "logoUrlScale": "https://pictures.immobilienscout24.de/usercontent/673f597c-5c74-4405-b30d-522c850afc4e.PNG/ORIG/resize/%WIDTH%x%HEIGHT%%3E/format/webp/quality/80"
        },
        "tags": [],
        "url": "https://api.mobile.immobilienscout24.de/expose/160531543"
    }
}
```

### Output Fields Explanation

The scraper returns a comprehensive dataset for each property listing on ImmoScout24.de. Below is a detailed explanation of all fields in the JSON output.

#### Header Section

- `header.id` (String): Unique ImmoScout24 property identifier (e.g., "160531543")
- `header.title` (String): The section title, typically "Description"
- `header.fraudReportUrl` (String): URL for reporting suspicious listings to ImmoScout24
- `header.displayStatusIcon` (Boolean): Whether to display status indicators
- `header.shareMessage` (String): Pre-formatted sharing message with property details
- `header.publicationState` (String): Current listing status ("active", "inactive", etc.)
- `header.realEstateType` (String): Type of real estate ("apartmentrent", "houserent", etc.)

#### Sections Array

The sections array contains various content blocks with different types:

##### MEDIA Section

- `sections[].type` (String): "MEDIA" - Contains property images and media
- `sections[].media[].type` (String): Media type ("PICTURE", "VIDEO", etc.)
- `sections[].media[].caption` (String): Image caption or watermark text
- `sections[].media[].previewImageUrl` (String): Thumbnail/preview image URL
- `sections[].media[].imageUrlForWeb` (String): Web-optimized image URL template
- `sections[].media[].fullImageUrl` (String): Full-resolution image URL
- `sections[].media[].generatedImages` (Array): Additional generated image variations

##### TOP\_ATTRIBUTES Section

- `sections[].type` (String): "TOP\_ATTRIBUTES" - Key property highlights
- `sections[].attributes[].label` (String): Attribute label (e.g., "Basic rent €7.02/m²")
- `sections[].attributes[].text` (String): Attribute value (e.g., "€414")
- `sections[].attributes[].type` (String): Display type ("TEXT", "CHECK", "LINK")
- `sections[].attributes[].highlighted` (Boolean): Whether the attribute is emphasized

##### TITLE Section

- `sections[].type` (String): "TITLE" - Property title
- `sections[].title` (String): Full property title/headline

##### RELOCATION Section

- `sections[].type` (String): "RELOCATION" - Relocation service information
- `sections[].text` (String): Main relocation text (e.g., "How much would relocation cost?")
- `sections[].subText` (String): Additional relocation text (e.g., "Get free offers")
- `sections[].reference.label` (String): Reference button label
- `sections[].reference.url` (String): Relocation service URL
- `sections[].reference.type` (String): Reference type ("URL\_LINK")
- `sections[].reference.target` (String): Link target ("INTERNAL", "WEB\_INTERNAL")
- `sections[].reference.trackingConfig` (Object): Analytics tracking configuration

##### MAP Section

- `sections[].type` (String): "MAP" - Location and mapping data
- `sections[].title` (String): Section title ("Map")
- `sections[].location.lat` (Number): Latitude coordinate
- `sections[].location.lng` (Number): Longitude coordinate
- `sections[].addressLine1` (String): Street address
- `sections[].addressLine2` (String): City, postal code, and district
- `sections[].zipCodeShapes` (Array): Geographic boundary data
- `sections[].enableEnterFullAddressAction` (Boolean): Whether full address entry is enabled

##### TRAVELTIME Section

- `sections[].type` (String): "TRAVELTIME" - Transportation and commute information
- `sections[].isBlocked` (Boolean): Whether travel time calculation is blocked
- `sections[].exposeId` (String): Property ID for travel time calculations
- `sections[].address` (String): Full address for travel calculations
- `sections[].location` (Object): Coordinates for travel time calculations

##### ATTRIBUTE\_LIST Sections

**Main Criteria:**

- `sections[].type` (String): "ATTRIBUTE\_LIST"
- `sections[].title` (String): "Main criteria"
- `sections[].attributes[].type` (String): Attribute type ("TEXT", "CHECK", "LINK")
- `sections[].attributes[].label` (String): Criteria label (e.g., "Apartment type:", "Floor:")
- `sections[].attributes[].text` (String): Criteria value (e.g., "Raised ground floor", "0")

**Costs:**

- `sections[].title` (String): "Costs"
- `sections[].attributes[].label` (String): Cost type (e.g., "Net rent (plus ancillary costs):")
- `sections[].attributes[].text` (String): Cost amount (e.g., "€414")
- `sections[].attributes[].additionalInfoText` (String): Additional cost information

**Building Details & Energy Certificate:**

- `sections[].title` (String): "Building details & energy certificate"
- `sections[].attributes[].label` (String): Building detail type
- `sections[].attributes[].text` (String): Building detail value

**LINK Type Attributes (in any ATTRIBUTE\_LIST):**

- `sections[].attributes[].reference.type` (String): Reference type ("URL\_LINK")
- `sections[].attributes[].reference.label` (String): Link button text
- `sections[].attributes[].reference.url` (String): Target URL
- `sections[].attributes[].reference.target` (String): Link target ("WEB\_INTERNAL", "INTERNAL")
- `sections[].attributes[].reference.iconUrl` (String): Icon URL for the link
- `sections[].attributes[].reference.secondaryLabel` (String): Additional label text
- `sections[].attributes[].reference.additionalInfoText` (String): Additional information text
- `sections[].attributes[].reference.trackingConfig` (Object): Analytics tracking configuration
- `sections[].attributes[].reference.additionalInfoForIcon` (Object): Icon additional information
- `sections[].attributes[].reference.onClickTrackingTag` (String): Click tracking tag

##### PREMIUM\_ADDITIONAL\_INFO Section

- `sections[].type` (String): "PREMIUM\_ADDITIONAL\_INFO" - Premium membership information
- `sections[].title` (String): Section title (e.g., "Plus Members know more")
- `sections[].isExposeBuy` (Boolean): Whether this is a purchase listing
- `sections[].chancenCheck.enabled` (Boolean): Whether chance check is enabled
- `sections[].chancenCheck.title` (String): Chance check title
- `sections[].chancenCheck.publishedLabel` (String): Published label text
- `sections[].chancenCheck.visitedLabel` (String): Visited label text
- `sections[].chancenCheck.shortlistedLabel` (String): Shortlisted label text
- `sections[].chancenCheck.contactedLabel` (String): Contacted label text
- `sections[].competitionAnalysis.enabled` (Boolean): Whether competition analysis is enabled
- `sections[].competitionAnalysis.title` (String): Competition analysis title
- `sections[].competitionAnalysis.plusUser.label` (String): Plus user label
- `sections[].competitionAnalysis.plusUser.count` (Number|null): Plus user count
- `sections[].competitionAnalysis.basicUser.label` (String): Basic user label
- `sections[].competitionAnalysis.basicUser.count` (Number|null): Basic user count
- `sections[].competitionAnalysis.totalUserCount` (Number|null): Total user count
- `sections[].competitionAnalysis.description` (String): Analysis description
- `sections[].competitionAnalysis.activationLabel` (String): Activation label
- `sections[].competitionAnalysis.quickCartUrl` (String): Quick cart URL
- `sections[].competitionAnalysis.trackingConfig` (Object): Tracking configuration
- `sections[].quickCartButton.enabled` (Boolean): Whether quick cart button is enabled
- `sections[].quickCartButton.label` (String): Button label
- `sections[].quickCartButton.url` (String): Button URL
- `sections[].quickCartButton.trackingConfig` (Object): Button tracking configuration
- `sections[].visits` (Number|null): Visit count
- `sections[].contactRequests` (Number|null): Contact request count
- `sections[].shortlistAddEvents` (Number|null): Shortlist add events count
- `sections[].prospectiveCustomersCount.basic` (Number|null): Basic customer count
- `sections[].prospectiveCustomersCount.premium` (Number|null): Premium customer count
- `sections[].prospectiveCustomersCount.total` (Number|null): Total customer count
- `sections[].newExposeHoursThreshold` (Number|null): New expose hours threshold
- `sections[].calculated` (Boolean|null): Whether calculated
- `sections[].privateOffer` (Boolean|null): Whether private offer
- `sections[].onlineSince` (String|null): Online since date

##### TEXT\_AREA Section

- `sections[].type` (String): "TEXT\_AREA" - Long-form text content
- `sections[].title` (String): Section title (e.g., "Property description")
- `sections[].collapseAfterLines` (Number): Lines after which text collapses
- `sections[].text` (String): Full text content with line breaks

##### PRICE\_INFO Section

- `sections[].type` (String): "PRICE\_INFO" - Price comparison and market data
- `sections[].title` (String): "Information about price and location"
- `sections[].attributes` (Array): Additional price-related attributes
- `sections[].priceBar.minPrice` (String): Minimum price in area (e.g., "€5.30 /m²")
- `sections[].priceBar.maxPrice` (String): Maximum price in area (e.g., "€19.40 /m²")
- `sections[].priceBar.minSimilarPrice` (String): Minimum similar property price
- `sections[].priceBar.maxSimilarPrice` (String): Maximum similar property price
- `sections[].priceBar.actualObject` (String): This property's price position
- `sections[].priceBar.priceIndicatorPositionInPercent` (Number): Price position as percentage
- `sections[].calculationInformation.title` (String): Calculation information title
- `sections[].calculationInformation.offersLowerSimilarPrice` (String): Percentage of lower-priced offers
- `sections[].calculationInformation.offersWithSimilarPrice` (String): Percentage of similarly-priced offers
- `sections[].calculationInformation.offersHigherSimilarPrice` (String): Percentage of higher-priced offers

##### HOMEOWNER Section

- `sections[].type` (String): "HOMEOWNER" - Homeowner service information
- `sections[].title` (String): Section title (e.g., "Rent out with Tauschwohnung GmbH")
- `sections[].text` (String): Service description text
- `sections[].featuredBarColor` (String): Featured bar color (hex code)
- `sections[].logoUrl` (String): Company logo URL
- `sections[].reference.label` (String): Reference button label
- `sections[].reference.url` (String): Reference URL
- `sections[].reference.type` (String): Reference type ("BUTTON")
- `sections[].reference.target` (String): Link target ("WEB\_INTERNAL")
- `sections[].trackingConfig.title` (String): Tracking title
- `sections[].trackingConfig.category` (String): Tracking category
- `sections[].trackingConfig.action` (String): Tracking action
- `sections[].trackingConfig.label` (String): Tracking label

##### REFERENCE\_LIST Section

- `sections[].type` (String): "REFERENCE\_LIST" - Links and references
- `sections[].title` (String): Section title (e.g., "Services consistent with the flat")
- `sections[].references[].type` (String): Reference type ("BUTTON", "URL\_LINK")
- `sections[].references[].label` (String): Link label
- `sections[].references[].url` (String): Target URL
- `sections[].references[].target` (String): Link target ("WEB\_INTERNAL", "WEB", "INTERNAL")
- `sections[].references[].trackingConfig` (Object): Analytics tracking configuration
- `sections[].references[].additionalInfoForIcon.title` (String): Icon info title
- `sections[].references[].additionalInfoForIcon.text` (String): Icon info text
- `sections[].references[].additionalInfoForIcon.buttonText` (String): Icon info button text
- `sections[].references[].additionalInfoForIcon.buttonUrl` (String): Icon info button URL
- `sections[].references[].additionalInfoForIcon.iconUrl` (String): Icon URL

##### AGENTS\_INFO Section

- `sections[].type` (String): "AGENTS\_INFO" - Real estate agent information
- `sections[].title` (String): "Agent's info"
- `sections[].company` (String): Company name
- `sections[].name` (String): Agent name
- `sections[].logoUrl` (String): Company logo URL
- `sections[].verifiedBy` (Array): Verification badges and certifications
- `sections[].dsaSelfDeclaration.text` (String): Legal compliance declaration
- `sections[].portraitUrl` (String): Agent portrait image URL
- `sections[].address` (String): Agent's business address
- `sections[].references` (Array): Agent contact links (imprint, homepage)
- `sections[].immoPartnerBadge.badgeUrl` (String): Partner badge image
- `sections[].immoPartnerBadge.linkUrl` (String): Partner information link

##### OBJECT\_INFO Section

- `sections[].type` (String): "OBJECT\_INFO" - Property identification
- `sections[].text` (String): Scout ID and Property ID information

##### FRAUD\_REPORT Section

- `sections[].type` (String): "FRAUD\_REPORT" - Fraud reporting functionality
- `sections[].text` (String): Fraud report prompt text
- `sections[].reference.label` (String): Report button label
- `sections[].reference.url` (String): Fraud report URL

##### AD Section

- `sections[].type` (String): "AD" - Advertisement placement
- `sections[].ad.id` (String): Advertisement slot identifier

#### Contact Section

- `contact.type` (String): "CONTACT" - Contact information
- `contact.callButtonLabel` (String): Phone call button text
- `contact.mailButtonLabel` (String): Email contact button text
- `contact.messengerButtonLabel` (String): Messenger contact button text
- `contact.premiumProfileRequiredForContacting` (String): Premium requirement status
- `contact.phoneNumbers` (Array): Available phone numbers
- `contact.contactData.agent.name` (String): Agent name
- `contact.contactData.agent.company` (String): Agent company
- `contact.contactData.agent.rating` (Object): Agent rating information
- `contact.contactData.agent.logo` (String): Agent logo URL
- `contact.contactData.agent.verifiedBy` (Array): Agent verification status
  - `contact.contactData.agent.verifiedBy[].id` (String): Verification badge ID (e.g., "TNS\_REALTOR\_BADGE")
  - `contact.contactData.agent.verifiedBy[].label` (String): Verification label (e.g., "Identity verified")
  - `contact.contactData.agent.verifiedBy[].tooltip` (String): Verification tooltip text
  - `contact.contactData.agent.verifiedBy[].reference.label` (String): Reference link label
  - `contact.contactData.agent.verifiedBy[].reference.url` (String): Reference link URL
  - `contact.contactData.agent.verifiedBy[].reference.type` (String): Reference type ("URL\_LINK")
  - `contact.contactData.agent.verifiedBy[].reference.target` (String): Link target ("WEB\_INTERNAL")
- `contact.contactData.realEstateType` (String): Property type for contact form
- `contact.contactData.formFieldConfig` (Object): Contact form field requirements
  - `contact.contactData.formFieldConfig.petsInHouseholdField` (String): Pets field requirement ("OPTIONAL", "MANDATORY")
  - `contact.contactData.formFieldConfig.numberOfResidentsField` (String): Residents field requirement
  - `contact.contactData.formFieldConfig.incomeAmountField` (String): Income field requirement
  - `contact.contactData.formFieldConfig.firstnameField` (String): First name field requirement
  - `contact.contactData.formFieldConfig.lastnameField` (String): Last name field requirement
  - `contact.contactData.formFieldConfig.phoneNumberField` (String): Phone field requirement
  - `contact.contactData.formFieldConfig.emailAddressField` (String): Email field requirement
  - `contact.contactData.formFieldConfig.addressField` (String): Address field requirement
  - `contact.contactData.formFieldConfig.salutationField` (String): Salutation field requirement
  - `contact.contactData.formFieldConfig.messageField` (String): Message field requirement
  - `contact.contactData.formFieldConfig.rentArrears` (String): Rent arrears field requirement
  - `contact.contactData.formFieldConfig.insolvencyProcess` (String): Insolvency field requirement
  - `contact.contactData.formFieldConfig.smoker` (String): Smoker field requirement
  - `contact.contactData.formFieldConfig.commercialPurposes` (String): Commercial purposes field requirement
- `contact.contactData.isExposeBuy` (Boolean): Whether this is a purchase listing
- `contact.clickOutUrl` (String): External contact URL

#### Tracking Section

- `tracking.realEstateType` (String): Property type for analytics
- `tracking.parameters` (Object): Comprehensive tracking parameters including:
  - `obj_scoutid` (String): Property Scout ID
  - `obj_nbp` (String): New building project status ("true"/"false")
  - `obj_ityp` (String): Internal type classification
  - `obj_totalRent` (String): Total rent amount
  - `obj_baseRent` (String): Base rent amount
  - `obj_listFirstStatus` (String): First listing status ("true"/"false")
  - `ga_cd_cxp_interactivepic` (String): Interactive picture status ("true"/"false")
  - `geo_land` (String): Country ("deutschland")
  - `geo_bln` (String): Federal state
  - `geo_krs` (String): District/region
  - `obj_ExclusiveExpose` (String): Exclusive expose status ("true"/"false")
  - `obj_privateOffer` (String): Private offer status ("true"/"false")
  - `ga_cd_via` (String): Via parameter for analytics
  - `ga_cd_application_requirements` (String): Application requirements classification
  - `ga_cd_customer_group` (String): Customer group classification
  - `obj_commissionsettings` (String): Commission settings

#### Ad Targeting Parameters

- `adTargetingParameters` (Object): Extensive targeting data for advertisements:
  - `obj_regio1` (String): Primary region (e.g., "Berlin")
  - `obj_regio2` (String): Secondary region (e.g., "Berlin")
  - `obj_regio3` (String): Tertiary region (e.g., "Neukölln\_Bezirk")
  - `obj_regio4` (String): Quaternary region (e.g., "Britz")
  - `obj_serviceCharge` (String): Service charges amount
  - `obj_totalRent` (String): Total rent amount
  - `obj_baseRent` (String): Base rent amount
  - `obj_livingSpace` (String): Living space in m²
  - `obj_noRooms` (String): Number of rooms
  - `obj_noRoomsRange` (String): Room number range classification
  - `obj_floor` (String): Floor number
  - `obj_balcony` (String): Balcony availability ("y"/"n")
  - `obj_cellar` (String): Cellar availability ("y"/"n")
  - `obj_hasKitchen` (String): Kitchen availability ("y"/"n")
  - `obj_garden` (String): Garden availability ("y"/"n")
  - `obj_lift` (String): Elevator availability ("y"/"n")
  - `obj_zipCode` (String): Postal code
  - `obj_street` (String): Street name
  - `obj_streetPlain` (String): Street name in plain format
  - `obj_houseNumber` (String): House number
  - `obj_typeOfFlat` (String): Apartment type (e.g., "raised\_ground\_floor")
  - `obj_immotype` (String): Property category (e.g., "wohnung\_miete")
  - `obj_scoutId` (String): ImmoScout24 property ID
  - `obj_objectnumber` (String): Internal object number
  - `obj_cId` (String): Customer/company ID
  - `obj_cwId` (String): Customer web ID
  - `obj_newlyConst` (String): Newly constructed status ("y"/"n")
  - `obj_picturecount` (String): Number of pictures
  - `obj_privateOffer` (String): Private offer status ("true"/"false")
  - `obj_ExclusiveExpose` (String): Exclusive expose status ("true"/"false")
  - `obj_firingTypes` (String): Heating/firing types (e.g., "no\_information")
  - `obj_condition` (String): Property condition (e.g., "no\_information")
  - `obj_interiorQual` (String): Interior quality (e.g., "no\_information")
  - `obj_highDemand` (String): High demand status ("true"/"false")
  - `obj_petsAllowed` (String): Pets allowed status (e.g., "no\_information")
  - `obj_depositLink` (String): Deposit link status ("y"/"n")
  - `obj_baseRentRange` (String): Base rent range classification
  - `obj_livingSpaceRange` (String): Living space range classification
  - `obj_assistedLiving` (String): Assisted living availability ("y"/"n")
  - `obj_barrierFree` (String): Barrier-free accessibility ("y"/"n")
  - `obj_international` (String): International listing status ("y"/"n")
  - `obj_ityp` (String): Internal type classification
  - `obj_privateOfferInvestmentCheck` (String): Private offer investment check ("true"/"false")
  - `obj_contactFormInputFieldCount` (String): Number of contact form input fields
  - `obj_telekomInternetAvailable` (String): Telekom internet availability ("true"/"false")
  - `obj_telekomInternetSpeed` (String): Internet speed (e.g., "250 MBit/s")
  - `obj_telekomInternetUrlBase` (String): Base URL for Telekom internet services
  - `obj_telekomInternetUrlAddition` (String): Additional URL parameters for Telekom services
  - `geo_land` (String): Country ("deutschland")
  - `geo_bln` (String): Federal state
  - `geo_krs` (String): District/region
  - `geo_ot` (String): Local area (e.g., "britz")
  - `geo_bg` (String): Borough/district (e.g., "neukölln\_bezirk")

#### Basic Info Section

- `basicInfo.reportUrl` (String): Fraud report URL
- `basicInfo.id` (String): Property ID
- `basicInfo.title` (String): Property title
- `basicInfo.pictures` (Array): Property image URLs
- `basicInfo.titlePicture.preview` (String): Preview image URL
- `basicInfo.titlePicture.full` (String): Full-size title image URL
- `basicInfo.address.line` (String): Full address line
- `basicInfo.address.lat` (Number): Latitude coordinate
- `basicInfo.address.lon` (Number): Longitude coordinate
- `basicInfo.isProject` (Boolean): Whether this is a development project
- `basicInfo.isPrivate` (Boolean): Whether this is a private listing
- `basicInfo.listingType` (String): Listing type code
- `basicInfo.published` (String): Publication time (e.g., "a month ago")
- `basicInfo.isNewObject` (Boolean): Whether this is a new construction
- `basicInfo.liveVideoTourAvailable` (Boolean): Live video tour availability
- `basicInfo.listOnlyOnIs24` (Boolean): Exclusive to ImmoScout24
- `basicInfo.attributes` (Array): Key property attributes (rent, size, rooms)
- `basicInfo.realEstateType` (String): Property type
- `basicInfo.realtor.logoUrlScale` (String): Realtor logo URL
- `basicInfo.tags` (Array): Property tags and labels
- `basicInfo.url` (String): API URL for this property

***

### Explore More Scrapers

If you found this Apify Scraper useful, be sure to check out our other powerful scrapers and actors at [memo23's Apify profile](https://apify.com/memo23). We offer a wide range of tools to enhance your web scraping and automation needs across various platforms and use cases.

### Support

- For issues or feature requests, please use the [Issues](https://console.apify.com/actors/B9QxpGHylsP0guHns/issues) section of this actor.
- If you need customization or have questions, feel free to contact the author:
  - Author's website: <https://muhamed-didovic.github.io/>
  - Email: <muhamed.didovic@gmail.com>

### Additional Services

- Request customization or whole dataset: <muhamed.didovic@gmail.com>
- If you need anything else scraped, or this actor customized, email: <muhamed.didovic@gmail.com>
- For API services of this scraper (no Apify fee, just usage fee for the API), contact: <muhamed.didovic@gmail.com>
- Email: muhamed.didovic@gmail.com

# Actor input Schema

## `startUrls` (type: `array`):

URLs to start with. The actor currently supports URLs such as `https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-mieten?apartmenttypes=loft,raisedgroundfloor&pricetype=rentpermonth&enteredFrom=result_list`.

## `maxItems` (type: `integer`):

Maximum number of items that will be scraped.

## `monitoringMode` (type: `boolean`):

If checked, it will only scrape newly listings compared to what has been scraped in previous runs.

## `maxConcurrency` (type: `integer`):

Maximum number of pages that can be processed at the same time.

## `minConcurrency` (type: `integer`):

Minimum number of pages that will be processed at the same time.

## `maxRequestRetries` (type: `integer`):

Number of times the crawler will retry a failed request before giving up.

## `proxy` (type: `object`):

Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-mieten?apartmenttypes=loft,raisedgroundfloor&pricetype=rentpermonth&enteredFrom=result_list"
  ],
  "maxItems": 1000,
  "monitoringMode": false,
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 100,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "startUrls": [
        "https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-mieten?apartmenttypes=loft,raisedgroundfloor&pricetype=rentpermonth&enteredFrom=result_list"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/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 = {
    "startUrls": ["https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-mieten?apartmenttypes=loft,raisedgroundfloor&pricetype=rentpermonth&enteredFrom=result_list"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/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 '{
  "startUrls": [
    "https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-mieten?apartmenttypes=loft,raisedgroundfloor&pricetype=rentpermonth&enteredFrom=result_list"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call memo23/immobilienscout24-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Immobilienscout24 | Search | Detail(s) |Scraper| $2/1K Scraper",
        "description": "Extract comprehensive German real estate data: property details (rent, size, rooms, location), high-res images, agent info with verification status, pricing insights, amenities (balcony, kitchen, cellar), contact forms, market analytics, and 40+ targeting parameters for research.",
        "version": "0.0",
        "x-build-id": "hB9faNfjeHGLbDCdK"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~immobilienscout24-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-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/memo23~immobilienscout24-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-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/memo23~immobilienscout24-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-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",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "URLs to start with. The actor currently supports URLs such as `https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-mieten?apartmenttypes=loft,raisedgroundfloor&pricetype=rentpermonth&enteredFrom=result_list`.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Maximum number of items OR limit the results per crawl",
                        "type": "integer",
                        "description": "Maximum number of items that will be scraped.",
                        "default": 1000
                    },
                    "monitoringMode": {
                        "title": "Run in monitoring mode where only newly listings compared to previous runs will be scraped",
                        "type": "boolean",
                        "description": "If checked, it will only scrape newly listings compared to what has been scraped in previous runs.",
                        "default": false
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "type": "integer",
                        "description": "Maximum number of pages that can be processed at the same time.",
                        "default": 10
                    },
                    "minConcurrency": {
                        "title": "Min Concurrency",
                        "type": "integer",
                        "description": "Minimum number of pages that will be processed at the same time.",
                        "default": 1
                    },
                    "maxRequestRetries": {
                        "title": "Max Request Retries",
                        "type": "integer",
                        "description": "Number of times the crawler will retry a failed request before giving up.",
                        "default": 100
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
