Prospektering ska inte behöva kännas som att spela whack-a-mole med webbläsarflikar. Men om du letar upp LinkedIn-profiler via Google kan du redan rutinen: sök, öppna, kopiera URL:en, klistra in någonstans och inse att du just fångade samma person två gånger.
Den här SerpAPI Sheets leads-setupen träffar SDR:er först, helt ärligt. Rekryterare som gör nischade sökningar känner av det också, och det gör även konsulter som bygger listor åt kunder. Resultatet är enkelt: ett strukturerat Google Sheet med publika LinkedIn-profil-URL:er (med namn och nyckelord) utan den stökiga copy-paste-cykeln.
Du får se hur arbetsflödet hämtar resultat över flera Google-sidor, extraherar det användbara och loggar allt i ett kalkylark du faktiskt kan jobba från.
Så fungerar den här automatiseringen
Se hur detta löser problemet:
n8n Workflow Template: SerpAPI till Google Sheets, LinkedIn-leads loggas
flowchart LR
subgraph sg0["On form submission Flow"]
direction LR
n0["<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/form.svg' width='40' height='40' /></div><br/>On form submission"]
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Format Keywords", 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/code.svg' width='40' height='40' /></div><br/>Build Page List"]
n3@{ icon: "mdi:web", form: "rounded", label: "SerpAPI Search", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check how many results are r..", pos: "b", h: 48 }
n5["<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/form.svg' width='40' height='40' /></div><br/>No profiles found"]
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out", pos: "b", h: 48 }
n7["<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/>Get Full Name to property of.."]
n8@{ icon: "mdi:database", form: "rounded", label: "Append profile in sheet", pos: "b", h: 48 }
n9["<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/form.svg' width='40' height='40' /></div><br/>Form Response"]
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n6 --> n7
n3 --> n4
n2 --> n10
n1 --> n2
n10 --> n9
n10 --> n3
n0 --> n1
n8 --> n10
n4 --> n5
n4 --> n6
n7 --> n8
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 decision
class n8 database
class n3 api
class n2,n7 code
classDef customIcon fill:none,stroke:none
class n0,n2,n5,n7,n9 customIcon
Utmaningen: göra sökresultat till en användbar leadlista
Google är ofta det snabbaste sättet att hitta publika LinkedIn-profiler inom en specifik nisch, men resultaten är inte en lista du kan använda. De är utspridda över sidor, titlar är inkonsekventa och du slutar med att göra ”datainmatning” och låtsas att det är research. Även när du är noggrann smyger dubbletter in eftersom samma profil dyker upp under lite olika sökningar, eller för att du går på minnet. Sedan kommer uppföljningssmärtan: du behöver fortfarande ett kalkylark för att sortera, tagga, avduplicera och lämna över till outreach.
Det drar snabbt iväg. Här är var det fallerar i verkligheten.
- Du tappar cirka 1–2 timmar per lista bara på att kopiera URL:er, namn och kontext till ett ark.
- Paginering är lätt att glömma, så du stannar på sida ett och missar merparten av resultaten.
- Profilnamn blir röriga eftersom titlar innehåller extra text som avgränsare och företagsnamn.
- Team slutar med ”nästan samma” listor, vilket gör avduplicering och uppföljning av outreach till ett huvudbry.
Lösningen: SerpAPI hämtar LinkedIn-profiler och loggar dem till Sheets
Det här arbetsflödet ger dig ett enkelt formulär där du anger några nyckelord (kommaseparerade) och väljer hur många Google-sidor du vill hämta. Därifrån formaterar det dina nyckelord till en renare Google-fråga, genererar korrekta pagineringsoffsets (0, 10, 20 och så vidare) och kör varje söksida via SerpAPI. Varje resultat packas upp till individuella LinkedIn-profilobjekt, och sedan gör ett litet städsteg att personens fullständiga namn extraheras från söktiteln. Till sist läggs varje profil till i ditt Google Sheet med tidsstämpel och de ursprungliga nyckelorden, så att du kan filtrera senare och behålla kontexten ”varför sparade vi det här?”.
Arbetsflödet startar med en formulärinskickning (”LinkedIn Search”). Det loopar igenom de sidor du begärde, hämtar Google-resultat via SerpAPI och skriver varje LinkedIn-profil-URL till Google Sheets. När det är klart får du ett bekräftelsemeddelande som säger att du ska kolla arket.
Vad som förändras: före vs. efter
| Detta eliminerar | Effekten du märker |
|---|---|
|
|
Effekt i verkligheten
Säg att du gör en nischad sökning och hämtar 3 Google-sidor (cirka 30 resultat). Manuellt lägger du oftast kanske 2 minuter per resultat på att öppna flikar, hämta LinkedIn-URL:en och klistra in namn i ett ark, vilket blir runt en timme. Med den här automatiseringen skickar du in formuläret på cirka en minut, låter arbetsflödet hämta sida 1–3 i bakgrunden och är klar när Google Sheet är ifyllt. Arbetet skiftar från ”samla in” till ”avgöra vilka som är värda att kontakta”.
Krav
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- SerpAPI för att hämta Google-sökresultat pålitligt.
- Google Sheets för att lagra och dela leadlistan.
- SerpAPI API-nyckel (hämta den i din SerpAPI-dashboard).
Kunskapsnivå: Mellan. Du kopplar in autentisering, väljer ett kalkylark och (om du kör n8n Cloud) byter SerpAPI-nodens användning mot en HTTP Request.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Flödet i arbetsflödet
Ett enkelt formulär sätter igång det. Du skickar in nyckelord som ”python, fintech, warsaw” och väljer hur många Google-sidor som ska hämtas. Klart.
Dina nyckelord görs om till en bättre sökfråga. Arbetsflödet kapslar in varje nyckelord i parenteser och citattecken för att förbättra relevansen i Google, och förbereder sedan en sidkö med rätt offsets (0, 10, 20…).
SerpAPI hämtar resultat sida för sida. En loop kör varje köad sida genom SerpAPI-sökningen. Om SerpAPI inte returnerar några resultat svarar arbetsflödet direkt så att du inte sitter och tittar på ett tomt ark och undrar vad som hände.
Varje resultat städas upp och loggas. Arbetsflödet delar upp resultaten i enskilda objekt, extraherar ett korrekt formaterat fullständigt namn från titeltexten och lägger till Datum, Profil-URL, Fullständigt namn och Nyckelord i ditt Google Sheet.
Du kan enkelt ändra sökplats för att rikta in dig på en annan stad eller ett annat land utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera formulärtriggern
Det här arbetsflödet startar när en användare skickar in ett formulär. Ni definierar formulärfälten och svarsläget i Form Submit Trigger.
- Lägg till eller öppna Form Submit Trigger.
- Ställ in Form Title på
LinkedIn Search. - I Form Fields skapar ni två fält: Keywords (comma separated) och Pages to fetch (nummer).
- Ställ in Response Mode på
lastNodeså att den sista noden för formulärsvar returnerar resultatet.
Steg 2: anslut SerpAPI och Google Sheets
Det här arbetsflödet frågar SerpAPI och lägger till resultat i Google Sheets. Anslut båda inloggningsuppgifterna innan ni kör.
- Öppna SerpAPI Lookup och välj SerpAPI-inloggningsuppgiften.
- Inloggningsuppgift krävs: Anslut era serpApi-inloggningsuppgifter.
- Öppna Append to Sheet och välj Google Sheets-inloggningsuppgiften.
- Inloggningsuppgift krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter.
Steg 3: konfigurera nyckelordsbearbetning
Nu formaterar ni användarens nyckelord och bygger sidkön för SerpAPI-frågor.
- Öppna Keyword Formatter och säkerställ att uttrycket för värdet keywords är inställt på
{{ (() => { const keywords = $json["Keywords (comma separated)"] .split(',') .map(k => k.trim()) .filter(Boolean); return '("' + keywords.join('") ("') + '")'; })() }}. - Öppna Generate Page Queue och bekräfta att JavaScript Code använder formulärvärdena och de beräknade nyckelorden (som anges i noden).
- Verifiera att Generate Page Queue refererar till Form Submit Trigger och Keyword Formatter för
Pages to fetch,Keywords (comma separated)ochsubmittedAt.
Steg 4: konfigurera sökning, routning och tolkning av resultat
Den här delen kör SerpAPI-frågor, kontrollerar antalet resultat och expanderar varje organiskt resultat till enskilda objekt.
- I Batch Iterator behåller ni standardinställningarna för att bearbeta varje sidobjekt från Generate Page Queue.
- I SerpAPI Lookup ställer ni in q på
=site:pl.linkedin.com/in/ {{$json.keywordsGrouped}}och Location påWarsaw,Masovian Voivodeship,Poland. - I SerpAPI Lookup säkerställer ni att Additional Fields → start är
={{$json.start}}så att paginering fungerar. - I Evaluate Result Count behåller ni de två reglerna:
{{ parseInt($json.search_information.total_results) }}är lika med0för tomma listor och{{ $json.search_information.total_results }}större än0för icke-tomma listor. - I Expand Search Results ställer ni in Field To Split Out på
organic_results. - I Extract Full Name behåller ni JavaScript-koden som delar upp fältet
titleoch sparar det somfullName.
Steg 5: konfigurera utdata och formulärsvar
Skicka resultat till Google Sheets och svara formuläravsändaren baserat på om resultat hittades.
- I Append to Sheet ställer ni in Operation på
append. - Ställ in Document på kalkylarks-ID:t
[YOUR_ID]och Sheet pågid=0(Sheet1). - Mappa kolumner i Append to Sheet: Date →
{{ $('Form Submit Trigger').item.json.submittedAt }}, Profile →{{ $json.link }}, Keywords →{{ $('Form Submit Trigger').item.json['Keywords (comma separated)'] }}, Full name →{{ $json.fullName }}. - I No Results Reply bekräftar ni att Completion Title är
Responseoch att Completion Message ärNo profiles found based on params.. - I Return Form Response ställer ni in Completion Title på
Responseoch Completion Message påCheck linked file.
Steg 6: testa och aktivera ert arbetsflöde
Kör ett manuellt test för att verifiera formulärflödet, SerpAPI-resultaten och Google Sheets-utdata innan ni aktiverar arbetsflödet.
- Klicka på Execute Workflow och skicka in formuläret i Form Submit Trigger med exempelnyckelord och antal sidor.
- Bekräfta att SerpAPI Lookup returnerar resultat och att Append to Sheet skriver rader till ert kalkylark.
- Om inga resultat hittas, verifiera att No Results Reply skickar slutförandemeddelandet.
- När allt ser korrekt ut, växla arbetsflödet till Active för användning i produktion.
Se upp för
- SerpAPI-inloggning kan löpa ut eller ha planbegränsningar. Om något slutar fungera: kontrollera först användningen i din SerpAPI-dashboard och API-nyckeln som är sparad i n8n Credentials.
- Om du använder Wait-noder eller extern rendering varierar processeringstiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Behörigheter i Google Sheets kan skapa svårupptäckta fel. Om arket inte uppdateras, bekräfta att OAuth-kontot har redigeringsåtkomst till just det kalkylarket och den fliken.
Vanliga frågor
Oftast cirka 30 minuter när din SerpAPI-nyckel och ditt Google Sheet är redo.
Ja, men planera för en teknisk genomgång om du kör n8n Cloud och behöver ersätta community-SerpAPI-noden med en HTTP Request. Efter det är användningen bara att fylla i formuläret.
Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna in SerpAPI-kostnader baserat på hur många resultatsidor du hämtar.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärt och klarar n8n bra. Egen drift ger obegränsade körningar men kräver grundläggande serverhantering.
Du kan byta den fasta platsen i steget SerpAPI Lookup så att den matchar din målregion, eller ändra frågan från site:pl.linkedin.com/in/ till site:linkedin.com/in/ för bredare täckning. Om du vill ha mer än namn + URL kan du mappa fält som resultatsnippet till Google Sheets genom att redigera vad steget ”Append to Sheet” skriver. För avduplicering: lägg till en Google Sheets read/check före append och skriv bara nya URL:er när ”If”-villkoret säger att de inte redan finns.
Oftast är det en ogiltig eller utgången API-nyckel som ligger sparad i n8n Credentials. Det kan också vara en planbegränsning eller rate limiting om du hämtar för många sidor för snabbt, så kontrollera din SerpAPI-dashboard och sakta ner loopen med en kort väntan vid behov.
Den skalar upp till gränserna för din n8n-plan och din SerpAPI-kvot. n8n i egen drift har ingen körningsgräns, och det här arbetsflödet hanterar normalt några sidor (cirka 30–50 resultat) per körning utan problem; om du går långt över det, lägg in en liten fördröjning mellan sid-hämtningar för att hålla det stabilt.
Ofta, ja, om du bryr dig om paginering och datarensning. Zapier och Make kan göra HTTP-anrop, men att loopa igenom sidor, dela upp arrayer till objekt och köra egen extraktionslogik blir lätt pilligt, och det kan bli dyrt när antalet tasks ökar. n8n är helt enkelt mer flexibelt för arbetsflöden av typen ”sök → tolka → skriv rader”, och egen drift är en stor grej om du kör många prospekteringsjobb. Samtidigt: om du bara behöver ett engångsflöde i två steg ”anropa API och lägg till rad” kan Zapier eller Make gå snabbare att sätta upp. Prata med en automationsexpert om du vill ha en snabb rekommendation för just din volym.
När detta väl är på plats blir leadinsamling en bakgrundsaktivitet i stället för en daglig tidstjuv. Du får ett ark som är redo för outreach, enrichment eller överlämning, och du slutar bygga om samma lista från grunden.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.