# inberlin-monitor Monitors [inberlinwohnen.de](https://www.inberlinwohnen.de/wohnungsfinder/) and [wgcompany.de](http://www.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 1. Message [@BotFather](https://t.me/botfather) on Telegram 2. Send `/newbot` and follow the prompts 3. Copy the bot token ### 2. Get Your Chat ID 1. Message your new bot (send anything) 2. Visit: `https://api.telegram.org/bot/getUpdates` 3. Find `"chat":{"id":123456789}` - that's your chat ID ### 3. Configure ```bash cp .env.example .env # Edit .env with your credentials ``` ### 4. Run ```bash docker compose up -d ``` ### 5. Check Logs ```bash 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 |