Plan Travel Itineraries with Gemini AI, Live Amadeus Flights, and Airbnb Stays
Last edited 58 days ago
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
Here is the Full Node-by-Node Breakdown of the workflow Workflow
Execution Video: https://youtu.be/qkZ6UaO7aCE
1. Webhook (Webhook)
- Purpose: Accepts incoming user queries via HTTP GET with the text parameter.
- Example input:
4 people from Germany to Bangkok @14th August 2025
2. AI Agent (AI Agent)
-
Type: LangChain Agent
-
Model: Google Gemini 2.5 Flash via Vertex AI
-
Prompt logic:
- Extracts structured travel info (origin city, destination, date, number of people)
- Determines 3-letter IATA codes
- Uses MCP’s Airbnb Tool to scrape listings starting from that date
-
Returns:
-
A markdown + bullet-format response with:
- Structured trip info
- List of Airbnb listings with titles, price, rating, and link
-
3. MCP Client List Tool (MCP Client List Tool)
- Purpose: Fetches a list of tools registered with MCP (Multi Channel Parser) client for the AI agent to select from
- Used by: AI Agent as part of
listTools()phase
4. MCP Execute Tool (MCP Execute Tool)
- Purpose: Executes the selected MCP tool (Airbnb scraper)
- Tool input: Dynamic — passed by AI Agent using
$fromAI('Tool_Parameters')
5. Google Vertex Chat Model (Google Vertex Chat Model)
- Purpose: Acts as the LLM behind the AI Agent
- Model: Gemini 2.5 Flash from Vertex AI
- Used for: Language understanding, extraction, decision-making
6. Grabbing Clean Data (Code Node)
-
Purpose: Parses AI output to extract:
- Structured trip data
- Airbnb listings (with title, rating, price, link)
-
Handles:
- Bullet (•) and asterisk (*) formats
- New and old markdown styles
- Fallbacks for backward compatibility
-
Output: Clean JSON:
{ "tripInformation": {...}, "listings": [...], "totalListings": X, ... }
7. Flight Search with fare (HTTP Request)
-
API: Amadeus Flight Offers API
-
Purpose: Searches live flight offers using:
- originIataCode
- destinationIataCode
- travelDate
- numberOfPeople
-
Auth: OAuth2
8. Flight Data + Airbnb Listings (Code Node)
-
Purpose:
- Parses Amadeus flight offers
- Formats date, time, and durations
- Merges flight results with earlier Airbnb + trip info JSON
- Sorts by cheapest total price
-
Output:
{ "tripInformation": {...}, "listings": [...], "allFlightOffers": [...] }
9. Edit Fields (Set Node)
-
Purpose:
-
Assigns final response fields into clean keys:
traveldetailslistingsflights
-
10. Respond to Webhook
- Purpose: Sends back the final structured JSON response to the caller.
- Output: Combined travel itinerary with flights + Airbnb
Summary
This end-to-end workflow is a fully autonomous travel query-to-itinerary engine. From a plain text like “4 people from Vijayawada to Bangkok @14th August 2025,” it:
- Parses and understands the query using an AI agent
- Fetches Airbnb stays by scraping live listings
- Searches real-time flights via Amadeus
- Merges and formats everything into structured, digestible JSON
No manual parsing, no frontend — just AI + APIs + automation.
NOTE: I JUST USED A COMMUNITY NODE "n8n-nodes-mcp" + UNOFFICIAL AIRBNB MCP
You may also like
New to n8n?
Need help building new n8n workflows? Process automation for you or your company will save you time and money, and it's completely free!





