Skip to main content
Lifetime license included with every purchase
n8n workflowslead generationGoogle Mapslocal business

How to Automate Google Maps Lead Generation with n8n

Automate n8n Google Maps lead generation: pull 60 local business leads per search, score with GPT-4o-mini, and convert hot prospects before competitors respond.

Nn8n Marketplace Team·September 29, 2026·Updated September 29, 2026·8 min read

Most local prospecting pipelines follow the same ritual: open a browser tab, search Google Maps for "dentists Austin TX", manually copy business names into a spreadsheet, click to page two, find duplicates from last month. Forty-five minutes later, the sheet has 30 rows and it's still not enriched.

n8n Google Maps lead generation replaces that manual loop with a webhook call. A Code node hits the official Google Places Text Search API, paginates through all result pages, deduplicates by Place ID, and writes name, address, phone, website, rating, and review count to Google Sheets in one run. No browser. No duplicates. No scraper that breaks when Google changes its layout.

This post covers both halves of the pipeline: sourcing local business leads at scale, and converting inbound leads before a competitor's phone rings.

What You Can Automate with n8n and Google Maps

  • Pull up to 60 verified local business leads per search using the official Google Places API (ToS-compliant, returns structured JSON)
  • Paginate through all 3 result pages in a single Code node execution with zero manual clicking
  • Deduplicate records by Place ID so running the same search twice refreshes existing rows rather than creating doubles
  • Score every inbound lead 1-10 with GPT-4o-mini in real time based on service type, contact quality, and message intent
  • Fire a personalized SMS via Twilio to qualified leads within 90 seconds of form submission
  • Alert the business owner on Slack the moment a high-score lead arrives so nothing falls through
  • Log every lead, score, and outreach action to Google Sheets for a full conversion audit trail
Why the Places API beats scraping

The Google Places API returns structured JSON with consistent field names across every result. HTML scrapers break whenever Google updates its search results layout, which happens without notice. The Places API has a versioned spec and a dedicated deprecation timeline. One is reliable in production; the other isn't.

The n8n Google Maps Lead Generation Pipeline

Both the sourcing and conversion workflows follow the same shape:

Webhook (niche + city)
  → Code node (Google Places Text Search API — up to 3 pages)
  → IF node (results found?)
  → Google Sheets (appendOrUpdate by Place ID)
  → Code node (aggregate batch summary)
  → Telegram (batch count notification)

The conversion funnel connects to your booking form via a second webhook:

Webhook (inbound form submission)
  → @n8n/n8n-nodes-langchain.openAi (score lead 1–10)
  → Code node (parse score from output path)
  → IF node (hot vs nurture)
  → HTTP Request (Twilio SMS) + Email Send (booking link)
  → HTTP Request (Slack alert) + Google Sheets (log result)

1. Collect

A Webhook node receives a POST with the target niche and city: {"niche": "dentists", "city": "Austin TX"}. Triggers can come from Zapier, a Google Sheets Apps Script, a Slack slash command, or any HTTP client. The workflow doesn't care where the call originates.

For the conversion side, your landing page form sends its submit data to the second webhook URL.

2. Search and Paginate

A Code node (jsCode) calls the Google Places Text Search API directly via JavaScript's native fetch(). There's no built-in n8n node for Places API, so the HTTP call and pagination loop both live inside the Code node. It runs up to 3 pages per execution, collecting place name, address, phone, website, rating, and review count.

One critical detail: the current Places API (New) returns places[].id as the Place ID field, not places[].place_id. Tutorials written for the legacy API will have the wrong key. The request returns 200, but the dedup check silently fails and you'll get duplicates on every search. Don't copy from a tutorial without checking the API version.

3. Deduplicate and Save

The Google Sheets node uses appendOrUpdate with the Place ID as the match column. If the same business shows up in next week's search, the existing row gets refreshed rather than a duplicate row added. Set the lookup column to your Place ID field and the dedup happens automatically.

4. Score and Route

On the inbound side, an @n8n/n8n-nodes-langchain.openAi v2.1 node (model: GPT-4o-mini, temperature 0.2) scores each lead. The score arrives at $json.output[0].content[0].text as a plain-text integer. Pull it with a Code node and parse it. Then an IF node branches: hot leads (at or above your threshold) go to the fast track; lower scores go to a 24-hour nurture email.

Start your threshold at 6, not 8. Setting it too high means you'll miss solid prospects who submitted a vague form message. The Google Sheets log will show you the score distribution after a week, and you can tune from there.

5. Act

Hot leads get three things in parallel: an HTTP Request to Twilio's Messages API with your booking link in the SMS body, an Email Send node with a personalised message referencing the lead's specific service request, and a Slack alert via another HTTP Request to your incoming webhook URL. Everything logs to Google Sheets. Cold leads get a nurture email and their own log row.

The response window

Local service data consistently shows the first vendor to make contact wins the job at a disproportionate rate. 90 seconds between form submission and Twilio SMS is achievable with this setup. Two hours is typical without automation. That gap is where most conversions get lost.

Implementation Patterns

Pattern 1: Niche sweep. Send a POST to the sourcing webhook with {"niche": "plumbers", "city": "Denver CO"} and collect 60 verified plumber businesses with phone numbers and websites in one run. Repeat for each city in your market.

Pattern 2: Speed-to-lead conversion. Point your Webflow, Typeform, or HTML form at the inbound webhook. The AI scoring and Twilio SMS path runs end-to-end in under 15 seconds with typical OpenAI response times. That's not instantaneous, but it's faster than any human-in-the-loop process.

Pattern 3: Scheduled multi-city sweep. Keep a Google Sheets tab with [niche, city] pairs. A Schedule trigger fires the sourcing webhook for each row every Sunday night. By Monday morning the prospecting sheet has fresh leads without anyone logging in over the weekend.

n8n Nodes You'll Use Most

NodePurpose
WebhookReceives niche + city params or inbound form data
Code (jsCode)Calls Google Places API with pagination; parses AI score
IFBranches on results found vs none; hot lead vs nurture
Google SheetsUpserts leads by Place ID; logs every outreach event
@n8n/n8n-nodes-langchain.openAi v2.1Scores inbound leads 1-10 with GPT-4o-mini
HTTP RequestTwilio SMS API; Slack incoming webhook
Email SendHot-lead booking email; nurture follow-up
TelegramBatch summary after each lead search run
SetConfig node holding API keys, sheet IDs, score threshold

Getting Started

  1. Enable the Places API (New) in your Google Cloud Console — not the legacy Places API. The two have different response schemas and the dedup logic assumes the newer format.
  2. Add your Places API key to the workflow's Config Set node alongside your Google Sheets document ID.
  3. Connect your Google Sheets credential with OAuth2 scope https://www.googleapis.com/auth/spreadsheets.
  4. Deploy the LocalLeads: Google Maps Business Lead Finder template, which ships with the pagination Code node, Place ID dedup, and Telegram notification already wired.
  5. Send a test POST to the webhook with your first niche and city. Confirm rows appear in your sheet and check the Telegram message for the batch count.
  6. Connect your booking form to the Local Lead Funnel Accelerator to handle AI scoring, Twilio SMS, and nurture routing.
  7. Monitor the Sheets log for a week, look at the score distribution, and adjust the IF node threshold based on which score bands are actually converting.
Skip the build

The LocalLeads: Google Maps Business Lead Finder ships this pipeline end-to-end: a Code node that paginates the Google Places Text Search API up to 60 results, deduplicates records by Place ID using Google Sheets appendOrUpdate, and posts a Telegram batch summary after every run. It's part of The Complete n8n Templates Bundle, a one-time lifetime license to the whole catalog if you run more than one of these automations.

Get the LocalLeads Template →

For the conversion funnel, the companion Local Lead Funnel Accelerator handles inbound scoring, Twilio SMS, and nurture routing in a separate workflow that pairs naturally with the sourcing pipeline above.

If you're building a broader outreach engine, the n8n lead generation automation post covers CRM enrichment and cold email sequencing, and n8n outreach automation goes deeper on reply detection and follow-up branching patterns that slot in after the initial contact.

Browse Lead Gen Templates →
FAQ

Common questions

Can n8n pull leads directly from Google Maps?
Yes. n8n's Code node calls the Google Places Text Search API via JavaScript fetch(), paginates through up to 3 result pages (60 leads per search), and writes deduplicated records to Google Sheets using the Place ID as the unique key.
How does n8n score inbound leads automatically?
The @n8n/n8n-nodes-langchain.openAi v2.1 node passes the lead's form data to GPT-4o-mini, which returns a score from 1 to 10. A Code node parses the score from $json.output[0].content[0].text and an IF node routes hot leads to immediate SMS/email outreach while low-score leads enter a nurture track.
What APIs does the n8n Google Maps lead generation workflow need?
The sourcing workflow requires a Google Places API key (enable the Places API (New) in Google Cloud Console) and Google Sheets OAuth2. The conversion workflow adds OpenAI, Twilio, and an SMTP or Gmail credential for emails. Credentials live in a single Config Set node so you update them in one place.
Stop reading. Start running.

Get the workflow templates this guide is built on

Import-ready n8n JSON, step-by-step setup, and tested end-to-end. One-time payment, own it forever.

Free — $40 value

Get 3 tested n8n templates, free

The full customer package for three real catalog templates — workflow JSON, step-by-step setup guide, credential checklist. Built through the same live-instance release process as everything we sell. Plus new templates and automation guides in your inbox. No spam, unsubscribe anytime.

  • 01Smart To-Do List ManagerPre-built n8n workflow template that automates productivity with OpenAI. Live in about 10 minutes.$14
  • 02Email Follow-Up AutomatorPre-built n8n workflow template that automates crm with OpenAI. Live in about 15 minutes.$12
  • 03Market Trend AnalyzerPre-built n8n workflow template that automates data processing with OpenAI. Live in about 10 minutes.$14