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

SerpAPI + Google Sheets: rensade Google Maps-leads

Rickard Andersson Partner, Nodenordic.se

Att skrapa leads från Google Maps manuellt ser enkelt ut tills du har gjort det i en timme. Sedan blir det flikar överallt, copy-paste-missar och en “lista” du inte riktigt litar på.

Det här är den typen av röra som byråägare känner av under outreach-rusher, och som marknadsförare som bygger lokala kampanjer springer in i hela tiden. Till och med en liten företagare som försöker få till samarbeten kan använda den här Maps lead-automationen för att bygga en strukturerad lista med färre dubbletter och faktiska kontaktvägar.

Du får se hur arbetsflödet hämtar Google Maps-resultat med SerpAPI, sparar dem i Google Sheets och sedan hittar generiska mejladresser (som contact@) med EmailListVerify så att din outreach kan komma igång snabbare.

Så här fungerar automationsflödet

Hela n8n-flödet, från trigger till slutlig output:

n8n Workflow Template: SerpAPI + Google Sheets: rensade Google Maps-leads

Problemet: Google Maps-leads är stökiga att samla in

Google Maps är fullt av bra lokala företagsleads, men det jobbiga är att få in datan i en outreach-lista som går att använda. Du söker, öppnar profiler, kopierar namn, hämtar telefonnummer, letar efter webbplatser och upprepar. Och efter allt det arbetet sitter du ändå med dubbletter, saknade fält och rader som inte går att kontakta eftersom det saknas mejl. Värst av allt är osäkerheten. Du vet inte om listan är komplett, och du vill inte slösa en dag på att mejla återvändsgränder.

Det skenar snabbt. Här är var det faller isär i verkligheten.

  • Att kopiera 30–50 listningar till ett kalkylark tar ett par timmar, och det är lätt att klistra in ett telefonnummer på fel rad.
  • Dubbletter smyger sig in när du kör flera sökningar i närliggande städer, vilket gör att du kontaktar samma företag två gånger.
  • De flesta team har inget konsekvent sätt att hålla koll på offset och paginering, så resultaten tar tyst slut innan du når den verkliga volymen.
  • Även med en strukturerad lista är nästa varv att hitta kontaktmejl ännu en omgång flik-hoppande som dödar momentum.

Lösningen: SerpAPI → Sheets → mejlupptäckt, automatiskt

Det här flödet tar en enkel input (dina Google Maps-sökfrågor i ett Google Sheet) och gör om den till en leadlista som är redo för outreach. Det startar på schema eller via en manuell körning, läser in dina sökingångar och skickar dem till SerpAPI för att skrapa Google Maps-resultat. Resultaten städas upp till ett konsekvent format, filtreras så att tomma poster inte smutsar ner datan och avdubblettas så att du inte jagar samma ställe två gånger. Därefter sparar flödet de strukturerade “platserna” i ett ark, kontrollerar om varje plats har en webbplats och extraherar domänen när den finns. Till sist anropar det EmailListVerify för att hitta ett generiskt kontaktmejl och lägger tillbaka mejlraderna i Google Sheets.

Flödet börjar med dina sparade sökningar i Google Sheets. SerpAPI hämtar listningar från Google Maps och n8n hanterar paginering så att du fortsätter samla resultat i stället för att stanna tidigt. Efter avdubblettning och webbplatskontroller fyller EmailListVerify i kontaktmejl och allt hamnar tillbaka i Sheets för outreach.

Det du får: automation vs. resultat

Exempel: så här ser det ut

Säg att du riktar in dig på 3 städer och 2 kategorier (som “restauranger” och “hotell”), så du kör 6 Google Maps-sökningar varje vecka och samlar in cirka 30 leads per sökning. Om du gör det manuellt kanske du lägger ungefär 2 minuter per lead på att kopiera detaljer och kontrollera om det finns en webbplats, vilket blir cirka 6 timmar för 180 leads. Med det här flödet uppdaterar du sökingångarna i Google Sheets (kanske 10 minuter), låter SerpAPI hämta resultat, och sedan fyller EmailListVerify i generiska mejl automatiskt. Du granskar fortfarande arket, men du granskar data i stället för att bygga den från grunden.

Det här behöver du

  • n8n-instans (testa 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 lead-output
  • SerpAPI för att skrapa Google Maps-resultat
  • EmailListVerify API-nyckel (hämta den i din EmailListVerify-dashboard)

Kunskapsnivå: Medel. Du kopplar konton, lägger in API-nycklar och bekräftar att kolumnerna i arket matchar vad flödet förväntar sig.

Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).

Så fungerar det

Din söklista triggar körningen. Flödet startar antingen på ett veckoschema eller när du klickar på manuell körning. Det läser direkt in dina förberedda sökingångar från Google Sheets.

SerpAPI hämtar Google Maps-resultat. n8n bygger query-parametrarna, skickar begäran via ett HTTP-anrop och aggregerar sedan resultaten över flera sidor med en offset-loop så att du inte stannar på första sidan.

Resultaten struktureras och avdubblettas. Flödet expanderar posterna, filtrerar bort tomma records, normaliserar fält till en konsekvent struktur och tar bort dubbletter innan “platserna” sparas i ditt ark.

Mejlupptäckt körs bara där det är relevant. Om en listning har en webbplats extraherar flödet domänen och skickar den till EmailListVerify. De upptäckta mejlraderna läggs tillbaka i Google Sheets så att outreach kan starta.

Du kan enkelt ändra kolumnerna för Google Sheets-input så att de matchar dina egna namn, eller byta schematid efter behov. Se hela implementeringsguiden nedan för anpassningsalternativ.

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

Steg 1: Konfigurera manuella och schemalagda triggers

Ställ in hur workflowet startar, antingen manuellt för testning eller enligt ett veckoschema för körningar i produktion.

  1. Öppna Manual Run Trigger för att tillåta körningar på begäran under uppsättning och testning.
  2. Öppna Weekly Schedule Start och ställ in regelintervallet till weeks för att köra veckovis.
  3. Bekräfta att båda triggers är kopplade till Load Search Inputs så att startpunkten är konsekvent för manuella och schemalagda körningar.

Steg 2: Anslut Google Sheets för indata och lagring

Läs in sök-URL:er och lagra resultaten i Google Sheets.

  1. I Load Search Inputs ställer ni in Document till https://docs.google.com/spreadsheets/d/[YOUR_ID]/edit#gid=[YOUR_ID] och väljer arket Add your search url here. Credential Required: Anslut era googleSheetsOAuth2Api-credentials.
  2. I Store Places Sheet ställer ni in Operation till appendOrUpdate, väljer arket Results och säkerställer att kolumnerna mappar till uttryck som {{ $json.title }} och {{ $json.place_id }}. Credential Required: Anslut era googleSheetsOAuth2Api-credentials.
  3. I Append Email Rows ställer ni in Operation till appendOrUpdate, väljer arket Emails och behåller uttrycken för kolumnmappningen, till exempel {{ $json.email }} och {{ $json.domain }}. Credential Required: Anslut era googleSheetsOAuth2Api-credentials.

Steg 3: Sätt upp URL-tolkning och förberedelse av sökfråga

Omvandla indata-URL:er till keyword- och geo-parametrar för API-frågan.

  1. I Parse URL Parameters ställer ni in keyword till {{ $json.URL.match(/\/search\/(.*?)\//)[1] }}.
  2. I Parse URL Parameters ställer ni in geo till {{ $json.URL.match(/(@[^\?\/]+)/)[1]}}.
  3. Verifiera att Load Search Inputs skickar utdata till Parse URL Parameters, och därefter till Google Maps API Query.

Steg 4: Konfigurera pagineringsloopen för Google Maps API

Använd SerpApi för att hämta flera sidor med resultat och aggregera dem.

  1. I Google Maps API Query ställer ni in URL till https://serpapi.com/search.json och aktiverar Send Query med parametrarna: engine=google_maps, q={{$json?.search_parameters?.q || $json.keyword }}, ll={{ $json?.search_parameters?.ll|| $json.geo }}, type=search, start={{ $json.start|| 0 }}. Credential Required: Anslut era serpApi-credentials.
  2. I Derive Next Offset behåller ni JS-koden som extraherar start från serpapi_pagination.next för att driva pagineringen.
  3. I Pagination Loop Check säkerställer ni att villkoren kontrollerar att {{ $json.search_parameters.start }} och {{ $json.serpapi_pagination.next }} inte är tomma, skickar true-resultat tillbaka till Google Maps API Query och false-resultat till Aggregate Serp Results.
  4. I Aggregate Serp Results behåller ni JS-koden som samlar in alla local_results från Google Maps API Query.

Steg 5: Rensa, normalisera och lagra platsdata

Expandera de aggregerade resultaten, ta bort tomma poster, normalisera data och avduplicera platser innan ni lagrar dem.

  1. I Expand Result Items ställer ni in Field to Split Out till allData.
  2. I Filter Empty Records ställer ni in villkoret Value 1 till {{ $json[0] }} med Operation isNotEmpty.
  3. I Normalize Data Shape behåller ni JS-koden som sammanfogar items till en enda array och filtrerar bort null-värden.
  4. I Deduplicate Places ställer ni in Operation till removeDuplicates med Fields to Compare satt till place_id.
  5. Bekräfta att sekvensen följer: Aggregate Serp ResultsExpand Result ItemsFilter Empty RecordsNormalize Data ShapeDeduplicate PlacesStore Places Sheet.

Steg 6: Konfigurera e-postuppslagning och lägg till resultat

Extrahera webbplatsdomänen, begär kontaktadresser och lägg till verifierade e-postadresser i utdataarket.

  1. I Validate Website Exists behåller ni villkoret att {{ $json.website }} inte börjar med [undefined] för att filtrera giltiga webbplatser.
  2. I Extract Domain Name behåller ni JS-koden som tolkar domänen och tar bort www. om den finns.
  3. I Email Lookup Request ställer ni in URL till https://api.emaillistverify.com/api/findContact, Method till POST och JSON Body till { "domain": "{{ $json.domain }}" }. Credential Required: Anslut era httpHeaderAuth-credentials.
  4. Säkerställ att flödet fortsätter från Email Lookup Request till Append Email Rows.

⚠️ Vanlig fallgrop: Om Validate Website Exists filtrerar bort för många poster, bekräfta att ert indataark innehåller ett giltigt website-fält för varje plats.

Steg 7: Testa och aktivera ert workflow

Kör ett manuellt test för att verifiera att workflowet hämtar data, avduplicerar den och lägger till e-postresultat i Sheets.

  1. Klicka på Manual Run Trigger för att starta en testkörning.
  2. Bekräfta att Store Places Sheet skriver rader till arket Results och att Append Email Rows skriver till arket Emails.
  3. Kontrollera att Pagination Loop Check avslutas vid Aggregate Serp Results när det inte finns någon ytterligare paginering.
  4. När ni är nöjda, växla workflowet till Active så att Weekly Schedule Start körs automatiskt.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Google Sheets-autentisering kan löpa ut eller kräva specifika behörigheter. Om det skapar fel, kontrollera först statusen för n8n-credentials och delningsinställningarna för målarket.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre fram misslyckas på grund av tomma svar.
  • SerpAPI-anrop kan misslyckas tyst när parametrar ändras eller när du slår i planbegränsningar. Om ditt output-ark plötsligt ser tunt ut, granska SerpAPI-svaret i HTTP Request-noden och bekräfta att du fortfarande ligger under din månatliga sökquota.

Vanliga frågor

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

Cirka 30 minuter om dina Sheets och API-nycklar är redo.

Behöver jag kunna koda för att automatisera Maps lead-automation?

Nej. Du kopplar främst konton och klistrar in API-nycklar. Den enda “tekniska” delen är att se till att kolumnerna i ditt Google Sheet matchar flödets förväntningar.

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

Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på $20/månad för högre volymer. Du behöver också räkna in SerpAPI-begränsningar (250 sökningar/månad på gratisplanen) och EmailListVerify-kostnader (från cirka $0.05 per mejl).

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 klarar n8n bra. Self-hosting ger obegränsade körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här Maps lead-automationsflödet för att rikta in mig på flera branschkategorier?

Ja, och det är mest en Google Sheets-ändring. Lägg till fler rader i ditt “search inputs”-ark (olika kategorier, städer eller radie-termer), så loopar flödet igenom dem vid den schemalagda körningen. Om du vill ha separata output-flikar per kategori kan du duplicera logiken i “Store Places Sheet” / “Append Email Rows” och routa baserat på query-fältet.

Varför misslyckas min Google Sheets-anslutning i det här flödet?

Oftast är det behörigheter. Återanslut Google Sheets-credential i n8n och bekräfta sedan att det specifika kalkylarket är delat med det Google-konto som är kopplat. Kontrollera också att arknamnet och fliknamnen fortfarande matchar det flödet refererar till, eftersom ett flikbyte i namn kan stoppa skrivningar direkt.

Hur många leads kan den här Maps lead-automationen hantera?

På n8n Cloud Starter kan du köra en bra mängd veckovis skrapning för mindre kampanjer, men den verkliga begränsningen är din SerpAPI-plan och hur många sökningar du kör. Om du self-hostar finns ingen körningsgräns från n8n i sig, så skalning handlar främst om API-kvoter och serverstorlek. I praktiken börjar de flesta team med några hundra leads per vecka och breddar sedan sökningarna när de litar på outputen.

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

Ofta, ja. Det här flödet bygger på loopar, paginering, avdubblettning och villkorskontroller (som “finns det en webbplats?”), vilket n8n hanterar snyggt utan att varje extra gren blir en kostnadsfråga. Self-hosting är också viktigt om du planerar att skala skrapkörningar. Zapier eller Make kan vara enklare för ett litet tvåstegsflöde, men de blir klumpiga när du hanterar batchar av resultat och normaliserar data. Vill du ha hjälp att välja rätt upplägg för din outreach-volym kan du prata med en automationsexpert.

Du får ett lead-ark du faktiskt kan använda, inte ett du måste sitta och passa. Sätt upp det en gång, kör det varje vecka och håll din outreach i rullning.

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