Real Estate Deal Score & Rental Yield (Germany & Austria)
Pricing
from $4.00 / 1,000 scored properties
Real Estate Deal Score & Rental Yield (Germany & Austria)
Scrapes Immowelt, willhaben or Kleinanzeigen and scores every property against its local market: price per m², deviation from the postal-code median, a 0-100 deal score and gross rental yield from real local rents.
Pricing
from $4.00 / 1,000 scored properties
Rating
0.0
(0)
Developer
Niko T.
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Share
Real Estate Deal Score & Rental Yield — Germany & Austria

Scraping property listings is easy. Knowing which of them is actually a good price is the hard part.
This Actor collects listings from Immowelt, willhaben or Kleinanzeigen and then scores each one against its own local market: what the median price per m² is in that postal code, how far this property deviates from it, and what it would yield if rented out.
What makes the numbers trustworthy
The comparison is local, not city-wide. A flat in a prime district is not overpriced just because it costs more than the city average. The Actor builds medians per postal code first, falls back to the district, then the city, and records which level was used in valuation.referenceLevel.
Outliers are removed before the median is calculated, so a single mispriced listing does not distort the benchmark.
Thin data is treated as thin data. With few comparable properties the deal score is pulled towards the middle instead of pretending certainty, and valuation.sampleSize tells you how many properties it was based on. Properties without a usable price or area are returned with the rating not comparable rather than a guess.
Rental yield comes from real local rents. When enabled, the Actor runs a second search in the rental segment of the same area and derives the actual rent per m² for each postal code. Postal codes with fewer than three rental listings get no yield figure at all, instead of a made-up one.
What you get
{"url": "https://www.immowelt.de/expose/8ca0b750-a54e-4114-9bc7-0fabecfd199a","title": "Wohnung zum Kauf — 2 Zimmer, 88,6 m²","price": 170000,"livingArea": 88.6,"pricePerSqm": 1918.74,"postalCode": "04179","city": "Leipzig","imageUrl": "https://mms.immowelt.de/example/photo.jpg","valuation": {"referenceLevel": "postalCode","marketMedianPerSqm": 3120.5,"marketP25PerSqm": 2480.0,"marketP75PerSqm": 3890.0,"deviationPct": -38.5,"rating": "bargain","dealScore": 93,"sampleSize": 34,"priceDeltaToMedian": -106500,"grossYieldPct": 6.8}}
Deal score runs from 0 to 100, where 50 is exactly the local median and higher means cheaper. Rating is one of bargain, below market, market price, above market, overpriced, not comparable. The Output tab shows a photo next to each score.
Typical uses
- Finding underpriced property: turn on Return underpriced properties only with a minimum deal score of 65 and get a shortlist instead of a spreadsheet.
- Investment screening: sort by gross yield to see where the rent-to-price ratio actually works.
- Market reports: run it monthly for the same city and track how medians move.
- Feeding a model: every field is numeric and normalised, ready for a notebook or a database.
How to set it up
- Choose a portal and a location, or paste a Search URL copied from the portal.
- Set Properties to score. More is better for the statistics: below 50 the medians get thin, from 300 upwards you get solid per-postal-code figures.
- Leave Calculate gross rental yield on unless you only want the price comparison.
Pricing
You pay per scored property. If rental yield is enabled, each rental listing used as a comparable costs a small additional amount, because it takes the same work to fetch but does not appear in your results.
Proxies
German and Austrian property portals reject data-centre requests with HTTP 403, so the Actor uses Apify residential proxies from the matching country by default. You can supply your own instead.
Limitations
- The valuation is based on asking prices, not on recorded sale prices. It tells you how a listing compares to what else is on the market right now, which is not the same as an appraisal.
- Gross yield is gross: it does not deduct maintenance, management fees, vacancy or taxes.
- Data comes from public search result pages, so fields the portal only shows on the detail page are not included.
Auf Deutsch
Dieser Actor sammelt Inserate von Immowelt, willhaben oder Kleinanzeigen und bewertet jedes Objekt gegen seinen eigenen lokalen Markt: Median-Preis je m² in der Postleitzahl, Abweichung davon, ein Deal-Score von 0 bis 100 und die Bruttomietrendite.
Warum die Zahlen belastbar sind: Verglichen wird zuerst innerhalb der Postleitzahl, erst danach auf Stadtteil- und Stadtebene — eine Wohnung in bester Lage ist nicht überteuert, nur weil sie mehr kostet als der Stadtdurchschnitt. Ausreißer fliegen vor der Median-Bildung raus. Bei dünner Datenlage wird der Score zur Mitte gezogen, statt Sicherheit vorzutäuschen; das Feld valuation.sampleSize zeigt, auf wie vielen Vergleichsobjekten die Aussage beruht.
Die Rendite beruht auf echten Mieten aus derselben Gegend: Der Actor führt dafür eine zweite Suche im Mietsegment durch. Postleitzahlen mit weniger als drei Mietobjekten bekommen bewusst gar keine Rendite statt einer geschätzten.
Wichtige Einschränkung: Grundlage sind Angebotspreise, keine beurkundeten Kaufpreise. Das Ergebnis sagt, wie ein Objekt im Vergleich zum aktuellen Angebot dasteht — es ersetzt kein Gutachten. Die Rendite ist eine Bruttorendite, ohne Instandhaltung, Verwaltung, Leerstand und Steuern.
Kosten: Sie zahlen je bewertetem Objekt. Ist die Renditeberechnung aktiv, kommt ein kleiner Betrag je herangezogenem Mietinserat hinzu — diese Inserate verursachen denselben Aufwand, erscheinen aber nicht im Ergebnis.