Germany Property Tracker: Immowelt, Kleinanzeigen
Pricing
from $2.50 / 1,000 listing scrapeds
Germany Property Tracker: Immowelt, Kleinanzeigen
Scrape German property listings from Immowelt, Kleinanzeigen and ImmoScout24 (beta) in one run. Merges the same home across portals and tracks new listings, price drops, price rises, removed listings and days on market.
Pricing
from $2.50 / 1,000 listing scrapeds
Rating
0.0
(0)
Developer
APIzilla
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
What does Germany Property Tracker do?
Germany Property Tracker scrapes German property listings from Immowelt, Kleinanzeigen and ImmoScout24 (beta) in one run.
It finds the same home on several portals and gives you one clean record for it. It also tracks changes between runs: new listings, price drops, price rises, removed listings and days on market.
You can use it as a simple API for the German property market. Run it once, or put it on a schedule and get a daily change feed.
Why use Germany Property Tracker?
- Several portals, one dataset. You do not need one scraper per portal.
- No duplicates. The same flat on Immowelt and Kleinanzeigen becomes one record. The other copies are listed in
alsoListedOn. - Change alerts. Turn on
monitorand every listing gets achangeType:new,price_drop,price_rise,back,unchanged. Listings that are gone come asremoved. - Days on market. See how long a home has been for sale or for rent.
- German rent details. Kaltmiete, Warmmiete, Nebenkosten, Heizkosten, Kaution, Baujahr and Energieklasse.
- Low price. You pay per unique listing, not per page.
Typical users: investors, agents, relocation services, flat hunters, proptech teams and market analysts.
You also get everything the Apify platform offers: scheduling, API access, webhooks, integrations (Google Sheets, Make, Zapier, Slack) and proxies.
What data can Germany Property Tracker extract?
| Field | What it is |
|---|---|
title, url | Listing title and link |
portal, alsoListedOn | Main portal and the same home on other portals |
operation, propertyType | rent or sale, apartment or house |
price, pricePerM2 | Price in EUR. For rent this is the Kaltmiete. |
kaltmiete, warmmiete | Cold rent and warm rent |
nebenkosten, heizkosten, kaution | Service costs, heating costs, deposit |
sizeM2, rooms, bedrooms, bathrooms, floor | Size and layout |
address, postcode, city, region, lat, lng | Location |
baujahr, energieklasse | Year built and energy class |
agencyName, isPrivateSeller | Who offers it |
images, features, description | Photos (first 5), features, full text |
firstSeenAt, lastSeenAt, daysOnMarket | Time on the market |
priceHistory, changeType, previousPrice | Price changes and events |
Some fields only come with Include details turned on. For example the full description, Nebenkosten, Kaution, Baujahr and coordinates.
How to scrape German property listings
- Open the Actor and go to the Input tab.
- Add a search. Either paste a search URL from Immowelt, Kleinanzeigen or ImmoScout24, or type a city, for example
{"location": "Berlin", "operation": "rent", "maxPrice": 1500}. - Pick the portals.
- Set Max listings per portal.
- Optional: turn on Monitor changes and add a schedule, for example every morning.
- Click Start. Download the results as JSON, CSV, Excel or HTML.
How much does it cost to scrape German property portals?
This Actor uses pay per event pricing. You only pay for results. Failed pages cost nothing.
| Event | When you pay | Price per 1,000 |
|---|---|---|
listing-scraped | Once per unique home in the results | $2.50 |
browser-listing | Once per saved home that comes from ImmoScout24 (on top of listing-scraped) | $4.00 |
listing-details | Once per home, only when Include details is on | $1.50 |
change-event | Once per change (new, price drop, price rise, removed, back), only in monitor mode | $0.50 |
apify-actor-start | When a run starts, set by Apify. One event per GB of memory | $1.25 (about $0.005 per run at the default 4 GB) |
Why is ImmoScout24 more expensive? ImmoScout24 blocks simple scrapers. We need a real browser and a home proxy for it. That costs us more, so a home from ImmoScout24 has an extra browser-listing charge. A home that is also on ImmoScout24 but comes from a cheaper portal does not pay it.
A removed home only costs a change-event. Unchanged homes do not cost a change-event.
You can set a maximum cost per run. The Actor checks the total price of all events for a home before it saves it. If they do not all fit, it stops. You never pay for a home that was not saved.
To keep costs low, leave Include details off, keep Max listings per portal small, and turn off the beta portal if you do not need it.
The Pricing tab shows the exact prices.
Input
See the Input tab for all options. The most important ones:
- Searches: a list. Each entry is a portal URL like
{"url": "https://www.kleinanzeigen.de/s-wohnung-mieten/berlin/c203l3331"}or a description like{"location": "München", "operation": "sale", "propertyType": "apartment", "minPrice": 300000, "maxPrice": 600000, "minRooms": 2, "minSize": 50}. A description runs on every selected portal. - Portals:
immowelt,kleinanzeigen,immoscout24. ImmoScout24 is beta. - Max listings per portal: default 200.
- Include details: off by default. On means one extra page per listing.
- Monitor changes and Monitor ID: runs with the same Monitor ID are compared.
- Proxy: Apify Proxy is on by default.
Output
Each item is one unique home. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
{"id": "de-3f9a1c2b4d5e6f70","country": "DE","portal": "immowelt","url": "https://www.immowelt.de/expose/...","alsoListedOn": [{ "portal": "kleinanzeigen", "url": "https://www.kleinanzeigen.de/s-anzeige/...", "price": 699 }],"title": "Modernisierte 2-Zimmer-Wohnung mit Balkon","operation": "rent","propertyType": "apartment","price": 699,"pricePerM2": 14.87,"sizeM2": 47,"rooms": 2,"address": "Musterstraße 13, Stötteritz, 04299 Leipzig","kaltmiete": 699,"warmmiete": 879,"nebenkosten": 120,"kaution": 2097,"energieklasse": "C","firstSeenAt": "2026-10-10T00:00:00.000Z","daysOnMarket": 12,"priceHistory": [{ "date": "2026-10-22T10:00:00.000Z", "price": 699 }],"changeType": "price_drop","previousPrice": 749}
The run also saves a short summary in the key-value store under OUTPUT. It shows the status of every portal (ok, partial, blocked, failed), how many listings came from each portal and how many duplicates were merged.
Tips
- Start small. Use a low Max listings per portal to test your search.
- Leave Include details off if you only need price, size, rooms and address. It is faster and cheaper.
- For alerts, turn on Monitor changes, keep the same Monitor ID, and schedule the Actor. Filter the dataset by
changeTypeto get only the changes. - A listing is only marked
removedwhen its portal worked fine in that run. If a portal was blocked, we do not mark its listings as removed. - If you stop at the max listings limit, a listing must be missing in two runs in a row before it counts as removed.
How does the merge work?
Two listings from different portals are the same home when:
- they are within 50 m of each other, or they have the same street and house number, and
- the size is within 5 percent, and
- the number of rooms is the same, and
- the price is within 10 percent.
The cheapest copy becomes the main record.
About ImmoScout24 (beta)
ImmoScout24 has strong bot protection. It needs a RESIDENTIAL proxy. If you use Apify Proxy without picking a group, the Actor uses residential proxies in Germany for all portals. Plain requests to ImmoScout24 are blocked, even with a residential proxy. So the Actor opens ImmoScout24 in a real browser (Firefox), one page at a time, like a normal visitor. The page's own check runs and usually passes in a few seconds. Listing pages are then read from the same browser, so they are fast and cheap. The Actor does not solve captchas. If ImmoScout24 asks for one, ImmoScout24 is skipped, the other portals still work, and you are not charged for the blocked pages.
For cities outside our built-in list, paste an ImmoScout24 search URL instead of a city name.
FAQ and support
Is it legal to scrape property portals? Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
This Actor does not collect phone numbers or contact names.
A portal shows "blocked" in the summary. What can I do? Use Apify Proxy with the RESIDENTIAL group. Lower the number of listings.
Can I use it from my own code? Yes. See the API tab.
Something is wrong or missing? Please open an issue in the Issues tab. We usually reply fast.