Du hittar en lista med lovande företagswebbplatser, och sedan försvinner en eftermiddag på att leta efter en “Kontakt”-sida, kopiera e-postadresser, dubbelkolla telefonnummer och klistra in allt i ett kalkylark som fortfarande inte är redo för outreach.
Säljteam märker det när pipelinen är tunn. Rekryterare stöter på samma vägg när de behöver kontaktuppgifter till rekryterande chefer. Och tillväxtteam som bygger listor känner också igen smärtan. Den här Apify-automationen för lead enrichment gör en enkel lista med domäner till en strukturerad Google Sheets-leadfil med e-postadresser, telefonnummer och källsidor.
Nedan ser du exakt vad flödet gör, vad du får ut på andra sidan och hur du sätter upp det utan att göra det här till ett veckolångt “automationsprojekt”.
Så fungerar den här automationen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Google Sheets + Apify: berika leads från webbplatser
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set google sheet URL & origi..", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>wait for previous nodes to f.."]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>format data for Apify INPUT .."]
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Run Actor on Apify", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Get Results from Apify", pos: "b", h: 48 }
n6@{ icon: "mdi:database", form: "rounded", label: "Add emails, phones, socials...", pos: "b", h: 48 }
n7@{ icon: "mdi:database", form: "rounded", label: "Create new sheet for founded..", pos: "b", h: 48 }
n8@{ icon: "mdi:database", form: "rounded", label: "Get website URLs from first ..", pos: "b", h: 48 }
n4 --> n5
n5 --> n6
n3 --> n4
n8 --> n2
n2 --> n3
n0 --> n1
n1 --> n7
n1 --> n8
n7 --> n2
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n4,n5 decision
class n6,n7,n8 database
class n3 code
classDef customIcon fill:none,stroke:none
class n2,n3 customIcon
Problemet: kontaktresearch på webbplatser är långsam (och stökig)
Lead research via webbplatser ser enkelt ut tills du gör det i någon större volym. En webbplats har e-postadresser i sidfoten. En annan gömmer dem i en PDF. En tredje listar bara ett kontaktformulär, så du börjar jaga runt på “Om oss”, “Team” och slumpmässiga undersidor. Sedan klistrar du in det du hittat i Google Sheets, men du glömmer var du hittade det, eller så råkar du ta fel adress (info@ istället för en direkt kontakt). Efter 20 webbplatser är du trött, ditt ark är inkonsekvent och outreach blir försenat.
Tidsförlusten är inte bara själva surfandet. Det är det ständiga växlandet mellan kontexter och all efterbearbetning.
- Varje webbplats blir 5–10 klick och en massa kopiera-klistra, vilket snabbt blir mycket över en lista på 100 domäner.
- Du får ofullständig data, så någon måste “färdigställa arket” innan någon kan skicka ett första mejl.
- Källspårning saknas ofta, vilket gör verifiering och QA irriterande manuellt.
- Gör du detta varje vecka är det så småfel blir ett permanent och fult CRM-problem.
Lösningen: berika din webbplatslista med Apify och skriv tillbaka till Sheets
Det här flödet börjar med ett Google Sheet som innehåller en webbplats-URL eller domän per rad. När du kör det läser n8n listan, förbereder en payload och skickar den till Apifys Email & Phone Extractor-actor. Apify crawlar sedan varje webbplats för att hitta kontaktuppgifter som e-postadresser och telefonnummer, plus användbar kontext som källsidorna där uppgifterna hittades (och ofta sociala länkar som LinkedIn eller Twitter). När Apify är klart hämtar flödet datasetet tillbaka till n8n och lägger till allt i en helt ny flik i Google Sheets, redan strukturerad som en leadfil.
Flödet startar när du manuellt kör det i n8n. Det skapar ett nytt output-ark, hämtar din webbplatslista, kör Apify-extraktionen och skriver sedan tillbaka resultatet till Google Sheets så att teamet kan filtrera, verifiera och börja outreach.
Det här får du: automation vs. resultat
| Vad det här flödet automatiserar | Resultatet du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du behöver kontaktuppgifter för 80 målkonton. Manuellt kan du lägga cirka 8 minuter per webbplats på att söka, kopiera och formatera, vilket är runt 10 timmars arbete. Med det här flödet klistrar du in de 80 domänerna i Google Sheets, trycker på “Execute” i n8n (cirka 2 minuter) och låter Apify köra i bakgrunden. Även om scrapingen tar tid sitter du inte fast i repetitivt surfande, och du får ändå en ny flik med e-postadresser, telefonnummer och sidorna de kom ifrån.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Google Sheets för indata-listan och output-filen.
- Apify för att extrahera e-post, telefon och källor.
- Apify API-token (hämta den i Apify Console → Settings → Integrations).
Svårighetsnivå: Nybörjare. Du kopplar konton, klistrar in en Google Sheet-URL och kör en testkörning.
Vill du inte sätta upp detta själv? Prata med en automationsspecialist (kostnadsfri 15-minuters konsultation).
Så fungerar det
Du triggar det manuellt. Kör flödet när ditt “websites”-ark är klart, så att du har kontroll över när krediter används och när output skapas.
Det hämtar arkinformationen och skapar en output-flik. Du anger Google Sheet-URL:en och originalflikens namn en gång, sedan skapar flödet en ny destination för de berikade resultaten.
Apify sköter crawling och extraktion. n8n förbereder payloaden och startar Apify Email & Phone Extractor-actor, och hämtar sedan datasetet när körningen är klar (den här delen kan ta tid på stora webbplatser).
Kontakter läggs till tillbaka i Google Sheets. Sista steget skriver e-postadresser, telefonnummer och källsidor i det nya arket så att du kan filtrera, deduplicera och starta outreach.
Du kan enkelt anpassa output-kolumnerna för att matcha ditt CRM-importformat efter behov. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera den manuella triggern
Ställ in den manuella triggern så att ni kan köra workflowet vid behov under test.
- Lägg till och öppna Manual Launch Trigger.
- Inga fält krävs; behåll standardinställningarna och spara.
Steg 2: Anslut Google Sheets
Definiera källarket och skapa utdataarket parallellt.
- Öppna Assign Sheet Source Info och ställ in google_sheet_url till
xxxxxxxxxxxx. - I samma nod, ställ in google_sheet_name till
websites. - Öppna Generate Output Sheet och ställ in Operation till
create. - Ställ in Title till
=emails-phones-{{new Date().format('dd/mm-HH:mm')}}och Document ID till={{ $json.google_sheet_url }}. - Credential Required: Anslut era googleSheetsOAuth2Api-credentials i Generate Output Sheet.
- Öppna Fetch Website List och ställ in Sheet Name till
={{ $json.google_sheet_name }}och Document ID till={{ $json.google_sheet_url }}. - Credential Required: Anslut era googleSheetsOAuth2Api-credentials i Fetch Website List.
- Assign Sheet Source Info matar ut till både Generate Output Sheet och Fetch Website List parallellt.
url eller website, eftersom Prepare Apify Payload läser från de fälten.Steg 3: Synkronisera och bygg Apify-payloaden
Slå ihop de parallella grenarna och bygg indata-payloaden för Apify-aktorn.
- Säkerställ att både Generate Output Sheet och Fetch Website List är kopplade till Synchronize Branches.
- Öppna Prepare Apify Payload och behåll JavaScript Code som den är, inklusive loopen som läser Fetch Website List med
$('Fetch Website List').all().
Steg 4: Konfigurera Apify-körning och hämtning av dataset
Kör Apify-aktorn och hämta det resulterande datasetet för berikning.
- Öppna Execute Apify Actor och ställ in Actor Source till
store. - Ställ in Custom Body till
={{ $json }}. - Credential Required: Anslut era apifyApi-credentials i Execute Apify Actor.
- Öppna Retrieve Apify Dataset och ställ in Resource till
Datasetsoch Dataset ID till={{ $json.defaultDatasetId }}. - Credential Required: Anslut era apifyApi-credentials i Retrieve Apify Dataset.
Steg 5: Konfigurera utdata till Google Sheets
Lägg till den extraherade kontaktinformationen i utdataarket som skapades tidigare.
- Öppna Append Contacts to Sheet och ställ in Operation till
append. - Ställ in Sheet Name till
={{ $('Generate Output Sheet').first().json.sheetId }}. - Ställ in Document ID till
={{ $('Assign Sheet Source Info').first().json.google_sheet_url }}. - Lämna Columns i auto-map-läge för att mappa Apify-fält till arkkolumnerna.
- Credential Required: Anslut era googleSheetsOAuth2Api-credentials i Append Contacts to Sheet.
Steg 6: Testa och aktivera ert workflow
Kör ett manuellt test för att bekräfta att workflowet skapar ett nytt ark och lägger till berikade kontakter.
- Klicka på Execute Workflow från Manual Launch Trigger.
- Verifiera att ett nytt ark skapas med en titel som
emails-phones-{{new Date().format('dd/mm-HH:mm')}}. - Kontrollera att Append Contacts to Sheet skriver rader i det nyligen skapade arket.
- När allt är bekräftat, växla workflowet till Active för användning i produktion.
Vanliga fallgropar
- Inloggningsuppgifter för Google Sheets kan gå ut eller sakna skrivrättigheter. Om rader inte läggs till, börja med att kontrollera åtkomst för det anslutna kontot och delningsinställningarna för kalkylarket.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Apify-körningar kan vara långsamma på webbplatser med många sidor, och actorn kan slå i gränser beroende på din plan. Kontrollera Apifys körloggar för att bekräfta att den fortfarande crawlar och inte har fastnat.
Vanliga frågor
Cirka 30 minuter om dina Google Sheets- och Apify-konton är redo.
Nej. Du kopplar främst inloggningsuppgifter och uppdaterar Google Sheet-URL:en och fliknamnet.
Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volymer. Du behöver också räkna in Apify-kostnader baserat på hur många webbplatser och sidor du skannar.
Två alternativ: n8n Cloud (hanterat, enklast setup) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och hanterar n8n bra. Egen drift ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, men det beror på hur du vill att slutarket ska se ut. Du kan behålla Apify-extraktionen som den är och helt enkelt ta bort telefonrelaterade kolumner i mappningen “Append Contacts to Sheet”, vilket är det snabbaste sättet. Om du vill minska vad som samlas in, justera konfigurationen du skickar i “Prepare Apify Payload” så att actorn fokuserar på fälten du bryr dig om. De flesta team anpassar också outputen för att lägga till en leadstatus-kolumn och ett anteckningsfält för manuell granskning.
Oftast beror det på en utgången eller felaktig Apify API-token. Skapa en ny token i ditt Apify-konto och uppdatera Apify-inloggningen i n8n, och kör sedan flödet igen. Om det fortfarande misslyckas, kontrollera loggarna på Apifys körsida för behörighetsproblem med actorn eller begränsningar i din plan, och bekräfta att actor-namn/konfiguration matchar vad flödet förväntar sig.
I praktiken hundratals per körning för de flesta små team, men den verkliga begränsningen är Apifys crawl-tid och din n8n-kapacitet för körningar. På n8n Cloud Starter begränsas du av antalet körningar per månad; högre planer klarar mer. Om du kör egen drift finns ingen körningsgräns, så det handlar främst om din server och hur lång tid varje webbplats tar att skanna.
Ofta, ja. Det här flödet kräver kontroll i flera steg: skapa ett output-ark, starta en Apify actor-körning, vänta tills den är klar, sedan hämta ett dataset och lägga till rader. n8n hanterar den typen av “långkörande jobb + hämtning”-flöde mer bekvämt, och egen drift kan hålla kostnaderna stabila när du skalar. Zapier eller Make kan fortfarande fungera, men du kan behöva jonglera fördröjningar, polling-steg och task-förbrukning. Om du är osäker, prata med en automationsspecialist så får du en rak rekommendation.
När detta väl kör är ditt “research”-steg bara en uppdatering i kalkylarket och en enda körning i n8n. Ärligt talat är det en betydligt bättre användning av din tid än att öppna 80 webbläsarflikar.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.