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.
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
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.
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
| Node | Purpose |
|---|---|
| Webhook | Receives niche + city params or inbound form data |
Code (jsCode) | Calls Google Places API with pagination; parses AI score |
| IF | Branches on results found vs none; hot lead vs nurture |
| Google Sheets | Upserts leads by Place ID; logs every outreach event |
@n8n/n8n-nodes-langchain.openAi v2.1 | Scores inbound leads 1-10 with GPT-4o-mini |
| HTTP Request | Twilio SMS API; Slack incoming webhook |
| Email Send | Hot-lead booking email; nurture follow-up |
| Telegram | Batch summary after each lead search run |
| Set | Config node holding API keys, sheet IDs, score threshold |
Getting Started
- 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.
- Add your Places API key to the workflow's Config Set node alongside your Google Sheets document ID.
- Connect your Google Sheets credential with OAuth2 scope
https://www.googleapis.com/auth/spreadsheets. - Deploy the LocalLeads: Google Maps Business Lead Finder template, which ships with the pagination Code node, Place ID dedup, and Telegram notification already wired.
- 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.
- Connect your booking form to the Local Lead Funnel Accelerator to handle AI scoring, Twilio SMS, and nurture routing.
- 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.
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.
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 →Common questions
Can n8n pull leads directly from Google Maps?
How does n8n score inbound leads automatically?
What APIs does the n8n Google Maps lead generation workflow need?
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.
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
More automation guides

How to Build n8n Decision Support Automation with AI Frameworks
A founder spends a week circling a pricing decision. Not because the information's missing. It's all there. The hold-up is that there's no process to run it through. The pros and cons live in three ha…

How to Build n8n Employee Wellness Automation with AI Risk Scoring
Two people resign in the same month, both citing burnout. Nothing in the 1:1 notes flagged it. Nothing in their Slack activity looked off. The signals were there, in the throwaway comments, the slippi…

How to Build n8n Approval Workflow Automation That Auto-Approves and Escalates
A finance lead approves the same refunds every morning. Under $100, customer in good standing, clear reason. Approved, approved, approved. The decision was never hard. It just never got automated, so…