Extracción de correos electrónicos comerciales de listas de Google Maps para generación de clientes potenciales

Avanzado

Este es unLead Generationflujo de automatización del dominio deautomatización que contiene 20 nodos.Utiliza principalmente nodos como Code, Wait, Limit, Filter, SplitOut. Extraer direcciones de correo electrónico de negocios de listas de Google Maps para generación de leads

Requisitos previos
  • Pueden requerirse credenciales de autenticación para la API de destino
  • Credenciales de API de Google Sheets
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "meta": {
    "instanceId": "5935d23fce125caa8ab93af824f47776e317d824634bf7b68a810b49a4038f0a"
  },
  "nodes": [
    {
      "id": "f892006c-8856-4a24-8ad5-71fb19c57011",
      "name": "Al hacer clic en 'Probar flujo de trabajo'",
      "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": "Rascar 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": "Extraer 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": "Filtrar URLs de 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": "Eliminar duplicados",
      "type": "n8n-nodes-base.removeDuplicates",
      "notes": "Removes duplicate website URLs.",
      "position": [
        -1504,
        384
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 2
    },
    {
      "id": "902fc9fa-4908-460a-b3d5-e8396917b2fc",
      "name": "Límite",
      "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": "Iterar sobre elementos",
      "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": "Espera1",
      "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": "Rascar sitio",
      "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": "Espera",
      "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": "Extraer correos electrónicos",
      "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": "Filtrar vacíos",
      "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": "Separar",
      "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": "Eliminar duplicados (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": "Agregar a hoja",
      "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": "Nota adhesiva",
      "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": "Nota adhesiva1",
      "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": "Nota adhesiva2",
      "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": "Nota adhesiva3",
      "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": "Nota adhesiva4",
      "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
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Avanzado - Generación de leads

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos20
Categoría1
Tipos de nodos11
Descripción de la dificultad

Adecuado para usuarios avanzados, flujos de trabajo complejos con 16+ nodos

Autor
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.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34