Manuell prospektering i Google Maps är den typen av arbete som känns ”produktivt” ända tills du inser att du har lagt hela förmiddagen på att kopiera namn, telefonnummer och webbplatser till ännu ett rörigt kalkylblad.
Om du sköter outreach som marknadsförare, hanterar pipeline som grundare eller driver kundlistor för en liten byrå, gör den här automatiseringen för Google Maps-leads om ett Telegram-meddelande till ett strukturerat Google Sheet du faktiskt kan använda.
Du får se vad workflowet gör, vad du behöver för att köra det och var de verkliga tidsvinsterna dyker upp när det rullar i bakgrunden.
Så fungerar automatiseringen
Se hur detta löser problemet:
n8n Workflow Template: Telegram till Google Sheets: rensade Google Maps-leads
flowchart LR
subgraph sg0["Telegram Flow"]
direction LR
n0@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Get dataset items", pos: "b", h: 48 }
n1@{ icon: "mdi:cog", form: "rounded", label: "Remove Duplicates", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Run Google Maps Scraper", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "Google maps database", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Pause for rate limit", pos: "b", h: 48 }
n6["<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/telegram.svg' width='40' height='40' /></div><br/>Telegram Trigger"]
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/>Extract Input Data"]
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/telegram.svg' width='40' height='40' /></div><br/>Notification message"]
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Extract Only Website URLs", pos: "b", h: 48 }
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetch Raw HTML Content from .."]
n11@{ icon: "mdi:robot", form: "rounded", label: "Extract Business Email from ..", pos: "b", h: 48 }
n12@{ icon: "mdi:database", form: "rounded", label: "Email Update", pos: "b", h: 48 }
n13@{ icon: "mdi:robot", form: "rounded", label: "AI Company Description Gener..", pos: "b", h: 48 }
n12 --> n5
n3 --> n8
n3 --> n13
n6 --> n7
n0 --> n1
n1 --> n3
n7 --> n2
n4 --> n9
n5 --> n3
n2 --> n0
n9 --> n10
n13 --> n4
n10 --> n11
n11 --> n12
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 n6 trigger
class n11,n13 ai
class n0,n2 decision
class n4,n12 database
class n10 api
class n7 code
classDef customIcon fill:none,stroke:none
class n6,n7,n8,n10 customIcon
Utmaningen: att göra Google Maps-resultat till en användbar leadlista
Att hitta leads i Google Maps är enkelt. Att göra dem till en strukturerad lista är den jobbiga delen. Du söker, öppnar profiler, kopierar namnet, klistrar in telefonnumret, hämtar webbplatsen och försöker hålla formateringen konsekvent. Sedan upptäcker du dubbletter. Eller att hälften av posterna saknar webbplats. Eller så kommer du till outreach och inser att du fortfarande inte förstår vad företaget faktiskt gör. Det är inte bara förlorad tid. Det är tappat momentum. Prospektering blir ett måste du undviker, och det bromsar allt annat.
Friktionen byggs på, särskilt när du upprepar samma ”research”-steg för varje nisch, varje stad, varje kampanj.
- Att copy-pasta listningar från Google Maps till Google Sheets skapar inkonsekventa rader som är svåra att filtrera senare.
- Dubbletter smyger sig in snabbt, så teamet kontaktar samma företag två gånger eller diskuterar vilken rad som är ”den senaste”.
- Utan snabb kontext lägger du extra tid på att dubbelkolla webbplatser bara för att skriva en vettig första rad.
- E-postletning blir ett andra projekt, eftersom ”webbplats-URL” inte är samma sak som en ”kontaktbar lead”.
Lösningen: Telegram → Apify-scraping → AI-berikning → Google Sheets
Det här workflowet gör leadresearch till en enkel förfrågan du skickar från Telegram. Du meddelar boten med företagstyp, hur många leads du vill ha och en Google Maps-sök-URL. n8n skickar förfrågan till Apify, som hämtar offentliga företagslistningar från Google Maps. Därefter rensar workflowet listan genom att ta bort dubbletter, så att arket förblir tillförlitligt när du kör flera sökningar. Sedan berikar det varje företag med en AI-genererad sammanfattning och försöker extrahera en professionell e-postadress genom att besöka företagets webbplats och analysera sidinnehållet. Till sist skriver det allt till ett strukturerat Google Sheet och pingar dig på Telegram när bearbetningen är klar.
Workflowet startar med ett Telegram-meddelande. Därifrån samlar Apify in listningar och n8n batchar igenom dem för att skapa sammanfattningar och e-postadresser. Slutresultatet är ett enda Google Sheet som är redo för outreach, routing eller synk till ditt CRM.
Vad som förändras: före vs. efter
| Det här tar bort | Effekten du märker |
|---|---|
|
|
Verklig effekt i praktiken
Säg att du behöver 50 leads för ”restauranger” i en stad. Manuellt lägger du kanske cirka 3 minuter per listning (öppna, kopiera detaljer, klistra in, rimlighetskolla), vilket blir ungefär 2,5 timmar, plus ytterligare 30 minuter för att rensa dubbletter och formatera. Med det här workflowet skickar du ett Telegram-meddelande (cirka en minut) och låter sedan Apify scrapa och n8n berika listan medan du gör annat. Du väntar fortfarande på bearbetningen, men din handpåläggning sjunker till några minuter, och Google Sheet dyker upp redan strukturerat.
Krav
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Telegram för att skicka leadförfrågan.
- Apify för att scrapa Google Maps-listningar.
- Google Sheets för att lagra den rensade leaddatabasen.
- OpenAI API-nyckel (hämta den i dina kontoinställningar hos OpenAI).
Kunskapsnivå: Nybörjare. Du kopplar konton, klistrar in API-nycklar och väljer ett mål-kalkylark.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Workflow-flödet
Ett Telegram-meddelande kickar igång allt. Du skickar en enkel förfrågan som ”restauranger, 5, [Google Maps URL]” till din bot, och n8n tolkar meddelandet till strukturerad input.
Apify hämtar de offentliga listningarna. n8n triggar Google Maps-scrapern i Apify och hämtar sedan dataset-posterna som innehåller företagsnamn, kategorier, platser, telefonnummer och webbplatser (när de finns).
Listan rensas och berikas. Dubbletter tas bort, därefter itererar workflowet igenom företagen i batchar. OpenAI genererar en kort företagssammanfattning, och workflowet hämtar även webbplatsens HTML så att GPT kan hitta en professionell e-postadress när den finns.
Allt hamnar i Google Sheets och du får en notis. Arket uppdateras först med de viktigaste listningsfälten, och därefter fylls e-postkolumnen på i takt med att adresser hittas. Ett sista Telegram-meddelande bekräftar att körningen är klar.
Du kan enkelt ändra formatet på Telegram-meddelandet för att samla in extra input (som stad, språk eller nischkvalificerare) utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera Telegram-triggern
Konfigurera arbetsflödets startpunkt så att ett Telegram-meddelande sätter igång skrapning och berikning.
- Lägg till och öppna Telegram Incoming Trigger och välj den uppdateringstyp som inkluderar message.
- Autentiseringsuppgifter krävs: Anslut era Telegram Bot API-uppgifter i Telegram Incoming Trigger.
- Skicka testmeddelanden till er bot för att bekräfta att den tar emot uppdateringar.
sector;limit;mapsUrl, till exempel Restaurants;50;https://maps.google.com/....Steg 2: Anslut Google Sheets
Konfigurera arket som används för att lagra leads, sammanfattningar och upptäckta e-postadresser.
- Öppna Update Maps Sheet och välj mål-Document och Sheet.
- Verifiera att kolumnmappningarna inkluderar värden som
={{ $('Batch Iterate Items').item.json.title }},={{ $json.message.content.companySummary }}och={{ $('Batch Iterate Items').item.json.website }}. - Öppna Update Email Column och välj samma Document och Sheet.
- Ställ in matchningskolumnen till title och bekräfta att Email är mappad till
={{ $json.message.content }}. - Autentiseringsuppgifter krävs: Anslut era Google Sheets OAuth2-uppgifter i både Update Maps Sheet och Update Email Column.
Steg 3: Sätt upp indata-parsning och Maps-skrapning
Parsa Telegram-meddelandet och använd det för att trigga Apifys Google Maps-scraper.
- I Parse Input Payload behåller ni JavaScript-koden som delar upp meddelandet i
sector,limitochmapsUrl. - Öppna Execute Maps Scraper och bekräfta att customBody använder parsade värden som
{{ $('Parse Input Payload').item.json.limit }},{{ $('Parse Input Payload').item.json.sector }}och{{ $('Parse Input Payload').item.json.mapsUrl }}. - Autentiseringsuppgifter krävs: Anslut era Apify API-uppgifter i både Execute Maps Scraper och Fetch Dataset Entries.
- I Fetch Dataset Entries bekräftar ni att Dataset ID är satt till
={{ $json.defaultDatasetId }}. - Behåll Eliminate Repeats inställd på att jämföra title för att deduplicera resultat.
Steg 4: Konfigurera berikning och AI-bearbetning
Generera sammanfattningar, extrahera webbplatsens HTML och upptäck e-postadresser för varje lead.
- I Batch Iterate Items ställer ni in er batchstorlek om ni vill ha kontrollerad bearbetning.
- Öppna Generate Company Summary och behåll jsonOutput aktiverat för att returnera
companySummary. - Autentiseringsuppgifter krävs: Anslut era OpenAI-uppgifter i Generate Company Summary och Detect Email via GPT.
- I Map Website Field mappar ni Site internet till
={{ $('Batch Iterate Items').first().json.website }}. - I Retrieve Site HTML sätter ni URL till
={{ $json['Site internet'] }}. - I Detect Email via GPT behåller ni prompten som extraherar en enda e-postadress från
{{ $json.data }}.
Steg 5: Konfigurera utdataåtgärder och throttling
Spara berikade poster, uppdatera e-postadresser, sänk takten på förfrågningar och notifiera när det är klart.
- I Update Maps Sheet behåller ni Operation inställd på
appendoch validerar alla mappade kolumner, inklusivecompanySummaryIn. - I Update Email Column behåller ni Operation inställd på
appendOrUpdatemed matchingColumns satt tilltitle. - I Throttle Pause ställer ni amount till
2för att införa en fördröjning mellan batcher. - I Send Completion Notice ställer ni text till
DONEoch behåller chatId som={{ $('Telegram Incoming Trigger').first().json.message.chat.id }}. - Autentiseringsuppgifter krävs: Anslut era Telegram Bot API-uppgifter i Send Completion Notice.
Steg 6: Testa och aktivera ert arbetsflöde
Validera end-to-end-flödet från Telegram-indata till Sheets-utdata innan ni slår på det.
- Klicka Execute Workflow och skicka ett Telegram-meddelande i formatet
sector;limit;mapsUrl. - Bekräfta att Execute Maps Scraper returnerar en dataset och att Fetch Dataset Entries matar ut poster.
- Verifiera att en rad läggs till i Update Maps Sheet med ett ifyllt fält companySummaryIn.
- Bekräfta att Update Email Column fyller i Email-värdet för matchande title.
- Säkerställ att Send Completion Notice skickar
DONEtillbaka till den ursprungliga chatten. - När ni är nöjda, växla arbetsflödet till Active för produktionsanvändning.
Saker att se upp med
- Apify-inloggningar kan löpa ut eller kräva särskilda behörigheter. Om något skapar fel, kontrollera först din Apify-token i n8n:s credential-vy.
- Om du använder Wait-noder eller extern scraping varierar processtiderna. Öka väntetiden om efterföljande steg fallerar eftersom datasetet ännu inte är färdigifyllt.
- Standardprompter i OpenAI-noderna är generiska. Lägg in din tonalitet och kvalificeringskriterier tidigt, annars kommer du att skriva om sammanfattningar och outreach-vinklar för hand.
Vanliga frågor
Cirka 30 minuter om du redan har kontona och API-nycklarna.
Ja. Ingen kodning krävs. Du kommer mest att koppla ihop tjänster och välja var datan ska hamna i Google Sheets.
Ja. n8n har ett gratis self-hostat alternativ 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 med kostnader för OpenAI och Apify, som beror på hur många leads du scrapar och berikar.
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 dig obegränsade körningar men kräver grundläggande serverhantering.
Börja med att ändra Telegram-inputformatet och parsningen så att förfrågan matchar ditt arbetssätt (till exempel: nisch + stad + antal leads). Du kan också justera Apify-scraperns inställningar (som maxCrawledPlacesPerSearch) för att hämta fler eller färre listningar per körning. För berikning: justera prompten i noden ”Generate Company Summary” så att den matchar din ICP och lägg till kvalificeringssignaler du bryr dig om. Om du inte behöver e-post kan du hoppa över webbplatsens HTML och delen ”Detect Email via GPT” för att göra körningarna snabbare.
Oftast beror det på en felaktig bot-token eller att fel Telegram-credentials är valda i trigger-noden.
I n8n Cloud beror kapaciteten främst på din plans månatliga körningar och hur många leads du hanterar per körning. Om du self-hostar finns inget tak för körningar, men serverresurser och Apify/OpenAI:s rate limits blir flaskhalsen. I praktiken kör många team batchar på 20–100 leads åt gången för att hålla berikningen stabil. Om du vill köra tusentals lägger du vanligtvis in mer throttling och sparar mellanresultat så att omkörningar inte skapar dubbletter.
Ofta, ja, eftersom det här workflowet bygger på batchning, avdubbning och berikning i flera steg, vilket blir krångligt (och dyrt) i enklare automationsverktyg. n8n hanterar loopar och villkorslogik snyggt, så att du kan bearbeta ett företag i taget utan att bygga ett spaghetti-scenario. Du har också möjlighet att self-hosta, vilket spelar roll om du planerar att köra prospektering ofta. Samtidigt kan Zapier eller Make fungera om allt du vill ha är ett grundflöde: ”scrapa en gång, skicka rader en gång”. Om du är osäker, prata med en automationsexpert så mappar vi det till din volym och dina verktyg.
När detta väl rullar blir prospektering en snabb förfrågan i stället för en halvdagsuppgift. Det är ärligt talat skillnaden mellan ”vi borde göra outreach” och att faktiskt göra det.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.