ImmoScout24 Scraper avatar

ImmoScout24 Scraper

Pricing

from $0.80 / 1,000 listings

Go to Apify Store
ImmoScout24 Scraper

ImmoScout24 Scraper

Scrape ImmoScout24 listings for any German city, district or postcode: rent or price, €/m², living space, rooms, address with coordinates, energy class, photos, realtor and phone. Filter by price, rooms and size. Export JSON or CSV, call it via API, schedule it, or use n8n, Make and Zapier.

Pricing

from $0.80 / 1,000 listings

Rating

0.0

(0)

Developer

Matvey

Matvey

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

3

Monthly active users

2 days ago

Last modified

Share

ImmoScout24 Scraper collects listings from ImmoScout24 (immobilienscout24.de), Germany's largest property portal, for any city, district or postcode: apartments and houses to rent or buy, WG rooms, furnished flats, building plots, garages, offices, investment properties and foreclosure auctions. Every listing comes back as one clean row: price as a number, price per m², living space, rooms, full address with postcode and district, coordinates, energy class, photo and how long it has been online. By default each row also gets cold and warm rent, ancillary and heating costs, deposit, commission, floor, year built, condition, heating and energy data, balcony / garden / lift / kitchen flags, bedrooms, bathrooms, all photos, the full description texts and the realtor — all included in the listing price — plus, on request, the realtor's phone number.

It reads ImmoScout24's own app data, so there is no browser, no login, no cookies and no proxy: 300 fully detailed Munich listings take about 12 seconds. Export JSON, CSV or Excel, call it from the API, schedule it, or use it from n8n, Make, Zapier, Google Sheets or an AI agent through MCP.

What is ImmoScout24 Scraper?

A pay-per-result tool for anyone who needs German real-estate listings as data instead of web pages: investors comparing rents and prices per m², agencies watching new listings, relocation and proptech teams, researchers and AI agents. You type a place (Berlin, München, Hamburg - Eimsbüttel, 10115, or Germany for the whole country) or paste an ImmoScout24 search URL, pick the property type and filters, and get a table. Filters (price, rooms, living space) are applied by ImmoScout24 itself, so every row already matches.

What data can ImmoScout24 Scraper extract?

FieldExample from a real run (Berlin, 22 October 2026)
title, url, idWohnen mit Herz – wie geschaffen für zwei mit WBS 140 · link · 170975305
price, priceKind, priceText, currency363 · baseRent (cold rent) · "363 €" · EUR
pricePerSqm6.98
livingSpace, rooms52 · 2
address, street, postalCode, city, district, addressCompleteHellersdorfer Straße 87 · 12619 · Berlin · Kaulsdorf (Hellersdorf) · true
latitude, longitude52.52485 · 13.58695 (when the advertiser makes the exact address public)
energyEfficiencyClassB
isPrivateOfferfalse (true = private landlord or seller)
publishedAgo, publishedDaysAgo"vor einem Monat" · 30
imageUrl, realtorLogoUrlmain photo, realtor logo
plusEarlyAccess, plusEarlyAccessUntillisting still in ImmoScout24's paid early-access window
plotArea, usableArea, availableFrom, marketValue, lowestBidfor houses, plots, offices, WG rooms and foreclosure auctions
position, searchQuery, searchTotalResultsrank in the results, your input, how many listings the search has

Listing details (includeDetails, on by default, no extra charge): baseRent, totalRent, serviceCharge, heatingCosts, purchasePrice, deposit, commission, brokerFee, floor, numberOfFloors, bedrooms, bathrooms, yearConstructed, condition, interiorQuality, heatingType, energySources, energyConsumption, energyCertificateType, newBuilding, hasBalcony, hasGarden, hasCellar, hasLift, hasBuiltInKitchen, isBarrierFree, petsAllowed, furnished, parkingType, parkingSpaces, apartmentType, houseType, state, quarter, objectNumber, priceRating, description, furnishingDescription, locationDescription, otherDescription, images, imageCount, realtorName, realtorCompany, realtorRating, realtorReviewCount, realtorProfileUrl, realtorAddress, and criteria — every labelled fact of the listing page as label → value.

With Realtor phone (includeRealtorPhone): realtorPhone and realtorPhones — the numbers a professional realtor shows on the listing. Never filled for private landlords or sellers.

How much does it cost to scrape ImmoScout24?

Pay per result. No start fee, no subscription. Error rows, "no results" rows and the run summary row are always free.

EventPrice (Apify Free plan)Per 1,000
Listing (search data + full listing details)$0.001225$1.23
Add-on: Realtor phone (only listings that have a phone)$0.0035$3.50

$1 buys about 816 fully detailed listings — details are not an extra charge. The $5 monthly credit of the Apify Free plan covers about 4,000 listings. Paid Apify plans pay less per listing (down to $0.80 per 1,000). Platform usage on top is tiny because there is no browser and no proxy: a 300-listing run with details used $0.0015 of compute.

Set Max listings and the run never delivers more than that. Set Max cost per run in the run options and the run stops by itself, green, when the budget is used up — everything written is paid for, nothing beyond it.

How to scrape ImmoScout24 listings

  1. Click Try for free (a free Apify account is enough).
  2. Type one or more places into Locations: a city, a district, a postcode or Germany. Or paste ImmoScout24 search URLs into ImmoScout24 search or listing URLs.
  3. Pick the Property type (apartment for rent is the default) and, if you want, a price, rooms or living-space range.
  4. Set Max listings (50 by default) and click Start.
  5. Open the Output tab and download the table, or read the dataset through the API.

Leave everything empty and the Actor runs a demo search for Berlin apartments to rent.

⬇️ Input

Two- to three-room apartments in Hamburg up to €1,500 cold rent, newest first:

{
"locations": ["Hamburg"],
"propertyType": "apartmentrent",
"priceMax": 1500,
"roomsMin": 2,
"roomsMax": 3,
"sortBy": "newest",
"maxItems": 200
}

A search URL from your browser keeps its own place, type and filters, a radius search included:

{
"startUrls": [
{ "url": "https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-mieten?price=-1000.0&numberofrooms=2.0-" },
{ "url": "https://www.immobilienscout24.de/Suche/radius/wohnung-kaufen?centerofsearchaddress=Berlin;;;;;&geocoordinates=52.51051;13.43068;3.0" },
{ "url": "https://www.immobilienscout24.de/expose/172000652" }
],
"maxItems": 100
}

Property types: apartmentrent, apartmentbuy, houserent, housebuy, flatshareroom (WG-Zimmer), shorttermaccommodation (furnished / Wohnen auf Zeit), livingbuysite (building plots), garagerent, garagebuy, office, investment, compulsoryauction (Zwangsversteigerung). priceType: "total" filters apartments and houses for rent by warm rent instead of cold rent. language: "en" returns ImmoScout24's English translation of titles.

⬆️ Output

A real row with includeDetails switched off (Berlin, 22 October 2026) — the fields every row has:

{
"type": "listing",
"id": "170975305",
"url": "https://www.immobilienscout24.de/expose/170975305",
"title": "Wohnen mit Herz – wie geschaffen für zwei mit WBS 140",
"propertyType": "apartmentrent",
"price": 363,
"priceKind": "baseRent",
"priceText": "363 €",
"livingSpace": 52,
"rooms": 2,
"currency": "EUR",
"pricePerSqm": 6.98,
"address": "Hellersdorfer Straße 87, 12619 Berlin, Kaulsdorf (Hellersdorf)",
"addressComplete": true,
"street": "Hellersdorfer Straße 87",
"postalCode": "12619",
"city": "Berlin",
"district": "Kaulsdorf (Hellersdorf)",
"latitude": 52.52485,
"longitude": 13.58695,
"energyEfficiencyClass": "B",
"isPrivateOffer": false,
"publishedAgo": "vor einem Monat",
"publishedDaysAgo": 30,
"imageUrl": "https://pictures.immobilienscout24.de/listings/e82a1d4d-05d4-44b1-b74b-c882ec19d573-2104823015.png/ORIG/resize/1500x1000>/format/webp/quality/80",
"position": 3,
"searchQuery": "Berlin",
"searchTotalResults": 4467,
"scrapedAt": "2026-10-22T14:34:52.043Z"
}

With Listing details (the default) and Realtor phone on, a Munich row also carries (shortened):

{
"baseRent": 1525, "totalRent": 1745, "serviceCharge": 220,
"floor": 1, "yearConstructed": 2026, "condition": "first_time_use", "interiorQuality": "sophisticated",
"energySources": "pellet_heating", "newBuilding": true,
"hasBalcony": true, "hasCellar": true, "hasLift": true, "hasBuiltInKitchen": true, "isBarrierFree": true,
"petsAllowed": "no", "apartmentType": "Etagenwohnung", "bedrooms": 1, "bathrooms": 1,
"availableFrom": "2026-11-01", "state": "Bayern", "quarter": "Altaubing",
"description": "Komfortabel geplant, großzügig geschnitten und ruhig im Münchner Westen gelegen. …",
"images": ["https://pictures.immobilienscout24.de/listings/…jpg/ORIG/resize/1500x1000/format/webp/quality/80"],
"imageCount": 11,
"realtorName": "K+S Verkaufsberatung vor Ort",
"realtorCompany": "Krieger + Schramm GmbH & Co. KG",
"realtorAddress": "Industriestraße 34, 81245 München",
"realtorPhone": "+49 89 232387180"
}

Rows with type: "error" explain a problem with one input (unknown place, wrong URL, a search with no results) and are free; a free type: "notice" row at the end sums up what was delivered and charged.

Use cases

Real-estate investors

Pull every apartment for sale in a city with price, m², price per m², year built, condition and energy class, and rank by yield against the rents of the same district.

Agencies and property managers

Track new listings in your area daily, see which realtors are active where, and benchmark your own asking rents against the market.

Relocation services and tenants' platforms

Feed fresh rentals with photos, warm rent, deposit and availability date into your own search or alerts.

Proptech, analysts and researchers

Build rent and price indices by postcode, follow supply over time, and study energy classes of the German housing stock.

Lead generation

Collect realtor companies, contact names, office addresses and business phone numbers from the listings in a region.

AI agents and RAG

An agent can call the Actor with a plain place name and get structured JSON back: every field is described in the dataset schema, the input needs no URL, and runs finish in seconds.

Integrations

  • API — POST https://api.apify.com/v2/acts/lergassy~immoscout24-scraper/run-sync-get-dataset-items?token=… with the input JSON returns the rows directly.
  • Python / JavaScript — apify-client: client.actor("lergassy/immoscout24-scraper").call(run_input={"locations": ["Berlin"]}), then read client.dataset(run["defaultDatasetId"]).list_items().
  • n8n, Make, Zapier — use the Apify app or node, pick this Actor and map the dataset items.
  • Google Sheets — the Apify Google Sheets integration or the CSV export link.
  • Schedules and webhooks — run the same input every morning; a webhook on ACTOR.RUN.SUCCEEDED posts the dataset link to your system.
  • MCP — connect the Apify MCP server to Claude, Cursor or any MCP client and ask for ImmoScout24 listings in plain language.

Only new listings, every day

Put a name into Only new listings — memory name (for example berlin-watch), set Sort by to Newest first and schedule the run. Every run remembers the listings it delivered under that name and writes — and charges — only listings you have not received before.

Migrating from another ImmoScout24 scraper?

You usedHere
startUrls / startUrl with a search URLstartUrls (same URL works, filters included)
searchLocation / locationlocations (a list, several places in one run)
searchOperation + searchPropertyType / operation + propertyTypepropertyType (e.g. apartmentrent, housebuy)
searchMinPrice / minPrice, searchMaxPrice / maxPricepriceMin, priceMax
searchMinRooms / minRooms, searchMaxRooms / maxRoomsroomsMin, roomsMax
searchMinLivingSpace / minLivingSpace …livingSpaceMin, livingSpaceMax
maxItems / pageLimitmaxItems
fetchDetailsincludeDetails
monitoringMode / monitorModeonlyNewRowsStore (any name you choose)
properties (listing IDs)startUrls with https://www.immobilienscout24.de/expose/<id>

Troubleshooting

  • "ImmoScout24 does not know the place" — write the place the way ImmoScout24's search box suggests it (districts as Hamburg - Eimsbüttel or Berlin Kreuzberg), or paste the search URL from the site. The status message of every run shows which ImmoScout24 place each of your inputs was matched to (Munich → München, Frankfurt → Frankfurt am Main).
  • A filter was ignored — some property types have no such filter on ImmoScout24 (garages have no rooms). The status message says which filter was not applied.
  • Fewer rows than Max listings — the search simply has fewer listings; searchTotalResults shows how many exist.
  • No street or coordinates — the advertiser hides the exact address (addressComplete: false); postcode and district are still given.
  • The price looks like cold rent although I filtered by warm rent — ImmoScout24's result list always shows cold rent. Keep Listing details on (the default) to get totalRent.
  • Shape searches (an area drawn on the map) are not supported; use a city, district or radius URL.

❓ FAQ

The Actor collects only what ImmoScout24 shows publicly to any visitor, without logging in. Whether and how you may use the data depends on your purpose and on the laws that apply to you, including the GDPR for personal data and database rights. Private landlords' names and phone numbers are never returned. If you are unsure, ask a lawyer.

Do I need an ImmoScout24 account, API key or proxy?

No. The Actor needs none of these.

How many listings can I get?

Everything a search has: ImmoScout24 lists about 4,500 apartments for rent in Berlin and over 80,000 in Germany. Set Max listings up to 100,000.

How fresh is the data?

Live: every run asks ImmoScout24 at that moment. publishedAgo shows how long a listing has been online.

Do listing details cost extra?

No. Description texts, all photos, costs, building and energy data and the realtor are included in the listing price and switched on by default. Switch includeDetails off only if you want the fastest possible search-level rows — the price stays the same.

Can I get the realtor's phone number?

Yes, with Realtor phone on, for listings where a professional realtor shows a number (about one in five in Munich in our tests). You pay only for listings that have one.

Does it work for Austria or Switzerland?

Not yet — German listings only.

Your feedback

Missing a field, a filter or a property type? Open an issue on the Issues tab — every report gets an answer, and most fixes ship within days.

You might also like

ActorWhat it does
Zillow ScraperUS homes for sale, rent and recently sold, with Zestimate and agent phone
Airbnb Listings ScraperShort-term rentals with nightly prices for the same cities
Booking Hotels ScraperHotels, prices and ratings from Booking.com