Extraction d'e-mails commerciaux à partir de listes Google Maps pour la génération de prospects

Avancé

Ceci est unLead Generationworkflow d'automatisation du domainecontenant 20 nœuds.Utilise principalement des nœuds comme Code, Wait, Limit, Filter, SplitOut. Extraire les adresses e-mail professionnelles à partir des listes Google Maps pour la génération de leads

Prérequis
  • 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
{
  "meta": {
    "instanceId": "5935d23fce125caa8ab93af824f47776e317d824634bf7b68a810b49a4038f0a"
  },
  "nodes": [
    {
      "id": "f892006c-8856-4a24-8ad5-71fb19c57011",
      "name": "Lors du clic sur 'Tester le workflow'",
      "type": "n8n-nodes-base.manualTrigger",
      "notes": "Entry point — manually start the workflow via the Test button.",
      "position": [
        -2400,
        384
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "202d221b-a899-455b-884f-1661496a9866",
      "name": "Extraire Google Maps",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Fetches the Google Maps search results page for 'calgary dentists'.",
      "position": [
        -2176,
        384
      ],
      "parameters": {
        "url": "https://www.google.com/maps/search/carpinteros+en+tarragona/@41.1402229,1.0832014,56063m/data=!3m1!1e3?entry=ttu&g_ep=EgoyMDI1MTAwMS4wIKXMDSoASAFQAw%3D%3D",
        "options": {
          "response": {
            "response": {
              "fullResponse": true
            }
          },
          "allowUnauthorizedCerts": true
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "50bc0bec-b364-41cb-84bd-9c26f1b92b86",
      "name": "Extraire les URLs",
      "type": "n8n-nodes-base.code",
      "notes": "Extracts all URLs from the HTML response and returns one item per URL.",
      "position": [
        -1952,
        384
      ],
      "parameters": {
        "jsCode": "const input = $input.first().json.data\nconst regex = /https?:\\/\\/[^\\/\\s\"'>]+/g\nconst websites = input?.match?.(regex) || []\nreturn websites.map(website => ({ json: { website } }))"
      },
      "typeVersion": 2
    },
    {
      "id": "65bbd225-9663-4853-82be-18ec96cd52b8",
      "name": "Filtrer les URLs Google",
      "type": "n8n-nodes-base.filter",
      "notes": "Removes unwanted Google-related or tracking URLs.",
      "position": [
        -1728,
        384
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "bf0a5053-9660-457c-9581-964793bb6d7d",
              "operator": {
                "type": "string",
                "operation": "notContains"
              },
              "leftValue": "={{ $json.website }}",
              "rightValue": "schema"
            },
            {
              "id": "9110b9e0-12aa-45cc-bde0-9eda8c10970e",
              "operator": {
                "type": "string",
                "operation": "notContains"
              },
              "leftValue": "={{ $json.website }}",
              "rightValue": "google"
            },
            {
              "id": "fb9b6ed6-96a5-4560-ab10-b8a4b9a61a2b",
              "operator": {
                "type": "string",
                "operation": "notContains"
              },
              "leftValue": "={{ $json.website }}",
              "rightValue": "gg"
            },
            {
              "id": "10500c0b-cdbd-4816-aba3-df60d69845dc",
              "operator": {
                "type": "string",
                "operation": "notContains"
              },
              "leftValue": "={{ $json.website }}",
              "rightValue": "gstatic"
            },
            {
              "id": "c0f78219-b32c-4483-8596-22628a28acf7",
              "operator": {
                "type": "string",
                "operation": "notContains"
              },
              "leftValue": "={{ $json.website }}",
              "rightValue": "sentry.wixpress.com"
            },
            {
              "id": "d162a4cf-02f3-492e-adb7-333bf6cd152b",
              "operator": {
                "type": "string",
                "operation": "notContains"
              },
              "leftValue": "={{ $json.website }}",
              "rightValue": "sentry.io"
            },
            {
              "id": "1e88aa52-44e3-459e-bcec-e18bd3de3d2a",
              "operator": {
                "type": "string",
                "operation": "notContains"
              },
              "leftValue": "={{ $json.website }}",
              "rightValue": "sentry-next.wixpress.com"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "a6c87588-44f9-44f3-8b61-95e27d1e4442",
      "name": "Supprimer les doublons",
      "type": "n8n-nodes-base.removeDuplicates",
      "notes": "Removes duplicate website URLs.",
      "position": [
        -1504,
        384
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 2
    },
    {
      "id": "902fc9fa-4908-460a-b3d5-e8396917b2fc",
      "name": "Limiter",
      "type": "n8n-nodes-base.limit",
      "notes": "Limits the number of websites processed per run to 10.",
      "position": [
        -1280,
        384
      ],
      "parameters": {
        "maxItems": 100
      },
      "typeVersion": 1
    },
    {
      "id": "5b49547e-f87b-4e7f-97f8-ba4e4976fb90",
      "name": "Boucler sur les éléments",
      "type": "n8n-nodes-base.splitInBatches",
      "notes": "Processes websites one at a time (batch processing).",
      "position": [
        -1056,
        384
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "86312345-b2e2-46cf-80bc-4836f58b9e44",
      "name": "Attente1",
      "type": "n8n-nodes-base.wait",
      "notes": "Adds a delay between requests to avoid server blocking.",
      "position": [
        -832,
        192
      ],
      "webhookId": "0fe34756-6e43-4603-8891-5747a9a6500a",
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "eae01ed2-f39b-443f-91a5-39a6e8d98b91",
      "name": "Extraire le site",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Fetches the website HTML (does not follow redirects).",
      "onError": "continueRegularOutput",
      "position": [
        -832,
        384
      ],
      "parameters": {
        "url": "={{ $json.website }}",
        "options": {
          "redirect": {
            "redirect": {
              "followRedirects": false
            }
          }
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "b7f7a122-c882-4a58-9a80-9c94ad58b600",
      "name": "Attente",
      "type": "n8n-nodes-base.wait",
      "notes": "Short wait before parsing to prevent hitting rate limits.",
      "position": [
        -608,
        384
      ],
      "webhookId": "19cc6ed4-4fe7-485b-b879-c679e4b3374d",
      "parameters": {
        "amount": 1
      },
      "typeVersion": 1.1
    },
    {
      "id": "dbe428f8-7a47-4438-a869-9813db4d1a4e",
      "name": "Extraire les e-mails",
      "type": "n8n-nodes-base.code",
      "notes": "Extracts email addresses from the website HTML.",
      "onError": "continueRegularOutput",
      "position": [
        -384,
        464
      ],
      "parameters": {
        "jsCode": "const input = $input.first().json.data\nconst regex = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.(?!jpeg|jpg|png|gif|webp|svg)[a-zA-Z]{2,}/g\nconst emails = input?.match?.(regex) || []\nreturn { json: { emails } }"
      },
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "c25386cf-cfd0-4546-ae30-d79c628b0415",
      "name": "Filtrer les vides",
      "type": "n8n-nodes-base.filter",
      "notes": "Passes through only items where 'emails' exists and is not empty.",
      "position": [
        -608,
        192
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "a6786c58-424a-409a-b87f-8a7592cb7944",
              "operator": {
                "type": "array",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.emails }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "6367d624-1559-40ee-8f90-9293c0ce8847",
      "name": "Séparer",
      "type": "n8n-nodes-base.splitOut",
      "notes": "Splits multiple emails into separate items (one per row).",
      "position": [
        -384,
        192
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "emails"
      },
      "typeVersion": 1
    },
    {
      "id": "5b81ce13-0e56-4aac-aaa3-91be7d9103aa",
      "name": "Supprimer les doublons (2)",
      "type": "n8n-nodes-base.removeDuplicates",
      "notes": "Removes duplicate emails before saving.",
      "position": [
        -160,
        192
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 2
    },
    {
      "id": "7fd76480-d159-4566-9f2c-12ee0e5797c2",
      "name": "Ajouter à la feuille",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "Appends the extracted emails into the specified Google Sheet.",
      "position": [
        64,
        192
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "Título",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Título",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Texto",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Texto",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "HECHO",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "HECHO",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "TIKTOK",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "TIKTOK",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "SHORTS",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "SHORTS",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Fecha",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Fecha",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1mlBYMLXdNNp3yTVJHpt3nKgVmTUR4fi09dBpp3k41r8/edit#gid=0",
          "cachedResultName": "Hoja 1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1mlBYMLXdNNp3yTVJHpt3nKgVmTUR4fi09dBpp3k41r8",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1mlBYMLXdNNp3yTVJHpt3nKgVmTUR4fi09dBpp3k41r8/edit?usp=drivesdk",
          "cachedResultName": "ideas"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "3ATVfFLykTq2D8XH",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "b69e82bf-71b9-4fca-a086-53efd0c52ad7",
      "name": "Note adhésive",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2512,
        592
      ],
      "parameters": {
        "width": 272,
        "height": 192,
        "content": "## Manual Trigger\nStarts the workflow when you click “Test Workflow”.\nUse this to manually run the scraper whenever you need fresh results."
      },
      "typeVersion": 1
    },
    {
      "id": "159c0f17-46b0-4ad1-8563-2e0bf506a164",
      "name": "Note adhésive1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2128,
        576
      ],
      "parameters": {
        "width": 304,
        "height": 192,
        "content": "## Scrape Google Maps + Extract URLs\nFetches the HTML from your chosen Google Maps search, then extracts all website links from the page."
      },
      "typeVersion": 1
    },
    {
      "id": "5aaf7168-dc3b-4b49-a916-5e60de270f34",
      "name": "Note adhésive2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1648,
        176
      ],
      "parameters": {
        "width": 448,
        "content": "## Filter Google URLs + Remove Duplicates + Limit\nRemoves unwanted Google/tracking links, keeps only unique websites, and limits total results to 100 for safe execution."
      },
      "typeVersion": 1
    },
    {
      "id": "c71740e9-a8d2-4cb2-955b-bae9f52db2ab",
      "name": "Note adhésive3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        688
      ],
      "parameters": {
        "width": 384,
        "height": 112,
        "content": "## Scrape Site + Extract Emails\nVisits each website, extracts visible email addresses, and prepares them for export."
      },
      "typeVersion": 1
    },
    {
      "id": "164cbf16-1491-427e-b449-8921b90f78d9",
      "name": "Note adhésive4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 288,
        "content": "## Add to Google Sheet\nSaves all extracted emails directly into your Google Sheet (optional step)."
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "b7f7a122-c882-4a58-9a80-9c94ad58b600": {
      "main": [
        [
          {
            "node": "dbe428f8-7a47-4438-a869-9813db4d1a4e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "902fc9fa-4908-460a-b3d5-e8396917b2fc": {
      "main": [
        [
          {
            "node": "5b49547e-f87b-4e7f-97f8-ba4e4976fb90",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "86312345-b2e2-46cf-80bc-4836f58b9e44": {
      "main": [
        [
          {
            "node": "c25386cf-cfd0-4546-ae30-d79c628b0415",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6367d624-1559-40ee-8f90-9293c0ce8847": {
      "main": [
        [
          {
            "node": "5b81ce13-0e56-4aac-aaa3-91be7d9103aa",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "eae01ed2-f39b-443f-91a5-39a6e8d98b91": {
      "main": [
        [
          {
            "node": "b7f7a122-c882-4a58-9a80-9c94ad58b600",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "50bc0bec-b364-41cb-84bd-9c26f1b92b86": {
      "main": [
        [
          {
            "node": "65bbd225-9663-4853-82be-18ec96cd52b8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "dbe428f8-7a47-4438-a869-9813db4d1a4e": {
      "main": [
        [
          {
            "node": "5b49547e-f87b-4e7f-97f8-ba4e4976fb90",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5b49547e-f87b-4e7f-97f8-ba4e4976fb90": {
      "main": [
        [
          {
            "node": "86312345-b2e2-46cf-80bc-4836f58b9e44",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "eae01ed2-f39b-443f-91a5-39a6e8d98b91",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a6c87588-44f9-44f3-8b61-95e27d1e4442": {
      "main": [
        [
          {
            "node": "902fc9fa-4908-460a-b3d5-e8396917b2fc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "65bbd225-9663-4853-82be-18ec96cd52b8": {
      "main": [
        [
          {
            "node": "a6c87588-44f9-44f3-8b61-95e27d1e4442",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c25386cf-cfd0-4546-ae30-d79c628b0415": {
      "main": [
        [
          {
            "node": "6367d624-1559-40ee-8f90-9293c0ce8847",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "202d221b-a899-455b-884f-1661496a9866": {
      "main": [
        [
          {
            "node": "50bc0bec-b364-41cb-84bd-9c26f1b92b86",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5b81ce13-0e56-4aac-aaa3-91be7d9103aa": {
      "main": [
        [
          {
            "node": "7fd76480-d159-4566-9f2c-12ee0e5797c2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f892006c-8856-4a24-8ad5-71fb19c57011": {
      "main": [
        [
          {
            "node": "202d221b-a899-455b-884f-1661496a9866",
            "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é - Génération de leads

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œuds20
Catégorie1
Types de nœuds11
Description de la difficulté

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

Auteur
Jose Castillo

Jose Castillo

@j4ssn3o

Automation & Growth Engineer | Founder of Automation Hub I build practical, AI-powered workflows that help creators and businesses automate daily tasks, track performance, and make smarter decisions — all without code. Passionate about turning complex systems into simple, scalable automations.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34