ImmobilienScout24 Scraper — German Buy & Rent Listings
Pricing
from $5.00 / 1,000 property scrapeds
ImmobilienScout24 Scraper — German Buy & Rent Listings
Scrape Immobilienscout24.de buy and rent listings by city or /Suche URL. Returns flat rows with listing URL, title, address, agency and images, plus price, rooms and living space where the page shows them.
Pricing
from $5.00 / 1,000 property scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Share
What is ImmobilienScout24 Scraper — German Buy & Rent Listings?
ImmobilienScout24 Scraper turns a German city or an ImmobilienScout24 /Suche search URL into a dataset with one row per buy or rent listing. Each row returns the expose ID and URL, operation, title, price in EUR, rooms, living space in m², address, district, city and the search URL it came from. German PropTech teams, rental-market analysts, relocation agencies, investors and AI agents use it to track apartment and house supply in cities such as Berlin, München and Hamburg without an ImmobilienScout24 login.
Why teams use this ImmobilienScout24 scraper
- City or URL input. Set
location,operationandestateType, or paste a live/SucheURL with your own district and filter choices. - Buy and rent, every property type. Apartments, houses, plots, commercial units, garages and shared flats (WG-Zimmer).
- Filters on price, rooms and space.
minPrice,maxRooms,minSpaceand friends trim rows before they are saved. - Expose IDs for joins.
listingIdandurlgive a stable key for deduplication and week-over-week tracking. - Run outcome records. Each run writes
OUTPUTandRUN_SUMMARYwithCOMPLETE,PARTIAL,VALID_EMPTY,INVALID_INPUTorUPSTREAM_FAILED.
Best fit for this Actor
- Designed for monitoring ImmobilienScout24 buy and rent supply in German cities and districts.
- Use it when you need listing IDs, prices, rooms and living space for market snapshots or lead lists.
- For broader German coverage, continue with Immowelt Scraper — German Buy & Rent Listings and merge both datasets on address and price.
- When your market is Spain, Italy or Portugal, use Idealista Scraper — Spain, Italy & Portugal Real Estate instead.
Example workflow: from a city to a weekly rent tracker
A relocation agency starts with Berlin two-room apartments for incoming employees. They set location to Berlin, operation to rent, estateType to apartment, minRooms to 2 and maxPrice to 1500. The dataset returns listingId, title, price, rooms, livingSpaceSqm and district for each listing. They export the rows to a sheet, compare price per m² by district, then schedule the same input every Monday and flag new listingId values for the relocation team.
Input
| Field | Type | What it controls |
|---|---|---|
startUrls | array | ImmobilienScout24 /Suche/de/... or /Suche/radius/... search URLs. |
location | string | German city used when startUrls is empty, for example Berlin or München. |
operation | string | rent or buy. Default rent. |
estateType | string | apartment, house, plot, commercial, garage or shared. |
minPrice / maxPrice | integer | EUR price bracket. |
minRooms / maxRooms | number | Room count (Zimmer) bracket. |
minSpace / maxSpace | integer | Living space bracket in m². |
maxItems | integer | Rows to return and charge. Default 30. |
proxyConfiguration | object | Default Apify Residential with German exit IPs. |
{"location": "Berlin","operation": "rent","estateType": "apartment","minRooms": 2,"maxPrice": 1500,"maxItems": 30,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "DE"}}
Output
One row per listing.
| Field | What it contains |
|---|---|
listingId, url | Expose ID and expose URL |
operation | RENT or BUY |
title | Listing headline |
price, priceFormatted, priceCurrency | Price in EUR when the listing shows one |
rooms, livingSpaceSqm | Zimmer and Wohnfläche when shown |
address, street, district, city, country | Location fields |
imageUrls, imageCount, isPrivateOwner | Gallery and owner-type fields |
serpRank, serpSnippet | Position and listing summary text from the search results |
source, inputUrl, scrapedAt | Collection route, originating search URL and collection time |
{"listingId": "167483693","url": "https://www.immobilienscout24.de/expose/167483693","operation": "RENT","title": "2,5-Zimmer Wohnung 560 € zur Miete Gropiusstadt, Berlin","price": 560,"priceCurrency": "EUR","priceFormatted": "560 €","rooms": 2.5,"livingSpaceSqm": 69,"address": "Gropiusstadt, Berlin","district": "Gropiusstadt","city": "Berlin","country": "DEU","imageUrls": [],"imageCount": 0,"isPrivateOwner": false,"source": "immobilienscout24-google-serp","inputUrl": "https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-mieten","scrapedAt": "2026-09-26T06:54:54.905Z","serpRank": 2,"serpSnippet": "Wohnen mit Charakter: 2,5-Zimmer-Wohnung in Berlin ... Zi. 69 m². Fläche. 760–840 €. Warmmiete."}
Each row carries the listing ID, URL, title and city. Price, rooms, living space, street and district fill in when the listing summary includes them, so serpSnippet is a useful extra source for warm rent and availability notes. The dataset schema also reserves fields such as zipCode, agencyName, latitude and energyClass for listings whose public data carries them.
Pricing
This Actor uses Pay per event plus Apify platform usage. You pay one Property scraped event per listing written to the dataset and one small Actor Start event per run, and Apify platform usage for compute and residential proxy is billed on top. The live Pricing tab on this page shows the current event prices.
Worked example: a Berlin rent search with maxItems set to 30 that saves 30 listings costs 30 property events, one start event and the platform usage of that run. maxItems is your ceiling for property events.
API example
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~immobilienscout24-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"location": "Hamburg", "operation": "buy", "estateType": "house", "maxItems": 20}'
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("khadinakbar/immobilienscout24-scraper").call(run_input={"startUrls": [{"url": "https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-mieten"}],"maxItems": 30,})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["listingId"], row.get("price"), row.get("livingSpaceSqm"), row.get("district"))
Use with AI agents (MCP)
Connect the Actor to Claude, ChatGPT, Cursor or any MCP client through Apify MCP, then ask:
Find 20 rental apartments in Berlin on ImmobilienScout24 with at least 2 rooms under 1,500 EUR and list price, rooms, living space, district and the expose link.
The agent calls the Actor with location, operation and the filters, reads the rows with get-dataset-items, and reads OUTPUT.outcome to know whether the search was complete or empty. url and scrapedAt give provenance per listing, and maxItems keeps cost bounded.
Best results
| Starting situation | Helpful action | Expected outcome |
|---|---|---|
| A specific district or radius | Paste the live /Suche URL from your browser in startUrls | Listings for exactly that area |
| A major German city | Use location with operation and estateType | A ready-made city search |
| A budget or size brief | Set maxPrice, minRooms and minSpace | Only listings that fit the brief |
| Weekly monitoring | Schedule the same input and compare listingId values | New listings each week |
| Steady results pages | Keep the default Residential proxy with German exit IPs | Pages served as German visitors see them |
Builder's note
I built this for market monitoring, so every row is keyed by the expose ID and tagged with the search URL it came from, which makes week-over-week comparisons simple. I designed the city builder for the common case and kept startUrls for everything else, because ImmobilienScout24's own search page already encodes districts and filters better than any input form. I found that listing summaries often carry warm rent and availability hints, so I keep the summary text on each row next to the structured fields.
FAQ
Which cities work with location?
Major German cities such as Berlin, München, Hamburg, Köln and Frankfurt. For any other area, paste a /Suche URL.
Are the price filters applied before billing?
Yes. Listings outside your price, room and space filters are dropped before they are saved, so they are free.
Can I open the full listing?
Yes. Each row's url points to the public expose page.
Responsible use
This Actor collects publicly available ImmobilienScout24 listing data for research, market monitoring and lead workflows. Respect ImmobilienScout24's terms, the GDPR and other applicable laws, and contact advertisers only through lawful channels. ImmobilienScout24 is a trademark of its owner; this independent Actor is not affiliated with or endorsed by ImmobilienScout24 GmbH. For questions or bugs, open a ticket in the Issues tab.