🔓 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, leads scored and ready

Lisa Granqvist Partner Workflow Automation Expert

Manual Google Maps research is a productivity trap. You open 30 tabs, copy phone numbers by hand, guess who’s worth contacting, then still stare at a blank page when it’s time to write outreach.

This Google Maps leads automation hits BDRs first, honestly. But agency owners prospecting local niches and founders testing a new market feel the same drag. You end up spending about 20 minutes per lead and still miss the best prospects.

This workflow turns a Maps search into a scored lead list inside Google Sheets, plus ready-to-send outreach drafts. You’ll learn what it does, what you need, and how to make it fit your niche.

How This Automation Works

Here’s the complete workflow you’ll be setting up:

n8n Workflow Template: Google Maps to Google Sheets, leads scored and ready

Why This Matters: Google Maps Research Is Slow (and Inconsistent)

Lead research on Google Maps sounds simple until you do it at scale. One person pulls “restaurants in Miami,” another tries “Miami restaurants,” and suddenly your list has duplicates, missing websites, and half-filled rows. Then there’s the real time sink: opening each listing, scanning reviews, checking if the business looks modern, and trying to decide if they’re a fit. By lead 15, your brain is cooked and your standards slip. You do busywork instead of selling, and the best prospects get the same generic email as everyone else.

It adds up fast. Here’s where it breaks down.

  • Copy-pasting business details into a sheet takes about 20 minutes per lead, and it gets worse when you’re chasing phone numbers and websites.
  • Two people can research the same niche and still produce totally different “quality” lists because the criteria live in someone’s head.
  • Even when the list is decent, writing first-touch outreach takes another chunk of time because you have to invent a hook from scratch.
  • Paying for lead databases can feel unavoidable, yet you’re often spending $300–500 a month for contacts that still need manual validation.

What You’ll Build: Google Maps → Sheets Lead Scoring + Draft Outreach

This workflow starts with a simple search query (like “coffee shops in Austin”). n8n sends that query to the Decodo API to pull Google Maps listings at scale, then normalizes the messy response into clean lead fields such as business name, address, phone, website, rating, and review count. Next, an AI enrichment step using Google Gemini 2.5 Flash reviews each lead and produces structured insights: a value proposition, likely pain points, an outreach hook, and a 1–10 lead score. Finally, everything is written to Google Sheets, and the workflow filters for “hot” leads (by default, score 7+ plus contact validation) and logs a personalized outreach draft to a second sheet for follow-up.

The workflow begins when you run it manually (or on a schedule). It scrapes and parses Google Maps results in batches so you can scale without constant babysitting. After Gemini scoring, only the best prospects get pushed into an outreach-ready view, which keeps your team focused.

What You’re Building

Expected Results

Say you need 100 local leads for a new campaign. Manually, at about 20 minutes per lead, that’s roughly 33 hours of research time (plus more time to write outreach). With this workflow, those same 100 leads can be processed in under an hour, and the best ones (score 7+) already include a tailored outreach message draft. You still review and send, but the “blank page” part basically disappears.

Before You Start

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Decodo Scraper API for Google Maps data extraction.
  • Google Sheets to store leads and outreach drafts.
  • Google Gemini API key (get it from Google AI Studio / Google AI Console).

Skill level: Intermediate. You’ll connect a few accounts, paste API keys, and edit a couple of fields like your search query and sheet names.

Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).

Step by Step

You run the workflow (manual or scheduled). In n8n, a manual start kicks things off, and you can later swap that for a cron schedule if you want fresh leads daily or weekly.

Search parameters are set and sent to Decodo. Your query, country, language, and results limit are assembled, then an HTTP Request node calls the Decodo Maps Scraper to fetch Google Maps listings for that exact input.

Raw results get cleaned up, then processed in batches. A normalization step turns the response into structured lead objects, and “split in batches” keeps processing stable when you’re working through 50–100+ records.

Gemini enriches, scores, and drafts outreach. The AI chain generates consistent fields (value prop, pain points, hook, lead score), then an IF filter selects top prospects and formats a ready-to-send outreach message.

Everything lands in Google Sheets (with error alerts). One sheet becomes your lead database, another logs hot leads and their outreach drafts. If something fails, the error trigger can send a Telegram notification so you don’t find out a week later.

You can easily modify the lead score threshold or the outreach angle based on your niche. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Trigger

Set up the workflow entry point and define the search parameters used for the Google Maps scrape.

  1. Open Manual Execution Start and keep the default manual trigger settings.
  2. In Define Search Inputs, add these assignments: searchQuery = YOUR-QUERY_HERE, targetLanguage = en, country = Country Name, resultsLimit = 5.
  3. Confirm the execution flow: Manual Execution StartDefine Search Inputs.
Tip: Replace YOUR-QUERY_HERE and Country Name with a real search term and location before testing.

Step 2: Connect Google Sheets

Configure the two Google Sheets outputs for lead enrichment and outreach logs.

  1. Open Update Lead Spreadsheet and set Operation to appendOrUpdate.
  2. Select Document = [YOUR_ID] and Sheet = Sheet1 (gid=0).
  3. Verify key column mappings include id = {{ $json.id }} and enrichedAt = {{ $now.toDateTime().format('yyyy-MM-dd HH:mm:ss') }}.
  4. Credential Required: Connect your googleSheetsOAuth2Api credentials.
  5. Repeat for Log Outreach Sheet with Operation = appendOrUpdate, same document/sheet, and mappings like outreachMessage = subject: {{ $json.emailSubject }} {{ $json.emailBody }} .
  6. Credential Required: Connect your googleSheetsOAuth2Api credentials.
⚠️ Common Pitfall: Leaving [YOUR_ID] will cause Google Sheets to fail. Replace it with the real spreadsheet ID in both Google Sheets nodes.

Step 3: Set Up Lead Scraping and Normalization

Configure the HTTP fetch and the parsing logic that converts raw HTML into structured lead records.

  1. In Decodo Maps Fetch, set Method to POST and URL to https://scraper-api.decodo.com/v2/scrape.
  2. Under Body Parameters, set target = google_maps, query = {{ $json.searchQuery }}, page_from = 1, headless = html, google_results_language = {{ $json.targetLanguage }}, geo = {{ $json.country }}, page_to = {{ Math.ceil(parseInt($json.resultsLimit) / 10) }}.
  3. Under Headers, set Accept = application/json and Content-Type = application/json.
  4. Credential Required: Connect your httpHeaderAuth credentials.
  5. In Normalize Lead Payload, keep the JavaScript logic as provided to extract business fields from HTML.
  6. In Chunk Items, keep default batch settings to process leads in batches.
Tip: If your results are empty, confirm the Decodo API key and validate the search query language and geo values.

Step 4: Set Up AI Enrichment

Connect the Gemini model and structured parser to the enrichment chain for lead analysis.

  1. Open Enrich Lead Analysis and keep Prompt Type = define with the provided enrichment prompt.
  2. Confirm the prompt uses expressions like {{ $json.businessName }}, {{ $json.website || 'No website available' }}, and {{ $json.openingHours || 'Not available' }}.
  3. Verify Structured Result Parser is attached as the output parser and retains the JSON schema example.
  4. Gemini Flash Model is connected as the language model for Enrich Lead Analysis — ensure credentials are added to Gemini Flash Model, not the parser.
  5. Credential Required: Connect your googlePalmApi credentials in Gemini Flash Model.
Tip: Keep the JSON-only output requirement in the prompt to avoid parse failures in Structured Result Parser.

Step 5: Configure Lead Qualification and Outreach Logging

Filter high-quality leads, compose outreach drafts, and log the outreach message.

  1. In Assemble Enrichment Output, keep mappings like id = {{ $('Chunk Items').item.json.id }}, leadScore = {{ $json.output.leadScore }}, and scrapedAt = {{ $('Chunk Items').item.json.scrapedAt.toDateTime().format('yyyy-MM-dd HH:mm:ss') }}.
  2. In Qualify Top Prospects, set conditions to leadScore7 and phone or website not empty using {{ $json.phone || $json.website }}.
  3. In Compose Outreach Draft, set emailSubject = Quick question about {{ $json.businessName }} and emailBody to the provided multi-line template.
  4. Set recipientEmail = {{ $json.email || 'MANUAL_LOOKUP_NEEDED' }} to flag missing contact details.
  5. Confirm the loop: Compose Outreach DraftLog Outreach SheetChunk Items to continue batching.
⚠️ Common Pitfall: If MANUAL_LOOKUP_NEEDED appears in recipientEmail, you must enrich emails separately before sending outreach.

Step 6: Add Error Handling

Enable notifications to Telegram when any node fails.

  1. Confirm the error flow: Error Watch TriggerBuild Error AlertDispatch Error Alert.
  2. In Dispatch Error Alert, set Chat ID to [YOUR_ID] and Text to {{ $json.message }}.
  3. Credential Required: Connect your telegramApi credentials.
⚠️ Common Pitfall: Replace [YOUR_ID] with your actual Telegram chat ID or the error alerts will never arrive.

Step 7: Test and Activate Your Workflow

Validate the full pipeline from scraping to enrichment, qualification, and logging.

  1. Click Execute Workflow starting from Manual Execution Start.
  2. Check Update Lead Spreadsheet for new or updated rows with enriched fields like valueProposition and leadScore.
  3. Confirm that only qualified leads reach Compose Outreach Draft and Log Outreach Sheet.
  4. Trigger a test error (e.g., temporary bad API key) and confirm Dispatch Error Alert posts to Telegram.
  5. Once successful, toggle the workflow to Active for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Troubleshooting Tips

  • Google Sheets OAuth credentials can expire or lack access to the target spreadsheet. If rows stop writing, re-check the Google Sheets credential and confirm the spreadsheet is selected in both Sheets nodes.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Gemini prompts that are too ambitious can produce invalid JSON. If the “structured result parser” fails, simplify the prompt and keep the output format strict so the parser can do its job.

Quick Answers

What’s the setup time for this Google Maps leads automation?

About 45 minutes if your APIs and Google Sheet are ready.

Is coding required for this Google Maps lead scoring?

No. You’ll connect credentials, paste keys, and edit a few fields like the search query and results limit.

Is n8n free to use for this Google Maps leads 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 Decodo usage plus Gemini API costs, which are usually a few cents per lead batch depending on your prompt size.

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.

Can I modify this Google Maps leads workflow for different use cases?

Yes, and you should. Most changes happen in “Define Search Inputs” (your query, country, language) and “Qualify Top Prospects” (the score threshold). If you sell a specific service, tweak the prompt in “Enrich Lead Analysis” so Gemini prioritizes signals you care about, like “no website,” “complaints about booking,” or “mentions of cash-only.” You can also swap the final destination by replacing the Google Sheets nodes with a CRM node later.

Why is my Google Sheets connection failing in this workflow?

Usually it’s an expired OAuth session or the sheet changed. Re-authenticate the Google Sheets credential in n8n, then open the two Sheets nodes and re-select the spreadsheet and worksheet to make sure the node isn’t pointing at an old tab. Also confirm your sheet has the expected headers, especially the matching “id” column if you’re using append-or-update behavior.

What volume can this Google Maps leads workflow process?

Most teams run 100 leads in under an hour, and 500+ daily is realistic if you batch sensibly and your APIs can keep up.

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

For this exact use case, yes, most of the time. Scraping and enrichment flows usually need batching, retries, structured parsing, and conditional routing, and n8n handles that kind of “logic-heavy” workflow without making you pay per tiny step. You also have the option to self-host, which matters when you start running daily prospecting at higher volume. Zapier or Make can still be fine for lightweight lead capture, but they’re not built for normalizing messy scrape responses and managing AI outputs at scale. Talk to an automation expert if you want help picking the simplest route.

Once this is running, prospecting stops being a research project and becomes a repeatable system. Your sheet stays fresh, your best leads float to the top, and your follow-up happens while competitors are still copy-pasting.

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