ImmobilienScout24 Scraper - Germany Real Estate
Pricing
from $1.50 / 1,000 results
ImmobilienScout24 Scraper - Germany Real Estate
ImmobilienScout24 scraper & API for German real estate: search apartments & houses for rent & buy and export price, m², rooms, energy class, address, GPS, agent-vs-private and price drops. Germany property market data and real-estate lead generation — fast, no login.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
16
Total users
5
Monthly active users
3 days ago
Last modified
Categories
Features
Share
ImmobilienScout24 Scraper 🇩🇪 — Germany Real Estate Data (Rent & Buy)
Extract structured German real-estate listings from ImmobilienScout24 (immobilienscout24.de) — Germany's #1 property marketplace — without writing code. This ImmobilienScout24 scraper lets you scrape ImmobilienScout24 apartments (Wohnungen) and houses (Häuser), for rent (mieten) and for sale (kaufen), with full property intelligence: price, Warmmiete/Kaltmiete, living space (
m²), rooms, energy efficiency class (Energieausweis), GPS coordinates, high-res photos, agent contact, private-seller vs. agency (Makler) detection, and price-drop signals (Preissenkung).
Export every result to JSON, CSV, Excel, or API with 1,000+ results pagination unlocked.
⚡ At a glance
| Feature | Details |
|---|---|
| Target Platform | ImmobilienScout24.de (ImmoScout24 Germany) |
| Listing Types | Apartments for Rent (wohnung-mieten), Apartments for Sale (wohnung-kaufen), Houses for Rent (haus-mieten), Houses for Sale (haus-kaufen) |
| Core Fields | Scout ID, URL, Title, Price (€), Living Space (m²), Rooms, Address, GPS Coordinates (latitude/longitude), Photos |
| Detail Enrichment | baseRent (Kaltmiete), totalRent (Warmmiete), serviceCharge (Nebenkosten), pricePerSqm, Year Built, Condition, Heating, Energy Class, Amenities, Agent Name & Company |
| Lead-Gen Signals | Private vs. Agency (isPrivate / onlyPrivate) + Price Reduction Detection (priceReduced, originalPrice, reductionPercentage) |
| Search Inputs | 34-City German Dropdown + Transaction/Property Selectors OR Custom startUrls (/Suche/de/...) |
| Pagination & Scale | Automatic multi-page extraction (50 listings/page, 1,000+ listings per run, deduplicated by Scout ID) |
| Export Formats | JSON, CSV, Excel (XLSX), XML, HTML, RSS, and Apify REST API |
📋 Table of contents
- Why scrape ImmobilienScout24?
- What this ImmobilienScout24 scraper does
- Use cases
- Input configuration
- Output sample & field reference
- Private vs. agency & price drops
- Pagination & 1,000+ scale
- How to use
- Tips for German property data
- Honest limitations
- FAQ
- Related scrapers
- Changelog
🔎 Why scrape ImmobilienScout24?
ImmobilienScout24 (IS24) is the undisputed real-estate market leader in Germany, hosting over one million active residential listings across Berlin, Munich, Hamburg, Cologne, Frankfurt, Stuttgart, Düsseldorf, Leipzig, and every German Bundesland. It is the primary source of live German housing intelligence: asking rents (Kaltmiete and Warmmiete), purchase prices per square meter, building energy efficiency ratings, and seller classification.
Collecting German property data manually is slow and error-prone. Listings rotate constantly, major cities span dozens of pagination pages, and key metrics like Nebenkosten, Baujahr, energy demand, and price reductions live inside individual exposé views. This ImmobilienScout24 data extractor automates both search pagination and exposé enrichment into one structured dataset.
Common reasons teams scrape ImmobilienScout24:
- 📈 Track Rent & Purchase Price per m² — monitor Kaltmiete, Warmmiete, and purchase prices across German cities, districts (Bezirke), and postal codes.
- 🏷️ Spot Price Drops (Preissenkung) Early — identify motivated sellers and discounted investment properties using
priceReduced,originalPrice, andreductionPercentage. - 🧑💼 Source Off-Market Private Seller Leads (FSBO) — filter with
onlyPrivate: trueto extract listings posted directly by private owners (privater Anbieter) without a broker (Makler). - 🏢 Monitor Competitor Broker Inventory — track which real-estate agencies (
agentCompany,agentName) dominate specific German neighborhoods. - 🗺️ Geospatial & Yield Screening — map active supply by exact
latitudeandlongitudecoordinates and compare asking rents against purchase prices. - 🤖 PropTech & Automated Valuation Models (AVM) — feed clean German real-estate attributes (living space, year built, condition, heating type, energy class) into valuation pipelines.
✨ What this ImmobilienScout24 scraper does
- ✅ All 4 Major Residential Categories — scrapes apartments for rent (Wohnung mieten), apartments for sale (Wohnung kaufen), houses for rent (Haus mieten), and houses for sale (Haus kaufen).
- ✅ 34-City German Dropdown + Custom URLs — pick any major German city from the dropdown, or paste any number of
/Suche/de/...URLs from your browser (including district-level searches) intostartUrls. - ✅ Deep 1,000+ Pagination — automatically determines
totalResultsandnumberOfPages(50 listings per page) and paginates until yourmaxItemstarget is reached. - ✅ Strict Deduplication by Scout ID — tracks every exposé ID across pages and multiple search URLs so duplicate listings are never saved.
- ✅ Full Exposé Enrichment (
includeDetails) — extracts Kaltmiete (baseRent), Warmmiete (totalRent), Nebenkosten (serviceCharge), Kaution (deposit),pricePerSqm,bedrooms,bathrooms,floor,yearBuilt,condition,interiorQuality,heatingType,energySource,energyEfficiencyClass,availableFrom,pets,features,description, andagentName/agentCompany. - ✅ Private Seller Filter (
onlyPrivate) — optionally skip agency listings and collect only private-owner properties, automatically scaling pagination depth so your target item count is still met. - ✅ High-Resolution Usable Photo URLs — resolves dynamic image dimension placeholders into ready-to-load
800x600WebP/JPEG URLs.
🎯 Use cases
- 🏢 German Real-Estate Brokers (Makler) — run daily scheduled scrapes with
onlyPrivate: truein your target city to discover private owners selling or renting without an agent. - 📊 PropTech & Market Analysts — benchmark Mietspiegel trends, energy-class price premiums (
A+vsF/G), and new-build (Erstbezug) supply across Germany's top 34 cities. - 🎯 B2B Lead Generation Teams — build verified directories of active German property agencies (
agentCompany) and individual agents (agentName) along with their live portfolio size. - 🏦 Real-Estate Investors & Family Offices — screen thousands of apartments and multi-family houses for high gross rental yields and flagged price reductions (
priceReduced: true). - 🏗️ Relocation & Corporate Housing Providers — aggregate available apartments in Berlin, Munich, or Frankfurt matching client room and budget criteria.
📥 Input configuration
Start with the built-in city and property dropdowns, or paste one or more ImmobilienScout24 search URLs for custom districts. Running with an empty input {} returns a fast, diverse 100-listing sample across 8 German cities.
| Field | Type | Default / Prefill | Description |
|---|---|---|---|
region | string | Prefill: "/de/berlin/berlin" | Select a German city/region from the 34-city dropdown (e.g., Berlin, Hamburg, Munich, Cologne, Frankfurt). Ignored when startUrls is provided. |
transactionType | string | Prefill: "rent" | Choose "rent" (mieten) or "buy" (kaufen). |
propertyType | string | Prefill: "apartment" | Choose "apartment" (Wohnung) or "house" (Haus). |
startUrls | array | Prefill: Berlin rent URL | Optional power-user list of immobilienscout24.de/Suche/de/... URLs. Extracts region and listing type directly from each URL. Overrides the dropdowns above when set. |
maxItems | integer | Default: 0 (Prefill: 100) | Maximum number of listings to collect across all searches. 0 = no limit (collects all available listings, up to thousands per city). |
includeDetails | boolean | true | Fetch each listing's exposé detail view to add Warmmiete, Nebenkosten, year built, heating, features, agent info, and price-drop metrics. Disable for ultra-fast search-only runs. |
onlyPrivate | boolean | false | Save only listings from private owners (isPrivate: true), skipping real-estate agencies (Makler). |
proxyConfiguration | object | { "useApifyProxy": true } | Apify Proxy configuration. Default datacenter proxies work out of the box. |
maxConcurrency | integer | 8 (1–30) | Maximum parallel requests. |
Example 1 — Apartments for rent in Berlin with full exposé details
{"startUrls": [{ "url": "https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-mieten" }],"maxItems": 500,"includeDetails": true,"onlyPrivate": false,"proxyConfiguration": { "useApifyProxy": true },"maxConcurrency": 8}
Example 2 — 1,000+ multi-city pull (Munich, Hamburg & Frankfurt apartments for sale)
{"startUrls": [{ "url": "https://www.immobilienscout24.de/Suche/de/bayern/muenchen/wohnung-kaufen" },{ "url": "https://www.immobilienscout24.de/Suche/de/hamburg/hamburg/wohnung-kaufen" },{ "url": "https://www.immobilienscout24.de/Suche/de/hessen/frankfurt-am-main/wohnung-kaufen" }],"maxItems": 1500,"includeDetails": true}
Example 3 — Off-market FSBO private sellers only (onlyPrivate: true)
{"region": "/de/nordrhein-westfalen/koeln","transactionType": "buy","propertyType": "apartment","onlyPrivate": true,"includeDetails": true,"maxItems": 200}
📤 Output sample & field reference
Each scraped property is stored as a structured JSON object. Below is a real record from a Berlin apartment rental run featuring a detected price drop:
{"id": "164121835","url": "https://www.immobilienscout24.de/expose/164121835","title": "Möbliertes Studio Standard mit Gemeinschaftsflächen: Padelplatz, Fitness, Dachterrasse & mehr","realEstateType": "apartmentrent","priceLabel": "1.039 €","price": 1039,"livingSpace": "28 m²","livingSpaceValue": 28,"rooms": "1 Zi.","roomsValue": 1,"energyEfficiencyClass": "B","isPrivate": false,"advertiserType": "agency","isNewObject": false,"isProject": false,"published": "vor einem Jahr","address": "Buschkrugallee 64, 12359 Berlin, Britz (Neukölln)","latitude": 52.45779,"longitude": 13.4465,"titlePicture": "https://pictures.immobilienscout24.de/listings/01b80b4a-1989-4e16-b254-3ee94ee26b59-2116214270.png/ORIG/resize/800x600>/format/webp/quality/80","pictures": ["https://pictures.immobilienscout24.de/listings/01b80b4a-1989-4e16-b254-3ee94ee26b59-2116214270.png/ORIG/legacy_thumbnail/800x600/format/webp/quality/80"],"listingType": "XL","priceReduced": true,"scrapedAt": "2026-11-10T02:30:00.000Z","baseRent": "1.039 €","totalRent": "1.190 €","serviceCharge": "76 €","pricePerSqm": "37,11 €/m²","bedrooms": "1","bathrooms": "1","yearBuilt": "2026","condition": "Erstbezug","heatingType": "Fußbodenheizung","energySource": "Fernwärme","pets": "Ja","agentName": "Frau Beata Sanders","agentCompany": "Momento Berlin","features": ["Balkon/Terrasse", "Personenaufzug", "Einbauküche"],"description": "Objektbeschreibung Kontaktieren Sie uns jetzt...","originalPrice": "1.139 €","reductionPercentage": "-9 %","details": {"Kaltmiete": "1.039 €","Nebenkosten": "76 €","Gesamtmiete": "1.190 €","Baujahr": "2026"}}
🗂️ Field reference & coverage table
🏠 Core Property & Pricing Fields (Search & Detail)
| Field | Type | Coverage | Description |
|---|---|---|---|
id | string | 🟢 High (100%) | Unique ImmobilienScout24 Scout-ID. |
url | string | 🟢 High (100%) | Direct link to the public exposé page on immobilienscout24.de. |
title | string | 🟢 High (100%) | Property listing headline. |
realEstateType | string | 🟢 High (100%) | Category code: apartmentrent, apartmentbuy, houserent, or housebuy. |
price | number | 🟢 High (100%) | Parsed numeric price in EUR (rent or purchase price). |
priceLabel | string | 🟢 High (100%) | Formatted German price string (e.g., 1.039 €). |
livingSpace / livingSpaceValue | string / number | 🟢 High (100%) | Living area formatted (28 m²) and numeric (28). |
rooms / roomsValue | string / number | 🟢 High (100%) | Room count formatted (2,5 Zi.) and numeric (2.5). |
isPrivate / advertiserType | boolean / string | 🟢 High (100%) | Identifies private owners (true / "private") vs. agencies (false / "agency"). |
isNewObject / isProject | boolean | 🟢 High (100%) | Flags for newly constructed properties or multi-unit development projects. |
published | string | 🟢 High (100%) | Relative publication age (e.g., "vor 2 Stunden", "vor 3 Tagen"). |
listingType | string | 🟢 High (100%) | IS24 placement tier (S, M, L, XL, PROJECT). |
📍 Location & Media Fields
| Field | Type | Coverage | Description |
|---|---|---|---|
address | string | 🟢 High (100%) | Street, postal code, city, and district (or district-only when the seller hides the street number). |
latitude / longitude | number | 🟢 High (~87%) | Exact WGS84 GPS coordinates when street-level address is disclosed by the seller. |
titlePicture | string | 🟢 High (~99%) | Cover image URL. |
pictures | array | 🟢 High (~99%) | Array of high-resolution 800x600 property photo URLs. |
🔍 Rich Exposé Detail Fields (includeDetails: true)
| Field | Type | Coverage | Description |
|---|---|---|---|
baseRent / totalRent | string | 🟢 High (Rentals) | Kaltmiete (cold rent) and Warmmiete / Gesamtmiete (total rent). |
serviceCharge / deposit | string | 🟡 Conditional | Nebenkosten (ancillary costs) and Kaution (security deposit). |
pricePerSqm | string | 🟡 Conditional | Price per square meter (Preis/m²). |
bedrooms / bathrooms | string | 🟡 Conditional | Number of Schlafzimmer and Badezimmer. |
floor / apartmentType | string | 🟡 Conditional | Floor level (Etage) and apartment sub-type (Dachgeschoss, Erdgeschoss, Maisonette). |
plotArea | string | 🟡 Conditional | Land plot area (Grundstücksfläche, primarily on house listings). |
yearBuilt / condition | string | 🟢 High (~80%) | Construction year (Baujahr) and property state (Erstbezug, gepflegt, saniert). |
interiorQuality / heatingType | string | 🟡 Conditional | Qualität der Ausstattung and heating system (Fußbodenheizung, Zentralheizung). |
energyEfficiencyClass | string | 🟡 Conditional | Official German energy rating (A+, A, B, C, D, E, F, G, H). |
energySource / energyDemand / energyConsumption | string | 🟡 Conditional | Wesentliche Energieträger, Endenergiebedarf, or Endenergieverbrauch. |
availableFrom / pets | string | 🟡 Conditional | Move-in availability (Bezugsfrei ab) and pet policy (Haustiere). |
features | array | 🟢 High (~90%) | Array of amenity checkmarks (e.g., ["Balkon/Terrasse", "Einbauküche", "Personenaufzug", "Keller"]). |
description | string | 🟢 High (~98%) | Full combined German property description (Objektbeschreibung, Ausstattung, Lage). |
agentName / agentCompany | string | 🟢 High (~95%) | Contact person and real-estate agency name. |
priceReduced | boolean | 🟢 High (100%) | true when IS24 flags an active price drop on the listing. |
originalPrice / reductionPercentage | string | 🟡 Conditional | Previous asking price and percentage discount (populated when priceReduced: true). |
details | object | 🟢 High (100%) | Raw German key-value attribute dictionary from the exposé. |
🏷️ Private vs. agency & price drops
Two high-margin intelligence signals included out of the box:
- Private Sellers vs. Agencies (Makler)
Every record includes
isPrivate: true/falseandadvertiserType: "private" | "agency". EnablingonlyPrivate: truefilters out all commercial brokers and automatically increases pagination depth by 6× so your run collects a deep dataset of pure private-owner listings. - Price-Drop Detection (Preissenkung)
When a seller lowers the asking price on ImmobilienScout24,
priceReducedturnstrueand the scraper captures bothoriginalPrice(e.g.,"1.139 €") andreductionPercentage(e.g.,"-9 %").
🔁 Pagination & 1,000+ scale
- 50 Listings per Search Page — page 1 reports the exact
totalResultsandnumberOfPagesfor your city or URL, then queues pages2..Nautomatically. - 1,000+ Multi-Page & Multi-City Scale — set
maxItems: 1000(or0for unlimited) to extract thousands of properties from major markets like Berlin (~6,000+ listings) or across multiplestartUrls. - Global Deduplication — an in-memory
seenIdsset ensures 0% duplicate Scout IDs across all pages and searches. - Smart Empty-Run Diversity — when launched with no parameters (
{}), the actor samples across 8 German cities and both rent/buy categories (EMPTY_RUN_CAP = 100), while honoring any explicitmaxItems > 100without per-city clamping.
⚙️ How to use
- Open ImmobilienScout24 Scraper in Apify Console.
- Choose a location: either pick a city from the City / Region dropdown (plus Rent or Buy and Apartment or House), or paste one or more
/Suche/de/...URLs into Start URLs. - Set Max items (e.g.,
100for a quick test,1000for a deep city pull, or0for all listings). - Choose whether to keep Scrape full listing details (
includeDetails) enabled. - Click Start and export your results to JSON, CSV, Excel, or API.
💡 Tips for German property data
- Use
includeDetails: falsefor ultra-fast market scans — if you only need price,m², rooms, GPS coordinates, and private-vs-agency flags for 5,000 listings, disablingincludeDetailsfetches 50 listings per request and finishes in seconds. - Combine district URLs in
startUrls— paste multiple neighborhood URLs (e.g., Berlin-Mitte, Kreuzberg, Charlottenburg) intostartUrlsto build a custom multi-district feed in one run. - Schedule daily runs for FSBO lead generation — combine
onlyPrivate: truewith an Apify Schedule and a webhook to alert your sales team whenever new private listings appear.
⚠️ Honest limitations
- Germany (
immobilienscout24.de) Only — this actor targets the German portal; Austrian (.at) and Swiss (.ch) portals use different backends. - Seller-Hidden Street Numbers — when a seller chooses "Adresse nicht veröffentlichen" on IS24,
addresscontains only the postal code, city, and district, andlatitude/longitudeare omitted by the platform (~13% of listings). - Phone Numbers — direct phone numbers are gated behind interactive contact forms on IS24; the actor extracts
agentName,agentCompany, and the directurl.
❓ FAQ
How many listings can I scrape per run?
There is no hard limit. Setting maxItems: 0 (or 1000, 5000, etc.) paginates through all available result pages (50 listings per page) until the search is exhausted or your target is reached.
Do I need residential proxies or an ImmobilienScout24 account?
No account or login is ever required, and standard Apify datacenter proxies (enabled by default) work reliably and cost-effectively.
How does onlyPrivate: true affect pagination?
Because private sellers typically represent 10–20% of German listings, enabling onlyPrivate: true automatically scales up the number of search pages scanned so you still reach your requested maxItems.
Can I scrape commercial properties (Gewerbe) or land plots (Grundstücke)?
The dropdown builder and URL parser focus on the four core residential categories (wohnung-mieten, wohnung-kaufen, haus-mieten, haus-kaufen).
What export formats are available?
Dataset items can be downloaded as JSON, CSV, Excel (XLSX), XML, HTML, or RSS, or consumed programmatically via the Apify REST API, Python/Node.js SDKs, Make, Zapier, n8n, and Google Sheets.
How can I run the scraper from Python or Node.js?
You can trigger runs and stream dataset items using the official apify-client SDKs or standard HTTP requests.
Python API Example
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("haketa/immobilienscout24-scraper").call(run_input={"region": "/de/berlin/berlin","transactionType": "rent","propertyType": "apartment","maxItems": 500,"includeDetails": True,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['id']} | {item['title']} | {item['price']} € | {item['livingSpace']} | {item['address']}")
JavaScript / Node.js API Example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('haketa/immobilienscout24-scraper').call({region: '/de/bayern/muenchen',transactionType: 'buy',propertyType: 'apartment',maxItems: 500,includeDetails: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Saved ${items.length} ImmobilienScout24 listings.`);
🔌 Integrations & automated property monitoring
| Integration | Real-Estate Automation Workflow |
|---|---|
| Google Sheets | Sync new Berlin, Munich, or Hamburg listings directly into a collaborative deal-screening spreadsheet. |
| Make / Zapier / n8n | Trigger instant CRM lead creation when a private seller (isPrivate: true) or price reduction (priceReduced: true) is detected. |
| Slack / Email Alerts | Schedule hourly runs and alert acquisition teams when apartments below a target pricePerSqm hit the market. |
| PostgreSQL / BigQuery | Ingest weekly multi-city snapshots to track German rental indices (Mietspiegel) and energy-label pricing trends. |
🔗 Related scrapers
Explore our other European & global real-estate scrapers on Apify:
- Funda.nl Scraper — Netherlands Real Estate
- Willhaben.at Scraper — Austria Real Estate & Marketplace
- Otodom.pl Scraper — Poland Real Estate
- Hemnet.se Scraper — Sweden Real Estate
- Boliga.dk Scraper — Denmark Real Estate
- Daft.ie Scraper — Ireland Real Estate
📋 Changelog
v1.2 (2026-11) — Unlocked 1,000+ Pagination, Global Deduplication & Deep FSBO Scaling
- Unlocked 1,000+ Deep Pagination: Removed per-search sample clamping when
maxItems > 100so high-volume runs (1,000+listings) paginate smoothly across all available pages and cities. - Global Scout-ID Deduplication: Added cross-page and cross-URL
seenIdsdeduplication in the search handler, guaranteeing 0% duplicate listings. - Smart
onlyPrivatePage Scaling: Automatically scales search page depth by 6× whenonlyPrivate: trueis enabled so FSBO lead-generation runs reach their full target count. - Documentation Upgrade: Added
⚡ At a glancesummary, emoji-grouped field tables with coverage indicators, and inline changelog.
v1.1 (2026-10) — German Locale Pinning & Image URL Normalization
- Forced
de-DElocale headers so prices, square meters, and attribute labels parse identically regardless of proxy exit region. - Resolved
%WIDTH%x%HEIGHT%image URL placeholders to ready-to-use800x600URLs.
v1.0 (2026-06) — Initial Release
- Initial release with 34-city German dropdown,
startUrlsparser, exposé detail enrichment, private-seller detection, and price-drop signals.