immobeat

Methodik & Datenqualität

Transparenz first. Diese Seite erklärt was die Zahlen auf immobeat.at bedeuten, wo die Daten herkommen und welche Limitationen sie haben — damit du selbst kalibrieren kannst wie viel Vertrauen du in eine Aussage haben solltest.

Inhalt Datenquelle Aktualität Plausibilitäts­filter Median-Berechnung Mieten: Brutto vs. Kalt Verweildauer Altbau / Außenfläche Stichproben­größe Was die Daten nicht können

Datenquelle

Alle Marktdaten stammen aus öffentlichen Inseraten von willhaben.at. Pro Wiener Bezirk werden täglich die ersten ~10 Such-Seiten (= ~300 aktuelle Inserate) für Kauf und Miete gescraped. Bilder, Inseratstexte und Verkäufer­namen werden nicht gespeichert — nur Bezirk, Preis, Fläche, Zimmer, Koordinaten und der Link zum Originalinserat. Klicks auf „willhaben →" führen direkt zum vollen Inserat.

Aktualität

Der Scraper läuft täglich um 04:00 UTC. Das Daten-Frische-Badge oben rechts auf der Hauptseite zeigt den Zeitstempel des letzten erfolgreichen Imports plus die Anzahl der Einträge die in den letzten 24h hinzugekommen sind.

Beachte: willhaben re-listet manchmal ältere Inserate auf den ersten Seiten (Bumping). Solche Re-Sightings setzen das interne last_seen-Feld auf den heutigen Tag — das ist gewollt, weil das Inserat de facto noch aktiv ist.

Plausibilitäts­filter

Bevor Inserate in Statistiken einfließen, werden Tippfehler und Sondertypen ausgefiltert:

Diese Schwellen werden in app.py über die Konstante STATS_FILTER gesetzt und überall konsistent angewendet.

Median statt Durchschnitt

Alle €/m²-Vergleiche und Bezirks-Werte sind Mediane, keine arithmetischen Mittelwerte. Der Median ist robuster gegen Ausreißer (ein einzelnes Luxus-Penthouse zieht den Mittelwert hoch, den Median nicht). Konkret: PERCENTILE_CONT(0.5) in Postgres.

Mediane werden nur berechnet wenn ein Bezirk pro Slice mindestens 5 Inserate hat. Sehr dünne Slices werden mit n=12 klar markiert, damit du siehst dass die Zahl nur grob orientierend ist.

Mieten: Brutto vs. Kalt

willhaben listet Brutto-Mieten (inkl. Betriebskosten + ggf. Heizung). Wir speichern diese als typ='miete_brutto'. Für die Anzeige als „Kaltmiete pro m²" ziehen wir eine pauschale BK-Schätzung von 3 €/m²/Monat ab — das ist der österreichische Durchschnitt; pro Wohnung schwankt's typisch zwischen 2-5 €/m² je nach Baujahr, Größe und Heizungstyp.

Heißt konkret: bei einer Brutto-Miete von 22 €/m² zeigen wir ~19 €/m² Kalt (= 22 − 3). Im Bezirks-Median glättet sich die ±15%-Ungenauigkeit pro Inserat raus. Für Einzel­wohnungs-Vergleiche sollte man die echte BK in der Inseratsbeschreibung prüfen.

Verweildauer & Archivierung

Beim ersten Sehen eines Inserats wird created_at = jetzt gesetzt. Bei jedem späteren Re-Sighting durch den täglichen Scrape wird last_seen aktualisiert. Inserate die 21+ Tage nicht mehr im Scrape auftauchen werden als archived = TRUE markiert — sie sind dann mit hoher Wahrscheinlichkeit verkauft/vermietet/gelöscht.

Aktuelle Marktdaten (Karte, Median, Schätzer, Verweildauer, Reduktions-Anteil, Bezirks-Profile) werden ausschließlich über aktive (nicht-archivierte) Inserate berechnet. Historische Trends (12-Monats-Preisentwicklung, Volumen-Trend, Altbau-/Außenflächen-Premium) nutzen die ganze History inklusive archivierter Inserate — sonst würde z.B. der Preis-Trend nur die letzten 21 Tage zeigen.

21 Tage statt 7 sind bewusst gewählt: willhaben re-promoted Inserate oft erst nach ~2 Wochen, und unser Scraper sieht nur die obersten ~300 Treffer pro Bezirk-Kategorie. Mit 7 Tagen würden wir Inserate vorzeitig archivieren die zwischenzeitlich nur auf Seite 11+ gerutscht sind.

Altbau / Neubau / Außenfläche

Die Klassifikation ist heuristisch:

Bei rund 50% der Inserate ist building_type nicht detektierbar — die fließen dann nicht in die Altbau-/Neubau-Premium-Berechnung ein. Premium-Werte sind also über jene Inserate gerechnet wo eine eindeutige Klassifikation vorlag.

Stichproben­größe (n-Badges)

Überall wo eine Median-Zahl angezeigt wird, steht ein farbiges Sample-Size-Badge daneben. Bedeutung:

Badge Anzahl Inserate Aussagekraft
silent ≥ 100 Robust — Median ist statistisch gut belegt.
n=42 30 – 99 Solide aber begrenzt; einzelne Ausreißer können den Median nach links/rechts ziehen.
n=12 < 30 Vorsicht. Median nur grob orientierend — bitte als Einzelfall behandeln.

Was die Daten nicht können

Klare Grenzen — wir täuschen nichts vor was wir nicht haben:

Open Source

Code, Scraper-Logik und Datenfilter sind nicht öffentlich, aber die Methodik hier ist vollständig dokumentiert. Fragen, Fehlerberichte oder Vorschläge gerne an die Kontakt-Adresse.

← Zurück zur App