ImmobilienScout24 Real Estate Scraper
ImmobilienScout24 Real Estate Scraper
Scrape property listings (apartments, houses, for-sale and rental) from ImmobilienScout24.de — Germany's largest real estate portal. Extracts price, living space, rooms, address, realtor, features, and images per listing.
What it does
The actor crawls ImmobilienScout24 search result pages and extracts the ~20 listings per page from the embedded IS24 JSON state (title, price, living space, rooms, address, city). By default it saves those records directly — no extra request per listing. Set includeExposeDetails to true to also fetch each listing's detail page (expose) for realtor, features, availability date, description and images. Pagination is automatic.
Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls |
Array | — | Search result URLs to scrape (e.g. https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-mieten). Leave empty to use the default seed (apartments for rent, Germany-wide). |
listingType |
select | both |
Which listings to scrape: rent, sale, or both. |
maxItems |
integer | 10 |
Maximum number of listings to return. 0 = unlimited. |
includeExposeDetails |
boolean | false |
Fetch each listing's expose (detail) page for realtor name/type, features, availability date, description text and images. Slower and more expensive (1 extra request per listing) — leave off for the fields already present on the search-results page. |
Output
One record per property listing with these fields:
| Field | Type | Description |
|---|---|---|
listing_id |
string | Unique IS24 listing ID |
listing_url |
string | Full URL of the listing detail page |
title |
string | Listing headline |
listing_type |
string | rent or sale |
property_type |
string | Property type (apartment, house, etc.) |
price_raw |
string | Price as shown on site, e.g. "1.200 €" |
price_amount |
number | Numeric price value |
price_currency |
string | Currency code (EUR) |
living_space_m2 |
number | Living space in square metres |
rooms |
number | Number of rooms |
address |
string | Full address string |
district |
string | District or neighbourhood |
city |
string | City name |
realtor_name |
string | Realtor or private seller name. Only populated when includeExposeDetails is enabled. |
realtor_type |
string | realtor or private. Only populated when includeExposeDetails is enabled. |
features |
string | Comma-separated key features. Only populated when includeExposeDetails is enabled. |
available_from |
string | Date property is available. Only populated when includeExposeDetails is enabled. |
description_text |
string | Full listing description. Only populated when includeExposeDetails is enabled. |
images |
string | Comma-separated image URLs. Only populated when includeExposeDetails is enabled. |
scraped_at |
string | ISO-8601 scrape timestamp |
Examples
Rent listings in Berlin:
{
"startUrls": [{"url": "https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-mieten"}],
"listingType": "rent",
"maxItems": 50
}
For-sale houses in Munich:
{
"startUrls": [{"url": "https://www.immobilienscout24.de/Suche/de/bayern/muenchen/haus-kaufen"}],
"listingType": "sale",
"maxItems": 25
}
Default Germany-wide rent search:
{
"listingType": "rent",
"maxItems": 100
}
With expose-page enrichment (realtor, features, description, images):
{
"startUrls": [{"url": "https://www.immobilienscout24.de/Suche/de/berlin/berlin/wohnung-mieten"}],
"listingType": "rent",
"maxItems": 25,
"includeExposeDetails": true
}
Notes
- ImmobilienScout24 turns away essentially every automated tool. This actor clears the wall for you.
- Each page fetch is billed — see pricing details. The default run makes one request per search-results page (~20 listings); enabling
includeExposeDetailsadds one extra request per listing. - The actor runs with 512 MB memory and a 4-hour timeout.