AutomationFlowsSlack & Telegram › Zip Code-based Business Lead Generation with Google Maps and Sheets

Zip Code-based Business Lead Generation with Google Maps and Sheets

BySpaGreen Creative @spagreen on n8n.io

This workflow is perfect for anyone who wants to automate lead generation using n8n without paying for expensive scraping tools. It uses simple Google Maps API requests and Google Sheets to pull business data by ZIP code and category, then extracts emails at no extra cost.

Cron / scheduled trigger★★★★★ complexity33 nodesGoogle SheetsTelegramN8N Nodes RapiwaDiscordHTTP Request
Slack & Telegram Trigger: Cron / scheduled Nodes: 33 Complexity: ★★★★★ Added:

This workflow corresponds to n8n.io template #11622 — we link there as the canonical source.

This workflow follows the Discord → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "YiL9vQGmkSeG6Olq",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Automated Google Maps Lead Generation System",
  "tags": [],
  "nodes": [
    {
      "id": "507dc85c-b723-4b05-be87-5f7e20a4266c",
      "name": "Update Status to Success",
      "type": "n8n-nodes-base.googleSheets",
      "onError": "continueErrorOutput",
      "position": [
        3728,
        -80
      ],
      "parameters": {},
      "executeOnce": true,
      "typeVersion": 4.2,
      "alwaysOutputData": true
    },
    {
      "id": "b5e6bc2d-a50a-4b85-999e-9bc90b49501b",
      "name": "Add rows in Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "onError": "continueErrorOutput",
      "position": [
        3312,
        240
      ],
      "parameters": {},
      "typeVersion": 4.2,
      "alwaysOutputData": true
    },
    {
      "id": "97e06f42-050d-4898-bc42-140033b1f06f",
      "name": "Exponential Backoff",
      "type": "n8n-nodes-base.code",
      "position": [
        3520,
        384
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "5d8705b6-f1ac-48bd-be5f-f7a919798b1e",
      "name": "Remove Duplicates",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        3104,
        240
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "4bb95a05-6557-4abb-8da2-64b77b6beed0",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        3728,
        384
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "67e90cf7-a87f-4eed-a37b-a7a49bd30460",
      "name": "Exponential Backoff1",
      "type": "n8n-nodes-base.code",
      "position": [
        3936,
        -64
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "c25ff94f-011e-4246-88bb-d969c99eec94",
      "name": "Wait1",
      "type": "n8n-nodes-base.wait",
      "position": [
        4128,
        -64
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "1a3a55d3-6e22-453d-b88d-4c5b994a431e",
      "name": "Loop Subcats",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1968,
        208
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "35b2779d-5745-4515-9842-058934ce0e30",
      "name": "Schedule",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        512,
        192
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "c2884cbb-2b87-43d6-a7fd-afe4abc689ed",
      "name": "Check maximum retries.",
      "type": "n8n-nodes-base.if",
      "position": [
        4336,
        -64
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "09eb6137-4c14-4935-a580-df4b03efd68e",
      "name": "get subcategory",
      "type": "n8n-nodes-base.set",
      "position": [
        1760,
        208
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "50710916-319a-409e-93e3-4c0b25441c71",
      "name": "Filter subcategori",
      "type": "n8n-nodes-base.filter",
      "position": [
        1568,
        208
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "b888bd3f-1166-4da4-a413-d59eeede1cec",
      "name": "Get Subcategory form sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1360,
        208
      ],
      "parameters": {},
      "executeOnce": true,
      "typeVersion": 4.2
    },
    {
      "id": "c5ca9c40-3537-4693-9002-c296b68b2400",
      "name": "Loop",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1136,
        192
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "890b873f-6fd8-4431-ab3d-465b66d95321",
      "name": "Get All Zip Code",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        720,
        192
      ],
      "parameters": {},
      "executeOnce": true,
      "typeVersion": 4.2
    },
    {
      "id": "35a75787-2383-4b4d-b4d9-048885f5cc6e",
      "name": "Limit",
      "type": "n8n-nodes-base.limit",
      "position": [
        912,
        192
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "ddeefc20-17d9-423e-8da3-44933a0fc492",
      "name": "Send a text message",
      "type": "n8n-nodes-base.telegram",
      "position": [
        4720,
        224
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "6f71af28-d998-4a20-aa89-85ed93da6634",
      "name": "Do nothing",
      "type": "n8n-nodes-base.noOp",
      "position": [
        3728,
        208
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "e7882f43-9b0a-431c-8c73-75f8a104a7d0",
      "name": "Rapiwa",
      "type": "n8n-nodes-rapiwa.rapiwa",
      "position": [
        4720,
        64
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "db6087d7-7272-47d2-a24e-bbc23824bbf1",
      "name": "Send a message",
      "type": "n8n-nodes-base.discord",
      "position": [
        4720,
        384
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "a51b12b1-25d6-4cd9-912a-5b8cd66cba43",
      "name": "Set Place",
      "type": "n8n-nodes-base.set",
      "position": [
        2912,
        240
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "7ccc0596-37d3-44d5-b89e-3fc232800e11",
      "name": "Place",
      "type": "n8n-nodes-base.code",
      "position": [
        2704,
        240
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "18664203-7d59-4f75-b8f0-f7236e52ee28",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        2512,
        224
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "4cd68340-ce43-4c06-bc96-9954933bec0f",
      "name": "Google Map API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2336,
        224
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "bb80ca1e-c624-47b8-866a-6accfe2d1189",
      "name": "Set zip",
      "type": "n8n-nodes-base.set",
      "position": [
        2176,
        224
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "dfda9422-e3b0-43bf-801c-15cf7c697d27",
      "name": "Get Status",
      "type": "n8n-nodes-base.googleSheets",
      "onError": "continueErrorOutput",
      "position": [
        3520,
        64
      ],
      "parameters": {},
      "executeOnce": true,
      "typeVersion": 4.2
    },
    {
      "id": "14e185cd-a84c-4fa5-bf18-7feb1be939e9",
      "name": "Check Max Retries",
      "type": "n8n-nodes-base.if",
      "position": [
        3920,
        384
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "456f4737-6192-40ff-860f-d307478b0024",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        -48
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "26e57562-9e64-4e30-ac7e-fa3c9169ded8",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2144,
        -112
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "eabc445a-4437-4772-987c-a7aba14f90f6",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3296,
        -272
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "d4a7fced-aa50-44b9-bc9f-0380bfe8a3b0",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2256,
        48
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "384ae244-fbe4-43bd-82e5-89e4f2a71c26",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4688,
        -112
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "a5156836-8469-4fb6-8226-a6622eab10f5",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        -128
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "7cdf2f1e-84dd-47c9-bba2-86f3cecc1972",
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Loop Subcats",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Place",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop": {
      "main": [
        [],
        [
          {
            "node": "Get Subcategory form sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "Check Max Retries",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit": {
      "main": [
        [
          {
            "node": "Loop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Place": {
      "main": [
        [
          {
            "node": "Set Place",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait1": {
      "main": [
        [
          {
            "node": "Check maximum retries.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set zip": {
      "main": [
        [
          {
            "node": "Google Map API",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule": {
      "main": [
        [
          {
            "node": "Get All Zip Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Place": {
      "main": [
        [
          {
            "node": "Remove Duplicates",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Do nothing": {
      "main": [
        [
          {
            "node": "Rapiwa",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send a text message",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Status": {
      "main": [
        [
          {
            "node": "Update Status to Success",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Do nothing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Subcats": {
      "main": [
        [
          {
            "node": "Loop",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Set zip",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Map API": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get subcategory": {
      "main": [
        [
          {
            "node": "Loop Subcats",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get All Zip Code": {
      "main": [
        [
          {
            "node": "Limit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Max Retries": {
      "main": [
        [
          {
            "node": "Do nothing",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Add rows in Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Remove Duplicates": {
      "main": [
        [
          {
            "node": "Add rows in Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter subcategori": {
      "main": [
        [
          {
            "node": "get subcategory",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Exponential Backoff": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Exponential Backoff1": {
      "main": [
        [
          {
            "node": "Wait1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check maximum retries.": {
      "main": [
        [
          {
            "node": "Do nothing",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Update Status to Success",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Status to Success": {
      "main": [
        [
          {
            "node": "Loop Subcats",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Exponential Backoff1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add rows in Google Sheets": {
      "main": [
        [
          {
            "node": "Get Status",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Exponential Backoff",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Subcategory form sheet": {
      "main": [
        [
          {
            "node": "Filter subcategori",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow is perfect for anyone who wants to automate lead generation using n8n without paying for expensive scraping tools. It uses simple Google Maps API requests and Google Sheets to pull business data by ZIP code and category, then extracts emails at no extra cost.

Source: https://n8n.io/workflows/11622/ — original creator credit. Request a take-down →

More Slack & Telegram workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Slack & Telegram

This advanced n8n workflow is designed for SEO specialists, digital agency owners, webmasters, and marketing managers who need a comprehensive, automated solution to track and improve their website's

Google Sheets Tool, Telegram Trigger, Telegram +9
Slack & Telegram

This n8n workflow is designed for SEO managers, content creators, and blog administrators who want to automate their blog publishing pipeline. The workflow creates an end-to-end AI-powered system that

Output Parser Autofixing, OpenAI Chat, Webflow Tool +11
Slack & Telegram

This automated n8n workflow monitors real-time cryptocurrency prices using CoinGecko API and sends smart alerts when price conditions are met. It supports multi-coin tracking, dynamic conditions, and

Google Sheets, HTTP Request, Email Send +2
Slack & Telegram

Outreach - plantilla importable. Uses googleSheets, httpRequest. Scheduled trigger; 5 nodes.

Google Sheets, HTTP Request
Slack & Telegram

Get notified when the International Space Station passes over your location - but only when you can actually see it! This workflow combines real-time ISS tracking with weather condition checks to send

HTTP Request, OpenAI Chat, Chain Llm +5