Hotellresearch blir snabbt rörigt. Du öppnar Booking.com, justerar filter, kopierar priser till anteckningar, tappar bort den ”bra” fliken och börjar sedan om när någon byter stad.
Telegram hotel shortlist-automationen slår hårdast mot eventplanerare, eftersom beslut kräver tydliga alternativ. Men resebyråer och stressade operativa team som bokar resor för grupper känner av samma friktion. Du skickar ett stadsmeddelande och får tillbaka en strukturerad, delningsbar shortlist.
Det här flödet hämtar listningar från Booking.com, rensar och strukturerar datan och formaterar den till en lättläst rapport. Du ser vad det löser, vad du behöver och hur flödet fungerar från start till mål.
Så fungerar den här automatiseringen
Hela n8n-flödet, från trigger till slutligt resultat:
n8n Workflow Template: Booking.com + Telegram: hotellista direkt
flowchart LR
subgraph sg0["When chat message received Flow"]
direction LR
n0@{ icon: "mdi:swap-vertical", form: "rounded", label: "parameters", pos: "b", h: 48 }
n1@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model2", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "check Snapshot Again", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "check if result ready", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Initiate batch extraction fr..", pos: "b", h: 48 }
n6@{ icon: "mdi:cog", form: "rounded", label: "Check the status of a batch ..", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "hotels", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "Download the snapshot content", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "clean data", pos: "b", h: 48 }
n10@{ icon: "mdi:play-circle", form: "rounded", label: "When chat message received", pos: "b", h: 48 }
n11@{ icon: "mdi:cog", form: "rounded", label: "Aggregate", pos: "b", h: 48 }
n12@{ icon: "mdi:robot", form: "rounded", label: "Human Friendly Results", pos: "b", h: 48 }
n13@{ icon: "mdi:wrench", form: "rounded", label: "Calculator", pos: "b", h: 48 }
n3 --> n2
n7 --> n6
n11 --> n12
n13 -.-> n12
n9 --> n11
n0 --> n5
n2 --> n7
n4 --> n8
n4 --> n3
n1 -.-> n12
n10 --> n0
n8 --> n9
n8 --> n3
n5 --> n7
n6 --> n4
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 n10 trigger
class n12 ai
class n1 aiModel
class n13 ai
class n4 decision
Problemet: hotellresearch blir flikkaos
Att hitta ”några bra hotell” låter enkelt tills det inte är det. Du söker på en stad, scrollar i evigheter, öppnar 10 listningar och försöker sedan förklara alternativen för någon annan utan att låta vag. Priser är i olika valutor, vissa listningar döljer avgifter tills sent i processen och detaljerna du bryr dig om (läge, avbokning, frukost, stjärnklass) sprids över flikar och skärmdumpar. Och när destinationen ändras eller datum flyttas, gör du om hela rutinen. Ärligt talat: det är inte svårt arbete. Det är utmattande arbete.
Det blir snabbt mycket. Här är var det brister i riktiga team.
- Du lägger cirka 30–45 minuter per stad bara på att samla alternativ du tryggt kan dela.
- Copy-paste-research skapar småfel, som felmatchade priser eller fel länk, vilket sedan leder till mer fram och tillbaka.
- Beslutsfattare vill inte ha råa sökresultat, så du slutar med att skriva om samma sammanfattning om och om igen.
- När du behöver ”en shortlist till för en annan stad” börjar du från noll i stället för att återanvända en repeterbar process.
Lösningen: Telegram-meddelande in, kurerad hotellista ut
Det här flödet gör hotellresearch till en snabb chattinteraktion. Du skickar ett stadsnamn till en n8n-chatttrigger (som kan kopplas till Telegram), och automatiseringen startar en Booking.com-hämtning via Bright Datas webbskrapare. Medan skrapningen körs väntar flödet och kontrollerar status i en loop tills snapshoten är klar. När resultatet kommer tillbaka laddar n8n ner datan, normaliserar fälten (så att ”pris”, ”betyg” och ”länk” inte dyker upp som inkonsekventa kolumner) och aggregerar listningarna till en enda batch. Sedan formaterar en AI-agent via OpenRouter allt till en kort, lättläst shortlist, inklusive korrekta länkar och tydlig prissättning.
Flödet börjar med ett enkelt stadsinmatning. Bright Data sköter extraktionen och flödet fortsätter att övervaka tills snapshoten finns tillgänglig. Till sist sammanfattar och formaterar AI-agenten shortlisten så att den är redo att klistra in, vidarebefordra eller dela med en kund.
Vad du får: automation vs. resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du tar fram hotell för en tvådagars offsite och behöver shortlists för 3 städer. Manuellt är det oftast runt 40 minuter per stad för att hitta, öppna, jämföra och skriva om alternativen, alltså ungefär 2 timmar totalt. Med det här flödet skickar du 3 snabba Telegram-meddelanden (kanske 1 minut styck) och väntar sedan på att skrapning och sammanfattning ska komma tillbaka. Du granskar fortfarande shortlisten, men din ”research-tid” går från timmar till några minuters uppföljning.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Telegram för att skicka stad och ta emot resultat
- Bright Data för Booking.com-webbskrapningssnapshots
- OpenRouter API-nyckel (hämta den i din OpenRouter-dashboard)
Kunskapsnivå: Medel. Du kopplar in credentials, justerar en eller två noder och testar chatttriggern från start till mål.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett stadsmeddelande triggar allt. Ett chattmeddelande tas emot och flödet mappar inmatningen till ett strukturerat ”stad”-värde som kan användas längre fram.
Flödet startar Booking.com-extraktionen. Bright Data startar en batch-extraktion från en URL som byggs utifrån din stadsinmatning, och flödet delar upp kontroller i batchar så att det kan övervaka status utan att överbelasta API:et.
Statuskontroller och väntan förhindrar tomma resultat. Om snapshoten inte är klar väntar flödet, loopar och kontrollerar igen. När den är klar hämtar det snapshotdatan och går vidare.
AI gör råa listningar till en shortlist du kan skicka. Resultaten normaliseras, aggregeras och skickas till en AI-agent (via OpenRouter). Ett kalkylatorverktyg stödjer valutakonverteringar eller snabb matte, och sluttexten returneras i ett läsbart format för chatt.
Du kan enkelt justera sökparametrar för att inkludera datum eller gruppstorlek utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera chatt-triggern
Det här arbetsflödet startar från en chattinmatning, så konfigurera triggern så att den tar emot ett stadsnamn och returnerar den slutliga sammanfattningen.
- Lägg till och öppna Chat Intake Trigger.
- Ställ in Response Mode på
lastNodeså att chatten returnerar AI-sammanfattningen. - Koppla Chat Intake Trigger till Map City Input.
Steg 2: anslut Bright Data och starta extraktionen
Dessa noder triggar Booking.com-skrapningen baserat på stadsinmatningen och startar extraktionsarbetsflödet.
- Öppna Map City Input och lägg till tilldelningen city med värdet
={{ $json.chatInput }}. - Öppna Start URL Extraction och ställ in Resource på
webScrapperoch Operation påtriggerCollectionByUrl. - Ställ in URLs på
=[{"url":"https://www.booking.com","location":"{{ $json.city }}","check_in":"2025-11-01T00:00:00.000Z","check_out":"2025-11-08T00:00:00.000Z","adults":2,"children":1,"rooms":1,"property_type":"Hostels","currency":"","country":""}]. - Inloggningsuppgifter krävs: Anslut era brightdataApi-inloggningsuppgifter i Start URL Extraction.
⚠️ Vanlig fallgrop: Datumintervallet i Start URL Extraction är hårdkodat. Uppdatera check_in och check_out före produktionssättning för att undvika inaktuella resultat.
Steg 3: konfigurera statusövervakning och återkontroll-loop
Dessa noder loopar tills snapshoten är klar och laddar därefter ner data.
- Öppna Monitor Extraction Status och ställ in Operation på
monitorProgressSnapshotmed snapshot_id satt till={{ $('Start URL Extraction').item.json.snapshot_id }}. - Inloggningsuppgifter krävs: Anslut era brightdataApi-inloggningsuppgifter i Monitor Extraction Status.
- Konfigurera Result Ready Check så att den utvärderar att Left Value
={{ $json.status }}är lika medready. - Säkerställ att ”false”-utgången från Result Ready Check går till Delay Execution, och sedan till Recheck Snapshot Loop och Hotel Batch Splitter enligt kopplingarna.
- Öppna Retrieve Snapshot Data och ställ in Operation på
downloadSnapshotmed snapshot_id={{ $('Monitor Extraction Status').item.json.snapshot_id }}. - Inloggningsuppgifter krävs: Anslut era brightdataApi-inloggningsuppgifter i Retrieve Snapshot Data.
Steg 4: normalisera och aggregera listningar
Det här steget standardiserar den extraherade datan och aggregerar den till en enda lista.
- Öppna Normalize Listing Fields och mappa fält med uttryck: title
={{ $json.title }}, address={{ $json.address }}, original_price={{ $json.original_price }}och final_price={{ $json.final_price }}. - Öppna Combine Listings och ställ in Aggregate på
aggregateAllItemData. - Bekräfta att flödet är Normalize Listing Fields → Combine Listings → Readable Hotel Summary.
Steg 5: konfigurera AI-sammanfattningen
Dessa noder skapar en läsbar hotellsammanfattning och beräknar priser i euro.
- Öppna Readable Hotel Summary och ställ in Text på
={{ $json }}. - Ställ in systemprompten i Readable Hotel Summary till
=Convert this list of hotels into a well-presented list for human display. Use the CALC tool to show prices in euros. Start the response with 'Here is the list of hotels available on Booking in the city of' followed by the name of the city. - Koppla OpenRouter Chat Engine till Readable Hotel Summary som språkmodell.
- Inloggningsuppgifter krävs: Anslut era openRouterApi-inloggningsuppgifter i OpenRouter Chat Engine.
- Anslut Pricing Calculator Tool som ett AI-verktyg till Readable Hotel Summary för att aktivera kalkylatorn i prompten.
- Obs: Pricing Calculator Tool är ett undernod-verktyg; lägg endast till inloggningsuppgifter på den överordnade LLM-noden (OpenRouter Chat Engine), inte på själva verktyget.
Steg 6: testa och aktivera ert arbetsflöde
Kör ett fullständigt test för att bekräfta dataextraktion, looping, aggregering och AI-utdata.
- Klicka på Execute Workflow och ange en exempelstad i chattinmatningen (till exempel
Lisbon). - Verifiera att Start URL Extraction returnerar ett snapshot-ID och att Monitor Extraction Status går i cykler tills Result Ready Check är
ready. - Bekräfta att Retrieve Snapshot Data matar ut hotellrader och att Combine Listings aggregerar dem till en enda lista.
- Kontrollera att Readable Hotel Summary returnerar en lättläst lista i chattsvaret.
- När ni är nöjda, växla arbetsflödet till Active för att möjliggöra användning i produktion.
Vanliga fallgropar
- Bright Data-credentials kan gå ut eller kräva specifika behörigheter. Om det skapar fel, kontrollera först din Bright Data API-nyckel och datasetåtkomst i Bright Data-dashboarden.
- 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 redigera utdata i all evighet.
Vanliga frågor
Cirka 30 minuter när dina Bright Data- och OpenRouter-konton är klara.
Nej. Du kopplar främst credentials och justerar ett par fält utifrån dina sökpreferenser.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis testperiod 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 Bright Data och OpenRouter utifrån användning.
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. Self-hosting ger dig obegränsat antal körningar men kräver grundläggande serverhantering.
Ja, och det är en typ av ändring som snabbt betalar sig. Uppdatera noden ”Start URL Extraction” (Initiate batch extraction from URL) så att den inkluderar dina in-/utcheckningsdatum, antal vuxna, barn eller boendetyp. Om du vill ha en annan typ av svar, redigera agentprompten som används för den sista ”Readable Hotel Summary” så att den istället outputtar JSON, CSV eller en striktare mall. Många team justerar även kalkylatorprompten för att standardisera valutan i den slutliga shortlisten.
Oftast är det en ogiltig eller utgången API-nyckel, så skapa en ny i Bright Data och uppdatera credetialen i n8n. Det kan också vara ett behörighetsproblem för dataset (fel skrapare/dataset valt) eller att extraktionsendpointen returnerar ett tillfälligt fel medan jobbet fortfarande startar. Om fel bara händer vid större körningar är rate limiting en sannolik orsak, så sakta ner polling-loopen och öka Wait-tiden.
En typisk körning kan hantera dussintals listningar per stad, och den praktiska gränsen beror på dina Bright Data-datasetinställningar och dina körningsgränser i n8n.
Ofta, ja, eftersom det här flödet bygger på skrapning, loopar tills data är klar och sedan gör strukturerad formatering med en AI-agent. n8n hanterar förgreningar och mönster som ”vänta och försök igen” på ett tydligt sätt, och du kan self-hosta för mer kontroll. Zapier eller Make kan fungera, men loopar i flera steg och tung databetning blir ofta klumpigt eller dyrt. Om du redan kör mycket i Zapier för enklare uppgifter kan det fortfarande räcka för en lättare variant som inte skrapar. Prata med en automationsexpert om du vill ha snabbaste vägen till en stabil setup.
När detta väl är på plats slutar hotellresearch att vara ett miniprojekt. Du ber om en stad, får en shortlist tillbaka och går vidare med dagen.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.