Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

Google Maps till Google Sheets: felfria leads med e-post

Rickard Andersson Partner, Nodenordic.se

Att kopiera och klistra in Google Maps-listningar i ett kalkylark låter enkelt. Sedan gör du det i en timme, inser att hälften av “webbplatserna” är skräp, och du har fortfarande inte en enda användbar e-postadress.

Den här Maps lead automation slår hårt mot byråägare och frilansare, eftersom leadvolymen hänger ihop med debiterbar tid. En säljlead i ett småföretag känner också av det, eftersom dålig data ger dålig outreach och bortkastade uppföljningar.

Det här flödet hämtar lokala företag från Google Maps, rensar webbplatserna, extraherar riktiga e-postadresser och lägger en deduplicerad leadlista i Google Sheets. Du får se vad det gör, vad du behöver och hur du får igång det utan att behöva bli en “scraper-detective”.

Så fungerar den här automatiseringen

Här är det kompletta flödet du kommer att sätta upp:

n8n Workflow Template: Google Maps till Google Sheets: felfria leads med e-post

Varför det här spelar roll: korrekta lokala leads är plågsamt manuellt

Lokal leadgenerering faller isär i den tråkiga mitten. Du börjar med en nisch och en stad, söker på Google Maps, öppnar listningar, kopierar namn, klistrar in URL:er och upptäcker sedan att webbplatsfältet pekar på en Google-omdirigering, en Facebook-sida eller ingenting alls. Sen kommer delen “hitta en e-post”: klicka runt, gräva i sidfötter och gissa vilket kontaktformulär som kan konvertera. När du är klar ser arket fullt ut, men leads som faktiskt är redo för outreach är få. Och om du gör det här varje vecka blir den mentala belastningen värre än tidskostnaden.

Det bygger snabbt upp. Här är var det brister i praktiken:

  • Du lägger cirka 5–10 minuter per företag bara för att få en användbar webbplats och missar ändå uppenbara dubbletter.
  • Länkar som ägs av Google och kataloglänkar smyger sig in i arket, så du slösar outreach på “leads” som inte är leads.
  • Att jaga e-post blir ett eget projekt, och det är lätt att kopiera fel adress eller fånga en död inkorg.
  • Så fort du försöker skala till flera stadsdelar stöter du på captchas, rate limits och inkonsekventa resultat.

Vad du bygger: Google Maps-leads till ett felfritt Google Sheet

Det här n8n-flödet gör “företagstyp + stad” till en delbar leadlista som faktiskt är redo för outreach. Du börjar med att ange din målgrupp (till exempel rörmokare i Los Angeles). OpenAI genererar sedan hyperlokala sökfrågor så att du täcker stadsdelar, inte bara det uppenbara stadsövergripande sökordet. Därefter hämtar flödet Google Maps-resultat, plockar ut företagsdetaljer och webbplatslänkar och tar bort skräpresultat innan de förorenar kalkylarket. Sedan besöker det varje webbplats, laddar ner HTML från startsidan och extraherar e-postadresser med en enkel regex-metod (snabb, förvånansvärt effektiv). Till sist deduplicerar det både webbplatser och e-postadresser så att arket håller sig strukturerat när du kör det igen nästa vecka.

Flödet börjar med dina indata, expanderar dem till en lista av riktade sökningar, scrapar Maps-resultat via Zyte för bättre stabilitet, batchar förfrågningar med korta väntetider så att du inte överbelastar något och avslutar med att skriva kontaktfält som ser validerade ut till Google Sheets.

Det här bygger du

Förväntade resultat

Säg att du vill ha 100 lokala leads för en nisch i en stad. Manuellt: anta cirka 6 minuter per lead för att kopiera detaljer, verifiera webbplatsen och leta upp en e-postadress. Det är ungefär 10 timmar av distraktionsintensivt arbete. Med det här flödet lägger du cirka 10 minuter på att ställa in företagstyp och stad, och låter sedan flödet köra medan det batchar förfrågningar och besöker webbplatser, vilket vanligtvis landar på 30–45 minuter beroende på volym. Du granskar fortfarande arket, men du granskar i stället för att samla in.

Innan du börjar

  • n8n-instans (testa n8n Cloud gratis)
  • Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
  • OpenAI för att generera hyperlokala sökfrågor.
  • Zyte API för att scrapa Google Maps pålitligt.
  • OpenAI API-nyckel + Zyte API-nyckel (hämta båda i dina OpenAI- och Zyte-dashboards)

Kunskapsnivå: Medel. Du skriver inte kod från grunden, men du bör känna dig bekväm med att lägga till credentials, testa noder och läsa ett Google Sheets-resultat.

Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).

Steg för steg

Du startar flödet med en stad och en företagstyp. I n8n sätts den inmatningen i ett dedikerat steg “Set City & Business” (eller så kan du senare byta till en webhook om du vill trigga det från ett formulär).

AI breddar din söktäckning. OpenAI genererar en lista med sökfrågor i stadsdelsstil, och sedan delar flödet upp listan i individuella sökningar så att du kan få mer komplett Maps-täckning utan att själv behöva hitta på 30 variationer.

Maps-resultat scrapas och rensas. Varje sökfråga går genom en HTTP-förfrågan (via Zyte), resultaten batchas med korta väntetider och flödet tar bort tomma objekt, Google-ägda länkar och dubbletter innan det gör något annat.

Webbplatser besöks för att extrahera e-post. Flödet hämtar HTML från startsidan, plockar ut sannolika e-postadresser med en regex-baserad parser och deduplicerar sedan igen så att flera sidor inte ger samma kontakt om och om igen.

Du kan enkelt justera sökprompten för att rikta in dig på postnummer i stället för stadsdelar utifrån dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementering

Steg 1: konfigurera manuell trigger

Starta arbetsflödet manuellt så att ni kan styra indata för stad och bransch innan ni genererar sökfrågor.

  1. Lägg till Manual Start Trigger som arbetsflödets trigger.
  2. Anslut Manual Start Trigger till Set City & Business.
  3. I Set City & Business ställer ni in City till California och Business till Marketing Agencies.

Använd en specifik stad (t.ex. ”Los Angeles”) i Set City & Business för att få mer riktade sökfrågor per område.

Steg 2: anslut OpenAI

Arbetsflödet använder en OpenAI-modell för att generera lokaliserade Google Maps-sökningar.

  1. Öppna OpenAI Chat Engine.
  2. Inloggningsuppgifter krävs: anslut era openAiApi-inloggningsuppgifter.
  3. Bekräfta att modellen är inställd på gpt-4o-mini.

⚠️ Vanlig fallgrop: Structured Result Parser är en AI-undernod. Lägg bara till inloggningsuppgifter i OpenAI Chat Engine, inte i parsern.

Steg 3: konfigurera AI-generatorn för sökfrågor

Generera en strukturerad lista med områdesbaserade sökfrågor baserat på indata för stad och bransch.

  1. Öppna LLM Query Builder och bekräfta att Prompt Type är inställd på define.
  2. Behåll prompttexten som angiven och säkerställ att den refererar till {{ $json.City }} och {{ $json.Business }}.
  3. Säkerställ att Structured Result Parser är ansluten som output-parser med Input Schema inställt på { "output": ["plumbers+in+chinatown","plumbers+in+westlake"] }.
  4. Anslut LLM Query Builder till Expand Location List.

Om AI-utdata inte är giltig JSON, justera prompten i LLM Query Builder för att betona att endast JSON-utdata ska returneras.

Steg 4: konfigurera körning av Google Maps-sökningar

Förbered frågeposter, begränsa volymen och begär sökresultat från Google Maps.

  1. I Expand Location List ställer ni in Field to Split Out till output.locations.
  2. I Map Query Fields ställer ni in output till {{ $json['output.locations'] }} och location till {{ $('Set City & Business').item.json.City }}.
  3. I Cap Query Count ställer ni in Max Items till 5.
  4. Anslut Cap Query Count till Batch Through Queries.
  5. I Request Maps Results ställer ni in URL till https://www.google.com/maps/search/{{ $json.output }}.
  6. Från Batch Through Queries routar ni utdata till Request Maps Results.

⚠️ Vanlig fallgrop: Om ni ökar Cap Query Count för mycket kan Google börja strypa förfrågningar. Håll den låg för stabilitet.

Steg 5: tolka webbplatser och extrahera e-postadresser

Extrahera webbplats-URL:er från Maps-resultat, besök varje webbplats och tolka e-postadresser.

  1. I Parse Website Links behåller ni JavaScript-koden som extraherar URL:er med regex:en i jsCode.
  2. I Exclude Google Links verifierar ni att filtren exkluderar schema, google, gg och gstatic från {{ $json.website }}.
  3. Anslut Exclude Google Links till Deduplicate Websites, och därefter till Cap Website Count med Max Items inställt på 20.
  4. I Batch Site Visits säkerställer ni att den tar emot items från Cap Website Count och noterar att Batch Site Visits skickar utdata parallellt till både Pause Before Filtering och Fetch Website Content.
  5. I Fetch Website Content ställer ni in URL till {{ $json.website }} och låter omdirigeringar vara avstängda.
  6. I Delay Between Requests ställer ni in Amount till 1 för att strypa webbplatsförfrågningar.
  7. I Parse Email Addresses behåller ni JavaScript-koden som extraherar e-postadresser från $input.first().json.data.
  8. I Remove Empty Results behåller ni villkoret att {{ $json.emails }} finns, och ansluter sedan till Expand Email List.
  9. I Expand Email List ställer ni in Field to Split Out till emails, och ansluter sedan till Deduplicate Emails och Assemble Contact Fields.
  10. I Assemble Contact Fields ställer ni in email till {{ $json.emails }}, search term till {{ $('Batch Through Queries').item.json.output }} och location till {{ $('Batch Through Queries').item.json.location }}.

Om inga e-postadresser visas, kontrollera att Fetch Website Content returnerar HTML i data, och överväg att öka Delay Between Requests.

Steg 6: testa och aktivera ert arbetsflöde

Kör ett manuellt test för att verifiera frågegenerering, webbplatsextrahering och e-posttolkning.

  1. Klicka på Execute Workflow medan Manual Start Trigger är vald.
  2. Bekräfta att LLM Query Builder skickar ut en strukturerad lista till Expand Location List.
  3. Verifiera att Request Maps Results returnerar HTML och att Parse Website Links extraherar URL:er.
  4. Kontrollera att Parse Email Addresses returnerar en emails-array och att Assemble Contact Fields skickar ut e-postadress, sökterm och plats.
  5. När allt fungerar, slå på arbetsflödet med Active för användning i produktion.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Felsökningstips

  • OpenAI-credentials kan löpa ut eller begränsas av projektinställningar. Om något slutar fungera, kontrollera först status för din OpenAI API-nyckel och dina användningsgränser i OpenAI-dashboarden.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder fallerar på grund av tomma svar.
  • Zyte-förfrågningar kan fallera om din API-nyckel är fel eller om ditt abonnemang är slut på krediter. Kontrollera Zyte-dashboarden för senaste förfrågningsfel och kvot innan du antar att flödeslogiken är fel.

Snabba svar

Hur lång tid tar det att sätta upp den här Maps lead automation automation?

Cirka 30 minuter om du redan har dina API-nycklar.

Krävs kodning för det här lead-rensningsresultatet från fokusnyckelordet?

Nej. Du kopplar mest credentials och justerar några Set-fält. E-postparsningen använder en inbyggd kodnod, men du kan låta den vara som den är.

Är n8n gratis att använda för det här Maps lead automation-flödet?

Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in kostnader för OpenAI- och Zyte-API:er, vilket oftast landar på några dollar per batch vid mindre körningar.

Var kan jag hosta n8n för att köra den här automatiseringen?

Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärt och hanterar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här Maps lead automation-flödet för andra användningsfall?

Ja, och det bör du. Den vanligaste ändringen är att byta OpenAI-prompten i “LLM Query Builder” till format som “tjänst + postnummer” eller “tjänst + förort”, beroende på hur din marknad söker. Du kan också skärpa filtreringen genom att justera logiken i “Exclude Google Links” och uppdatera regexen i “Parse Email Addresses” om du vill exkludera gratisinkorgar eller bara behålla rollbaserade e-postadresser som info@ och sales@.

Varför fallerar min Zyte-anslutning i det här flödet?

Oftast är det en ogiltig API-nyckel eller att du har slut på Zyte-krediter. Uppdatera Zyte-credential som används av HTTP Request-noderna och kör sedan om en enskild sökfråga för att bekräfta. Om det fungerar för en sökfråga men fallerar i batcher kan du också slå i rate limits, så öka väntetiden i “Delay Between Requests”.

Vilken volym kan det här Maps lead automation-flödet hantera?

Om du kör n8n med egen hosting finns ingen körningsgräns, och kapaciteten beror mest på din server samt dina Zyte-/OpenAI-gränser. På n8n Cloud är det praktiska taket antalet månatliga körningar i din plan, och det här flödet kan använda många körningar om du scrapar många sökfrågor och besöker många webbplatser. I det dagliga brukar team köra detta i batcher på några dussin upp till ett par hundra företag per nisch för att det ska vara stabilt och lätt att granska.

Är den här Maps lead automation automation bättre än att använda Zapier eller Make?

För den här typen av scrape-och-rensa-flöde är n8n oftast bättre. Du behöver batchning, väntetider, deduplicering och lite anpassad parsning, och de stegen blir dyra eller klumpiga i verktyg som prissätter per task. n8n ger dig också möjligheten till egen hosting, vilket spelar roll när du hämtar leads regelbundet. Zapier eller Make kan fortfarande fungera om du bara vill flytta redan felfri data mellan appar. Om du är osäker, prata med en automationsexpert så ritar vi upp den billigaste vägen.

När det här väl rullar slutar lokal leadgenerering att vara ett veckovis slit. Du får felfri data, snabbare, och din outreach-tid går äntligen till samtal i stället för copy-paste.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Launch login modal Launch register modal