🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Google Maps to Google Sheets, clean outreach emails

Lisa Granqvist Partner Workflow Automation Expert

Building an outreach list sounds simple until you’re 30 tabs deep, copying websites out of Google Maps, hunting for emails, and second-guessing every address you paste into a spreadsheet.

This Google Maps automation hits hardest when you’re responsible for pipeline. A sales lead trying to book more calls feels it. A marketing consultant pitching local businesses feels it too. Recruiters sourcing companies for hard-to-fill roles run into the same grind.

This workflow takes a keyword, pulls business websites from Google Maps, extracts emails from those sites, verifies and dedupes them, then writes a clean list into Google Sheets. You’ll see exactly what it does, what you need, and what to watch out for.

How This Automation Works

See how this solves the problem:

n8n Workflow Template: Google Maps to Google Sheets, clean outreach emails

The Challenge: Turning Google Maps results into a usable email list

Google Maps is great for discovering businesses. It’s terrible for building an outreach list you actually trust. You find a promising company, click through to the website, scroll for a contact page, and end up with either no email or three emails you’re not sure are real. Then you repeat the whole thing for the next listing. After a while, you’re spending more time collecting leads than contacting them, and that’s backwards. The worst part is the cleanup: duplicates, weird “emails” scraped from random text, and rows that look fine until your first bounce wave arrives.

It adds up fast. Here’s where it usually breaks down in real life.

  • You keep re-finding the same businesses because Google Maps results overlap between searches and locations.
  • Copying websites into a sheet invites mistakes, and one missing character can waste your follow-up later.
  • Manual email hunting pushes you toward shortcuts, so the list quality drops right when volume rises.
  • Even if you scrape emails, you still end up deduping and sanity-checking them before you can send anything.

The Fix: Google Maps → email extraction → Google Sheets, automatically

This n8n workflow turns one keyword search into a clean, outreach-ready sheet. You start by entering a keyword or phrase (like “n8n workflow”, “roofing company Austin”, or “boutique hotel Brooklyn”). When you run the workflow, it queries Google Maps, pulls out website URLs from the results, and filters them so only valid sites move forward. Next, it removes repeat websites so you don’t waste time crawling the same domain twice. Then it visits each site, scans the page content for anything that looks like an email address, and validates the email pattern so random text doesn’t slip into your list. Finally, it expands the results into individual rows, removes duplicate emails, and appends the verified addresses into Google Sheets so you have one place to work from.

The workflow begins with a manual run after you set the search phrase. It then performs two loops: one to crawl each unique website and another to validate and collect the emails found. At the end, Google Sheets becomes your “ready list” that’s already deduped and far cleaner than a copy-paste spreadsheet.

What Changes: Before vs. After

Real-World Impact

Say you want a list of 100 local businesses for a new campaign. Manually, you might spend about 3 minutes per business to open the listing, grab the website, find an email, and paste it into Google Sheets, which is roughly 5 hours of focused work (and honestly, it’s rarely focused). With this workflow, you set the keyword in n8n (about 2 minutes), run it, and let the site-crawling loops do the heavy lifting for a few minutes. You still review the final sheet, but it’s review work, not tab-juggling.

Requirements

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets to store the final lead list.
  • Google Cloud credentials to allow n8n to update Sheets.
  • Access to Google Maps (the workflow queries Maps via HTTP).

Skill level: Intermediate. You won’t write code, but you will connect Google credentials and may tweak one or two request settings.

Need help implementing this? Talk to an automation expert (free 15-minute consultation).

The Workflow Flow

You define the search phrase. The workflow starts when you run it manually and provide the keyword in the “Set Keyword / Phrase” step, so your pull stays focused on one niche or intent.

Google Maps gets queried and websites are extracted. An HTTP request pulls the Google Maps results page, then a parsing step extracts domain URLs and filters them down to valid website links (not junk or empty fields).

Each website is crawled for emails, in batches. The workflow loops over unique domains, fetches site content, and collects any strings that look like emails. A second loop validates email patterns so the final output is cleaner.

Verified emails are deduped and saved. The workflow expands the email list into individual items, removes repeats, then appends the unique results into Google Sheets for outreach and tracking.

You can easily modify the keyword logic to include a location, or adjust the batching to crawl more sites per run based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Trigger

Set up the manual trigger and define the initial search phrase that kicks off the workflow.

  1. Add and open Manual Start Trigger; no parameters are required for this node.
  2. Open Define Search Phrase and set the assignment keyword to n8n workflow.
  3. Confirm Manual Start Trigger connects to Define Search Phrase as the first step in the flow.
Tip: Update keyword in Define Search Phrase to target a specific niche (e.g., dentists in Austin).

Step 2: Build the Maps Search and URL Extraction Chain

Configure the Maps search request and extract domain URLs to seed the site crawl.

  1. Open Maps Search Request and set URL to =https://www.google.com/maps/search/{{ $json.keyword }}.
  2. Open Extract Domain URLs and confirm the JavaScript Code matches the workflow: const urls = $input.first().json.data.match(/https?:\/\/[^\/]+/g); return urls.map(url => ({json: {url: url}}));.
  3. Open Filter Valid Sites and set the condition to leftValue ={{ $json.url }} and rightValue (google|gstatic|ggpht|schema|example) using the notRegex operator.
  4. Verify the sequence follows Define Search PhraseMaps Search RequestExtract Domain URLsFilter Valid Sites.
⚠️ Common Pitfall: If Filter Valid Sites is too strict, you may filter out real domains. Adjust the regex if your results are empty.

Step 3: Configure Site Crawling and Email Extraction

Set up batching, fetch site content, and extract email patterns from the HTML.

  1. Open Remove Site Repeats and set compare to selectedFields with fieldsToCompare set to url.
  2. Open Batch Site Loop; keep default batch settings and confirm it connects to both Batch Email Loop and Fetch Site Content in sequence.
  3. Open Fetch Site Content and set URL to ={{ $json.url }}.
  4. Open Validate Email Pattern and confirm the email-matching JavaScript Code is unchanged to avoid false positives.
  5. Confirm the flow loops: Fetch Site ContentBatch Site Loop, and Validate Email PatternBatch Email Loop.

Step 4: Aggregate, Deduplicate, and Prepare Emails

Aggregate emails from each site and clean duplicates before writing to the sheet.

  1. Open Group Email Results and ensure mergeLists is enabled and fieldToAggregate includes emails.
  2. Open Expand Email List and set fieldToSplitOut to emails.
  3. Open Remove Email Repeats and set compare to selectedFields with fieldsToCompare set to emails.
  4. Confirm the sequence follows Batch Email LoopGroup Email ResultsExpand Email ListRemove Email Repeats.

Step 5: Configure Output to Google Sheets

Append cleaned emails and the search keyword into your Google Sheet.

  1. Open Append to Sheets and set operation to append.
  2. Set documentId to your spreadsheet ID and sheetName to the target tab (e.g., gid=0 with name Emails).
  3. Map the columns: Emails={{ $json.emails }} and Keyword={{ $('Define Search Phrase').first().json.keyword }}.
  4. Credential Required: Connect your googleSheetsOAuth2Api credentials.

Step 6: Test and Activate Your Workflow

Run a manual test to validate data extraction and confirm rows are appended to your sheet.

  1. Click Execute Workflow to run Manual Start Trigger and observe each node’s output.
  2. Confirm Append to Sheets adds rows with Emails and the Keyword from Define Search Phrase.
  3. If results are empty, inspect outputs from Maps Search Request and Extract Domain URLs for valid URLs.
  4. Toggle the workflow to Active when you are ready for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Watch Out For

  • Google Sheets credentials can expire or lack the right spreadsheet permissions. If rows stop appending, check the credential status in n8n and confirm the target Sheet is shared correctly.
  • If you’re using Wait-style timing (or your target sites respond slowly), processing times vary. Bump up batch sizes carefully, because too much parallel crawling can cause empty responses and downstream validation failures.
  • Some websites hide emails behind forms or load content dynamically. In those cases, the HTTP fetch may return a page with no visible email text, so you’ll want to adjust which pages you crawl (contact pages, footer routes) or enrich the workflow later.

Common Questions

How quickly can I implement this Google Maps automation automation?

About 30 minutes if your Google Sheets access is already set up.

Can non-technical teams implement this Google Maps automation automation?

Yes, but someone needs to connect Google credentials once. After that, running it is basically “set keyword, click execute, review the sheet.”

Is n8n free to use for this Google Maps automation workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in normal infrastructure costs (like a small VPS) if you self-host.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

How do I adapt this Google Maps automation solution to my specific challenges?

Start with the “Define Search Phrase” step and tailor the keyword to include a niche plus a location. If you want deeper scraping, adjust the “Fetch Site Content” request to target contact or about pages, then keep the “Validate Email Pattern” logic as-is. Common tweaks include changing batch sizes for speed, filtering out generic emails (like info@), and adding extra columns in Google Sheets for status and notes.

Why is my Google Sheets connection failing in this workflow?

Usually it’s expired or mismatched OAuth credentials in Google Cloud. Reconnect the Google Sheets credential in n8n, then confirm the spreadsheet ID and sheet/tab name still match what the “Append to Sheets” step expects. If it only fails sometimes, you may also be hitting Google API limits during bigger runs.

What’s the capacity of this Google Maps automation solution?

On a typical small VPS, teams often crawl a few hundred sites per run before they need to tune batching and timeouts.

Is this Google Maps automation automation better than using Zapier or Make?

For this use case, n8n is usually the better fit because you’re doing multi-step looping (sites, then emails) and data cleanup in one flow. Zapier and Make can do parts of it, but the moment you add batching, validation, and dedupe, it gets awkward and can get expensive fast. n8n also gives you more control over HTTP requests, which matters when you’re pulling and parsing content from websites. If you already live in Zapier and only need a tiny list occasionally, it may be “good enough.” Talk to an automation expert if you want a recommendation for your volume and outreach process.

Once this is in place, lead collection stops being the work and becomes the input. The workflow handles the repetitive parts so you can spend your time on outreach that actually starts conversations.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal