diff --git a/workflows/Automate Google Maps Lead Generation with Perplexity AI and Email Verification-8904/automate_google_maps_lead_generation_with_perplexity_ai_and_email_verification.json b/workflows/Automate Google Maps Lead Generation with Perplexity AI and Email Verification-8904/automate_google_maps_lead_generation_with_perplexity_ai_and_email_verification.json new file mode 100644 index 000000000..fbac8e279 --- /dev/null +++ b/workflows/Automate Google Maps Lead Generation with Perplexity AI and Email Verification-8904/automate_google_maps_lead_generation_with_perplexity_ai_and_email_verification.json @@ -0,0 +1 @@ +{"id":"5xiooM6nIMsvcr9o","meta":{"instanceId":"ceb08568f263be96b9229103e3685353eb955188135771424bbdacd1c1030ab4","templateCredsSetupCompleted":true},"name":"Google Maps Data Extraction","tags":[],"nodes":[{"id":"a495a9d9-782f-46e0-b2f7-55476ebe4ed8","name":"When clicking ‘Execute workflow’","type":"n8n-nodes-base.manualTrigger","position":[-1632,1440],"parameters":{},"typeVersion":1},{"id":"0e74a10e-ce5c-4616-842d-53812d1ff6e3","name":"Set parameters","type":"n8n-nodes-base.set","position":[-1392,1440],"parameters":{"values":{"number":[{"name":"num","value":10},{"name":"pageStart","value":1},{"name":"pageLimit","value":100}],"string":[{"name":"q","value":"librerías Vic"},{"name":"gl","value":"es"},{"name":"hl","value":"es"},{"name":"resultsSheetName","value":"Resultados"},{"name":"logSheetName","value":"Log"},{"name":"language","value":"spanish"}]},"options":{},"keepOnlySet":true},"typeVersion":2},{"id":"1a3392af-449c-4c1d-8bed-2fee02f2bd7d","name":"Split In Batches","type":"n8n-nodes-base.splitInBatches","position":[-864,1440],"parameters":{"options":{},"batchSize":"=1"},"typeVersion":2},{"id":"ea10290d-ca7c-4437-bf82-90153c203e1b","name":"HTTP Request","type":"n8n-nodes-base.httpRequest","position":[-448,1424],"parameters":{"url":"https://google.serper.dev/places","method":"POST","options":{"redirect":{"redirect":{}}},"sendBody":true,"sendHeaders":true,"authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"q","value":"={{ $('Set parameters').item.json.q }}"},{"name":"gl","value":"={{ $('Set parameters').item.json.gl }}"},{"name":"page","value":"={{ $json.page }}"},{"name":"hl","value":"={{ $('Set parameters').item.json.hl }}"},{"name":"num","value":"={{ $('Set parameters').item.json.num }}"}]},"genericAuthType":"httpHeaderAuth","headerParameters":{"parameters":[{}]}},"credentials":{"httpHeaderAuth":{"id":"CyP2bctO1OJzFYSQ","name":"Header Auth account"}},"typeVersion":4.2},{"id":"f3911359-b48f-4860-9a9f-3e6199444d9f","name":"Append row in sheet (Resultados)","type":"n8n-nodes-base.googleSheets","position":[432,1024],"parameters":{"columns":{"value":{"Name":"={{ $json.Name }}","UUID":"={{ $json.UUID }}","Email":"={{ $json.Email }}","Phone":"={{ $json.Phone }}","Rating":"={{ $json.Rating }}","Address":"={{ $json.Address }}","Website":"={{ $json.Website }}"},"schema":[{"id":"UUID","type":"string","display":true,"required":false,"displayName":"UUID","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Name","type":"string","display":true,"required":false,"displayName":"Name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Address","type":"string","display":true,"required":false,"displayName":"Address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Website","type":"string","display":true,"required":false,"displayName":"Website","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Rating","type":"string","display":true,"required":false,"displayName":"Rating","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Email","type":"string","display":true,"required":false,"displayName":"Email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Valid Email","type":"string","display":true,"removed":false,"required":false,"displayName":"Valid Email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Phone","type":"string","display":true,"required":false,"displayName":"Phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Valid Phone","type":"string","display":true,"removed":false,"required":false,"displayName":"Valid Phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Summary","type":"string","display":true,"removed":false,"required":false,"displayName":"Summary","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":958337799,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1NfDypwQx-NkaFwemG-WaL7qFfa0lwSC9I4ijByex41E/edit#gid=958337799","cachedResultName":"Resultados"},"documentId":{"__rl":true,"mode":"list","value":"1NfDypwQx-NkaFwemG-WaL7qFfa0lwSC9I4ijByex41E","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1NfDypwQx-NkaFwemG-WaL7qFfa0lwSC9I4ijByex41E/edit?usp=drivesdk","cachedResultName":"Google_Maps_Leads"}},"credentials":{"googleSheetsOAuth2Api":{"id":"PCN0zg5upWW6Ryfc","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"b1f3ae25-09f9-4ec4-96eb-70cb99b437c3","name":"JavaScript - Page Management","type":"n8n-nodes-base.code","position":[-1120,1440],"parameters":{"jsCode":"const { pageStart = 1, pageLimit = 50 } = $json;\nconst out = [];\nfor (let p = pageStart; p <= pageLimit; p++) out.push({ json: { page: p } });\nreturn out;\n"},"typeVersion":2},{"id":"1826c04a-c862-4f4e-9242-fa307254013e","name":"JavaScript1 - Places Objects","type":"n8n-nodes-base.code","position":[240,1024],"parameters":{"jsCode":"const places = $json.places || [];\nreturn places.map(p => ({\n json: {\n UUID: p.cid || '',\n Name: p.title || '',\n Address: p.address || '',\n Website: p.website || '',\n Rating: p.rating ?? '',\n Email: '',\n Phone: String(p.phoneNumber || '').replace(/^\\+/, '').replace(/\\s+/g, ''),\n \"Opening Hours\": ''\n }\n}));"},"typeVersion":2},{"id":"c35c5058-c07d-45cd-9c2d-e2a2c4dfd107","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-1984,848],"parameters":{"width":2672,"height":784,"content":"## Google Maps Data Extraction\n**What it does:**\nPages through Serper’s **Google Places** results, turns each `place` into a row, **appends to Google Sheets**, and **stops** when `places` is empty.\n\n**Nodes (brief):**\n\n* **Manual Trigger** – Start.\n* **Set parameters** – q, gl, hl, num, apiKey, spreadsheetId, sheet names, pageStart/pageLimit.\n* **Code: Make pages** – Emits `{page: 1..N}`.\n* **Split In Batches** – Sends one page per run.\n* **HTTP Request** – POST to `https://google.serper.dev/places` with `{ q, gl, hl, num, page }`.\n* **IF** – If `places.length > 0`, continue; else end loop.\n* **Code: Map to rows** – Map each place → `{ UUID, Name, Address, Website, Rating, Phone(normalized), Opening Hours }`.\n* **Google Sheets: Append row (Resultados)** – Append rows; then back to **Split In Batches** for next page.\n"},"typeVersion":1},{"id":"d62bc2a6-ad41-4bd0-bf44-fb704efb47d7","name":"If End Batch","type":"n8n-nodes-base.if","position":[-192,1424],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"275e97cf-7809-4268-9a4d-3d6fa7886798","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{ Array.isArray($json.places) && $json.places.length > 0 }}\n\n","rightValue":""}]}},"typeVersion":2.2},{"id":"91bf3742-845b-404c-ae80-4076e5b638ef","name":"Loop Over Items","type":"n8n-nodes-base.splitInBatches","position":[-992,1968],"parameters":{"options":{"reset":false}},"typeVersion":3},{"id":"ef5e11b3-355f-49c8-809e-37de55f706dc","name":"Convert to JSON Object1","type":"n8n-nodes-base.code","position":[-544,1984],"parameters":{"jsCode":"const items = $input.all()[0].json.choices[0].message.content;\nconst cleaned = items.replace('```json', '').replace('```', '')\nconst parsed = JSON.parse(cleaned);\n\nreturn {data: parsed}"},"typeVersion":2},{"id":"ede2a523-da1b-4104-a21f-46025fcd3cb1","name":"Filter","type":"n8n-nodes-base.filter","position":[-1312,1968],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"781fc345-87ce-4f2a-84f4-059bd802fc17","operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $json.Name }}","rightValue":"Name"},{"id":"bbaeb84c-0c19-42f2-9e06-e826e69833fa","operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.Name }}","rightValue":""}]}},"typeVersion":2.2},{"id":"4a819d88-0e33-428e-a921-e3efd637425b","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-1984,1648],"parameters":{"color":3,"width":2668,"height":652,"content":"**Workflow: Maps → Sheet → Email Verification**\n\n1. **Search & save:** Find places on Google Maps and add them to the sheet.\n2. **Fill details:** Add missing info (email + short description).\n3. **Verify emails:** Every email is checked (format, domain, and inbox when possible). If it can’t be confirmed, we set **“N/A”**.\n4. **Update sheet:** Only **verified** emails are written back.\n\n**Why this matters:** You keep clean, reliable contact data and avoid sending to bad addresses.\n\n**IMPORTANT** Before run that workflow you need a Verificaremails.com account.\n"},"typeVersion":1},{"id":"f7d88b7d-4c34-454b-81b8-c2f8a6bd0767","name":"Get Contact Details via Perplexity","type":"n8n-nodes-base.httpRequest","position":[-752,1984],"parameters":{"url":"https://api.perplexity.ai/chat/completions","method":"POST","options":{},"jsonBody":"= {\n \"model\": \"sonar\",\n \"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"You are a research assistant. Retrieve data from a company and return it. If a field does not exist, return \\\"N/A\\\" for that field. Return JSON only, without any other information. Use spanish as outputlanguege.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Get the Email and Company Background of {{ $json.Name }} in {{ $json.Address }}, reference website: {{ $json.Website }}\"\n }\n ],\n \"response_format\": {\n \"type\": \"json_schema\",\n \"json_schema\": {\n \"schema\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"CompanyDetails\",\n \"type\": \"object\",\n \"properties\": {\n \"Email\": {\n \"type\": \"string\"\n },\n \"Background\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"Email\",\n \"Background\"\n ]\n }\n }\n }\n}","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpBearerAuth"},"credentials":{"httpBearerAuth":{"id":"h8NxbxLPki3hdtGN","name":"Bearer Auth account"},"httpHeaderAuth":{"id":"CyP2bctO1OJzFYSQ","name":"Header Auth account"}},"typeVersion":4.2},{"id":"f3dd6c14-9e38-464d-8438-034124be5e6f","name":"Update row in sheet","type":"n8n-nodes-base.googleSheets","position":[512,1984],"parameters":{"columns":{"value":{"UUID":"={{ $('Google Sheets Trigger').item.json.UUID }}","Email":"={{ $('Convert to JSON Object1').item.json.data.Email }}","Summary":"={{ $('Convert to JSON Object1').item.json.data.Background }}","Valid Email":"={{ $json.apiResponse.result.status }}"},"schema":[{"id":"UUID","type":"string","display":true,"removed":false,"required":false,"displayName":"UUID","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Name","type":"string","display":true,"removed":true,"required":false,"displayName":"Name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Address","type":"string","display":true,"removed":true,"required":false,"displayName":"Address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Website","type":"string","display":true,"removed":true,"required":false,"displayName":"Website","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Rating","type":"string","display":true,"removed":true,"required":false,"displayName":"Rating","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Email","type":"string","display":true,"removed":false,"required":false,"displayName":"Email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Valid Email","type":"string","display":true,"removed":false,"required":false,"displayName":"Valid Email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Phone","type":"string","display":true,"removed":true,"required":false,"displayName":"Phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Valid Phone","type":"string","display":true,"removed":true,"required":false,"displayName":"Valid Phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Summary","type":"string","display":true,"removed":false,"required":false,"displayName":"Summary","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":["UUID"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":958337799,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1NfDypwQx-NkaFwemG-WaL7qFfa0lwSC9I4ijByex41E/edit#gid=958337799","cachedResultName":"Resultados"},"documentId":{"__rl":true,"mode":"list","value":"1NfDypwQx-NkaFwemG-WaL7qFfa0lwSC9I4ijByex41E","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1NfDypwQx-NkaFwemG-WaL7qFfa0lwSC9I4ijByex41E/edit?usp=drivesdk","cachedResultName":"Google_Maps_Leads"}},"credentials":{"googleSheetsOAuth2Api":{"id":"PCN0zg5upWW6Ryfc","name":"Google Sheets account"}},"typeVersion":4.5},{"id":"87a8e074-faed-4ec7-9650-42b610e2e11b","name":"If","type":"n8n-nodes-base.if","position":[-272,1984],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"cd1148ba-bbcb-4f5c-ba26-0f3138760cec","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.data.Email }}","rightValue":"N/A"}]}},"typeVersion":2.2},{"id":"4811c3db-b958-43eb-9700-5a134e5f8e6b","name":"VerificarEmails","type":"@verificaremails/n8n-nodes-verificaremails.verificaremails","position":[16,2048],"parameters":{"email":"={{ $json.data.Email }}"},"credentials":{"verificaremailsApi":{"id":"qhsM7hEZAD18qhy6","name":"Verificaremails account"}},"typeVersion":1},{"id":"e69b897c-c75e-4254-957e-946c3038735a","name":"Google Sheets Trigger","type":"n8n-nodes-base.googleSheetsTrigger","position":[-1680,1968],"parameters":{"event":"rowAdded","options":{},"pollTimes":{"item":[{"mode":"everyMinute"}]},"sheetName":{"__rl":true,"mode":"list","value":958337799,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1NfDypwQx-NkaFwemG-WaL7qFfa0lwSC9I4ijByex41E/edit#gid=958337799","cachedResultName":"Resultados"},"documentId":{"__rl":true,"mode":"list","value":"1NfDypwQx-NkaFwemG-WaL7qFfa0lwSC9I4ijByex41E","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1NfDypwQx-NkaFwemG-WaL7qFfa0lwSC9I4ijByex41E/edit?usp=drivesdk","cachedResultName":"Google_Maps_Leads"}},"credentials":{"googleSheetsTriggerOAuth2Api":{"id":"AgjjQoVh4c79DXyi","name":"Google Sheets Trigger account"}},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"50ac0811-d697-4722-8025-d6fe982adab8","connections":{"If":{"main":[[{"node":"Update row in sheet","type":"main","index":0}],[{"node":"VerificarEmails","type":"main","index":0}]]},"Filter":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"HTTP Request":{"main":[[{"node":"If End Batch","type":"main","index":0}]]},"If End Batch":{"main":[[{"node":"JavaScript1 - Places Objects","type":"main","index":0}],[]]},"Set parameters":{"main":[[{"node":"JavaScript - Page Management","type":"main","index":0}]]},"Loop Over Items":{"main":[[],[{"node":"Get Contact Details via Perplexity","type":"main","index":0}]]},"VerificarEmails":{"main":[[{"node":"Update row in sheet","type":"main","index":0}]]},"Split In Batches":{"main":[[{"node":"HTTP Request","type":"main","index":0}],[]]},"Update row in sheet":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"Google Sheets Trigger":{"main":[[{"node":"Filter","type":"main","index":0}]]},"Convert to JSON Object1":{"main":[[{"node":"If","type":"main","index":0}]]},"JavaScript - Page Management":{"main":[[{"node":"Split In Batches","type":"main","index":0}]]},"JavaScript1 - Places Objects":{"main":[[{"node":"Append row in sheet (Resultados)","type":"main","index":0}]]},"Append row in sheet (Resultados)":{"main":[[{"node":"Split In Batches","type":"main","index":0}]]},"Get Contact Details via Perplexity":{"main":[[{"node":"Convert to JSON Object1","type":"main","index":0}]]},"When clicking ‘Execute workflow’":{"main":[[{"node":"Set parameters","type":"main","index":0}]]}}} \ No newline at end of file