Wohnungsfinder in Deutschland mit automatischer Bewerbung und Notizen-Funktion

Experte

Dies ist ein Personal Productivity, Multimodal AI-Bereich Automatisierungsworkflow mit 22 Nodes. Hauptsächlich werden Set, Cron, Function, EmailSend, GoogleDrive und andere Nodes verwendet. Automatische Suche und Bewerbung für deutsche Wohnungen, integriert mit Immobilienscout24 und Google-Diensten

Voraussetzungen
  • Google Drive API-Anmeldedaten
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
  • Google Sheets API-Anmeldedaten
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "name": "Germany Apartment Finder & Auto-Apply (with Sticky Notes)",
  "tags": [
    "apartments",
    "automation",
    "germany",
    "immobilienscout24"
  ],
  "nodes": [
    {
      "id": "1",
      "name": "Cron-Job-Trigger",
      "type": "n8n-nodes-base.cron",
      "position": [
        250,
        300
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "2",
      "name": "Konfiguration setzen",
      "type": "n8n-nodes-base.set",
      "position": [
        450,
        300
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "CITY",
              "value": "Berlin"
            },
            {
              "name": "MAX_RENT",
              "value": "1200"
            },
            {
              "name": "ROOMS",
              "value": "2"
            },
            {
              "name": "MY_EMAIL",
              "value": "your.email@example.com"
            },
            {
              "name": "MY_NAME",
              "value": "Max Mustermann"
            },
            {
              "name": "GDRIVE_SCHUFA_FILE_ID",
              "value": "your-schufa-file-id"
            },
            {
              "name": "GDRIVE_SALARY_FILE_ID",
              "value": "your-salary-file-id"
            },
            {
              "name": "GOOGLE_SHEET_ID",
              "value": "your-google-sheet-id"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3",
      "name": "GeoID-Abfrage",
      "type": "n8n-nodes-base.function",
      "position": [
        650,
        300
      ],
      "parameters": {
        "functionCode": "const geoidMap = { Berlin: 12770000 };\nconst city = $json[\"CITY\"] || \"Berlin\";\nreturn [{ json: { city, geoid: geoidMap[city] || geoidMap[\"Berlin\"] } }];"
      },
      "typeVersion": 1
    },
    {
      "id": "4",
      "name": "Angebote von Immobilienscout24 abrufen",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        850,
        300
      ],
      "parameters": {
        "url": "=https://www.immobilienscout24.de/Suche/S-T/Wohnung-Miete/Berlin/umkreis- {{$json[\"geoid\"]}} ?numberofroomsfrom={{$json[\"ROOMS\"]}}&price=-{{ $json[\"MAX_RENT\"] }}&sorting=2",
        "options": {
          "headers": {
            "Accept": "application/json"
          }
        },
        "responseFormat": "json"
      },
      "typeVersion": 1
    },
    {
      "id": "5",
      "name": "Ergebnisse filtern",
      "type": "n8n-nodes-base.function",
      "position": [
        1050,
        300
      ],
      "parameters": {
        "functionCode": "return items.filter(item => item.json.type === 'apartment' &&\n  parseFloat(item.json.price) <= parseFloat($json[\"MAX_RENT\"]) &&\n  parseInt(item.json.rooms) >= parseInt($json[\"ROOMS\"]));"
      },
      "typeVersion": 1
    },
    {
      "id": "6",
      "name": "Wohnungen einzeln verarbeiten",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1250,
        300
      ],
      "parameters": {
        "batchSize": 1
      },
      "typeVersion": 1
    },
    {
      "id": "7",
      "name": "SCHUFA abrufen (Google Drive)",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1450,
        100
      ],
      "parameters": {
        "fileId": "={{$json[\"GDRIVE_SCHUFA_FILE_ID\"]}}",
        "authentication": "oAuth2"
      },
      "typeVersion": 1
    },
    {
      "id": "8",
      "name": "Gehaltsabrechnungen abrufen (Google Drive)",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1450,
        500
      ],
      "parameters": {
        "fileId": "={{$json[\"GDRIVE_SALARY_FILE_ID\"]}}",
        "authentication": "oAuth2"
      },
      "typeVersion": 1
    },
    {
      "id": "9",
      "name": "Anschreiben generieren",
      "type": "n8n-nodes-base.function",
      "position": [
        1650,
        300
      ],
      "parameters": {
        "functionCode": "return [{ json: { coverLetter: `Sehr geehrte Damen und Herren,\\n\\n Ich interessiere mich sehr für die Wohnung mit Exposé-ID ${$json[\"exposeId\"]}  (${ $json[\"price\"] } EUR, ${ $json[\"rooms\"] } Zimmer).\\n\\n Im Anhang finden Sie meine Schufa-Auskunft und aktuelle Gehaltsabrechnungen.\\n\\n Vielen Dank für Ihre Zeit und ich freue mich auf Ihre Rückmeldung.\\n\\n Mit freundlichen Grüßen,\\n${$json[\"MY_NAME\"]}` } }];"
      },
      "typeVersion": 1
    },
    {
      "id": "10",
      "name": "Bewerbungs-E-Mail senden",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        1850,
        300
      ],
      "parameters": {
        "content": "={{$json[\"coverLetter\"]}}",
        "subject": "Wohnungsbewerbung – Interesse an Exposé-ID {{$json[\"exposeId\"]}}",
        "toEmail": "={{$json[\"contactEmail\"]}}",
        "fromEmail": "={{$json[\"MY_EMAIL\"]}}",
        "attachments": [
          {
            "binaryPropertyName": "schufa"
          },
          {
            "binaryPropertyName": "salary"
          }
        ]
      },
      "typeVersion": 1
    },
    {
      "id": "11",
      "name": "In Google Sheet protokollieren",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2050,
        300
      ],
      "parameters": {
        "range": "A:E",
        "values": [
          [
            "={{$json[\"title\"]}}",
            "={{$json[\"address\"]}}",
            "={{$json[\"price\"]}}",
            "={{new Date().toISOString()}}",
            "={{$json[\"exposeId\"]}}"
          ]
        ],
        "sheetId": "={{$json[\"GOOGLE_SHEET_ID\"]}}",
        "authentication": "oAuth2",
        "valueInputMode": "USER_ENTERED"
      },
      "typeVersion": 1
    },
    {
      "id": "sticky1",
      "name": "Sticky: Cron-Job-Trigger",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        250,
        230
      ],
      "parameters": {
        "content": "Triggers the workflow every day at 8 AM Berlin time."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky2",
      "name": "Sticky: Konfiguration setzen",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        450,
        230
      ],
      "parameters": {
        "content": "Set your configuration: city, max rent, rooms, email, file IDs etc."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky3",
      "name": "Sticky: GeoID-Abfrage",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        650,
        230
      ],
      "parameters": {
        "content": "Convert city name to GeoID needed by ImmobilienScout24 API."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky4",
      "name": "Sticky: Angebote von Immobilienscout24 abrufen",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        850,
        230
      ],
      "parameters": {
        "content": "Fetch apartment listings from ImmobilienScout24 with filters applied."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky5",
      "name": "Sticky: Ergebnisse filtern",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1050,
        230
      ],
      "parameters": {
        "content": "Filter listings to only include apartments matching rent and rooms criteria."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky6",
      "name": "Sticky: Wohnungen einzeln verarbeiten",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1250,
        230
      ],
      "parameters": {
        "content": "Process apartments one by one to send applications."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky7",
      "name": "Sticky: SCHUFA abrufen",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1450,
        30
      ],
      "parameters": {
        "content": "Fetch Schufa report from Google Drive to attach in application."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky8",
      "name": "Sticky: Gehaltsabrechnungen abrufen",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1450,
        430
      ],
      "parameters": {
        "content": "Fetch latest salary slips from Google Drive for application."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky9",
      "name": "Sticky: Anschreiben generieren",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1650,
        230
      ],
      "parameters": {
        "content": "Generate a personalized cover letter with expose ID and applicant name."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky10",
      "name": "Sticky: Bewerbungs-E-Mail senden",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1850,
        230
      ],
      "parameters": {
        "content": "Send the apartment application email with attachments."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky11",
      "name": "Sticky: In Google Sheet protokollieren",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2050,
        230
      ],
      "parameters": {
        "content": "Log applied apartments in Google Sheets for tracking."
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "settings": {
    "timezone": "Europe/Berlin",
    "executionOrder": "regular",
    "saveDataOnSuccess": "allExecutions"
  },
  "connections": {
    "2": {
      "main": [
        [
          {
            "node": "3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3": {
      "main": [
        [
          {
            "node": "Fetch Listings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5": {
      "main": [
        [
          {
            "node": "6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6": {
      "main": [
        [
          {
            "node": "7",
            "type": "main",
            "index": 0
          },
          {
            "node": "8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7": {
      "main": [
        [
          {
            "node": "9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8": {
      "main": [
        [
          {
            "node": "9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9": {
      "main": [
        [
          {
            "node": "10",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "10": {
      "main": [
        [
          {
            "node": "11",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Cron-Trigger": {
      "main": [
        [
          {
            "node": "2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Listings": {
      "main": [
        [
          {
            "node": "5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Experte - Persönliche Produktivität, Multimodales KI

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes22
Kategorie2
Node-Typen9
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Autor
Abbas Ali

Abbas Ali

@abbas12142

Automation Engineer passionate about building smart, scalable workflows with n8n. I specialize in API integrations, webhook handling, and streamlining business tasks using low-code tools. From AI-powered bots to real-time data pipelines, I love solving problems with automation. Let’s turn manual processes into efficient systems!

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34