Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

Bright Data till Google Sheets: rensade Maps-leads

Rickard Andersson Partner, Nodenordic.se

Att kopiera Google Maps-listningar till ett kalkylark låter enkelt tills du gör det för tre städer, två tjänstetyper och ett team som behöver datan senast på fredag.

Bright Data leads-automation ger störst effekt när outreach måste skalas. En marknadschef som ska mata kampanjer, en säljchef som ska hålla säljarna sysselsatta och en byråägare som bygger listor för flera kunder stöter alla på samma hinder: manuell insamling och röriga rader.

Det här flödet hämtar Google Maps-listningar via Bright Data, utökar sökningen till fler städer med hjälp av AI, tar bort dubbletter och skriver felfria leads till Google Sheets. Du får se hur flödet fungerar, vad du behöver och var team oftast kör fast.

Så fungerar den här automationen

Hela n8n-flödet, från trigger till slutlig output:

n8n Workflow Template: Bright Data till Google Sheets: rensade Maps-leads

Problemet: leadlistor från Google Maps blir snabbt röriga

Manuell leadgenerering från Google Maps är ett slit. Du söker, öppnar listningar, kopierar namn, klistrar in telefonnummer, hämtar webbplatser och inser sedan att hälften av listningarna saknar fältet du behöver. Därefter upprepar du allt för ”Austin” och ”Dallas” och ”Houston”, och till slut har ditt ark dubbletter, inkonsekventa kategorier och saknar sammanhang som Maps-URL eller antal recensioner. Det värsta är den mentala belastningen. Du kan inte se vad som redan är insamlat, vad som är nytt och vad som är säkert att lämna över till en säljare utan att dubbelkolla.

Det blir snabbt mycket. Här är var det fallerar när du försöker skala bortom en enda stad och ett enda sökord.

  • Du lägger cirka 2 timmar bara på att sammanställa en ”hyfsad” lista för en tjänst i en region.
  • Dubbletter smyger in när du utökar till fler städer, vilket gör att säljarna ringer samma företag två gånger.
  • Kategorier blir inkonsekventa eftersom människor märker upp saker olika under tidspress.
  • Det finns inget pålitligt sätt att köra om processen varje vecka utan att börja från noll.

Lösningen: Bright Data → automation för leadlista i Google Sheets

Det här arbetsflödet gör ”hitta rörmokare i Kalifornien” till en repeterbar pipeline som ger ett felfritt Google Sheet som teamet faktiskt kan använda. Det börjar med ett enkelt intake-formulär där du anger tjänstetyp, delstat och land. Därifrån genererar en AI-agent en lista med relevanta städer (så att du inte missar närliggande områden) och ett annat AI-steg klassar tjänstetypen till en konsekvent kategori. Sedan samlar Bright Datas Google Maps-dataset in listningar per stad, med batchning och kontroller så att du inte överbelastar skrapern eller ditt arbetsflöde. Till sist formateras resultaten, dubbletter tas bort baserat på företagsnamn och telefonnummer, och de rensade raderna läggs till i Google Sheets med nyckelfält som webbplats, adress, betyg och den direkta Google Maps-URL:en.

Flödet startar vid formulärinsändning, utökar sökningen över en stadlista och skrapar sedan Google Maps-data via Bright Data i kontrollerade batchar. Därefter verifierar det att skrapningen är klar, laddar ner resultaten och skriver dem till Sheets samtidigt som det städar bort dubbletter löpande.

Det här får du: automation kontra resultat

Exempel: så här ser det ut i praktiken

Säg att du behöver ”kaféer” i en delstat och vill ha resultat för 10 städer. Manuellt, om du lägger cirka 10 minuter per stad på att samla in och rensa listningar, blir det ungefär 100 minuter, plus ytterligare 30 minuter för att ta bort dubbletter och rätta kategorier. Med det här flödet skickar du in ett formulär (cirka 2 minuter), låter skrapningen gå i bakgrunden med väntetider och statuskontroller (ofta 20–40 minuter), och den färdiga listan hamnar i Google Sheets redan utan dubbletter.

Det här behöver du

  • n8n-instans (testa n8n Cloud gratis)
  • Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
  • Bright Data för åtkomst till skrapning via Google Maps-dataset
  • Google Sheets för att lagra och dela leadlistan
  • Anthropic API-nyckel (hämta den i Anthropic Console)

Kunskapsnivå: Medel. Du kopplar upp inloggningsuppgifter, ersätter platshållartokens och testar med exempelindata.

Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).

Så fungerar det

En formulärinsändning drar igång allt. Du anger tjänstetyp, delstat och land i intake-formulärets trigger, så att flödet startar med strukturerade indata i stället för slumpmässiga anteckningar.

AI utökar och normaliserar din målgrupp. En AI-agent genererar en lista med relevanta städer för din plats, och sedan kategoriserar ett annat AI-steg tjänstetypen så att arket håller sig konsekvent även när olika personer skickar in förfrågningar.

Bright Data samlar in listningar i kontrollerade batchar. Flödet loopar över städer, kör Bright Data Google Maps-dataset-skrapning och använder kontroller, väntetider och statuspollning (HTTP-förfrågningar) så att du inte skriver in ofullständiga resultat eller kraschar mitt i en körning.

Google Sheets blir en felfri källa till sanning. Innan nya leads läggs till hämtar det befintliga rader i arket, identifierar dubbletter via företagsnamn och telefon, tar bort dubbletter och lägger sedan till nya resultat med fält som adress, öppettider, betyg och antal recensioner.

Du kan enkelt justera prompten för stadsexpansion för att rikta in dig på närliggande storstadsområden, counties eller postnummerkluster utifrån dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.

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

Steg 1: konfigurera formulärtriggern

Det här arbetsflödet startar med ett formulär som samlar in tjänst- och platsuppgifter som används för scraping.

  1. Lägg till eller öppna Intake Form Trigger och ställ in Form Title till Extract Business Data Using Service Name and Location.
  2. Ställ in Form Description till Fill details to extract business leads.
  3. Bekräfta att formulärfälten inkluderar Service, State och Country med rullgardinsalternativen US och India.

Steg 2: konfigurera AI-generering av stad och kategori

Två AI-steg genererar stadlistor och klassificerar tjänstetypen. Varje agent använder en ansluten Anthropic-modell.

  1. Öppna City LLM Provider och välj er Anthropic-modell. Inloggningsuppgift krävs: anslut era anthropicApi-inloggningsuppgifter.
  2. Öppna Generate City Roster och ställ in Prompt till det befintliga uttrycket: =Provide a list of cities or sub areas located inside the Location of {{ $json.State }}, within the country {{ $json.Country }}. This data will be used to search on Google maps for businesses in that region. The output should be a plain text list, without bullets, numbering, or any special characters. Do not include any introduction, explanation, or concluding text—only the list of city names.
  3. Öppna Category LLM Provider och välj er Anthropic-modell. Inloggningsuppgift krävs: anslut era anthropicApi-inloggningsuppgifter.
  4. Öppna Classify Service Type och ställ in Prompt till: =Determine the appropriate category based on the following input: "{{ $('Intake Form Trigger').item.json.Service }}" The output must contain only the category name that best describes the given service. Examples of categories include but are not limited to: Electronics, Healthcare, Education, Food & Beverage, Automotive, Finance, Real Estate, etc.

City LLM Provider är ansluten som språkmodell för Generate City Roster och Category LLM Provider är ansluten till Classify Service Type — säkerställ att inloggningsuppgifter är tillagda i dessa provider-noder (inte i agent-noderna).

Steg 3: dela upp och batcha stadsposter

Arbetsflödet omvandlar AI-stadlistan till strukturerade objekt och batchar dem för vidare bearbetning.

  1. Öppna Split Records by City och behåll befintlig JavaScript som läser Service, State, Country och AI-stadlistan för att bygga objekt per stad.
  2. Säkerställ att Batch Cities Iterator är ansluten efter Split Records by City för att bearbeta städer i hanterbara batchar.
  3. Bekräfta körvägen: Classify Service TypeSplit Records by CityBatch Cities Iterator.

Batch Cities Iterator skickar utdata till både Retrieve Sheet Records och Maps Data Scraper parallellt.

Steg 4: konfigurera dubbletthantering i Google Sheets

Det här avsnittet söker efter dubbletter och tar bort befintliga rader innan nya leads läggs till.

  1. Öppna Retrieve Sheet Records och ställ in Document ID till YOUR_GOOGLE_SHEET_ID och Sheet Name till gid=0. Inloggningsuppgift krävs: anslut era googleSheetsOAuth2Api-inloggningsuppgifter.
  2. I Detect Duplicate Records behåller ni JavaScript-koden som jämför Business Name, Phone Number, Address och Google Maps URL för att skicka ut dubbletter.
  3. Öppna Locate Duplicate Row och bekräfta filtren: Address använder ={{ $json.Address }} och Google Maps URL använder ={{ $json['Google Maps URL'] }}. Inloggningsuppgift krävs: anslut era googleSheetsOAuth2Api-inloggningsuppgifter.
  4. Öppna Remove Duplicate Row och ställ in Operation till delete med Start Index ={{ $json.row_number }}. Inloggningsuppgift krävs: anslut era googleSheetsOAuth2Api-inloggningsuppgifter.

⚠️ Vanlig fallgrop: Ersätt YOUR_GOOGLE_SHEET_ID i alla Google Sheets-noder för att undvika att skriva till ett platshållarkalkylark.

Steg 5: konfigurera scraping och statuspollning

Arbetsflödet scrapar Google Maps via Bright Data och pollar tills resultaten är klara.

  1. Öppna Maps Data Scraper och behåll URLs-uttrycket: =[ { "url": "https://www.google.com/maps/search/{{ $json.name }}+in+{{ $json.city }} {{ $json.state }}", "category": "{{ $json.category }}", "country_name": "{{ $json.country }}", "sample": false } ] . Inloggningsuppgift krävs: anslut era brightdataApi-inloggningsuppgifter.
  2. Öppna Verify Scrape Response och behåll villkoret som kontrollerar att ={{ $json.message }} finns.
  3. Öppna Query Collection Progress och ställ in URL till =https://api.brightdata.com/datasets/v3/progress/{{ $json.snapshot_id }}. Inloggningsuppgift krävs: anslut era httpHeaderAuth-inloggningsuppgifter.
  4. Öppna Throttle Pause och ställ in Amount till 25 sekunder för att styra pollningsfrekvensen.
  5. Öppna Confirm Data Readiness och behåll statuskontrollen att ={{ $json.status }} är lika med ready.
  6. Öppna Download Scrape Results och ställ in URL till =https://api.brightdata.com/datasets/v3/snapshot/{{ $json.snapshot_id }} med frågeparametern format=json. Inloggningsuppgift krävs: anslut era httpHeaderAuth-inloggningsuppgifter.

Tips: Loopen drivs av Query Collection ProgressThrottle PauseConfirm Data Readiness. Säkerställ att ert Bright Data dataset-ID är giltigt för att undvika oändlig pollning.

Steg 6: lägg till resultat i Google Sheets

Scrapade resultat mappas till era kalkylarksfält.

  1. Öppna Append Leads to Sheet och bekräfta att Operation är append. Inloggningsuppgift krävs: anslut era googleSheetsOAuth2Api-inloggningsuppgifter.
  2. Verifiera att kolumnmappningarna använder uttryck som City ={{ $('Split Records by City').item.json.city }}, Business Name ={{ $json.name }} och Google Maps URL ={{ $json.url }}.
  3. Bekräfta flödet Download Scrape ResultsAppend Leads to SheetBatch Cities Iterator för att fortsätta bearbeta återstående städer.

Steg 7: testa och aktivera ert arbetsflöde

Kör ett manuellt test för att validera formulärinmatning, AI-utdata, scraping och uppdateringar i kalkylarket innan ni aktiverar.

  1. Klicka på Execute Workflow och skicka in Intake Form Trigger med en känd tjänst (t.ex. Laptop Store) och plats.
  2. Följ att data skickas korrekt från Generate City Roster och Classify Service Type till Split Records by City.
  3. Bekräfta att Download Scrape Results returnerar JSON och att Append Leads to Sheet lägger till rader med stad, företagsnamn, adress och URL:er.
  4. När allt är verifierat, växla arbetsflödet till Active för att ta emot formulärinsändningar i drift.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Google Sheets OAuth-inloggningar kan gå ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först n8n-sidan Credentials och inställningar/consent för OAuth i Google Cloud.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre fram fallerar på tomma svar.
  • Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera output för alltid.

Vanliga frågor

Hur lång tid tar det att sätta upp den här Bright Data leads-automationen?

Vanligtvis cirka en timme, förutsatt att dina inloggningar för Bright Data och Google är klara.

Behöver jag kunna koda för att automatisera Bright Data leads?

Nej. Du kopplar mest konton och klistrar in API-nycklar i rätt credential-fält.

Är n8n gratis att använda för det här Bright Data leads-arbetsflödet?

Ja. n8n har ett gratis self-hosted-alternativ 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 med Bright Data dataset-användning och kostnader för AI-API.

Var kan jag hosta n8n för att köra den här automationen?

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 hanterar n8n bra. Just den här Bright Data leads-automationen körs ofta self-hosted eftersom långa skrapningar och batchning är enklare att hantera när du kontrollerar körtiden. Väljer du den vägen, planera för grundläggande uppdateringar, backuper och att hålla dina inloggningar säkra.

Kan jag anpassa det här Bright Data leads-flödet för flera tjänstetyper samtidigt?

Ja, men då vill du justera intake-formuläret så att det tar emot en lista och sedan loopa igenom den före logiken för ”Klassificera tjänstetyp” och ”Dela upp poster per stad”. Vanliga anpassningar är att köra flera tjänster per delstat, ändra city-generation-prompten så att den fokuserar på specifika storstadsområden och att lägga till extra fält från Bright Data i steget ”Lägg till leads i arket”.

Varför misslyckas min Bright Data-anslutning i det här flödet?

Oftast handlar det om en ogiltig token, saknad dataset-åtkomst eller en mismatch mellan workspace/projekt i Bright Data. Uppdatera Bright Data-credential i n8n och bekräfta att ditt Google Maps-dataset är aktiverat. Om det kör en stund och sedan fallerar kan du slå i rate limits eller hämta för mycket per batch, så sänk batchstorlekarna och använd flödets vänt-/statuskontroller.

Hur många leads kan den här Bright Data leads-automationen hantera?

Många, men det beror på dina Bright Data-gränser och hur stor din stadlista är.

Är den här Bright Data leads-automationen bättre än att använda Zapier eller Make?

För det här användningsfallet är svaret oftast ja. Batchning, retry-logik och mönstret ”kontrollera status och ladda ner när klart” blir klumpigt i enklare automationverktyg, och du betalar ofta mer när volymen växer. n8n ger dig också möjligheten att köra self-hosted, vilket är användbart när skrapningar tar längre tid eller du behöver tajtare kontroll över exekveringen. Zapier eller Make kan fortfarande fungera bra för lättare listbyggande, men det här flödet ligger närmare en mini-datapipeline än en tvåstegs-zap. Om du är osäker, prata med en automationsexpert så mappar vi det mot din volym och budget.

När det här väl rullar slutar du ”bygga listor” och börjar mata outreach. Flödet sköter den repetitiva rensningen så att teamet kan fokusera på att kontakta rätt företag.

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