How To Scrape Unlimited Emails from Google Maps [N8N FREE]

In this step-by-step guide, I’ll show you how to scrape unlimited business emails from Google Mapscompletely for free—using N8N, a powerful no-code automation tool. No API keys, no manual work—just an AI-powered workflow that runs automatically while you sleep!


Why Scrape Emails from Google Maps?

Google Maps is a goldmine for business leads. Whether you’re in sales, marketing, or lead generation, extracting emails from local businesses can help you:
✅ Build targeted email lists for outreach
✅ Find B2B leads in any niche (plumbers, electricians, real estate agents, etc.)
✅ Automate lead generation without paying for expensive tools


How It Works (Overview)

We’ll use N8N, a free automation tool, to:

  1. Scrape Google Maps listings for business websites.
  2. Extract emails from those websites automatically.
  3. Save the emails in Google Sheets—ready for your outreach campaigns.

No coding skills needed—just follow the steps below!


Step 1: Set Up N8N (Free & Self-Hosted)

N8N is an open-source automation tool (like Zapier but more powerful). Here’s how to get started:

  1. Sign up for N8N (you can self-host or use their cloud version).
  2. Create a new workflow (we’ll build ours from scratch).

Step 2: Trigger the Workflow

Our automation starts with a manual trigger (you can also schedule it to run daily).

  1. Click “Add Node” and select “Manual Trigger.”
  2. This will be the starting point of our email scraper.

Step 3: Scrape Google Maps Listings

Next, we’ll fetch business data from Google Maps using an HTTP request.

  1. Add an “HTTP Request” node after the trigger.
  2. Enter a Google Maps search URL (e.g., https://www.google.com/maps/search/electricians+in+new+york).
  3. The node will fetch the HTML data containing business listings.

Step 4: Extract Business Website URLs

Google Maps listings include business websites—we’ll extract them automatically.

  1. Add a “Code Node” to parse the HTML and extract website links.
  2. The code will filter out unnecessary URLs (like Google’s own links).
  3. Only valid business websites will proceed to the next step.

Step 5: Visit Each Website & Scrape Emails

Now, we’ll automatically visit each website and search for emails.

  1. Add a “Loop Node” to process each website one by one.
  2. Inside the loop, add another “HTTP Request” node to fetch the website’s HTML.
  3. Use a “Code Node” to scan the HTML for email patterns (e.g., contact@example.com).

🔹 Pro Tip: Add a delay (1-2 seconds) between requests to avoid being blocked.


Step 6: Filter & Remove Duplicate Emails

Not all scraped data will be clean—we’ll filter out invalid emails.

  1. Add a “Filter Node” to remove fake emails (e.g., noreply@, support@).
  2. Use a “Remove Duplicates Node” to ensure no repeated emails.

Step 7: Save Emails to Google Sheets (Automatically)

Finally, we’ll store all the scraped emails in Google Sheets for easy access.

  1. Connect N8N to Google Sheets (requires a one-time setup).
  2. Add an “Update Google Sheets” node to save emails in real time.
  3. Each new email will be appended to your spreadsheet automatically.

Advanced Trick: Scrape Multiple Google Maps URLs at Once

Want even more leads? Instead of one URL, you can:

  1. Create a list of multiple Google Maps search URLs (e.g., different cities or niches).
  2. Use a “Loop Node” to process all URLs in sequence.
  3. The workflow will scrape hundreds of emails in minutes!

Final Results

23 emails scraped in 1 minute (from a single Google Maps search).
Fully automated—no manual copying/pasting.
Free & scalable—add more URLs for unlimited leads.


Ready to Try It Yourself?

  1. Download the pre-built N8N workflow (link in description).
  2. Customize it for your niche (plumbers, dentists, agencies, etc.).
  3. Run it daily to build a massive email list effortlessly!

Conclusion

This method lets you scrape unlimited emails for free without coding. Whether you’re in sales, marketing, or lead generation, automating this process saves hours of manual work.

Code Nodes


// This code creates an array of objects, each containing a URL from the given list.
const urlList = ["https://www.google.com/maps/search/plumbers+in+jersey+city", "https://www.google.com/maps/search/plumbers+in+Manhattan/", "https://www.google.com/maps/search/plumbers+in+Queens/"];

return urlList.map(url => {
return {
json: {
urlList: url
}
}
});



// This code extracts all URLs from the input JSON data and returns them in a new array of objects.
const input = $input.first().json.data
const regex = /https?:\/\/([^\/\s"]+)/g
const websites = input.match(regex);

return websites.map(website => ({json:{website}}))


// This code extracts all email addresses from the input JSON data and returns them in a new array of objects.
const input = $input.first().json.data
const emailRegex = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?!png|jpg|gif|jpeg)[a-zA-Z]{2,}/g
const emails = input.match(emailRegex)

return {json: {emails: emails}}

Google Map Scraping Workflow – Scraping 1 URL

{
  "name": "Google Map Scraping",
  "nodes": [
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        460,
        -140
      ],
      "id": "c9e57f81-8bc1-425e-a77b-cdee6aebc437",
      "name": "When clicking ‘Test workflow’"
    },
    {
      "parameters": {
        "url": "https://www.google.com/maps/search/electricians+in+Queens/",
        "options": {
          "allowUnauthorizedCerts": true
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        680,
        -140
      ],
      "id": "a15eeae2-4148-4eb0-ab48-f8a94544260f",
      "name": "HTTP Request"
    },
    {
      "parameters": {
        "jsCode": "const input = $input.first().json.data\nconst regex = /https?:\\/\\/([^\\/\\s\"]+)/g\nconst websites = input.match(regex);\n\nreturn websites.map(website => ({json:{website}}))"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        900,
        -140
      ],
      "id": "80ccefdc-1304-4d86-ba0a-68e556f6c2cf",
      "name": "Code"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "d620b60e-aa5b-487f-88e1-c9c44c5d5c1e",
              "leftValue": "={{ $json.website }}",
              "rightValue": "schema",
              "operator": {
                "type": "string",
                "operation": "notContains"
              }
            },
            {
              "id": "01740cf8-6d47-410d-8267-e5fb6fc53033",
              "leftValue": "={{ $json.website }}",
              "rightValue": "google",
              "operator": {
                "type": "string",
                "operation": "notContains"
              }
            },
            {
              "id": "a74f2c50-22ef-4bce-ba5b-3834ccfbbb23",
              "leftValue": "={{ $json.website }}",
              "rightValue": "ggpht",
              "operator": {
                "type": "string",
                "operation": "notContains"
              }
            },
            {
              "id": "4154aa82-0e4a-489f-a6fa-0c6635edaf64",
              "leftValue": "={{ $json.website }}",
              "rightValue": "gstatic",
              "operator": {
                "type": "string",
                "operation": "notContains"
              }
            },
            {
              "id": "29191f16-c242-497a-9a30-fa08d370693f",
              "leftValue": "={{ $json.website }}",
              "rightValue": "facebook",
              "operator": {
                "type": "string",
                "operation": "notContains"
              }
            },
            {
              "id": "f35c1c25-ba52-40d4-8f71-a18781945515",
              "leftValue": "={{ $json.website }}",
              "rightValue": "wa",
              "operator": {
                "type": "string",
                "operation": "notContains"
              }
            },
            {
              "id": "acaaf7bc-d621-4d02-bfd8-1df2b5c563b7",
              "leftValue": "={{ $json.website }}",
              "rightValue": "about",
              "operator": {
                "type": "string",
                "operation": "notContains"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.filter",
      "typeVersion": 2.2,
      "position": [
        1120,
        -140
      ],
      "id": "5932cd4b-9fc1-4da0-a718-12888defde65",
      "name": "Filter"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        440,
        260
      ],
      "id": "c6b11999-6d35-4fa5-b8f5-f95c5e4c93d6",
      "name": "Loop Over Items"
    },
    {
      "parameters": {
        "url": "={{ $json.website }}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        580,
        360
      ],
      "id": "92cb31be-1466-4c34-9889-e913121b82cb",
      "name": "HTTP Request1",
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "jsCode": "const input = $input.first().json.data\nconst emailRegex = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.(?!png|jpg|gif|jpeg)[a-zA-Z]{2,}/g\nconst emails = input.match(emailRegex)\n\nreturn {json: {emails: emails}}"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        800,
        360
      ],
      "id": "556b3320-34b7-48bc-a5c7-0cd5eab704ca",
      "name": "Code1",
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "amount": 0.5
      },
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        980,
        380
      ],
      "id": "75cd03df-4576-4426-942d-d95df4cf515b",
      "name": "Wait",
      "webhookId": "4d9060bb-4ac8-41b1-845a-6a072e326906"
    },
    {
      "parameters": {
        "amount": 1
      },
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        580,
        160
      ],
      "id": "526ff36f-73d8-449d-9164-26ef1725c1b6",
      "name": "Wait1",
      "webhookId": "e3031c23-1901-409c-8c3b-7bf0c260d4b2"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "95cb5446-6c6a-4cd3-8620-66341687f611",
              "leftValue": "={{ $json.emails }}",
              "rightValue": "",
              "operator": {
                "type": "array",
                "operation": "exists",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.filter",
      "typeVersion": 2.2,
      "position": [
        800,
        160
      ],
      "id": "5614cb1c-0314-4bcc-9f68-f76dd332a93d",
      "name": "Filter1"
    },
    {
      "parameters": {
        "fieldToSplitOut": "emails",
        "options": {}
      },
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [
        1020,
        160
      ],
      "id": "a5230c4a-a036-4e87-9259-5c9a156a36f4",
      "name": "Split Out"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.removeDuplicates",
      "typeVersion": 2,
      "position": [
        1240,
        160
      ],
      "id": "142caa2c-7c6a-4fcd-845f-ab42a9106c52",
      "name": "Remove Duplicates"
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "1v8G1LQ_RTtgCGSW2C1R-TON5EmENG7U-zg0aknEO-ZU",
          "mode": "list",
          "cachedResultName": "Google Map Scraping",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1v8G1LQ_RTtgCGSW2C1R-TON5EmENG7U-zg0aknEO-ZU/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Sheet1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D2eVnh1yeguiUptNEvX6Uer1RN-jYPmjF8h92aH_74Y/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Emails": "={{ $json.emails }}"
          },
          "matchingColumns": [
            "Email"
          ],
          "schema": [
            {
              "id": "Emails",
              "displayName": "Emails",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "useAppend": true
        }
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        1460,
        160
      ],
      "id": "b4bcb6dc-fdf1-4cfc-84ce-61e76cf5c370",
      "name": "Google Sheets",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "P8GbujCvl57Gl2lU",
          "name": "Google Sheets account"
        }
      }
    },
    {
      "parameters": {
        "maxItems": 10
      },
      "type": "n8n-nodes-base.limit",
      "typeVersion": 1,
      "position": [
        1340,
        -140
      ],
      "id": "d4a8f8b5-bef9-4777-afae-37cef2e39c4c",
      "name": "Limit",
      "disabled": true
    },
    {
      "parameters": {
        "content": "## Scraping Websites From Google Maps",
        "height": 280,
        "width": 1280,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        380,
        -200
      ],
      "id": "f070786d-3067-4ab6-a8aa-eabb46c7821c",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "## Scraping Emails From Websites",
        "height": 480,
        "width": 1260
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        380,
        100
      ],
      "id": "94447ea9-a11f-488f-8714-4e665481684f",
      "name": "Sticky Note1"
    }
  ],
  "pinData": {},
  "connections": {
    "When clicking ‘Test workflow’": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code": {
      "main": [
        [
          {
            "node": "Filter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter": {
      "main": [
        [
          {
            "node": "Limit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Wait1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "HTTP Request1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request1": {
      "main": [
        [
          {
            "node": "Code1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code1": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait1": {
      "main": [
        [
          {
            "node": "Filter1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter1": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Remove Duplicates",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Remove Duplicates": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "71f1ed2f-87d3-4633-92bb-bcc16cd84794",
  "meta": {
    "templateCredsSetupCompleted": true,
    "instanceId": "7d6a5bcda733904ebcb54fc0e889f6735550f40f670703e17874c0872e05a9cb"
  },
  "id": "m6UkmxyeboUoBjmS",
  "tags": []
}

Google Map Scraping Workflow – Scraping Multiple URL’s

{
  "name": "Google Maps Scraping Multiple URL's",
  "nodes": [
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        -400,
        -60
      ],
      "id": "9a80e155-67c9-4bf8-9829-7eea88dbd407",
      "name": "When clicking ‘Test workflow’"
    },
    {
      "parameters": {
        "url": "={{ $json.urlList }}",
        "options": {
          "allowUnauthorizedCerts": true
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        240,
        0
      ],
      "id": "2332ca49-6130-4351-87ca-906804321db7",
      "name": "HTTP Request (Google Maps Search)"
    },
    {
      "parameters": {
        "jsCode": "const input = $input.first().json.data\nconst regex = /https?:\\/\\/([^\\/\\s\"]+)/g\nconst websites = input.match(regex);\n\nreturn websites.map(website => ({json:{website}}))"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        440,
        0
      ],
      "id": "4006d873-df95-4e6b-9e3e-1471b9959907",
      "name": "Code (Extract Websites)"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "d620b60e-aa5b-487f-88e1-c9c44c5d5c1e",
              "leftValue": "={{ $json.website }}",
              "rightValue": "schema",
              "operator": {
                "type": "string",
                "operation": "notContains"
              }
            },
            {
              "id": "01740cf8-6d47-410d-8267-e5fb6fc53033",
              "leftValue": "={{ $json.website }}",
              "rightValue": "google",
              "operator": {
                "type": "string",
                "operation": "notContains"
              }
            },
            {
              "id": "a74f2c50-22ef-4bce-ba5b-3834ccfbbb23",
              "leftValue": "={{ $json.website }}",
              "rightValue": "ggpht",
              "operator": {
                "type": "string",
                "operation": "notContains"
              }
            },
            {
              "id": "4154aa82-0e4a-489f-a6fa-0c6635edaf64",
              "leftValue": "={{ $json.website }}",
              "rightValue": "gstatic",
              "operator": {
                "type": "string",
                "operation": "notContains"
              }
            },
            {
              "id": "29191f16-c242-497a-9a30-fa08d370693f",
              "leftValue": "={{ $json.website }}",
              "rightValue": "facebook",
              "operator": {
                "type": "string",
                "operation": "notContains"
              }
            },
            {
              "id": "f35c1c25-ba52-40d4-8f71-a18781945515",
              "leftValue": "={{ $json.website }}",
              "rightValue": "wa",
              "operator": {
                "type": "string",
                "operation": "notContains"
              }
            },
            {
              "id": "acaaf7bc-d621-4d02-bfd8-1df2b5c563b7",
              "leftValue": "={{ $json.website }}",
              "rightValue": "about",
              "operator": {
                "type": "string",
                "operation": "notContains"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.filter",
      "typeVersion": 2.2,
      "position": [
        940,
        60
      ],
      "id": "956620c0-9b55-4108-9b85-8f46ea133a9b",
      "name": "Filter (Websites)"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        160,
        380
      ],
      "id": "5529a6c4-8a12-4c04-b1f0-57950baf3398",
      "name": "Loop Over Items (Websites)"
    },
    {
      "parameters": {
        "url": "={{ $json.website }}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        300,
        480
      ],
      "id": "16b37a6d-fe10-419a-af07-3c966efbb3fb",
      "name": "HTTP Request (Scrape Website)",
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "jsCode": "const input = $input.first().json.data\nconst emailRegex = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.(?!png|jpg|gif|jpeg)[a-zA-Z]{2,}/g\nconst emails = input.match(emailRegex)\n\nreturn {json: {emails: emails}}"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        520,
        480
      ],
      "id": "6b31e817-23c7-4a4d-aeda-47c342acab7b",
      "name": "Code (Extract Emails)",
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "amount": 0.5
      },
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        700,
        500
      ],
      "id": "b9f7a5e5-3e96-46cc-809a-71d677391f76",
      "name": "Wait",
      "webhookId": "9671c5ed-2152-4a37-8cd0-3fc42b78a856"
    },
    {
      "parameters": {
        "amount": 1
      },
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        300,
        280
      ],
      "id": "f06a34ee-c9db-428b-bc9d-b09159b63db0",
      "name": "Wait (Before Email Process)",
      "webhookId": "c3ac30be-0689-472d-bc75-7f989f7d6b0f"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "95cb5446-6c6a-4cd3-8620-66341687f611",
              "leftValue": "={{ $json.emails }}",
              "rightValue": "",
              "operator": {
                "type": "array",
                "operation": "exists",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.filter",
      "typeVersion": 2.2,
      "position": [
        520,
        280
      ],
      "id": "88afc20d-a3d6-4d43-93b5-2f84d9f14c93",
      "name": "Filter (Has Emails)"
    },
    {
      "parameters": {
        "fieldToSplitOut": "emails",
        "options": {}
      },
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [
        740,
        280
      ],
      "id": "e5481089-5a0b-4ce3-9444-a045e4db2ada",
      "name": "Split Out (Emails)"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.removeDuplicates",
      "typeVersion": 2,
      "position": [
        960,
        280
      ],
      "id": "a40cbfd9-1eeb-403e-8630-f9842046f910",
      "name": "Remove Duplicates (Emails)"
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "1v8G1LQ_RTtgCGSW2C1R-TON5EmENG7U-zg0aknEO-ZU",
          "mode": "list",
          "cachedResultName": "Google Map Scraping",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1v8G1LQ_RTtgCGSW2C1R-TON5EmENG7U-zg0aknEO-ZU/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Sheet1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D2eVnh1yeguiUptNEvX6Uer1RN-jYPmjF8h92aH_74Y/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Emails": "={{ $json.emails }}"
          },
          "matchingColumns": [
            "Email"
          ],
          "schema": [
            {
              "id": "Emails",
              "displayName": "Emails",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "useAppend": true
        }
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        1180,
        280
      ],
      "id": "f556a6c4-b20d-424b-b055-19fd1535e011",
      "name": "Google Sheets",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "P8GbujCvl57Gl2lU",
          "name": "Google Sheets account"
        }
      }
    },
    {
      "parameters": {
        "maxItems": 10
      },
      "type": "n8n-nodes-base.limit",
      "typeVersion": 1,
      "position": [
        1160,
        60
      ],
      "id": "d0ec7ec8-d8f7-4c28-81cc-34a06ea840f6",
      "name": "Limit (Websites per search)",
      "disabled": true
    },
    {
      "parameters": {
        "content": "## Scraping Emails from Websites",
        "height": 400,
        "width": 1780,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -440,
        280
      ],
      "id": "243bf8a0-26ae-4256-815a-ba67ffe2f6f8",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "## Scraping Multiple Google Map URL's",
        "height": 480,
        "width": 1780
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -440,
        -200
      ],
      "id": "0b972b2d-af20-4a0c-89e0-04272baaa73d",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        0,
        -20
      ],
      "id": "dcf79135-f80b-4d21-97db-4005ca9cc00e",
      "name": "Loop Over Items"
    },
    {
      "parameters": {
        "amount": 2
      },
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        700,
        40
      ],
      "id": "84fa4e41-6802-4945-a050-fdfed682a412",
      "name": "Wait1",
      "webhookId": "f8468cd2-c45d-45f1-bd06-5ce9dd5d297e"
    },
    {
      "parameters": {
        "amount": 1
      },
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        400,
        -160
      ],
      "id": "44264263-b5be-4fc1-bcc4-36fd441e01f9",
      "name": "Wait2",
      "webhookId": "be0bbcc2-9de5-4462-9323-cd2fd54c0bdf"
    },
    {
      "parameters": {
        "jsCode": "const urlList = [\"https://www.google.com/maps/search/plumbers+in+jersey+city\", \"https://www.google.com/maps/search/plumbers+in+Manhattan/\", \"https://www.google.com/maps/search/plumbers+in+Queens/\"];\n\nreturn urlList.map(url => {\nreturn {\njson: {\nurlList: url\n}\n}\n});"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -200,
        -60
      ],
      "id": "20964344-1939-4cf9-971f-3300fdf04844",
      "name": "Define URL List"
    }
  ],
  "pinData": {},
  "connections": {
    "When clicking ‘Test workflow’": {
      "main": [
        [
          {
            "node": "Define URL List",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request (Google Maps Search)": {
      "main": [
        [
          {
            "node": "Code (Extract Websites)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code (Extract Websites)": {
      "main": [
        [
          {
            "node": "Wait1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter (Websites)": {
      "main": [
        [
          {
            "node": "Limit (Websites per search)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items (Websites)": {
      "main": [
        [
          {
            "node": "Wait (Before Email Process)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "HTTP Request (Scrape Website)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request (Scrape Website)": {
      "main": [
        [
          {
            "node": "Code (Extract Emails)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code (Extract Emails)": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "Loop Over Items (Websites)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait (Before Email Process)": {
      "main": [
        [
          {
            "node": "Filter (Has Emails)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter (Has Emails)": {
      "main": [
        [
          {
            "node": "Split Out (Emails)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out (Emails)": {
      "main": [
        [
          {
            "node": "Remove Duplicates (Emails)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Remove Duplicates (Emails)": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit (Websites per search)": {
      "main": [
        [
          {
            "node": "Loop Over Items (Websites)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Wait2",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "HTTP Request (Google Maps Search)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait1": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait2": {
      "main": [
        [
          {
            "node": "Filter (Websites)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Define URL List": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f79f4abb-ade9-4bbd-9f36-8cd13d278ca3",
  "meta": {
    "instanceId": "7d6a5bcda733904ebcb54fc0e889f6735550f40f670703e17874c0872e05a9cb"
  },
  "id": "YRcTCu1THNRqo5gA",
  "tags": []
}
5/5 - (6 votes)

About

Leave a Comment

Your email address will not be published. Required fields are marked *