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 + ScrapingBee: berikade leads, klara

Rickard Andersson Partner, Nodenordic.se

Ditt lead-ark ser ”fullt” ut, men hälften av raderna är återvändsgränder. Fel webbplatser, saknade kontaktsidor, generiska kataloger och mejladresser som studsar direkt när du trycker på skicka.

Det här är typen av röra som bromsar marketing ops först. Men byråägare som bygger prospektlistor och säljteam som gör veckovis outreach känner av det också. Med automatiserad Sheets lead enrichment förvandlar du en enkel rad med ”bransch + stad + delstat” till en användbar företagssajt och riktiga mejladresser, utan att lägga eftermiddagen i Google.

Det här flödet hämtar leads från Google Sheets, söker med Serper.dev, skrapar sannolika sidor via ScrapingBee, extraherar e-postadresser och skriver tillbaka allt till ditt ark med tydliga statusuppdateringar.

Så fungerar den här automatiseringen

Se hur det här löser problemet:

n8n Workflow Template: Google Sheets + ScrapingBee: berikade leads, klara

Utmaningen: att förvandla ”leads” till kontakter du faktiskt kan mejla

Att bygga en leadlista är enkelt. Att bygga en som är redo för outreach är där tiden försvinner. Du börjar med några kolumner i Google Sheets och öppnar sedan en ny flik för varje rad: söker upp företaget, gissar vilken sajt som är den riktiga, klickar runt för att hitta en kontaktsida och kopierar in allt som ser ut som en mejladress. Multiplicera det med 200 rader. Misstag smyger sig in snabbt, och ärligt talat är det mentalt utmattande eftersom varje företag strukturerar sin sajt olika och kataloger fortsätter dyka upp i sökresultaten.

Det summeras snabbt. Här är var det fallerar i verkligheten.

  • Du slösar cirka 5–10 minuter per lead bara på att lista ut den ”riktiga” webbplatsen jämfört med listningar och aggregator-sidor.
  • Folk klistrar in fel URL i arket, och det enda felaktiga fältet saboterar hela din outreach-sekvens.
  • Mejljakt blir inkonsekvent, så en person hittar kanonbra kontakter medan en annan inte hittar något och ingen vet varför.
  • Statusspårning är oftast manuell, vilket betyder dubbletter, missade rader och möten om ”Har vi redan gjort det här?”.

Lösningen: lead enrichment i Google Sheets med Serper.dev + ScrapingBee

Det här flödet startar i ditt Google-ark. När du ”aktiverar” en rad kontrollerar det först att grunderna finns (bransch, stad, delstat). Om något saknas flaggar det raden så att du inte slösar tid på skräpinput. Om raden ser bra ut markerar det status som Running, förbereder sökparametrar som land och språk och skickar sedan en fråga till Serper.dev för att hitta sannolika företagswebbplatser. Därefter genererar det en uppsättning ”site variants” och kandidater till kontaktsidor, validerar URL:erna och skickar de bästa alternativen till ScrapingBee för skrapning. Mejladresser extraheras från de skrapade sidorna, kontrolleras mot vad du redan har i arket och skrivs sedan tillbaka i ett korrekt formaterat, kommaseparerat format. Till sist markeras raden som Finished så att listan håller ordning.

Flödet startar från en Sheets Row Trigger. Därifrån används Serper.dev för att hitta de bästa företagssidorna, och ScrapingBee tar hand om det stökiga: att hämta innehåll på ett stabilt sätt. Utdata är enkel: uppdaterade kolumner i Google Sheets (företagsnamn, URL, mejladresser och status) så att din outreach-lista alltid är redo att använda.

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

Verklig effekt

Säg att du berikar 100 leads varje vecka. Manuellt kan du lägga cirka 8 minuter per lead på att söka, klicka och jaga en användbar mejladress, vilket är ungefär 13 timmar av rutinjobb. Med det här flödet aktiverar du rader i Google Sheets och låter det köra: en minut för att lägga upp kön, sedan söker, validerar, skrapar och uppdaterar automatiseringen arket medan du gör annat. Även om du fortfarande granskar resultatet några minuter i slutet sparar du vanligtvis större delen av den dagen.

Krav

  • n8n-instans (testa n8n Cloud gratis)
  • Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
  • Google Sheets för att lagra leads och resultat.
  • Serper.dev för att hitta riktiga företagswebbplatser.
  • ScrapingBee för att skrapa sidor och extrahera mejladresser.
  • Google Sheets API-inloggning (hämta från Google Cloud Console).
  • Serper.dev API-nyckel (hämta från din Serper.dev-dashboard).
  • ScrapingBee API-nyckel (hämta från din ScrapingBee-dashboard).

Kunskapsnivå: Nybörjare. Du kopplar konton, klistrar in API-nycklar och mappar några kolumner i Google Sheets.

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

Flödet i workflowet

En rad i Google Sheets ”aktiveras”. Triggern bevakar ditt ark efter rader du vill processa, så du styr vad som körs och när (smidigt när du först vill städa upp input).

Grundläggande validering av input sker direkt. Om bransch, stad eller delstat saknas skriver workflowet statusen ”Missing information” och går vidare. Inga bortkastade API-anrop.

Serper.dev hittar sannolika företagssidor. n8n skickar en sökförfrågan, tolkar resultaten och lägger till research-rader så att workflowet kan testa flera kandidater i stället för att lita på första länken det ser.

URL:er valideras och sedan skrapar ScrapingBee de bästa alternativen. Workflowet kontrollerar att sidor svarar korrekt, skrapar innehåll och extraherar mejladresser. Om mejladresser finns, slår det upp vad du redan har och uppdaterar posten.

Google Sheets uppdateras och raden avslutas. Du får företagsnamn, URL, kommaseparerade mejladresser och statusen Finished så att arket håller sig strukturerat.

Du kan enkelt ändra land, språk eller antal resultat för att passa olika regioner och nischer. Se hela implementationsguiden nedan för anpassningsalternativ.

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

Steg 1: konfigurera triggern för Sheets-rader

Ställ in triggern så att den bevakar raduppdateringar i ert indataark.

  1. Lägg till noden Sheets Row Trigger och ställ in EventrowUpdate.
  2. Ställ in Columns To WatchActivate.
  3. Ställ in Poll TimeseveryMinute.
  4. Välj rätt Document och Sheet Name för ert indataark.
  5. Credential Required: Anslut era googleSheetsTriggerOAuth2Api-credentials.

Steg 2: anslut Google Sheets för status- och dataoperationer

Konfigurera Google Sheets-noderna som uppdaterar status och skriver researchdata.

  1. I Mark Status Running, ställ in Operationupdate, mappa Client till {{ $json.Client }} och ställ in StatusRunning.
  2. I Flag Missing Data, ställ in Operationupdate, mappa Client till {{ $json.Client }} och ställ in StatusMissing data.
  3. I Append Research Rows, ställ in Operationappend och mappa: City till {{ $('Assign Search Inputs').item.json.city }}, State till {{ $('Assign Search Inputs').item.json.state }}, Client till {{ $json.client }}, Company till {{ $json.company }} och website till {{ $json.Website }}.
  4. I Lookup Existing Emails, ställ in filtret så att det slår upp Company med {{ $json.company }}.
  5. I Update Email Records, ställ in Operationupdate och mappa emails till {{ $json.emails ? $json.emails + ", " + $('Extract Email Addresses').item.json.email : $('Extract Email Addresses').item.json.email }}, samt Company till {{ $('Extract Email Addresses').item.json.company }}.
  6. I Mark Status Finished, ställ in Operationupdate, mappa Client till {{ $('Generate Site Variants').item.json.client }} och ställ in StatusFinished.

Credential Required: Anslut era googleSheetsOAuth2Api-credentials till Mark Status Running och Flag Missing Data.

⚠️ Vanlig fallgrop: De andra Google Sheets-noderna (Append Research Rows, Lookup Existing Emails, Update Email Records, Mark Status Finished) kräver också Google Sheets-credentials, men inga är konfigurerade. Lägg till samma googleSheetsOAuth2Api-credentials på var och en av dem.

Steg 3: sätt upp validering och förberedelse av sökinput

Validera inkommande rader och bygg sökinput för Serper-frågan.

  1. I Input Validation, säkerställ att de tre villkoren kontrollerar att följande värden inte är tomma: {{ $json.Client }}, {{ $json.City }} och {{ $json.State }}.
  2. Bekräfta att Input Validation skickar giltiga rader till Mark Status Running och ogiltiga rader till Flag Missing Data.
  3. I Assign Search Inputs, aktivera Keep Only Set och ställ in fält: state till {{ $('Sheets Row Trigger').item.json.State }}, city till {{ $('Sheets Row Trigger').item.json.City }}, client till {{ $('Sheets Row Trigger').item.json.Client }}, business_type till {{ $node["Sheets Row Trigger"].json["Business Type"] }}, country till Argentina, country_code till AR, language till es-419 och result_count till 10.

Steg 4: konfigurera sökning och länkparsning

Skicka fråga till Serper och filtrera de organiska resultaten till företagskandidater.

  1. I Serper Search Request, ställ in URLhttps://google.serper.dev/search och Request MethodPOST.
  2. Aktivera JSON Parameters och ställ in Body Parameters JSON{ "q": "{{ $json.business_type }} in {{ $json.city }}, {{ $json.state }}, {{ $json.country }}", "num": {{ $json.result_count }}, "gl": "{{ $json.country_code }}", "hl": "{{ $json.language }}" }.
  3. Credential Required: Anslut era httpHeaderAuth-credentials för Serper API.
  4. Låt Parse Company Links vara som den är för att filtrera bort svartlistade resultat och mappa värdena company, Website, client, state och city.

Steg 5: generera URL-varianter och batchbearbetning

Skapa flera URL-varianter för kontakt/support och iterera igenom dem för scraping.

  1. Behåll Append Research Rows ansluten efter Parse Company Links för att logga företagskandidater innan scraping.
  2. I Generate Site Variants, behåll JavaScript-koden som bygger flera URL-sökvägar för varje webbplats.
  3. I Batch Iterator, lämna standardinställningarna för batchning om ni inte behöver styra genomströmningen.
  4. Bekräfta flödet: Append Research RowsGenerate Site VariantsBatch IteratorValidate Page URLs.

⚠️ Vanlig fallgrop: Om ert indataark använder andra kolumnnamn (t.ex. ”website” vs ”Website”), justera mappningen i Append Research Rows och Generate Site Variants därefter.

Steg 6: konfigurera scraping, parsning och e-postuppdateringar

Validera sidor, hämta HTML, extrahera e-postadresser och uppdatera befintliga poster.

  1. I Validate Page URLs, ställ in URL{{ $('Generate Site Variants').item.json.Website }}.
  2. I Scrape Result Check, behåll villkoret som kontrollerar att {{ $json.error.message }} är tomt innan ni fortsätter att scrapa.
  3. I ScrapingBee Request, ställ in URLhttps://app.scrapingbee.com/api/v1/?api_key=[CONFIGURE_YOUR_API_KEY]={{ $('Generate Site Variants').item.json.Website }}&render_js=true och ersätt [CONFIGURE_YOUR_API_KEY] med er ScrapingBee-nyckel.
  4. I Scrape Success Check, behåll villkoret som kontrollerar att {{ $json.error.message }} är tomt innan ni extraherar e-postadresser.
  5. I Extract Email Addresses, behåll JavaScript-koden som extraherar och avduplicerar e-postadresser från HTML-fältet data.
  6. I Email Presence Check, använd villkoret inte-tomt på {{ $('Extract Email Addresses').item.json.email }} för att avgöra om ni ska uppdatera.
  7. Bekräfta uppdateringsflödet: Email Presence CheckLookup Existing EmailsUpdate Email RecordsDelay PauseBatch Iterator.

⚠️ Vanlig fallgrop: ScrapingBee-URL:en innehåller en API-nyckel som platshållare. Om ni lämnar [CONFIGURE_YOUR_API_KEY] oförändrad kommer scraping att misslyckas och arbetsflödet loopar tillbaka via Batch Iterator.

Steg 7: testa och aktivera ert arbetsflöde

Verifiera hela enrichment-pipelinen och slå sedan på den för produktionsuppdateringar.

  1. Kör arbetsflödet manuellt med en testraduppdatering i indataarket och säkerställ att Sheets Row Trigger triggas.
  2. Kontrollera att Mark Status Running uppdaterar status i indataarket till Running eller att Flag Missing Data uppdaterar den till Missing data när fält är tomma.
  3. Verifiera att Append Research Rows lägger till resultat i dataarket och att Update Email Records skriver e-postvärden.
  4. Bekräfta att Mark Status Finished sätter slutstatusen till Finished efter batchbearbetning.
  5. Aktivera arbetsflödet genom att slå på reglaget Active i n8n.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Se upp med

  • Google Sheets-inloggningar kan löpa ut eller kräva specifika behörigheter. Om det börjar skapa fel, kontrollera först kopplingen för n8n-credentials och dina OAuth-samtycken/inställningar i Google Cloud.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
  • Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du redigera utdata i all evighet.

Vanliga frågor

Hur snabbt kan jag implementera den här automatiseringen för Sheets lead enrichment?

Cirka 30 minuter om dina API-nycklar och åtkomst till Google Sheets är klara.

Kan icke-tekniska team implementera den här lead enrichment-lösningen?

Ja. Du skriver ingen kod, men du behöver mappa kolumnerna i ditt ark och klistra in ett par API-nycklar i n8n.

Är n8n gratis att använda för det här workflowet för Sheets lead enrichment?

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 användningen av Serper.dev och ScrapingBee (båda har gratisnivåer och sedan användningsbaserad prissättning).

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

Hur anpassar jag den här Sheets lead enrichment-lösningen till mina specifika utmaningar?

Börja med att låta country, country_code, language och result_count komma från kolumner i ditt ark, så att varje rad kan styra hur den söker. Du kan också bygga ut blacklist-logiken i ”Generate Site Variants” / filtreringskoden för att undvika kataloger du ogillar. Om du vill ha mer än mejladresser kan du utöka koden i ”Extract Email Addresses” för att fånga telefonnummer eller sociala länkar och skriva tillbaka dem som nya kolumner.

Varför misslyckas min Google Sheets-anslutning i det här workflowet för Sheets lead enrichment?

Oftast handlar det om utgångna Google OAuth-uppgifter eller att fel Google-konto är kopplat till n8n-credential. Koppla om Google Sheets i n8n och bekräfta sedan att arket är delat med det kontot och att rätt kalkylark är valt. Om bara uppdateringar misslyckas, kontrollera att dina kolumnnamn matchar vad workflowet förväntar sig (inklusive activate-fältet).

Vilken kapacitet har den här Sheets lead enrichment-lösningen?

Om du kör egen hosting finns ingen gräns för antal körningar (det är främst din server och API-begränsningar som sätter taket). På n8n Cloud beror kapaciteten på din plans månatliga körningar. I praktiken begränsas workflowet av rate limits i Serper.dev och ScrapingBee, så de flesta team kör det i batcher på några dussin till några hundra leads åt gången.

Är den här automatiseringen för Sheets lead enrichment bättre än att använda Zapier eller Make?

Ofta, ja, eftersom det här flödet bygger på förgreningslogik (flera kontroller), loopar genom kandidat-URL:er och kodbaserad parsing, vilket lätt blir krångligt och dyrt i många no-code-verktyg. n8n hanterar split-in-batches-loopar snyggt, och du kan köra egen hosting med obegränsade körningar. Zapier eller Make kan fortfarande fungera bra om din process är ”sök en gång, lagra ett resultat”, men det här workflowet är byggt för verklig stökighet: dubbletter, dåliga URL:er och flera sidor per företag. En sak till: att behålla statusfält som Running och Finished i Google Sheets gör överlämningar i ops enklare, och n8n passar det upplägget bra. Om du tvekar, prata med en automationsexpert så kvalitetssäkrar vi din setup.

När det här väl rullar slutar ditt ark vara en önskelista och blir i stället en outreach-kö. Workflowet tar hand om det repetitiva grävarbetet så att du kan fokusera på budskapet och erbjudandet.

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