KI-gestütztes Abrufen von Google Maps-Geschäftsdaten und Export in Tabellen
Dies ist ein Lead Generation, AI Summarization-Bereich Automatisierungsworkflow mit 25 Nodes. Hauptsächlich werden If, Code, Wait, Merge, Filter und andere Nodes verwendet. KI-basierte Extraktion von Geschäftsdaten aus Google Maps mit Datenanreicherung und Export in Tabellen
- •Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
- •Google Sheets API-Anmeldedaten
Verwendete Nodes (25)
Kategorie
{
"meta": {},
"nodes": [
{
"id": "79df5316-c210-478d-a4de-35b5d31924ee",
"name": "Doppelte URLs entfernen",
"type": "n8n-nodes-base.removeDuplicates",
"position": [
2000,
980
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "985ac7e3-b501-4079-a043-780677c94b52",
"name": "Über Abfragen iterieren",
"type": "n8n-nodes-base.splitInBatches",
"position": [
1500,
580
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "3a478935-781b-4fb1-bdc7-fcf8be1334bc",
"name": "Search Google Maps with query",
"type": "n8n-nodes-base.httpRequest",
"position": [
1280,
980
],
"parameters": {
"url": "=https://www.google.com/maps/search/{{ $json.query }}",
"options": {
"allowUnauthorizedCerts": false
}
},
"executeOnce": false,
"typeVersion": 4.2,
"alwaysOutputData": false
},
{
"id": "477e7d55-b7d6-4b20-ac44-dd1f443e270a",
"name": "URLs aus Ergebnissen scrapen",
"type": "n8n-nodes-base.code",
"position": [
1480,
980
],
"parameters": {
"jsCode": "const data = $input.first().json.data\n\nconst regex = /https?:\\/\\/[^\\/]+/g\n\nconst urls = data.match(regex)\n\nreturn urls.map(url => ({json: {url: url}}))"
},
"typeVersion": 2
},
{
"id": "a5b67e45-a3f6-41d2-aa58-c26a441c41b2",
"name": "Irrelevante URLs filtern",
"type": "n8n-nodes-base.filter",
"position": [
1680,
980
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "041797f2-2fe2-41dc-902a-d34050b9b304",
"operator": {
"type": "string",
"operation": "notRegex"
},
"leftValue": "={{ $json.url }}",
"rightValue": "=(google|gstatic|ggpht|schema\\.org|example\\.com|sentry-next\\.wixpress\\.com|imli\\.com|sentry\\.wixpress\\.com|ingest\\.sentry\\.io)"
},
{
"id": "eb499a7e-17bc-453c-be08-a47286f726dd",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "12f662a8-c55f-409a-b381-f37ab6dd3794",
"name": "Über URLs iterieren",
"type": "n8n-nodes-base.splitInBatches",
"onError": "continueErrorOutput",
"position": [
2640,
980
],
"parameters": {
"options": {
"reset": false
}
},
"typeVersion": 3
},
{
"id": "93437e8b-4f8d-40a1-9585-cab1b556164a",
"name": "Scraper-Workflow starten",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
800,
980
],
"parameters": {},
"typeVersion": 1
},
{
"id": "dffaf04e-d1d2-4002-9a69-f0904b61fc2d",
"name": "Wartezeit zwischen Ausführungen",
"type": "n8n-nodes-base.wait",
"position": [
2300,
600
],
"webhookId": "40eb11a9-0f7d-4932-993e-0052b69dbf9b",
"parameters": {
"unit": "minutes",
"amount": 20
},
"typeVersion": 1.1
},
{
"id": "18787007-1d11-41b9-89c3-d5f69756eda7",
"name": "Scraper für Abfrage ausführen",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
1800,
600
],
"parameters": {
"mode": "each",
"options": {
"waitForSubWorkflow": false
},
"workflowId": {
"__rl": true,
"mode": "id",
"value": "={{ $workflow.id }}"
}
},
"typeVersion": 1.1
},
{
"id": "9fa06f2a-0e7a-43e1-b997-4b4288a990cd",
"name": "KI-Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
4260,
1360
],
"parameters": {
"text": "={{ $json.prompt }}",
"options": {
"systemMessage": "You are an expert business analyst.\n\nGiven a business website data, generate a JSON object with key business information and a detailed, insightful description that could be used to prepare for outreach or partnership discussions.\n\nFocus the description on:\n\n- What the business does (products/services)\n- Their strengths or market position\n- Technologies or platforms used (if identifiable)\n- Unique value proposition\n- Target customers\n- Any possible gaps, pain points, or areas for improvement\n- Why this business could benefit from external collaboration (e.g., automation, digital transformation, SEO, AI tools)\n\nFormat the output as a single JSON object with these fields:\n\n- business_name\n- website_url\n- email\n- phone_number\n- address\n- city\n- postal_code\n- country\n- latitude\n- longitude\n- category\n- subcategory\n- opening_hours\n- social_media_links (array)\n- about_us\n- services (array)\n- contact_page_url\n- privacy_policy_url\n- terms_conditions_url\n- logo_url\n- languages (array)\n- keywords (array)\n- google_maps_url\n- ai_description_detailed (a detailed paragraph or two with everything above)\n\nOnly output valid JSON.\nif prompt is empty just return empty json data "
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "c191a15f-2457-49c1-976b-90b0caaf3835",
"name": "OpenRouter Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
4260,
1620
],
"parameters": {
"model": "google/gemini-2.5-flash-lite-preview-06-17",
"options": {}
},
"credentials": {
"openRouterApi": {
"id": "tC9q2VizRVbSvlww",
"name": "OpenRouter account"
}
},
"typeVersion": 1
},
{
"id": "20c5612b-8fbf-4eb4-8f95-ca17acc5f0e2",
"name": "Code",
"type": "n8n-nodes-base.code",
"position": [
4680,
960
],
"parameters": {
"jsCode": "const allPromptResults = $input.first().json.data.map(item => item.promptResult).join('\\n');\n\n\nreturn {\n \"prompt\":allPromptResults\n};"
},
"typeVersion": 2
},
{
"id": "53d2251a-f7bb-43b1-8035-c7ac74e0aa62",
"name": "Aggregieren",
"type": "n8n-nodes-base.aggregate",
"position": [
4420,
960
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData"
},
"typeVersion": 1
},
{
"id": "67dfef97-0fc2-4fa8-a7a8-08c491f8785f",
"name": "Zeitplan-Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
1060,
580
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "cb651c6d-eac0-44bc-8d80-c07c5a65ce6a",
"name": "Zeile(n) in Tabelle abrufen",
"type": "n8n-nodes-base.googleSheets",
"position": [
1280,
580
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupColumn": "processed"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1652190371,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1si2IQusnIF-Br8JdXSVd_Z9QvnXrKcieXOkxI0Xz9ks/edit#gid=1652190371",
"cachedResultName": "keywords"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1si2IQusnIF-Br8JdXSVd_Z9QvnXrKcieXOkxI0Xz9ks",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1si2IQusnIF-Br8JdXSVd_Z9QvnXrKcieXOkxI0Xz9ks/edit?usp=drivesdk",
"cachedResultName": "google maps bussiness informations"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "c7TYv7ZcF6y7LGEQ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "423dce21-e06d-4bd2-833b-976b3ce9e231",
"name": "Zeile in Tabelle aktualisieren",
"type": "n8n-nodes-base.googleSheets",
"position": [
2040,
600
],
"parameters": {
"columns": {
"value": {
"query": "={{ $json.query }}",
"processed": "TRUE"
},
"schema": [
{
"id": "query",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "query",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "processed",
"type": "string",
"display": true,
"required": false,
"displayName": "processed",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"query"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1652190371,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1si2IQusnIF-Br8JdXSVd_Z9QvnXrKcieXOkxI0Xz9ks/edit#gid=1652190371",
"cachedResultName": "keywords"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1si2IQusnIF-Br8JdXSVd_Z9QvnXrKcieXOkxI0Xz9ks",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1si2IQusnIF-Br8JdXSVd_Z9QvnXrKcieXOkxI0Xz9ks/edit?usp=drivesdk",
"cachedResultName": "google maps bussiness informations"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "c7TYv7ZcF6y7LGEQ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "a996171f-c358-471d-91ba-b6c9950e7edf",
"name": "Wenn",
"type": "n8n-nodes-base.if",
"position": [
3940,
980
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "7eec5545-99ac-410a-87ec-4e5f79e30202",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.dontExist }}",
"rightValue": ""
},
{
"id": "96fe4cf5-4689-4140-8a75-8bdbc893b363",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "4575083d-5d45-497e-a5d1-5c369f2d7b91",
"name": "Zusammenführen",
"type": "n8n-nodes-base.merge",
"position": [
3660,
980
],
"parameters": {
"mode": "combineBySql",
"query": "SELECT * FROM input1 LEFT JOIN input2 ON 1=1",
"options": {}
},
"typeVersion": 3.2
},
{
"id": "73814b4e-ab19-4a06-b180-a2997e43bdbd",
"name": "convert string to json object",
"type": "n8n-nodes-base.code",
"onError": "continueRegularOutput",
"position": [
4640,
1360
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "\n\nlet raw = $json.output;\n\n// Remove ```json or ``` wrapping if it exists\nraw = raw.replace(/^```json\\s*|\\s*```$/g, '').trim();\n\nlet outputJson;\n\ntry {\n outputJson = JSON.parse(raw);\n} catch (err) {\n outputJson = { error: 'Invalid JSON format in promptResult' };\n}\n\nreturn {\n json: outputJson\n};"
},
"typeVersion": 2
},
{
"id": "54d94ef2-84cf-4568-a9d5-28ec9a818ffd",
"name": "Daten in Google Sheet1 speichern",
"type": "n8n-nodes-base.googleSheets",
"position": [
5060,
1360
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "Business Name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Business Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Website URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Website URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone Number",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Phone Number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Address",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "City",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "City",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Postal Code",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Postal Code",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Country",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Country",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Latitude",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Latitude",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Longitude",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Longitude",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Category",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Category",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Subcategory",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Subcategory",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Opening Hours",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Opening Hours",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Social Media Links",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Social Media Links",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "About Us",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "About Us",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Services",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Services",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contact Page URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Contact Page URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Privacy Policy URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Privacy Policy URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Terms & Conditions URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Terms & Conditions URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Logo URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Logo URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Languages",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Languages",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Keywords",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Keywords",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Google Maps URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Google Maps URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "AI Description",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "AI Description",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1si2IQusnIF-Br8JdXSVd_Z9QvnXrKcieXOkxI0Xz9ks/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1si2IQusnIF-Br8JdXSVd_Z9QvnXrKcieXOkxI0Xz9ks",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1si2IQusnIF-Br8JdXSVd_Z9QvnXrKcieXOkxI0Xz9ks/edit?usp=drivesdk",
"cachedResultName": "google maps bussiness informations"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "c7TYv7ZcF6y7LGEQ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.5
},
{
"id": "40ec6d1f-1c98-4c9f-8499-c5893c3df7b9",
"name": "use APIFY",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
4200,
960
],
"parameters": {
"url": "=https://api.apify.com/v2/acts/mohamedgb00714~firescraper-ai-prompt-website-content-markdown-scraper/run-sync-get-dataset-items?token=apify_api_DUMMY_TOKEN",
"method": "POST",
"options": {},
"jsonBody": "={\n \"enqueue\": true,\n \"getHtml\": false,\n \"getText\": false,\n \"prompt\": \"You are an expert business analyst.\\n\\nGiven a business website URL, generate a JSON object with key business information and a detailed, insightful description that could be used to prepare for outreach or partnership discussions.\\n\\nFocus the description on:\\n\\n- What the business does (products/services)\\n- Their strengths or market position\\n- Technologies or platforms used (if identifiable)\\n- Unique value proposition\\n- Target customers\\n- Any possible gaps, pain points, or areas for improvement\\n- Why this business could benefit from external collaboration (e.g., automation, digital transformation, SEO, AI tools)\\n\\nFormat the output as a single JSON object with these fields:\\n\\n- business_name\\n- website_url\\n- email\\n- phone_number\\n- address\\n- city\\n- postal_code\\n- country\\n- latitude\\n- longitude\\n- category\\n- subcategory\\n- opening_hours\\n- social_media_links (array)\\n- about_us\\n- services (array)\\n- contact_page_url\\n- privacy_policy_url\\n- terms_conditions_url\\n- logo_url\\n- languages (array)\\n- keywords (array)\\n- google_maps_url\\n- ai_description_detailed (a detailed paragraph or two with everything above)\\n\\nOnly output valid JSON.\",\n \"screenshot\": false,\n \"startUrls\": [\n {\n \"url\": \"{{$json.url}}\",\n \"method\": \"GET\"\n }\n ]\n}\n",
"sendBody": true,
"specifyBody": "json"
},
"typeVersion": 4.2,
"alwaysOutputData": false
},
{
"id": "e4997964-dc80-4778-9f79-ae4dc9e41284",
"name": "Datensätze abrufen falls vorhanden",
"type": "n8n-nodes-base.googleSheets",
"onError": "continueErrorOutput",
"position": [
2900,
1300
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1si2IQusnIF-Br8JdXSVd_Z9QvnXrKcieXOkxI0Xz9ks/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1si2IQusnIF-Br8JdXSVd_Z9QvnXrKcieXOkxI0Xz9ks",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1si2IQusnIF-Br8JdXSVd_Z9QvnXrKcieXOkxI0Xz9ks/edit?usp=drivesdk",
"cachedResultName": "google maps bussiness informations"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "c7TYv7ZcF6y7LGEQ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6,
"alwaysOutputData": true
},
{
"id": "d2380d4e-20a5-48bb-9d87-3f2c638f2fc7",
"name": "Code1",
"type": "n8n-nodes-base.code",
"position": [
3400,
1280
],
"parameters": {
"jsCode": "let dontExist = true;\n\n// Get reference domain from 'Loop over URLs' node\nconst referenceUrl = $('Loop over URLs').first().json.url;\nconst referenceDomain = referenceUrl.match(/^https?:\\/\\/([^\\/?#]+)(?:[\\/?#]|$)/i)?.[1]?.toLowerCase();\n\nif (!referenceDomain) {\n throw new Error('Invalid reference URL');\n}\n\n// Loop over input items\nfor (const item of $input.all()) {\n const urls = item.json.website_url;\n\n for (const url of urls) {\n const domain = url.match(/^https?:\\/\\/([^\\/?#]+)(?:[\\/?#]|$)/i)?.[1]?.toLowerCase();\n if (!domain) continue;\n\n if (domain === referenceDomain) {\n dontExist = false;\n break;\n }\n }\n\n if (!dontExist) break;\n}\n\n// Return result\nreturn {\n json: {\n dontExist\n }\n};\n"
},
"typeVersion": 2
},
{
"id": "0273b1f4-5912-41fd-9899-3ec0a5a24f6c",
"name": "Aggregate1",
"type": "n8n-nodes-base.aggregate",
"position": [
3160,
1280
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"fieldToAggregate": "website_url"
}
]
}
},
"typeVersion": 1
},
{
"id": "2adf371b-2b7b-4ce9-9666-95a4b892a963",
"name": "Haftnotiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
20,
240
],
"parameters": {
"width": 680,
"height": 2220,
"content": "\n### Overview\n\nThis workflow automates the discovery, extraction, enrichment, and storage of business information from **Google Maps** search queries using AI tools, scrapers, and Google Sheets.\n\nIt is ideal for:\n\n* Lead generation agencies\n* Local business researchers\n* Digital marketing firms\n* Automation & outreach specialists\n\n---\n\n### 🔧 Tools & APIs Used\n\n* **Google Maps Search (via HTTP)**\n* **Custom JavaScript Parsing**\n* **URL Filtering & De-duplication**\n* **Google Sheets (Read/Write)**\n* **APIFY Actor** for business scraping\n* **LangChain AI Agent** (OpenRouter - Gemini 2.5)\n* **n8n Built-in Logic** (Loops, Conditions, Aggregators)\n\n---\n\n### 🧠 Workflow Summary\n\n1. **Trigger**\n The automation starts via schedule (every hour).\n\n2. **Read Queries from Google Sheet**\n Loads unprocessed keywords from a Google Sheet tab named `keywords`.\n\n3. **Loop Through Keywords**\n Each keyword is used to search Google Maps for relevant businesses.\n\n4. **Extract URLs**\n JavaScript parses HTML to find all external website URLs from the search results.\n\n5. **Clean URLs**\n Filters out irrelevant domains (e.g., Google-owned, example.com, etc.), and removes duplicates.\n\n6. **Loop Through URLs**\n For each URL:\n\n * Checks if it already exists in the Google Sheet (to prevent duplication).\n * Calls the **APIFY Actor** to extract full business data.\n * Optionally uses **AI Agent (Gemini)** to provide detailed insight on the business, including:\n\n * Services, About, Market Position, Weaknesses, AI suggestions, etc.\n * Converts the AI result (text) to a structured JSON object.\n\n7. **Save to Google Sheet**\n Adds all extracted and AI-enriched business information to a separate tab (`Sheet1`).\n\n8. **Mark Queries as Processed**\n Updates the original row in `keywords` to avoid reprocessing.\n\n---\n\n### 🗃️ Output Fields Saved\n\nThe following information is saved per business:\n\n* Business Name, Website, Email, Phone\n* Address, City, Postal Code, Country, Coordinates\n* Category, Subcategory, Services\n* About Us, Opening Hours, Social Media Links\n* Legal Links (Privacy, Terms)\n* Logo, Languages, Keywords\n* **AI-Generated Description**\n* Google Maps URL\n\n---\n\n### 📈 Use Cases\n\n* Build a **prospect database** for B2B cold outreach.\n* Extract **local SEO insights** per business.\n* Feed CRMs or analytics systems with **enriched business profiles**.\n* Automate market research for **regional opportunity detection**.\n\n---\n\n### 📩 Want a Similar Workflow?\n\nIf you’d like a custom AI-powered automation like this for your business or agency, feel free to contact me:\n\n**📧 [msaidwolfltd@gmail.com](mailto:msaidwolfltd@gmail.com)**\n\n\n\n"
},
"typeVersion": 1
}
],
"pinData": {
"Starts scraper workflow": [
{
"query": "restaurant+paris"
}
]
},
"connections": {
"a996171f-c358-471d-91ba-b6c9950e7edf": {
"main": [
[
{
"node": "40ec6d1f-1c98-4c9f-8499-c5893c3df7b9",
"type": "main",
"index": 0
}
],
[
{
"node": "12f662a8-c55f-409a-b381-f37ab6dd3794",
"type": "main",
"index": 0
}
]
]
},
"20c5612b-8fbf-4eb4-8f95-ca17acc5f0e2": {
"main": [
[
{
"node": "9fa06f2a-0e7a-43e1-b997-4b4288a990cd",
"type": "main",
"index": 0
}
]
]
},
"d2380d4e-20a5-48bb-9d87-3f2c638f2fc7": {
"main": [
[
{
"node": "4575083d-5d45-497e-a5d1-5c369f2d7b91",
"type": "main",
"index": 1
}
]
]
},
"4575083d-5d45-497e-a5d1-5c369f2d7b91": {
"main": [
[
{
"node": "a996171f-c358-471d-91ba-b6c9950e7edf",
"type": "main",
"index": 0
}
]
]
},
"9fa06f2a-0e7a-43e1-b997-4b4288a990cd": {
"main": [
[
{
"node": "73814b4e-ab19-4a06-b180-a2997e43bdbd",
"type": "main",
"index": 0
}
]
]
},
"53d2251a-f7bb-43b1-8035-c7ac74e0aa62": {
"main": [
[
{
"node": "20c5612b-8fbf-4eb4-8f95-ca17acc5f0e2",
"type": "main",
"index": 0
}
]
]
},
"40ec6d1f-1c98-4c9f-8499-c5893c3df7b9": {
"main": [
[
{
"node": "53d2251a-f7bb-43b1-8035-c7ac74e0aa62",
"type": "main",
"index": 0
}
]
]
},
"0273b1f4-5912-41fd-9899-3ec0a5a24f6c": {
"main": [
[
{
"node": "d2380d4e-20a5-48bb-9d87-3f2c638f2fc7",
"type": "main",
"index": 0
}
]
]
},
"12f662a8-c55f-409a-b381-f37ab6dd3794": {
"main": [
[],
[
{
"node": "4575083d-5d45-497e-a5d1-5c369f2d7b91",
"type": "main",
"index": 0
},
{
"node": "e4997964-dc80-4778-9f79-ae4dc9e41284",
"type": "main",
"index": 0
}
]
]
},
"67dfef97-0fc2-4fa8-a7a8-08c491f8785f": {
"main": [
[
{
"node": "cb651c6d-eac0-44bc-8d80-c07c5a65ce6a",
"type": "main",
"index": 0
}
]
]
},
"985ac7e3-b501-4079-a043-780677c94b52": {
"main": [
[],
[
{
"node": "18787007-1d11-41b9-89c3-d5f69756eda7",
"type": "main",
"index": 0
}
]
]
},
"cb651c6d-eac0-44bc-8d80-c07c5a65ce6a": {
"main": [
[
{
"node": "985ac7e3-b501-4079-a043-780677c94b52",
"type": "main",
"index": 0
}
]
]
},
"423dce21-e06d-4bd2-833b-976b3ce9e231": {
"main": [
[
{
"node": "dffaf04e-d1d2-4002-9a69-f0904b61fc2d",
"type": "main",
"index": 0
}
]
]
},
"e4997964-dc80-4778-9f79-ae4dc9e41284": {
"main": [
[
{
"node": "0273b1f4-5912-41fd-9899-3ec0a5a24f6c",
"type": "main",
"index": 0
}
]
]
},
"c191a15f-2457-49c1-976b-90b0caaf3835": {
"ai_languageModel": [
[
{
"node": "9fa06f2a-0e7a-43e1-b997-4b4288a990cd",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"79df5316-c210-478d-a4de-35b5d31924ee": {
"main": [
[
{
"node": "12f662a8-c55f-409a-b381-f37ab6dd3794",
"type": "main",
"index": 0
}
]
]
},
"a5b67e45-a3f6-41d2-aa58-c26a441c41b2": {
"main": [
[
{
"node": "79df5316-c210-478d-a4de-35b5d31924ee",
"type": "main",
"index": 0
}
]
]
},
"93437e8b-4f8d-40a1-9585-cab1b556164a": {
"main": [
[
{
"node": "3a478935-781b-4fb1-bdc7-fcf8be1334bc",
"type": "main",
"index": 0
}
]
]
},
"dffaf04e-d1d2-4002-9a69-f0904b61fc2d": {
"main": [
[
{
"node": "985ac7e3-b501-4079-a043-780677c94b52",
"type": "main",
"index": 0
}
]
]
},
"477e7d55-b7d6-4b20-ac44-dd1f443e270a": {
"main": [
[
{
"node": "a5b67e45-a3f6-41d2-aa58-c26a441c41b2",
"type": "main",
"index": 0
}
]
]
},
"18787007-1d11-41b9-89c3-d5f69756eda7": {
"main": [
[
{
"node": "423dce21-e06d-4bd2-833b-976b3ce9e231",
"type": "main",
"index": 0
}
]
]
},
"54d94ef2-84cf-4568-a9d5-28ec9a818ffd": {
"main": [
[
{
"node": "12f662a8-c55f-409a-b381-f37ab6dd3794",
"type": "main",
"index": 0
}
]
]
},
"3a478935-781b-4fb1-bdc7-fcf8be1334bc": {
"main": [
[
{
"node": "477e7d55-b7d6-4b20-ac44-dd1f443e270a",
"type": "main",
"index": 0
}
]
]
},
"73814b4e-ab19-4a06-b180-a2997e43bdbd": {
"main": [
[
{
"node": "54d94ef2-84cf-4568-a9d5-28ec9a818ffd",
"type": "main",
"index": 0
}
]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Experte - Lead-Generierung, KI-Zusammenfassung
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
Msaid Mohamed el hadi
@mohamedgb00714Hi! I’m Mohamed El Hadi, a passionate developer and automation expert from Algeria. I specialize in building smart, scalable workflows using n8n to streamline business operations, save time, and drive innovation. 🌍 Open to collaborations | 🤖 Automation lover | 💼 Founder of EcoPetDZ & AADL Auto Reload
Diesen Workflow teilen