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

Google Sheets + Apify: rensa Google Maps-leadlistor

Rickard Andersson Partner, Nodenordic.se

Att bygga en lokal leadlista låter enkelt tills du sitter tre flikar in, kopierar och klistrar in företagsnamn, rättar konstig formatering och ändå saknar hälften av e-postadresserna. Då inser du att du redan har skrapat samma ställen förra veckan. Igen.

Det här drabbar marknadsförare som kör lokala kampanjer först, men byråägare och konsulter som prospekterar känner av det också. Automatisering av Google Maps-leads gör den röriga, manuella “researchdagen” till ett repeterbart arbetsflöde som levererar ett strukturerat kalkylark du faktiskt kan använda.

Det här arbetsflödet hämtar prospekt från Google Maps via SerpAPI, skrapar varje webbplats med Apify, använder GPT‑4o för att extrahera offentliga e-postadresser och skriver sedan allt till Google Sheets samtidigt som sökningar markeras som klara. Du får se vad det gör, varför det spelar roll och vad du bör tänka på innan du kör det.

Så fungerar den här automatiseringen

Se hur det här löser problemet:

n8n Workflow Template: Google Sheets + Apify: rensa Google Maps-leadlistor

Utmaningen: strukturerade leadlistor från rörig lokal data

Lokal prospektering havererar på tråkiga, dyra sätt. Du söker i Google Maps, öppnar listningar en och en, kopierar ett telefonnummer som är formaterat på fem olika sätt och klistrar in en adress som inte passar dina CRM-fält. Sedan går du till webbplatsen och hoppas att det finns en e-postadress någonstans, men hittar bara ett kontaktformulär och ett dussin sidor att gå igenom. När du väl har byggt en “hyfsad” lista är den inaktuell, full av dubbletter och du litar ärligt talat inte tillräckligt på den för att köra outreach i skala.

Det är inte ett stort haveri. Det är högen av små friktioner som håller dig fast i kalkylarks-skärselden.

  • Du gör om samma söktermer eftersom det inte finns någon pålitlig “bearbetad”-flagga.
  • Manuell kopiera/klistra in skapar subtila fel, så din outreach studsar eller så misslyckas CRM-importer.
  • E-postjakt blir flik-hoppande, och bästa utfallet är ändå “kanske hittade vi en”.
  • Din lista blir en engångsprodukt i stället för ett system du kan köra varje vecka.

Lösningen: Google Maps-sökning + webbskrapning + e-postextrahering

Det här arbetsflödet börjar med en enkel “single source of truth”: en flik i Google Sheet som heter “Searches” där du sparar söktermer och platser. När du kör det läser det bara rader som inte är markerade som Complete, så du fortsätter inte att hämta samma prospekt. För varje par av sökterm + område frågar SerpAPI Google Maps och returnerar grundläggande företagsdetaljer som namn, webbplats, adress och telefon. Därefter besöker arbetsflödet varje webbplats via Apifys Fast Website Content Crawler och skickar sedan det skrapade innehållet till en GPT‑4o AI Agent som specifikt letar efter offentligt angivna e-postadresser. Till sist skrivs allt till en “Results”-flik och den ursprungliga sökraden markeras som Complete så att arbetsflödet kan köras om på ett säkert sätt.

Flödet är medvetet enkelt. Google Sheets ger kön, SerpAPI levererar Maps-datan, Apify hämtar sidinnehåll och GPT‑4o extraherar en e-postadress när den finns. Du får en prydlig resultattabell redo för outreach eller CRM-import, inte ett halvfärdigt researchprojekt.

Vad som förändras: före vs. efter

Praktisk effekt

Säg att du kör 10 sökningar i veckan (som “tandläkare” i 10 förorter) och vanligtvis samlar 20 prospekt per sökning. Manuellt tar även en snabb genomgång kanske 5 minuter per företag mellan Maps, webbplatsen och att klistra in i Sheets, vilket blir cirka 15 timmar för 200 leads. Med det här arbetsflödet lägger du runt 20 minuter på att sätta upp de 10 raderna i “Searches”-fliken och låter sedan automatiseringen köra medan den hämtar, skrapar och skriver resultat. Du kommer fortfarande granska outputen, men du gör inte längre 200 små, repetitiva uppgifter.

Krav

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • Google Sheets för att lagra sökningar och resultat.
  • SerpAPI för sökresultat från Google Maps.
  • Apify för att crawla företagswebbplatser efter sidinnehåll.
  • OpenAI API-nyckel (hämta den från OpenAI-plattformens dashboard).

Kunskapsnivå: Medel. Du kopplar konton, installerar nödvändiga community-noder och klistrar in några API-nycklar på rätt ställen.

Behöver du hjälp att implementera detta? Prata med en automatiseringsexpert (gratis 15-minuters konsultation).

Flödet i arbetsflödet

Google Sheets startar allt. När du kör arbetsflödet läser det rader från din “Searches”-flik och filtrerar bort allt som redan är markerat som Complete, så att det bara bearbetar nya sökningar.

Varje sökterm blir en Google Maps-fråga. Arbetsflödet skickar sökterm + plats till SerpAPI och formaterar sedan svaret till en konsekvent “resultattabell”-struktur (namn, webbplats, adress, telefon och den ursprungliga sökkontexten).

Webbplatser hämtas och skannas efter e-post. Med en HTTP-förfrågan till Apifys crawler hämtas sidinnehåll för varje webbplats. Därefter extraherar GPT‑4o AI Agent eventuella offentligt angivna e-postadresser och returnerar strukturerad JSON så att du slipper tolka rörig text.

Allt landar tillbaka i Google Sheets (och kan även skickas vidare till ett CRM). Arbetsflödet skriver varje berikad rad till din “Results”-flik och uppdaterar statusen på källraden till Complete. Det finns också noder som stödjer att skicka leads till verktyg som Pipedrive om du vill gå direkt från research till pipeline.

Du kan enkelt ändra kolumnerna i “Searches” för att lägga till nisch-taggar, tilldelning av säljare eller kampanjnamn, och sedan skriva de fälten till Results-outputen. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementation

Steg 1: konfigurera den manuella triggern

Det här arbetsflödet startar vid behov och gör att ni kan köra en batch med sökningar manuellt och bearbeta resultaten.

  1. Lägg till noden Manual Execution Start som din trigger.
  2. Lämna alla inställningar som standard i Manual Execution Start (inga parametrar krävs).
  3. Koppla Manual Execution Start till Retrieve Search Phrases.

Steg 2: anslut Google Sheets

Dessa noder hämtar sökfraser, uppdaterar bearbetningsstatus och lagrar extraherade e-postadresser.

  1. Öppna Retrieve Search Phrases och ställ in Document till [YOUR_ID] och Sheet till gid=0 (Sökningar).
  2. Autentiseringsuppgifter krävs: Anslut era googleSheetsOAuth2Api-autentiseringsuppgifter i Retrieve Search Phrases.
  3. Öppna Update Row Status och behåll Operation som appendOrUpdate med Matching Columns inställt på Search.
  4. Verifiera att kolumnmappningen i Update Row Status inkluderar Search satt till {{ $json.Search }} och Complete satt till Yes.
  5. Autentiseringsuppgifter krävs: Anslut era googleSheetsOAuth2Api-autentiseringsuppgifter i Update Row Status.
  6. Öppna Store Emails in Sheet och behåll Operation som appendOrUpdate, Sheet inställt på 1470668196 (Resultat) och Document inställt på [YOUR_ID].
  7. Säkerställ att kolumnmappningarna i Store Emails in Sheet inkluderar:
    • Area{{ $('Retrieve Search Phrases').item.json.Area }}
    • Search{{ $('Retrieve Search Phrases').item.json.Search }}
    • Search Name{{ $('Retrieve Search Phrases').item.json['Area Name'] }}
    • title{{ $('Format Results Table').item.json.title }}
    • website{{ $('Format Results Table').item.json.website }}
    • address{{ $('Format Results Table').item.json.address }}
    • phone{{ $('Format Results Table').item.json.phone }}
    • email (Manual Entry){{ $json.output.email }}
  8. Autentiseringsuppgifter krävs: Anslut era googleSheetsOAuth2Api-autentiseringsuppgifter i Store Emails in Sheet.

Om ert kalkylark använder andra kolumnrubriker, uppdatera kolumnmappningarna i Update Row Status och Store Emails in Sheet så att de matchar exakt.

Steg 3: konfigurera sökfiltrering och routning

Det här avsnittet filtrerar fram ofullständiga rader, väljer en enda sökfras och förgrenar i parallella spår.

  1. I Filter Pending Rows, ställ in villkoret Complete till is empty med {{ $json.Complete }}.
  2. I Select First Record, behåll koden som return [items[0]]; för att bearbeta en sökning i taget.
  3. Koppla Retrieve Search PhrasesFilter Pending RowsSelect First Record.
  4. Säkerställ att Select First Record skickar utdata till både Update Row Status och Query Google Maps parallellt.

⚠️ Vanlig fallgrop: Om kolumnen Complete innehåller andra värden än tomt (t.ex. ”No”), uppdatera villkoret i Filter Pending Rows så att det matchar ert dataset.

Steg 4: konfigurera Google Maps-sökning och tolkning av resultat

Det här segmentet frågar Google Maps via SerpApi och formaterar resultaten till individuella poster.

  1. Öppna Query Google Maps och ställ in Operation till google_maps.
  2. Ställ in q till {{ $json.Search }} och ll till {{ $json.Area }} i Query Google Maps.
  3. Autentiseringsuppgifter krävs: Anslut era serpApi-autentiseringsuppgifter i Query Google Maps.
  4. I Format Results Table, behåll JavaScript-koden som rensar webbplats-URL:er och skickar ut title, website, address och phone som separata items.
  5. Koppla Query Google MapsFormat Results TableIterate Through Records.

Steg 5: konfigurera hämtning av webbinnehåll och AI-extraktion av e-post

I det här steget crawlas varje företags webbplats och en e-postadress extraheras med hjälp av AI.

  1. I Fetch Web Content, ställ in URL till =https://api.apify.com/v2/acts/6sigmag~fast-website-content-crawler/run-sync-get-dataset-items.
  2. Ställ in Method till POST och JSON Body till {"startUrls":[ "{{ $json.website }}" ]} i Fetch Web Content.
  3. Autentiseringsuppgifter krävs: Anslut era httpQueryAuth-autentiseringsuppgifter i Fetch Web Content.
  4. I AI Email Extractor, ställ in Text till {{ $json.text }} och behåll Prompt Type som define med Has Output Parser aktiverat.
  5. Säkerställ att OpenAI Chat Engine är ansluten som språkmodell för AI Email Extractor och att Structured Output Decoder är ansluten som output parser.
  6. Autentiseringsuppgifter krävs: Anslut era openAiApi-autentiseringsuppgifter i OpenAI Chat Engine (autentiseringsuppgifter läggs till på den överordnade modellen, inte i parsern).
  7. Behåll schemat i Structured Output Decoder som { "email": "emailaddress" } för att standardisera utdata.
  8. Koppla Iterate Through RecordsFetch Web ContentAI Email ExtractorIterate Through Records (andra utdata-loopen).

Om webbplatser blockerar crawlers, överväg att lägga till fördröjning eller alternativa scraping-inställningar i Apify-aktorn.

Steg 6: konfigurera parallella utdata och sub-workflow

Resultaten sparas i arket samtidigt som en sammanfattning skickas till ett sub-workflow.

  1. Bekräfta att Iterate Through Records skickar utdata till både Store Emails in Sheet och Summarize Single Row parallellt.
  2. I Summarize Single Row, behåll Fields to Summarize inställt så att det inkluderar title.
  3. Öppna Run Sub-Workflow (Configure Required) och välj ett Workflow i Workflow ID.
  4. Koppla Summarize Single RowRun Sub-Workflow (Configure Required).

⚠️ Vanlig fallgrop: Run Sub-Workflow (Configure Required) har inget workflow valt som standard. Ni måste välja ett workflow eller ta bort noden om den inte behövs.

Steg 7: testa och aktivera ert arbetsflöde

Verifiera att hela körningen fungerar och aktivera sedan arbetsflödet för löpande användning.

  1. Klicka på Execute Workflow för att köra Manual Execution Start och bearbeta en väntande sökning.
  2. Verifiera att Update Row Status markerar raden som Complete med Yes.
  3. Bekräfta att Store Emails in Sheet skriver poster med förväntade fält, inklusive email (Manual Entry).
  4. Kontrollera att AI Email Extractor skickar ut antingen en e-postadress eller null i output.email.
  5. Om allt ser korrekt ut, växla arbetsflödet till Active för användning i produktion.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Se upp med

  • Google Sheets-åtkomst fallerar oftare än man tror. Om rader slutar uppdateras: kontrollera din Google OAuth-anslutning i n8n och bekräfta att kontot fortfarande har redigeringsåtkomst till arket.
  • Om du använder Wait-noder eller extern rendering varierar bearbetningstiderna. Öka väntetiden om efterföljande noder misslyckas på tomma svar.
  • SerpAPI och Apify har båda användningsgränser. Om arbetsflödet plötsligt returnerar partiella resultat: kontrollera din SerpAPI-dashboard för rate limiting och dina Apify-körningar för misslyckade crawls, och minska sedan batchstorleken.

Vanliga frågor

Hur snabbt kan jag implementera den här automatiseringen för Google Maps-leads?

Cirka en timme om du redan har API-nycklarna och en kopia av Google Sheet-mallen.

Kan icke-tekniska team implementera den här automatiseringen för Google Maps-leads?

Ja, men du vill ha någon som är bekväm med att koppla konton och API-nycklar. Det svåraste är oftast att installera community-noderna och säkerställa att kolumnerna i Google Sheet matchar.

Är n8n gratis att använda för det här arbetsflödet för automatisering av Google Maps-leads?

Ja. n8n har ett gratis self-hosted-alternativ 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 SerpAPI, Apify och OpenAI-användning.

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 self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.

Hur anpassar jag den här lösningen för automatisering av Google Maps-leads till mina specifika utmaningar?

Det kan du. Byt ut strukturen i Google Sheets “Searches” så att den inkluderar vertikal-taggar (som “brådskande” eller “högt värde”), och mappa sedan de fälten till steget “Store Emails in Sheet” så att varje resultat förblir segmenterat. Om du föredrar en annan crawler kan du ersätta Apify-förfrågan “Fetch Web Content” med en annan scraper så länge den returnerar HTML eller sidtext till AI Email Extractor. Och om du vill ha ett CRM-först-flöde kan du skicka rader till Pipedrive efter e-postextraheringen i stället för att vänta på en manuell import.

Varför failar min Google Sheets-anslutning i det här arbetsflödet?

Oftast har OAuth-tokenen gått ut eller så har Google-kontot du autentiserade med tappat åtkomst till arket. Återanslut Google Sheets-autentiseringen i n8n, öppna sedan kalkylarket och bekräfta att samma konto kan redigera både flikarna “Searches” och “Results”.

Vad är kapaciteten för den här lösningen för automatisering av Google Maps-leads?

Om du self-hostar beror kapaciteten främst på din server samt dina SerpAPI/Apify-gränser. På n8n Cloud beror det på din plans tillåtna antal körningar, och det här arbetsflödet kan förbruka flera körningar per körning eftersom det loopar genom resultaten. I praktiken börjar de flesta team med några sökningar per dag, bekräftar datakvaliteten och skalar sedan upp när de är trygga med rate limits och kostnader.

Är den här automatiseringen för Google Maps-leads bättre än att använda Zapier eller Make?

Ofta, ja. Det här arbetsflödet bygger på loopar, strukturerad tolkning och ett AI Agent-steg, vilket är där Zapier/Make-upplägg kan bli sköra eller dyra när volymen växer. n8n ger dig också self-hosting, så du kan köra stora batcher utan att betala per task. Nackdelen är uppsättning: du hanterar fler rörliga delar (community-noder, API-nycklar, datastruktur). Prata med en automatiseringsexpert om du vill ha en snabb rekommendation baserad på din veckovolym av leads.

När det här väl rullar blir din leadlista något du tar fram vid begäran, inte något du bävar inför. Arbetsflödet gör det repetitiva grävandet så att du kan lägga tiden på targeting, budskap och uppföljning.

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

Launch login modal Launch register modal