Extracción de Datos de Negocios en Google Maps Impulsada por IA y Exportación a Tablas
Este es unLead Generation, AI Summarizationflujo de automatización del dominio deautomatización que contiene 25 nodos.Utiliza principalmente nodos como If, Code, Wait, Merge, Filter. Extracción de datos de negocios en Google Maps basada en IA, con soporte para enriquecimiento de datos y exportación a tablas
- •Pueden requerirse credenciales de autenticación para la API de destino
- •Credenciales de API de Google Sheets
Nodos utilizados (25)
Categoría
{
"meta": {},
"nodes": [
{
"id": "79df5316-c210-478d-a4de-35b5d31924ee",
"name": "Eliminar URLs Duplicados",
"type": "n8n-nodes-base.removeDuplicates",
"position": [
2000,
980
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "985ac7e3-b501-4079-a043-780677c94b52",
"name": "Bucle sobre consultas",
"type": "n8n-nodes-base.splitInBatches",
"position": [
1500,
580
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "3a478935-781b-4fb1-bdc7-fcf8be1334bc",
"name": "Buscar en Google Maps con consulta",
"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": "Extraer URLs de resultados",
"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": "Filtrar URLs irrelevantes",
"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": "Bucle sobre URLs",
"type": "n8n-nodes-base.splitInBatches",
"onError": "continueErrorOutput",
"position": [
2640,
980
],
"parameters": {
"options": {
"reset": false
}
},
"typeVersion": 3
},
{
"id": "93437e8b-4f8d-40a1-9585-cab1b556164a",
"name": "Iniciar flujo de extracción",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
800,
980
],
"parameters": {},
"typeVersion": 1
},
{
"id": "dffaf04e-d1d2-4002-9a69-f0904b61fc2d",
"name": "Esperar entre ejecuciones",
"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": "Ejecutar extractor para consulta",
"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": "Agente de IA",
"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": "Modelo de Chat OpenRouter",
"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": "Código",
"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": "Agregar",
"type": "n8n-nodes-base.aggregate",
"position": [
4420,
960
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData"
},
"typeVersion": 1
},
{
"id": "67dfef97-0fc2-4fa8-a7a8-08c491f8785f",
"name": "Activador Programado",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
1060,
580
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "cb651c6d-eac0-44bc-8d80-c07c5a65ce6a",
"name": "Obtener fila(s) en hoja",
"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": "Actualizar fila en hoja",
"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": "Si",
"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": "Combinar",
"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": "convertir cadena a objeto json",
"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": "Guardar DATOS en Google Hoja1",
"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": "usar 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": "obtener registros si existen",
"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": "Código1",
"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": "Agregar1",
"type": "n8n-nodes-base.aggregate",
"position": [
3160,
1280
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"fieldToAggregate": "website_url"
}
]
}
},
"typeVersion": 1
},
{
"id": "2adf371b-2b7b-4ce9-9666-95a4b892a963",
"name": "Nota Adhesiva",
"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
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - Generación de leads, Resumen de IA
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
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
Compartir este flujo de trabajo