Immowelt Germany Property Scraper
Pricing
from $0.50 / 1,000 listings
Immowelt Germany Property Scraper
Collect property listings from immowelt.de search results for market research and listing monitoring. Search by city or postcode, rent or buy, and apartment, house or plot; alternatively supply an Immowelt search URL.
Pricing
from $0.50 / 1,000 listings
Rating
0.0
(0)
Developer
Philip Kirkbride
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
7 hours ago
Last modified
Categories
Features
Share
Immowelt Scraper: Germany Property Listings
Collect German property listings from immowelt.de for rent or for sale, as clean rows: cold rent, warm rent or purchase price in EUR, rooms, living area, plot area, floor, energy class, city, district, postcode, availability, the publishing agency and photos. Search by city or postcode, or paste any Immowelt search link, and filter by price, rooms and size.
Built for property investors, agents, proptech analysts and anyone researching a move within or to Germany.
Use cases
- Rent tracking: follow cold and warm rents (Kaltmiete and Warmmiete) for the same city districts week by week.
- Comparable listings: pull current flats or houses for sale in a postcode to price an offer or a valuation, with price per square metre one formula away.
- New-listing alerts: schedule the same search daily; the stable
listingIdshows which listings are new, andpostedAtwhen they were created. - Relocation research: compare rents for two- or three-room flats across Berlin, Munich, Hamburg or Frankfurt districts in one spreadsheet.
- Market snapshots and agency lists: see which agencies publish the most listings in an area, with published contact details when available.
Quick start
An empty input ({}) returns up to 20 apartments for rent in Berlin. To
choose your own search, paste an Immowelt search link:
{"searchUrl": "https://www.immowelt.de/suche/mieten/wohnung/berlin/berlin-10115/ad08de8634","maxResults": 20}
Or search by place, deal and property type, and filter the results:
{"location": "Hamburg","transactionType": "buy","propertyType": "apartment","roomsFrom": 2,"priceTo": 450000,"maxResults": 30}
Several searches in one run (set fanOutMax to the number of searches):
{"locations": ["Hamburg", "München", "Köln"], "fanOutMax": 3, "maxResults": 90}
Input
| Name | Type | Default | What it does |
|---|---|---|---|
location | string | Berlin | German city name or five-digit postcode. |
transactionType | string | rent | rent or buy. |
propertyType | string | apartment | apartment, house or plot. |
searchUrl | string | empty | An Immowelt search link (https://www.immowelt.de/suche/..., without ? parameters). Replaces location, deal and property type. |
searchUrls | array | empty | Up to 50 search links; replaces searchUrl and the locations. |
locations | array | empty | Up to 50 cities or postcodes; used when no search links are given. |
fanOutMax | integer | 1 | How many of your searches to run, 1 to 50. Raise it when you list several searches: with the default 1, only the first one runs. |
priceFrom, priceTo | number | none | Range for price, the main displayed amount in EUR, inclusive. |
roomsFrom, roomsTo | number | none | Room range, inclusive. |
areaFrom, areaTo | number | none | Living area range in square metres, inclusive. |
maxResults | integer | 20 | Most listings for the whole run, 1 to 10,000. |
proxyConfiguration | object | off | Optional connection setting; the default works for normal runs. |
The price, room and area filters are applied to the listings each search
returns, so a narrow filter can return fewer rows than maxResults. A
listing without the filtered value (for example no price) does not match.
Output
One row per listing:
| Field | What it holds |
|---|---|
listingId, url, title | Immowelt listing ID, listing page and headline. |
transactionType, propertyType | rent or buy; apartment, house or plot. |
price, currency, priceOnRequest | Main displayed amount in EUR. Price-on-request listings have price and currency null and priceOnRequest: true. |
coldRent, warmRent, purchasePrice | Kept separate when the listing labels them. |
rooms, livingArea, plotArea | Rooms and areas in square metres. |
floor, availableFrom | As the listing writes them, in German (e.g. 1. Geschoss, frei ab sofort). |
yearBuilt, energyClass | When the search result shows them; year built is often null. |
city, district, postcode | Location. |
agencyName | Published publisher name: agency, sole trader, brand or private publisher. |
phoneNumbers, contactCard | Published contact details (which can include names and emails) when available, otherwise null. |
images | Photo links; empty when none are shown. |
postedAt, updatedAt | Created and updated times from Immowelt (they can differ from the first public posting date). |
Missing values are null. A listing found by two searches in the same run
is returned once. The OUTPUT record of each run reports how many listings
were delivered, why the run stopped and any search that was incomplete.
Output example
A record from the default Berlin rental search:
{"listingId": "26T8X9U2Q98T","url": "https://www.immowelt.de/expose/a06d6ef2-1e76-4b3c-b084-03c11cce9e9d","title": "Cosmo Berlin - großzügige Wohnung mit Südbalkon und EBK im Weitlingkiez, sofort bezugsfrei","transactionType": "rent","propertyType": "apartment","price": 1799,"currency": "EUR","priceOnRequest": false,"coldRent": 1799,"warmRent": 2149,"purchasePrice": null,"rooms": 3,"livingArea": 87.8,"plotArea": null,"floor": "1. Geschoss","yearBuilt": null,"energyClass": "B","city": "Berlin","district": "Friedrichsfelde","postcode": "10315","availableFrom": "frei ab sofort","agencyName": "STRATEGIS AG","phoneNumbers": null,"contactCard": null,"images": ["https://mms.immowelt.de/c/1/f/c/c1fcfbc3-24bb-4c53-af37-95e2d3d78223.jpg","https://mms.immowelt.de/1/b/9/8/1b984a07-e01e-4ac0-a40a-b60bea6e6359.jpg"],"postedAt": "2026-10-30T15:15:17.552Z","updatedAt": "2026-10-30T15:15:27.446Z"}
Download the dataset as JSON, CSV, Excel or XML, or read it from your own code with an Apify client.
Pricing
- $0.0005 per listing delivered.
- $0.005 per run start. The start event is charged per GB of memory; the default 512 MB run is one start event.
Worked examples: the empty-input run (20 listings) costs about $0.015; 100 listings about $0.055; 1,000 listings about $0.505. Filtered-out, duplicate and failed listings are not charged. When your maximum charge for the run is reached, the run stops and keeps the rows already saved.
Scheduling and monitoring
- New listings: save your search as a task and schedule it daily. Rows
whose
listingIdwas not in the previous run are new. - Rent and price changes: compare
price,coldRentandwarmRentperlistingIdbetween weekly runs. - Delivery: connect the task to email, Slack, Google Sheets or a webhook with Apify integrations.
FAQ
How fresh is the data? Every run reads Immowelt at the time it runs. Nothing is cached between runs.
How many listings can I get? Each search returns at most its first 30
listings, even when Immowelt shows a larger total; deeper result pages are
not read yet. For more coverage, run several narrower searches (one per
district or postcode) with searchUrls or locations and raise fanOutMax
(up to 50 searches, so up to about 1,500 listings per run).
Does it open each listing's page? No. It returns what Immowelt search results show, so detail-only data such as the full description or year built is often missing.
Which locations work? German city names and postcodes, matched by Immowelt's own search. A pasted search link is the most exact choice: use one for a specific district, or if a city name does not land where you expect.
What if a search fails? Listings already delivered are kept, and the run summary names the incomplete search; later searches in the same run are not started. A run that delivers nothing because the source was unavailable or the search was empty ends as failed with a readable message.
Is this legal? The Actor collects publicly visible listing information, including publisher names and published contact details. You are responsible for handling them in line with GDPR and the marketing rules that apply to you.
For help, contact Apify Support and include the run URL.