inberlin-monitor
Monitors inberlinwohnen.de and wgcompany.de for new apartment/WG listings and sends Telegram notifications. Supports automatic application submission via autopilot mode.
Features
- 🔐 Logs in to your personal Wohnungsfinder for filtered results
- ⏰ Checks every 5 minutes (configurable)
- 📱 Sends Telegram notifications for new listings with clickable links
- 🤖 Autopilot mode: Automatically applies to new listings
- 📊 /plot command: Visualize when listings appear throughout the week
- 🏢 Supports 6 housing companies: HOWOGE, Gewobag, Degewo, Gesobau, Stadt und Land, WBM
- 🏠 WGcompany.de: Also monitors WG room listings with configurable search filters
- 💾 Persists state to detect only truly new listings
- 📈 Logs listing times for pattern analysis
Supported Housing Companies
| Company |
Auto-Apply |
Notes |
| HOWOGE |
✅ |
Direct form submission |
| Gewobag |
✅ |
Direct form submission |
| Degewo |
✅ |
Via Wohnungshelden portal |
| Gesobau |
✅ |
Direct form submission |
| Stadt und Land |
✅ |
Direct form submission |
| WBM |
✅ |
Direct form submission |
Setup
1. Create Telegram Bot
- Message @BotFather on Telegram
- Send
/newbot and follow the prompts
- Copy the bot token
2. Get Your Chat ID
- Message your new bot (send anything)
- Visit:
https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates
- Find
"chat":{"id":123456789} - that's your chat ID
3. Configure
cp .env.example .env
# Edit .env with your credentials
4. Run
docker compose up -d
5. Check Logs
docker compose logs -f
# or
cat data/monitor.log
Telegram Commands
| Command |
Description |
/autopilot on |
Enable automatic applications |
/autopilot off |
Disable automatic applications |
/status |
Show current status and application stats |
/plot |
Generate weekly listing pattern visualization |
/help |
Show available commands |
Configuration
Required
| Variable |
Description |
TELEGRAM_BOT_TOKEN |
Telegram bot token from BotFather |
TELEGRAM_CHAT_ID |
Your Telegram chat ID |
Optional - Login
| Variable |
Description |
Default |
INBERLIN_EMAIL |
inberlinwohnen.de login email |
- |
INBERLIN_PASSWORD |
inberlinwohnen.de password |
- |
CHECK_INTERVAL |
Seconds between checks |
300 |
Optional - Form Data (for Autopilot)
| Variable |
Description |
Default |
FORM_ANREDE |
Salutation (Herr/Frau) |
Herr |
FORM_VORNAME |
First name |
- |
FORM_NACHNAME |
Last name |
- |
FORM_EMAIL |
Contact email |
- |
FORM_PHONE |
Phone number |
- |
FORM_STRASSE |
Street name |
- |
FORM_HAUSNUMMER |
House number |
- |
FORM_PLZ |
Postal code |
- |
FORM_ORT |
City |
Berlin |
FORM_PERSONS |
Number of persons moving in |
1 |
FORM_CHILDREN |
Number of children |
0 |
FORM_INCOME |
Monthly household net income (€) |
- |
Optional - WGcompany.de Search Filters
| Variable |
Description |
Default |
WGCOMPANY_ENABLED |
Enable WGcompany monitoring |
true |
WGCOMPANY_MIN_SIZE |
Minimum room size (m²) |
- |
WGCOMPANY_MAX_SIZE |
Maximum room size (m²) |
- |
WGCOMPANY_MIN_PRICE |
Minimum rent (€) |
- |
WGCOMPANY_MAX_PRICE |
Maximum rent (€) |
- |
WGCOMPANY_BEZIRK |
District code (0=all) |
0 |
Without Login
If you don't provide login credentials, the monitor will use the public Wohnungsfinder (shows all listings instead of your personalized filtered results).
Data Files
All data is stored in the ./data directory:
| File |
Description |
listings.json |
Known inberlinwohnen listings |
wgcompany_listings.json |
Known WGcompany listings |
state.json |
Monitor state (autopilot on/off) |
applications.json |
Record of submitted applications |
listing_times.csv |
InBerlin timing data for pattern analysis |
wgcompany_times.csv |
WGcompany timing data |
monitor.log |
Application logs |
weekly_plot.png |
Generated plot from /plot command |
wgcompany_debug.html |
Debug HTML from WGcompany |
*.png |
Screenshots from application attempts |