ImmoScout24 Scraper — German Rentals & Homes for Sale
Pricing
from $1.10 / 1,000 listing scrapeds
ImmoScout24 Scraper — German Rentals & Homes for Sale
Scrape ImmobilienScout24 rentals and homes for sale from search URLs or city + filters: cold/warm rent or price, costs, deposit, m², rooms, floor, address, coordinates, year built, energy, realtor.
Pricing
from $1.10 / 1,000 listing scrapeds
Rating
0.0
(0)
Developer
Trevor Ortega
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Scrape ImmobilienScout24 (immobilienscout24.de), Germany's largest property portal: apartments and houses for rent and for sale, from any search URL or simply from a city, district or postcode plus filters. Get cold rent and warm rent (Kaltmiete / Warmmiete) or the purchase price, additional and heating costs, deposit, living space, rooms, floor, full address with district and postcode, coordinates, year built, energy certificate, features (balcony, built-in kitchen, lift, garden, cellar), available-from date, pets policy, description, all photos and the realtor's company.
The actor reads ImmoScout24's own app data instead of the website, so it is not stopped by the "Ich bin kein Roboter" page, runs on cheap datacenter proxies and needs no browser. Every page of a search is reachable: one search can return tens of thousands of listings. You pay only for the listings you get.
What data does ImmoScout24 Scraper extract?
From the result list (every listing):
| Field | Description |
|---|---|
id, url | Scout-ID and the expose link https://www.immobilienscout24.de/expose/<id> |
title | Listing headline |
propertyType, offerType, category | apartmentrent / apartmentbuy / houserent / housebuy ..., rent or buy, apartment / house |
price, priceText, currency | Main price as shown in the result list: cold rent for rentals, purchase price for sales (whole euros); null for "price on request" |
livingSpace, rooms | Living space in m² and number of rooms (e.g. 2.5) |
address, street, postcode, city, district | Address as published; fullAddress is false when the realtor shows only postcode and district |
latitude, longitude | Map position when the realtor publishes the address |
energyEfficiencyClass | A+ ... H |
realtorType, isPrivate | company (agent, landlord company, developer) or private |
isProject, houseBuilderOffer, houseBuilder | Unit of a new-build project; "Hausbau" offer from a house builder and its name |
published, publishedDate | "vor 3 Tagen" as shown, and the date it works out to |
titleImage, images | Photo URLs (1500x1000) |
search, scrapedAt | The search the listing came from and the scrape time |
With Include full listing details (on by default) each listing is opened once and you also get:
| Field | Description |
|---|---|
coldRent, warmRent, additionalCosts, heatingCosts, heatingCostsIncluded | Kaltmiete, Gesamtmiete (warm), Nebenkosten, Heizkosten, whether heating is included in the Nebenkosten |
deposit, depositText | Kaution in euros ("3 Kaltmieten" is converted), plus the text as written |
purchasePrice, pricePerSqm, hausgeld, buyerCommission, commissionNote, rentalIncome | Sale prices: Kaufpreis, €/m², Hausgeld, Käuferprovision, rental income of let properties |
propertySubtype | Wohnungstyp / Haustyp: Etagenwohnung, Dachgeschoss, Penthouse, Doppelhaushälfte, Villa ... |
usableArea, plotArea, bedrooms, bathrooms | Nutzfläche, Grundstück, Schlafzimmer, Badezimmer |
floor, floorText, buildingFloors | Etage ("2 von 4" -> floor 2 of 4), number of floors of a house |
availableFrom, availableFromDate | "Bezugsfrei ab" as written ("sofort", "1.11.2026") and as ISO date |
petsAllowed | yes, no, negotiable (nach Vereinbarung) or null |
balcony, builtInKitchen, lift, garden, cellar, guestToilet, stepFreeAccess, wbsRequired, newBuilding | Feature flags (true/false) |
features, parking, parkingSpaces, parkingPrice | All ticked features as listed, garage / parking type, count and price |
constructionYear, lastRefurbishment, condition, interiorQuality, constructionPhase, heatingType | Baujahr, Modernisierung, Objektzustand, Ausstattung, Bauphase, Heizungsart |
energyCertificate, energyCertificateType, energySource, energyConsumption, energyDemand, energyCertificateYear | Energieausweis: availability, Verbrauchs- or Bedarfsausweis, Energieträger, kWh/(m²·a), year per certificate |
state | Bundesland |
description, equipmentDescription, locationDescription, otherDescription | Objektbeschreibung, Ausstattung, Lage, Sonstiges (German, as written) |
images, imageCount | All photos |
realtorCompany, realtorContactName, realtorProfileUrl, realtorRating, realtorRatingCount, realtorVerified | Realtor company and published contact person, ImmoScout24 profile, rating, verified badge (empty for private landlords) |
objectNumber, priceRating, publicationState | Realtor's object number, ImmoScout24's price rating ("Guter Preis"), active/inactive |
How to scrape ImmobilienScout24 listings
- Run your search on immobilienscout24.de (location, price, rooms, area, features, sorting) and copy the address bar into Start URLs. Or type Locations ("Berlin", "Kreuzberg", "München Schwabing", "10115") and pick the Property type and filters.
- Set Max listings (your cost cap). Leave Include full listing details on for costs, features and the realtor, or switch it off for a cheaper, faster run.
- Click Start. Results appear in the Dataset tab; export them as JSON, CSV or Excel, or read them through the API.
Single listing links (https://www.immobilienscout24.de/expose/171666598) also work and return that listing with all details.
Input example
{"startUrls": [{ "url": "https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-mieten?price=-1500.0&livingspace=50.0-" }],"maxItems": 200,"includeDetails": true}
or by location and filters:
{"locations": ["Hamburg", "München"],"propertyType": "apartmentrent","maxPrice": 1400,"priceType": "warm","minRooms": 2,"features": ["balcony", "builtinkitchen"],"sort": "newest","maxItems": 100}
Output example
{"id": "171620556","url": "https://www.immobilienscout24.de/expose/171620556","title": "Modernisierte Altbauwohnung mit Aufzug nahe Schloss Charlottenburg!","propertyType": "apartmentrent","offerType": "rent","category": "apartment","propertySubtype": "Etagenwohnung","price": 1300,"priceText": "1.300 €","currency": "EUR","coldRent": 1300,"warmRent": 1505,"additionalCosts": 205,"heatingCostsIncluded": true,"deposit": 3900,"pricePerSqm": 22.41,"livingSpace": 58,"rooms": 2,"bedrooms": 1,"bathrooms": 1,"floor": 4,"floorText": "4 von 5","availableFrom": "1.11.2026","availableFromDate": "2026-11-01","petsAllowed": "negotiable","balcony": true,"builtInKitchen": true,"lift": true,"garden": false,"cellar": true,"features": ["Balkon/Terrasse", "Keller", "Personenaufzug", "Einbauküche", "Wohnberechtigungsschein erforderlich"],"constructionYear": 1907,"lastRefurbishment": 2024,"condition": "Modernisiert","energyCertificateType": "Verbrauchsausweis","energySource": "Öl","energyConsumption": 126,"energyEfficiencyClass": "E","address": "10589 Charlottenburg, Berlin","postcode": "10589","city": "Berlin","district": "Charlottenburg","state": "Berlin","fullAddress": false,"realtorType": "company","realtorCompany": "GT24 Real Estate GmbH","realtorVerified": true,"published": "vor 11 Stunden","publishedDate": "2026-10-09","description": "Diese stilvolle 2-Zimmer-Altbauwohnung befindet sich in einem repräsentativen Gebäude aus dem Jahr 1907 ...","imageCount": 14,"detailsFetched": true}
How many listings can I get from one search?
All of them. ImmoScout24's app search has no page limit: in testing, every one of the 854 pages (100 listings each) of "all apartments for rent in Germany" (85,000+ listings) was reachable. Results are fetched 100 per request, so even large runs are quick and cheap. Several start URLs or locations can be combined in one run; duplicates are removed.
Does it get warm rent, additional costs and the deposit?
Yes, with Include full listing details on (the default). The result list only shows the cold rent (or purchase price), living space and rooms; the details add warm rent, Nebenkosten, Heizkosten, deposit, floor, year built, energy certificate, all features, available-from date and pets policy. If a landlord writes "1.250 € zzgl. Heiz- und Nebenkosten" as the total rent, warmRent stays empty and the text is kept in warmRentText.
Does it work without login or a browser?
Yes. It uses the public data ImmoScout24 serves to its mobile app, with no account, cookies or "Plus" membership. The website's "Ich bin kein Roboter" bot check does not apply to it, and the default Apify datacenter proxy is enough: in testing (4,000+ requests) no request was blocked for good. ImmoScout24 does ask busy IPs to slow down (about 3 % of requests get an HTTP 429 answer); the actor paces itself and retries those automatically, so a run with details takes about 8 minutes per 1,000 listings, and about 35 seconds without details. If a run ever reports real blocks, switch the proxy to Residential (Germany).
Can I get the realtor's phone number or the landlord's name?
No. Phone numbers are only revealed on click on ImmoScout24 and are never collected. For realtors and housing companies the actor returns the company name, the published contact person and the ImmoScout24 profile link. For private landlords it returns no name, no street or house number, and coordinates rounded to about 1 km.
Monitor changes on a schedule
Turn on Only new or changed items to watch a search: each run remembers what earlier runs returned and outputs only listings that are new or whose price (cold rent or purchase price) changed. Unchanged listings are dropped before any detail page is opened, so they are not charged. Max listings then sets how many of the newest listings are checked per run, so keep Sort by on "Newest first". Save the input as a task, add a Schedule in Apify (for example every morning), and give each watch its own Monitoring key if several schedules use the same search. Every output item has changeType (new or changed), and changed items carry previousValues with the old price, e.g. {"price": 1450}.
Pricing
Pay per result: a small fee per listing, plus a small extra fee per listing opened when Include full listing details is on (see the Pricing tab). No start fee, no subscription; Apify's free plan is enough to try it. Platform usage is low: measured about $0.02 per 1,000 listings with details and under $0.01 per 1,000 without, on the default datacenter proxy.
Integrations and API
Use the run in Zapier, Make, n8n or Google Sheets, or call it from Python/Node with the Apify client. See the API tab for ready-made snippets. Schedule it daily to get new flats in your area, or to track rents and asking prices by district.
Is it legal to scrape ImmobilienScout24?
This Actor collects publicly visible listing data: properties, prices, costs, features and the advertising company's business details. It does not collect phone numbers, private landlords' names or their exact addresses, and it uses no login. You are responsible for how you use the data and for complying with ImmoScout24's terms and applicable law (including the GDPR).
Support
Found a bug or need a field added? Open an issue in the Issues tab; it is usually answered within a day.