Google Maps Lead Extractor Workflow
Discover the power of our n8n Google Maps Lead Scraper workflow! This ready-to-use template extracts valuable business details directly from Google Maps, converting them into high-quality leads without the hassle of manual work. Ideal for agencies, freelancers, and marketing professionals, it gathers essential data like names, phone numbers, emails, and ratings. Fully customisable, you can easily send leads to Google Sheets, Airtable, or any n8n-supported app. Import the JSON, add your credentials, and start automating your outreach in minutes—saving you time and boosting your business growth!
INTERMEDIATE
FEATURED
IN • INDIA
DATABASE
MARKETING
WORKFLOW VISUALIZATION
USE CASES
- •1. Automatically scrape Google Maps to build targeted business lead lists.
- •2. Extract company names, websites, phone numbers, and emails for outreach.
- •3. Generate local business leads for marketing, sales, and agency campaigns.
- •4. Automate Google Maps data collection and send leads directly to Google Sheets.
- •5. Create fast, accurate lead pipelines for cold email, ads, and prospecting.
SETUP STEPS
- 1Go to your n8n editor (cloud or self-hosted).
- 2Select “Import from File”.
- 3Add Your Credentials.
- 4Turn On the Trigger.
WORKFLOW JSON
{
"id": "InrEuSTlbrmrs9hk",
"meta": {
"instanceId": "302628542159b508d50ccef0bfd3d579f5974ddfbbb449bcbefb21e368a79661",
"templateCredsSetupCompleted": true
},
"name": "Lead scrapper",
"tags": [],
"nodes": [
{
"id": "45619775-60ad-470c-8d6b-b346a1635165",
"name": "On form submission",
"type": "n8n-nodes-base.formTrigger",
"position": [
-2864,
368
],
"webhookId": "2ef0c938-f117-4f6c-840a-b2dc35a615b3",
"parameters": {
"options": {
"buttonLabel": "GO 🚀",
"appendAttribution": false
},
"formTitle": "Lead Machine",
"formFields": {
"values": [
{
"fieldLabel": "Provide the Info Below",
"requiredField": true
}
]
}
},
"typeVersion": 2.2
},
{
"id": "a8b94ef6-6632-4019-b40a-1e4a8485bb07",
"name": "Information Extractor",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
-1824,
336
],
"parameters": {
"text": "=Website: {{ $json.website }}",
"options": {},
"attributes": {
"attributes": [
{
"name": "Email Address",
"required": true,
"description": "=find out the best only one email address from the website after scraping the website. The mail address have to be in ideal format."
}
]
}
},
"typeVersion": 1.2
},
{
"id": "4ef3667c-6010-4707-a781-a13fac27b829",
"name": "Filter",
"type": "n8n-nodes-base.filter",
"position": [
-2224,
368
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "0906e21a-0958-433e-b400-8694915ef3c9",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.website }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "034334b1-b074-467d-a30b-495a87aa1a0b",
"name": "Append row in sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
-1120,
320
],
"parameters": {
"columns": {
"value": {
"Address": "={{ $('Filter').item.json.address }}",
"Website": "={{ $('Filter').item.json.website }}",
"Category": "={{ $('Filter').item.json.categoryName }}",
"Company Name": "={{ $('Filter').item.json.title }}",
"Phone Number": "={{ $('Filter').item.json.phoneUnformatted }}",
"Email address": "={{ $json.output['Email Address'] }}"
},
"schema": [
{
"id": "Company Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Company Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Category",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Category",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Website",
"type": "string",
"display": true,
"required": false,
"displayName": "Website",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone Number",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Phone Number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email address",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Email address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Address",
"type": "string",
"display": true,
"required": false,
"displayName": "Address",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1i0xaAClcyQoSEXr7EGX8TBquLy_AaxJPfAyNHAVUCxw/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1i0xaAClcyQoSEXr7EGX8TBquLy_AaxJPfAyNHAVUCxw",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1i0xaAClcyQoSEXr7EGX8TBquLy_AaxJPfAyNHAVUCxw/edit?usp=drivesdk",
"cachedResultName": "Google map data"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "6FBaFLLKrYKWQJIN",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "c68f5a45-4c2f-4302-b154-0842f102e0bb",
"name": "No Operation, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
-1120,
496
],
"parameters": {},
"typeVersion": 1
},
{
"id": "a87f200a-79cd-46b0-80b5-093e13bf8fe4",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2000,
144
],
"parameters": {
"color": 6,
"width": 1088,
"height": 592,
"content": "# Scraping the website, phone number & Email Address"
},
"typeVersion": 1
},
{
"id": "3ae4f1dc-b36d-4fe3-b13a-0d2ece034754",
"name": "HTTP Request1",
"type": "n8n-nodes-base.httpRequest",
"position": [
-2400,
368
],
"parameters": {
"url": "=https://api.apify.com/v2/acts/compass~crawler-google-places/run-sync-get-dataset-items?token=apify_api_aT8RtHdhwXOVXnsRMW62MtnsfMFZjm045Tas",
"options": {},
"jsonBody": "={\n \"includeWebResults\": false,\n \"language\": \"en\",\n \"locationQuery\": \"{{ $json.output.location }}\",\n \"maxCrawledPlacesPerSearch\": {{ $json.output.number_of_leads }},\n \"maxImages\": 0,\n \"maximumLeadsEnrichmentRecords\": 0,\n \"scrapeContacts\": false,\n \"scrapeDirectories\": false,\n \"scrapeImageAuthors\": false,\n \"scrapePlaceDetailPage\": false,\n \"scrapeReviewsPersonalData\": true,\n \"scrapeTableReservationProvider\": false,\n \"searchStringsArray\": [\n \"{{ $json.output.business_type }}\"\n ],\n \"skipClosedPlaces\": false\n}",
"sendBody": true,
"specifyBody": "json"
},
"typeVersion": 4.2
},
{
"id": "3417636a-4070-44f6-80dd-53f044cc6eac",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2912,
256
],
"parameters": {
"color": 7,
"width": 880,
"height": 336,
"content": "# Pulling Businesses from Google maps\n"
},
"typeVersion": 1
},
{
"id": "ad700808-1e9a-4c9e-9021-e21189671685",
"name": "If1",
"type": "n8n-nodes-base.if",
"position": [
-1408,
336
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "0601f2d2-2522-471e-9e11-29498a47e19a",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "=",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "134faf1f-9413-4d95-8ac8-80530121d807",
"name": "OpenRouter Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
-1840,
528
],
"parameters": {
"model": "z-ai/glm-4.5-air:free",
"options": {}
},
"credentials": {
"openRouterApi": {
"id": "8oPQOzd7oYH6ZHhu",
"name": "OpenRouter account"
}
},
"typeVersion": 1
},
{
"id": "32b3b9e3-cf6d-4532-84f7-5ef9ca09ab8b",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-2688,
368
],
"parameters": {
"text": "={{ $json['Provide the Info Below'] }}",
"options": {
"systemMessage": "=You are an AI that extracts structured information from user requests about generating leads.\nFor every user message, you MUST analyze the text and return only a JSON object with the following fields:\n\nbusiness_type → The type of business requested (examples: “real estate agents”, “lawyers”, “roofing companies”).\n\nnumber_of_leads → The number of leads requested (example: 50, 20, 100).\n\nlocation → The city, state, region, or country mentioned.\n\nRules:\n\nIf multiple numbers appear, choose the one referring to leads.\n\nIf the user does not specify a location, set \"location\": null.\n\nIf the business type is unclear, set \"business_type\": null.\n\nAlways output clean, valid JSON and nothing else.\n\nDo NOT generate leads — only extract information.\n\n\nInput example :\nPull a list of dubai realestate firm with more than 50 employees\n\noutput:\n{\n \"business_type\": \"real estate agents\",\n \"number_of_leads\": 50,\n \"location\": \"New York\"\n}\n"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "edfd6c57-37a1-4d63-91f1-77d34d71b408",
"name": "OpenRouter Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
-2720,
544
],
"parameters": {
"model": "z-ai/glm-4.5-air:free",
"options": {}
},
"credentials": {
"openRouterApi": {
"id": "8oPQOzd7oYH6ZHhu",
"name": "OpenRouter account"
}
},
"typeVersion": 1
},
{
"id": "423d01a6-fe2c-4be3-b9a4-d337ac079930",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-2528,
560
],
"parameters": {
"jsonSchemaExample": "{\n \"business_type\": \"real estate agents\",\n \"number_of_leads\": 50,\n \"location\": \"New York\"\n}\n"
},
"typeVersion": 1.3
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "21cd9203-064d-44b7-b534-bd67b9db3d0e",
"connections": {
"If1": {
"main": [
[
{
"node": "Append row in sheet",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Filter": {
"main": [
[
{
"node": "Information Extractor",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "HTTP Request1",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request1": {
"main": [
[
{
"node": "Filter",
"type": "main",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Append row in sheet": {
"main": [
[]
]
},
"Information Extractor": {
"main": [
[
{
"node": "If1",
"type": "main",
"index": 0
}
]
]
},
"OpenRouter Chat Model": {
"ai_languageModel": [
[
{
"node": "Information Extractor",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenRouter Chat Model1": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
}
}
}STATISTICS
Views
15Downloads
0Nodes17
CREDENTIALS
- Google Sheets
- Gmail
- OpenAI
- Slack
