Immowelt.de Property Scraper
Pricing
from $0.80 / 1,000 results
Immowelt.de Property Scraper
[💰 $0.8 / 1K] Extract German property listings from Immowelt.de — price, €/m², rooms, living and plot area, address, energy class, photos, and agent contacts. Filter by location, sale/rent, property type, price, size, rooms, and year built.
Pricing
from $0.80 / 1,000 results
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Pull German property listings from Immowelt.de at scale — asking price, €/m², rooms, living and plot area, address, energy class, photo galleries, floor plans and agent contacts, for sale and for rent across all 16 federal states. Built for German estate agents, property investors, PropTech teams and relocation specialists who need a clean, filterable Immowelt dataset without hand-crafting search links or copying listings one page at a time.
Why This Scraper?
- A real search builder, not just a URL box — 4 transaction types (For Sale, For Rent, Auction, Foreclosure Auction), 7 property types, 4 project types, 5 numeric range filters (price, living area, plot size, rooms, year built) and 6 sort orders, all as plain dropdowns and number boxes.
- Location is a true geographic filter, not a text match — type a city, district, postcode or federal state and you get that exact place.
Prenzlauer Bergreturns only the listings inside that quarter, around 450 of them rather than Berlin's 12,000, and postcode80995narrows München from roughly 3,900 listings to about 130. Type a place Immowelt does not have and the run stops and says so, instead of quietly searching the whole country and billing you for it. - AI scene labels on the photos — Immowelt classifies images as
LIVING_ROOM,KITCHEN,BEDROOM,HOUSE_FACADE,SWIMMING_POOLand more. About seven photos in ten carry a label, and every label ships inimages[].category— so you can pull just the kitchen shots across thousands of listings. No other Immowelt dataset carries it. - German energy data, structured — efficiency class A+ to H on every search row, plus certificate type (Verbrauchsausweis / Bedarfsausweis), consumption in kWh/(m²·a) and heating system (e.g. Zentralheizung) when you turn on full detail.
- 57 curated fields per listing — no filler — every column is real listing data. No analytics or tracking passthrough padded in to inflate a field count.
- Agent and agency contacts on every row — agency name, named contact person, phone, postal address, website, Immowelt profile URL, star rating and review count, plus an
isPrivateOwnerflag that separates private sellers from brokers. - Investment maths ready out of the box —
pricePerSqmsits next toprice,livingAreaandplotArea, so yield and €/m² screening work directly on the dataset with no post-processing. - Up to 50,000 listings per run, on one shared budget —
maxResultscaps the whole run rather than each search, so a list of 20 links cannot quietly cost you 20 times what you set, and a run with no limit stops at 50,000 instead of running away. - Nine extra fields on demand — the optional detail option opens each property's own page for map coordinates, the complete description (search results stop at roughly 200 characters), year built, heating type, energy certificate type, energy consumption, the full amenities list and the commission fee. Off by default, so most runs never pay for it.
Use Cases
Market Research & Analysis
- Track asking prices and €/m² by city, district or postcode over time
- Compare apartment and house inventory across Berlin, München, Hamburg and beyond
- Measure how many listings a price band actually holds — a Berlin buy search returns around 12,000 listings, of which roughly 1,800 sit in the €300k–€400k band
- Monitor new-build supply by filtering to
New_Buildproject types
Investment & Portfolio Screening
- Screen for yield candidates by combining a price ceiling with a living-area floor
- Filter by year built to separate Altbau stock from post-2015 construction
- Pull energy class and consumption figures to flag properties facing renovation obligations
- Map candidates with coordinates and shortlist by district
Lead Generation
- Build broker and agency contact lists with phone, website and Immowelt profile
- Find private sellers with the
isPrivateOwnerflag for direct outreach - Rank agencies in a target city by listing volume, rating and review count
- Spot new listings the day they appear with newest-first sorting
Relocation & Corporate Housing
- Pull rental inventory for a specific district and rent ceiling for arriving staff
- Compare monthly rents across neighbourhoods before signing a relocation package
- Filter by room count and living area to match family size
- Collect photo galleries and floor plans for shortlists sent to relocating employees
PropTech & Data Products
- Feed a valuation or comparables model with fresh German listing data
- Power a property search app or market dashboard with structured inventory
- Enrich an existing CRM with current pricing, energy class and agent contacts
- Build alerting on price changes and new inventory in watched postcodes
Getting Started
Apartments for Sale in Berlin
The simplest run — a city and a property type:
{"location": "Berlin","transactionType": "Buy","propertyTypes": ["Apartment"],"maxResults": 50}
Rentals in One District, Newest First
{"location": "Prenzlauer Berg","transactionType": "Rent","propertyTypes": ["Apartment"],"priceMax": 2000,"roomsMin": 3,"sortBy": "DateDesc","maxResults": 200}
Investment Screening with Full Detail
{"location": "München","transactionType": "Buy","propertyTypes": ["House", "Apartment"],"projectTypes": ["Investment", "New_Build"],"priceMin": 300000,"priceMax": 800000,"livingAreaMin": 80,"constructionYearMin": 2015,"sortBy": "PriceAsc","maxResults": 500,"includeDetails": true}
Paste Immowelt URLs
Search links and single listing links can be mixed in one run:
{"startUrls": ["https://www.immowelt.de/classified-search?distributionTypes=Rent&estateTypes=House&locations=AD08DE1113","https://www.immowelt.de/expose/1215b46c-9e03-4081-bc72-67209544ff9f"],"maxResults": 100}
Input Reference
What to Scrape
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | string[] | [] | Immowelt search URLs or single listing URLs. Any filters already in a search URL are kept. When you provide URLs here, the search filters below are ignored. |
Build a Search
| Parameter | Type | Default | Description |
|---|---|---|---|
location | string | "Berlin" | Where to search: a city, district, postcode or federal state (Berlin, München, Prenzlauer Berg, 80331, Bayern). Leave empty to search all of Germany. |
transactionType | select | "Buy" | For Sale, For Rent, Auction or Foreclosure Auction. |
propertyTypes | select[] | ["Apartment"] | One or more of: Apartment / Flat, House, Land / Plot, Office & Commercial, Garage / Parking, Senior Living, Other. Empty includes every type. |
projectTypes | select[] | [] | Existing property, New build, Off-plan / planned or Investment property. Empty includes all of them. |
keywords | string | "" | A word that must appear in the listing text, e.g. Villa, Altbau, Balkon, Penthouse. This searches the listing text — it is not a location filter. |
Price, Size & Age
| Parameter | Type | Default | Description |
|---|---|---|---|
priceMin | integer | — | Lowest price in euros. For rentals this is the monthly rent. |
priceMax | integer | — | Highest price in euros. For rentals this is the monthly rent. |
livingAreaMin | integer | — | Smallest living area in square metres. |
livingAreaMax | integer | — | Largest living area in square metres. |
roomsMin | integer | — | Fewest rooms. |
roomsMax | integer | — | Most rooms. |
plotAreaMin | integer | — | Smallest plot in square metres. Applies to houses and land. |
plotAreaMax | integer | — | Largest plot in square metres. Applies to houses and land. |
constructionYearMin | integer | — | Earliest year of construction, e.g. 1990. |
constructionYearMax | integer | — | Latest year of construction, e.g. 2020. |
Options
| Parameter | Type | Default | Description |
|---|---|---|---|
sortBy | select | "Default" | Immowelt default, Newest first, Price: low to high, Price: high to low, Size: small to large, or Size: large to small. |
maxResults | integer | 50 | Maximum listings to return across all URLs and searches combined — a limit for the whole run, not for each search. Set to 0 to collect everything the searches find. Either way a single run returns at most 50,000 listings; a higher number is collected up to that limit and the log says so. A page is always finished once it starts, so you may get a few results more than you asked for — never fewer. |
includeDetails | boolean | false | Opens each property's own page to add nine extra fields: coordinates, the complete description, year built, heating type, energy certificate type and consumption, the full amenities list and the commission fee. Added to the first 10,000 listings in a run; the rest are still collected and saved from the search results at no extra charge. Billed separately — see Pricing. |
Output
One row per property. Here is a representative listing with full detail turned on (photo array trimmed):
{"id": "26R7BBLZXRYA","legacyId": "b45d8fcd-cca6-4ca2-880f-365ae50ec493","url": "https://www.immowelt.de/expose/b45d8fcd-cca6-4ca2-880f-365ae50ec493","title": "Wohnung zum Kauf","headline": "Wunderschöne, traumhaft ruhige und zentrale 2-Zimmer Wohnung in Berlin Mitte","description": "Willkommen in Berlin Mitte! Mittendrin aber trotzdem ruhig und gepflegt präsentiert sich diese schöne Altbauwohnung im Seitenflügel eines sanierten Gründerzeit-Altbaus...","descriptionIsTruncated": false,"status": "Published","transactionType": "BUY","propertyType": "APARTMENT","price": 349000,"priceFormatted": "349.000 €","currency": "EUR","pricePerSqm": 6634.98,"hasBrokerageFee": false,"brokerageFee": "3,57 % inkl. geltender MwSt. auf den Kaufpreis","livingArea": 52,"plotArea": null,"rooms": 2,"floor": "3. Geschoss","constructionYear": 1903,"condition": "WELL_KEPT","features": ["frei ab sofort", "Einbauküche", "Badewanne", "Keller", "Fenster: Kunststoff"],"address": "Wöhlertstraße 11","isAddressPublished": true,"city": "Mitte","district": "Mitte","zipCode": "10115","region": "Berlin","country": "DEU","latitude": 52.53698792580476,"longitude": 13.37929794999749,"geoIds": ["AD09DE475", "AD08DE8634", "AD06DE326", "AD04DE11", "AD02DE1"],"energyClass": "C","energyCertificateType": "Verbrauchsausweis","energyConsumption": 88.0,"heatingType": "Zentralheizung","images": [{"url": "https://mms.immowelt.de/a/8/7/0/a8705267-10f6-4ba3-8e68-7b1869265eea.png","description": "Wohnzimmer mit Loungesessel vor dem Fenster","category": "LIVING_ROOM"}],"imageCount": 14,"floorPlans": ["https://mms.immowelt.de/7/c/1/2/7c12f0a1-grundriss.png"],"has3DTour": false,"isNewListing": true,"providerType": "AGENCY","isPrivateOwner": false,"agencyName": "Engel & Völkers Berlin-Mitte","contactName": "Frau Marinela Gagulic","agencyAddress": "Kurfürstendamm 61, 10707 Berlin","agencyPhone": "+49 30 1234567","agencyWebsite": "https://www.engelvoelkers.com/de-de/berlin-mitte/","agencyProfileUrl": "https://www.immowelt.de/profil/engel-voelkers-berlin-mitte","agencyRating": 4.8,"agencyReviewCount": 126,"searchUrl": "https://www.immowelt.de/classified-search?locations=AD08DE8634&distributionTypes=Buy&estateTypes=Apartment","createdAt": "2026-07-30T06:58:54.5Z","updatedAt": "2026-07-30T07:00:30.16Z","scrapedAt": "2026-07-31T09:14:02Z"}
Fields marked † are only filled when includeDetails is on.
Core & Classification
| Field | Type | Description |
|---|---|---|
id | string | Immowelt listing id, e.g. 26R7BBLZXRYA |
legacyId | string | The identifier used in the listing URL |
url | string | Direct link to the listing on Immowelt |
title | string | Listing title, e.g. Wohnung zum Kauf |
headline | string | Marketing headline written by the seller |
description † | string | Full listing text. Without the detail option this is Immowelt's ~200-character preview |
descriptionIsTruncated | boolean | true when only the preview text was available |
status | string | Listing status, e.g. Published |
propertyType | string | APARTMENT, HOUSE, PLOT, OFFICE, … |
propertySubType | string | Finer category where Immowelt states one |
isNewListing | boolean | Flagged as new by Immowelt |
createdAt | string | ISO 8601 first-published timestamp |
updatedAt | string | ISO 8601 last-updated timestamp |
Price & Commission
| Field | Type | Description |
|---|---|---|
transactionType | string | BUY or RENT |
price | integer | Numeric price in euros — monthly rent for rentals |
priceFormatted | string | Display price as shown on Immowelt, e.g. 349.000 € |
currency | string | Always EUR |
pricePerSqm | number | Price per square metre |
hasBrokerageFee | boolean | Whether a broker commission applies |
brokerageFee † | string | The commission text or percentage |
Size, Layout & Condition
| Field | Type | Description |
|---|---|---|
livingArea | integer | Living area in square metres |
plotArea | integer | Plot size in square metres (houses and land) |
rooms | number | Room count |
floor | string | Storey, e.g. 3. Geschoss |
constructionYear † | integer | Year the property was built |
condition | string | Building condition, e.g. WELL_KEPT, FULLY_RENOVATED, MINT_CONDITION |
features † | string[] | Full amenities list — fitted kitchen, cellar, flooring, windows, availability |
Address & Location
| Field | Type | Description |
|---|---|---|
address | string | Street address, only when the seller published it |
isAddressPublished | boolean | Whether the exact address is public |
city | string | City — in Berlin and Hamburg this is the borough (Mitte, Altona); region carries the city name |
district | string | District or quarter |
zipCode | string | Postcode |
region | string | Federal state, in Immowelt's English spelling (Bavaria, Lower Saxony; Berlin and Hamburg read the same either way) |
country | string | Always DEU |
latitude † | number | Latitude, when the address is published |
longitude † | number | Longitude, when the address is published |
geoIds | string[] | Immowelt place ids for this listing — reusable as a location input |
Energy
| Field | Type | Description |
|---|---|---|
energyClass | string | Efficiency class A+ to H |
energyCertificateType † | string | Verbrauchsausweis or Bedarfsausweis |
energyConsumption † | number | Energy figure in kWh/(m²·a) |
heatingType † | string | Heating system, e.g. Zentralheizung |
Photos & Floor Plans
| Field | Type | Description |
|---|---|---|
images | object[] | { url, description, category } — category is Immowelt's AI scene label |
imageCount | integer | Number of photos |
floorPlans | string[] | Floor-plan image URLs |
has3DTour | boolean | Whether a 3D virtual tour is offered |
Seller & Agency Contact
| Field | Type | Description |
|---|---|---|
providerType | string | Seller type, e.g. AGENCY |
isPrivateOwner | boolean | Listed by a private owner rather than an agency |
agencyName | string | Agency name |
contactName | string | Named contact person for the listing |
agencyAddress | string | Agency postal address |
agencyPhone | string | Agency phone number |
agencyWebsite | string | Agency website |
agencyProfileUrl | string | Immowelt agency profile URL |
agencyRating | number | Average rating on Immowelt |
agencyReviewCount | integer | Number of reviews |
Run Provenance
| Field | Type | Description |
|---|---|---|
searchUrl | string | The Immowelt search this row came from — open it to reproduce the query |
scrapedAt | string | ISO 8601 collection timestamp |
Tips for Best Results
- Start with 20–50 results. Check the columns match what you need, then raise
maxResults. A page always finishes once it starts, so small caps can overshoot slightly — never come up short. - Pick the tightest area that still covers your target.
locationaccepts a city, a district, a postcode or a federal state, and the run log always names the place it actually searched. A handful of postcodes have no entry of their own on Immowelt and fall back to the surrounding city — the log tells you when that happens, so you are never guessing. - Reproduce an exact search by pasting its URL. Build the filters you want on immowelt.de, copy the address bar into
startUrls, and every filter in that link is honoured. Handy for searches with combinations the form does not offer. keywordssearches the listing text, not the map.Penthousecuts a Berlin buy search of roughly 12,000 listings down to under 500. Use it forAltbau,Balkon,Villaand similar terms — and uselocationfor geography.- Group Berlin and Hamburg on
region, notcity. Both are city-states, socitycarries the borough (Mitte,Pankow,Altona) whileregioncarriesBerlinorHamburg. Everywhere elsecityis the city, as you would expect. - Turn on full detail for underwriting, leave it off for monitoring. Year built, heating, energy certificate and consumption, amenities and coordinates are what valuation and mapping work needs. A daily price-and-inventory watch does not, and runs cheaper without them.
- Use Newest first for daily monitoring.
sortBy: "DateDesc"with a smallmaxResultsis the cheapest way to catch new inventory the day it appears. - Expect seconds, occasionally minutes. A 100-listing run usually finishes in well under a minute, but when Immowelt is under load the same run can take two to three minutes. Nothing is lost either way — the run simply takes longer, and you pay per result, not per second.
- Expect some blanks by design. Sellers can hide the exact street address, and coordinates only come with a published address. Rentals advertised as Mietkosten auf Anfrage carry no numeric price,
plotAreais empty for apartments, andpricePerSqmis a sale-price measure — Immowelt does not publish it on rental listings, so that column is empty on a rental run.
Pricing
From $0.80 per 1,000 results — an undercut on the going rate for Immowelt data, with the expensive part optional instead of baked in. Bronze, Silver and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.
| Results | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 100 | $0.095 | $0.090 | $0.085 | $0.080 |
| 1,000 | $0.95 | $0.90 | $0.85 | $0.80 |
| 10,000 | $9.50 | $9.00 | $8.50 | $8.00 |
| 100,000 | $95.00 | $90.00 | $85.00 | $80.00 |
A "result" is one property row in your dataset, with price, size, rooms, address, energy class, photos and agent contacts.
Optional Full Listing Details
Charged only for listings that were successfully enriched with the nine extra fields. Failed enrichments are never billed.
| Enriched listings | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 1,000 | $4.75 | $4.50 | $4.25 | $4.00 |
Detail enrichment is off by default, so most runs only pay the per-result price. When you switch it on, the two charges add up: 1,000 listings with detail enrichment on costs $0.80 + $4.00 = $4.80 at the Gold tier, or $0.95 + $4.75 = $5.70 with no discount.
No compute or time-based charges — you pay per result, plus a small fixed per-run start fee.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n — Workflow automation
- Google Sheets — Direct spreadsheet export
- Slack / Email — Notifications on new results
- Webhooks — Trigger custom APIs on run completion
- Apify API — Full programmatic access
Legal & Ethical Use
This Actor is designed for legitimate property market research, investment analysis, valuation work and business lead generation. You are responsible for complying with applicable laws — including the GDPR when handling agent and seller contact details — and with Immowelt's Terms of Service. Do not use collected data for spam, harassment, or any illegal purpose, and be mindful of German and EU fair housing and anti-discrimination rules when working with property and location data.