Recherche de logements et candidatures automatiques en Allemagne (avec fonction de notes)

Avancé

Ceci est unPersonal Productivity, Multimodal AIworkflow d'automatisation du domainecontenant 22 nœuds.Utilise principalement des nœuds comme Set, Cron, Function, EmailSend, GoogleDrive. Recherche et candidature automatisées pour les appartements en Allemagne, avec Immobilienscout24 et les services Google

Prérequis
  • Informations d'identification Google Drive API
  • Peut nécessiter les informations d'identification d'authentification de l'API cible
  • Informations d'identification Google Sheets API
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "name": "Germany Apartment Finder & Auto-Apply (with Sticky Notes)",
  "tags": [
    "apartments",
    "automation",
    "germany",
    "immobilienscout24"
  ],
  "nodes": [
    {
      "id": "1",
      "name": "Déclencheur Cron",
      "type": "n8n-nodes-base.cron",
      "position": [
        250,
        300
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "2",
      "name": "Définir la Configuration",
      "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": "Recherche d'ID Géographique",
      "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": "Récupérer les Annonces depuis Immobilienscout24",
      "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": "Filtrer les Résultats",
      "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": "Traiter les Appartements un par un",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1250,
        300
      ],
      "parameters": {
        "batchSize": 1
      },
      "typeVersion": 1
    },
    {
      "id": "7",
      "name": "Récupérer le Schufa (Drive Google)",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1450,
        100
      ],
      "parameters": {
        "fileId": "={{$json[\"GDRIVE_SCHUFA_FILE_ID\"]}}",
        "authentication": "oAuth2"
      },
      "typeVersion": 1
    },
    {
      "id": "8",
      "name": "Récupérer les Bulletins de Salaire (Drive Google)",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1450,
        500
      ],
      "parameters": {
        "fileId": "={{$json[\"GDRIVE_SALARY_FILE_ID\"]}}",
        "authentication": "oAuth2"
      },
      "typeVersion": 1
    },
    {
      "id": "9",
      "name": "Générer la Lettre de Motivation",
      "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": "Envoyer l'Email de Candidature",
      "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": "Journaliser dans la Feuille Google",
      "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": "Post-it : Déclencheur Cron",
      "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": "Post-it : Définir la Configuration",
      "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": "Post-it : Recherche d'ID Géographique",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        650,
        230
      ],
      "parameters": {
        "content": "Convert city name to GeoID needed by ImmobilienScout24 API."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky4",
      "name": "Post-it : Récupérer les Annonces depuis Immobilienscout24",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        850,
        230
      ],
      "parameters": {
        "content": "Fetch apartment listings from ImmobilienScout24 with filters applied."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky5",
      "name": "Post-it : Filtrer les Résultats",
      "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": "Post-it : Traiter les Appartements un par un",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1250,
        230
      ],
      "parameters": {
        "content": "Process apartments one by one to send applications."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky7",
      "name": "Post-it : Récupérer le Schufa",
      "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": "Post-it : Récupérer les Bulletins de Salaire",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1450,
        430
      ],
      "parameters": {
        "content": "Fetch latest salary slips from Google Drive for application."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky9",
      "name": "Post-it : Générer la Lettre de Motivation",
      "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": "Post-it : Envoyer l'Email de Candidature",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1850,
        230
      ],
      "parameters": {
        "content": "Send the apartment application email with attachments."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky11",
      "name": "Post-it : Journaliser dans la Feuille Google",
      "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": {
    "1": {
      "main": [
        [
          {
            "node": "2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "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
          }
        ]
      ]
    },
    "Fetch Listings": {
      "main": [
        [
          {
            "node": "5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Avancé - Productivité personnelle, IA Multimodale

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds22
Catégorie2
Types de nœuds9
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Auteur
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!

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34