How mrehank209/germany-wohnungsbot works
Wohnungsbot polls German rental portals, filters listings against a user’s city and apartment criteria, persists listing and delivery state, and sends matching alerts through Telegram. Kleinanzeigen can optionally contact new matches. The main loop owns scanning and delivery coordination; portal-specific parsing, shared filtering helpers, SQLite state, and Telegram delivery are separate responsibilities. The README documents the supported platforms and configuration workflow; links for some unsampled platform implementations are documented capabilities rather than inspected call paths.
Main entry points: main.py Polling coordinator · __init__.py Scraper registry · base.py Scraper base · kleinanzeigen.py Kleinanzeigen scraper
Components 23
Setup and preferences
- Setup wizard
bot/wizard.py - Search configuration
bot/config.py
Portal discovery
- Scraper registry
bot/scrapers/__init__.py - Scraper base
bot/scrapers/base.py - Kleinanzeigen scraper
bot/scrapers/kleinanzeigen.py - ImmoScout24 scraper
bot/scrapers/immoscout24.py - Immowelt scraper
bot/scrapers/immowelt.py - WG-Gesucht scraper
bot/scrapers/wg_gesucht.py - Local co-op scrapers
bot/scrapers - Vonovia scraper
bot/scrapers/vonovia.py - Persistent browser
bot/browser.py
Matching and state
- Polling coordinator
bot/main.py - City lookup
bot/location.py - Listing model
bot/models.py - Date parsing
bot/dates.py - Warm-rent lookup
bot/rent.py - Euro parsing
bot/money.py - Listing and delivery state
bot/storage.py
Alerts and contact
- Telegram delivery
bot/telegram.py - Kleinanzeigen contact
bot/contact.py
Other components
- Apartment seeker
- Telegram
- Rental platforms
Connections 34
- Apartment seeker → Setup wizard: sets preferences
README.md - Setup wizard → Search configuration: writes settings
README.md - Polling coordinator → Search configuration: loads settings
bot/main.py - Polling coordinator → Scraper registry: selects scrapers
bot/main.py - Scraper registry → Kleinanzeigen scraper: registers
bot/scrapers/__init__.py - Scraper registry → ImmoScout24 scraper: registers
bot/scrapers/__init__.py - Scraper registry → Immowelt scraper: registers
bot/scrapers/__init__.py - Scraper registry → WG-Gesucht scraper: registers
bot/scrapers/__init__.py - Scraper registry → Local co-op scrapers: registers
bot/scrapers/__init__.py - Scraper registry → Vonovia scraper: registers
bot/scrapers/__init__.py - Polling coordinator → Scraper base: fetches listings
bot/main.py - Scraper base → Kleinanzeigen scraper: provides shared behavior
bot/scrapers/kleinanzeigen.py - Scraper base → ImmoScout24 scraper: provides shared behavior
bot/scrapers/immoscout24.py - Polling coordinator → Persistent browser: opens browser
bot/main.py - Polling coordinator → City lookup: checks city
bot/main.py - Kleinanzeigen scraper → City lookup: resolves city
bot/scrapers/kleinanzeigen.py - Polling coordinator → Listing model: filters listings
bot/main.py - Scraper base → Listing model: builds listings
bot/scrapers/base.py - Kleinanzeigen scraper → Date parsing: parses publication dates
bot/scrapers/kleinanzeigen.py - ImmoScout24 scraper → Date parsing: parses publication dates
bot/scrapers/immoscout24.py - ImmoScout24 scraper → Warm-rent lookup: enriches rent
bot/scrapers/immoscout24.py - Scraper base → Warm-rent lookup: looks up rent
bot/scrapers/base.py - Search configuration → Euro parsing: parses rent limits
bot/config.py - Polling coordinator → Listing and delivery state: reads and updates state
bot/main.py - Polling coordinator → Telegram delivery: sends alerts
bot/main.py - Telegram delivery → Telegram: delivers messages
bot/telegram.py - Polling coordinator → Kleinanzeigen contact: contacts new matches
bot/main.py - Kleinanzeigen contact → Persistent browser: uses browser session
- Kleinanzeigen scraper → Rental platforms: fetches listings
README.md - ImmoScout24 scraper → Rental platforms: fetches listings
README.md - Immowelt scraper → Rental platforms: fetches listings
README.md - WG-Gesucht scraper → Rental platforms: fetches listings
README.md - Local co-op scrapers → Rental platforms: fetches listings
README.md - Vonovia scraper → Rental platforms: fetches listings
README.md