Att bygga en lokal leadlista låter enkelt tills du sitter djupt nere i flikar, kopierar adresser, letar efter mejladresser och rättar röriga kalkylbladsrader som inte matchar.
OSM lead automation är en livräddare när du är personen som ska få “hitta 500 företag” att faktiskt hända. Marknadschefer känner det vid kampanjlanseringar. Småföretagare känner det när de äntligen har tid att göra outreach. Säljare känner det eftersom felfri data är skillnaden mellan att ringa och att fastna.
Det här flödet hämtar företagsleads från OpenStreetMap (via det kostnadsfria Overpass API), berikar dem genom att skrapa webbplatser efter saknade mejladresser, tar bort dubletter och loggar sedan allt i Google Sheets. Du ser exakt vad som automatiseras, vilka resultat du kan förvänta dig och vad du behöver för att köra det.
Så fungerar den här automatiseringen
Hela n8n-flödet, från trigger till slutligt resultat:
n8n Workflow Template: OpenStreetMap till Google Sheets: leadlistor snabbt klara
flowchart LR
subgraph sg0["When Executed by Another Workflow Flow"]
direction LR
n1@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing", pos: "b", h: 48 }
n2@{ icon: "mdi:play-circle", form: "rounded", label: "When Executed by Another Wor..", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Away Items With No Co..", 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/merge.svg' width='40' height='40' /></div><br/>Append Items (No Website and.."]
n8["<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/>Merge Items with HTML"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Website HTML"]
n10["<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/>Append Items"]
n11["<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/>Clean Emails"]
n12["<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/>Scrape HomePage"]
n13@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Has Email?", pos: "b", h: 48 }
n14@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Has No Website?", pos: "b", h: 48 }
n15["<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/>Organize Data"]
n16@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Output Fields", pos: "b", h: 48 }
n17@{ icon: "mdi:swap-vertical", form: "rounded", label: "Extract List", pos: "b", h: 48 }
n18@{ icon: "mdi:database", form: "rounded", label: "Google Sheets", pos: "b", h: 48 }
n19@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out", pos: "b", h: 48 }
n20["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>HTTP Request"]
n19 --> n16
n13 --> n7
n13 --> n8
n13 --> n5
n10 --> n6
n11 --> n10
n17 --> n19
n20 --> n17
n20 --> n1
n15 --> n14
n14 --> n7
n14 --> n13
n5 --> n8
n5 --> n9
n12 --> n11
n9 --> n5
n16 --> n15
n8 --> n12
n2 --> n20
n6 --> n18
n7 --> n10
end
subgraph sg1["When clicking ‘Test workflow’ Flow"]
direction LR
n0@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items1", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Execute Workflow", pos: "b", h: 48 }
n21@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Test workflow’", pos: "b", h: 48 }
n0 --> n3
n4 --> n0
n3 --> n4
n21 --> n3
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 n2,n21 trigger
class n6,n13,n14 decision
class n18 database
class n9,n20 api
class n11,n12,n15 code
classDef customIcon fill:none,stroke:none
class n7,n8,n9,n10,n11,n12,n15,n20 customIcon
Problemet: lokal leadresearch blir snabbt kalkylbladskaos
Om du någon gång har byggt en “enkel” lista med rörmokare, tandläkare, mäklarkontor eller butiker i en stad så vet du hur det brukar gå. Först samlar du namn och webbplatser. Sedan inser du att hälften av posterna saknar mejl, några har tre telefonnummer och en massa är dubletter eftersom du hämtade från flera källor. Nästa steg är städningen: dela upp kolumner, standardisera adresser och försöka att inte klistra in samma företag två gånger. Under tiden väntar outreach, och din lista är fortfarande inte användbar.
Det drar iväg snabbt. Här är var det brukar fallera i verkligheten:
- Du lägger cirka 2 timmar bara på att samla in de första 100 leads, och listan är ändå ofullständig.
- Mejladresser saknas, så du öppnar varje webbplats och letar manuellt efter en “Kontakt”-sida.
- Dubletter smyger sig in när du utökar sökområdet, vilket gör att du slösar tid på att kontakta samma företag två gånger.
- Arket ser “okej” ut tills du börjar filtrera, och då märker du inkonsekventa fält som skapar fel i sortering och segmentering.
Lösningen: hämta leads från OpenStreetMap och logga dem strukturerat i Sheets
Det här n8n-flödet gör OpenStreetMap till en repeterbar leadkälla som du kan köra när som helst när du behöver prospekt inom en nisch och region. Du börjar med att ange en lista med frågor (tänk “California, Los Angeles, dentist” eller “Texas, Austin, realtor”). Automatiseringen kör frågorna en och en via Overpass API så att du inte får timeouts, och extraherar sedan företagsdetaljer som namn, adresser, telefonnummer, webbplatser, öppettider och sociala konton när det finns. När ett företag har en webbplats men ingen mejladress i datan besöker flödet startsidan, hämtar HTML:en och söker efter mejladresser. Till sist rensar den mejllistan, slår ihop poster, tar bort dubletter och skriver en korrekt formaterad rad i Google Sheets så att din outreach-lista är redo.
Flödet startas manuellt och batchar sedan dina frågor för att hålla det stabilt. Det hämtar resultat från OpenStreetMap, berikar saknade kontaktfält genom att skrapa webbplatser och avslutar med att uppdatera ditt kalkylblad med standardiserade kolumner som du kan filtrera direkt.
Det du får: automatisering vs. resultat
| Det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du behöver en lista med 300 “tandläkare” i tre närliggande städer. Manuellt kan du lägga cirka 5 minuter per lead på att hitta webbplatsen, kopiera adressen och kontrollera om det finns en mejladress, vilket blir ungefär 25 timmar monotont arbete. Med det här flödet klistrar du in tre frågor, kör det en gång och låter batchning plus skrapning göra grovjobbet. Även om det kör i cirka 30–40 minuter medan du gör något annat får du ändå ett deduplicerat Google Sheet som är redo för outreach samma dag.
Det du behöver
- 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 och hantera din leadlista.
- OpenStreetMap Overpass API för kostnadsfri lokal företagsdata.
- Åtkomst till Google-konto (auktorisera det i Google Sheets-noden)
Kunskapsnivå: Medel. Du klistrar in frågor, kopplar Google Sheets och justerar några filter och skrapmönster.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Manuell körning med din frågelista. Du startar flödet och anger en lista med kombinationer av nyckelord + plats (yttre område, inre område och nischen du riktar in dig på).
Batchad API-insamling. n8n itererar genom dina frågor i batchar och skickar en HTTP-begäran till Overpass API, och extraherar sedan resultatlistan till en användbar uppsättning objekt.
Berikning när kontaktuppgifter saknas. Om ett lead har en webbplats men ingen mejladress hämtar flödet startsidans HTML, slår tillbaka den i posten, tolkar sannolika mejladresser och rensar listan så att skräpadresser tas bort.
Strukturerat utflöde till Google Sheets. Flödet mappar fält till konsekventa kolumner, slår ihop dubletter, filtrerar bort leads som inte uppfyller dina krav och uppdaterar kalkylbladet med rader som du kan sortera, segmentera och arbeta utifrån.
Du kan enkelt ändra frågeformatet och filtreringsreglerna för att matcha din nisch, eller för att bara behålla leads med specifika fält (som ett telefonnummer plus en mejladress). Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera Triggered by Other Flow Trigger
Det här arbetsflödet kan starta från ett annat arbetsflöde eller köras manuellt för test.
- Lägg till och öppna Triggered by Other Flow för att möjliggöra körning från ett uppströms arbetsflöde.
- Låt Manual Start Trigger vara ansluten till Batch Iterate A för ad hoc-testning med den fästa exempeldata.
- Bekräfta att det initiala flödet går från Triggered by Other Flow → Primary API Request enligt körordningen.
Steg 2: Anslut Google Sheets
Leads lagras i ett kalkylark i slutet av flödet.
- Öppna Update Spreadsheet och välj målkalkylark och arbetsblad för att lagra resultaten.
- Inloggningsuppgifter krävs: Anslut era Google Sheets-inloggningsuppgifter.
Steg 3: Sätt upp primär hämtning av leads och mappning
Dessa noder hämtar lead-data, extraherar resultat och normaliserar fält för efterföljande berikning.
- Konfigurera Primary API Request med er endpoint för lead-källan och nödvändiga query-parametrar.
- Säkerställ att Extract Result List endast output:ar arrayen med de leads ni vill bearbeta.
- Använd Split Items för att dela resultatslistan till enskilda lead-poster.
- Mappa fält i Map Output Fields till er föredragna struktur (t.ex. namn, webbplats, telefon, e-post).
- Verifiera att Arrange Data Fields standardiserar schemat som senare kontroller och sammanslagningar bygger på.
Steg 4: Konfigurera berikning av webbplats och e-post
Det här segmentet berikar poster genom att hämta och tolka startsidans HTML när e-post- eller webbplatsdata saknas.
- Ställ in regler i Check Missing Website för att identifiera leads utan en webbplats-URL.
- Ställ in regler i Check Email Presence för att identifiera leads utan e-post.
- Konfigurera Batch Iterate B för att styra takten för HTML-hämtning.
- Ställ in Fetch Site HTML för att hämta webbplats-URL:en från varje lead.
- Använd Combine With HTML för att slå ihop lead-data med det hämtade HTML-innehållet.
- Tolka och rensa i Parse Homepage HTML och Sanitize Email List för att extrahera giltiga e-postadresser.
Steg 5: Konfigurera sammanslagning, underarbetsflöde och filtrering
Dessa noder slår ihop berikningsresultat, anropar ett underarbetsflöde och filtrerar ofullständiga poster före output.
- Öppna Run Sub-Workflow (Configure Required) och välj målarbetsflödet som ska köras.
- Använd Delay Step för att strypa takten mellan anrop till underarbetsflödet och batchbearbetning.
- Bekräfta att Merge No Web/Email och Merge Records slår ihop både berikade och icke-berikade flödesgrenar.
- Ställ in villkor i Filter Missing Contacts för att exkludera poster utan viktig kontaktinformation.
- Låt Do Nothing Action ligga kvar som en platshållare för framtida logik eller felsökning.
Steg 6: Konfigurera output till kalkylark
Slutför output genom att skriva de rensade och filtrerade leads till Google Sheets.
- I Update Spreadsheet mappar ni inkommande fält till rätt kolumner.
- Bekräfta att inkommande data kommer från Filter Missing Contacts och inte från en tidigare nod.
Steg 7: Testa och aktivera ert arbetsflöde
Validera arbetsflödet end-to-end innan ni aktiverar det i produktion.
- Klicka Execute Workflow med Manual Start Trigger för att köra en testbatch.
- Bekräfta att Primary API Request returnerar resultat och att Update Spreadsheet skriver nya rader.
- Kontrollera att poster som saknar webbplats eller e-post hanteras korrekt av Check Missing Website och Check Email Presence.
- När resultaten ser korrekta ut, slå om arbetsflödet till Active för att tillåta körningar via Triggered by Other Flow.
Vanliga fallgropar
- Google Sheets-inloggningar kan gå ut eller behöva specifika behörigheter. Om något skapar fel, kontrollera först Google-kopplingen i n8n under fliken Credentials.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströms noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera utdata för alltid.
Vanliga frågor
Cirka 30 minuter om ditt Google Sheet är förberett.
Nej. Du kopplar Google Sheets och justerar några filter och textmönster.
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å ta hänsyn till Overpass API-kostnader, som är gratis vid typisk användning.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärt och hanterar n8n bra. Egen hosting ger dig obegränsat antal körningar men kräver grundläggande serverhantering.
Ja, men du behöver justera filtreringssteget som tar bort ofullständiga poster och finjustera logiken för mejltolkning/rensning. I praktiken anpassar de flesta steget “Filter Missing Contacts” och regex-reglerna som används när startsidans HTML tolkas. Du kan också ändra vad som skrivs till Sheets i steget för fältmappning så att bara kvalificerade leads blir rader. Det är en liten ändring, men den gör att din outreach-lista inte fylls med kanske-leads.
Oftast beror det på att auktoriseringen för ditt Google-konto har löpt ut. Koppla om Google Sheets-uppgifterna i n8n och kör sedan en liten testbatch igen för att bekräfta att rader skrivs. Om du skriver till ett skyddat kalkylblad eller en delad enhet med begränsade behörigheter kan det också blockera uppdateringar. En sak till: säkerställ att målbladets/flikens namn matchar exakt, eftersom en minimal avvikelse kan se ut som ett anslutningsproblem.
Tusentals, så länge du batchar dina frågor och håller Overpass-förfrågningarna på en rimlig nivå.
För det här flödet har n8n några fördelar: mer komplex logik med obegränsad förgrening utan extra kostnad, ett alternativ för egen hosting med obegränsade körningar och inbyggd flexibilitet för kod/sammanslagning vid deduplicering och skrapning. Zapier eller Make kan fungera, men webbscraping plus tung datastädning blir ofta klumpigt (och dyrt) när du skalar. Om du bara behöver ett litet tvåstegsflöde för att “skicka rader till Sheets” kan de verktygen räcka. Om du är osäker, prata med en automationsexpert så pekar vi dig i rätt riktning.
Ärligt talat: när du väl har ett strukturerat, deduplicerat Sheet som fyller sig självt slutar leadresearch vara en veckovis syssla. Du sätter upp det, kör det när du behöver det och lägger tiden på outreach i stället för städning.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.