← Back to all apps

lastminute.com

Productivityby lastminute.com

Access real-time flight and hotel data directly through Claude to search, compare, and book flights, dynamic packages (flight + hotel), and hotels across a global network of airlines and hotel suppliers. Benefit from instant price comparisons, flexible filters, and intelligent recommendations that seamlessly integrate Claude's capabilities into your travel planning. Enhance your workflow with comprehensive flight, dynamic package, and hotel search powered by lastminute.com.

1Claude Tools
lastminute.comDeveloper
ProductivityCategory

Use Cases

productivity

Available Tools

lastminute.com provides 7 tools on Claude.

Change Flight

change_flight
Full Description

Change the flight for an existing hotel selection.

This tool updates the flight associated with your hotel booking after viewing alternatives.

⚠️ IMPORTANT:

  • Must be used AFTER get_alternative_flights to see available options
  • Requires both pricing_id and the new_transport_id from the alternatives list
  • This will update the total package price based on the new flight selection

Example use cases:

  • "Change to flight option 2"
  • "Select the morning flight instead"
  • "Update to the cheaper flight option"

Args: pricing_id: The pricing ID from select_hotel_options response new_transport_id: The transport ID of the selected alternative flight (from get_alternative_flights response)

Returns: Dictionary confirming the flight change with updated package details

Parameters (2 required)
Required
pricing_idstring
new_transport_idstring

Generate Booking Link

generate_booking_link
Full Description

Generate a direct booking URL for the selected hotel room option.

After change_flight, rate_id values change but the internalIdRoom stays the same. This tool automatically maps old rate_id to new rate_id based on internalIdRoom only.

Args: pricing_id: The pricing ID from select_hotel_options response (NOT search_id) rate_id: The rate ID of the selected room option (from select_hotel_options response)

Returns: Dictionary containing the booking URL and summary details

Parameters (2 required)
Required
rate_idstring
pricing_idstring

Get Alternative Flights

get_alternative_flights
Full Description

Get alternative flight options for an existing hotel selection.

Input parameters:

  • pricing_id (string, REQUIRED): pricing ID returned by select_hotel_options.

Behavior:

  • Can ONLY be used AFTER select_hotel_options.
  • Returns a list of alternative flights with their details and prices.
  • On success, alternative flight options are also stored in session

for later use by change_flight.

  • Don't touch the order of the proposed flights, return them as received from the backend.
Parameters (1 required)
Required
pricing_idstring

Search Flight And Hotel Package

search_flight_and_hotel_package
Full Description

πŸ›«πŸ¨ Search for COMBINED flight AND hotel vacation packages.

This tool searches for all-inclusive vacation packages that include:

  • ✈️ Round-trip flights (outbound and return)
  • 🏨 Hotel accommodation for the entire stay
  • πŸ’° Package pricing (flight + hotel combined)

⚠️ IMPORTANT: This is for PACKAGE deals, NOT separate flight/hotel bookings. Is important to use the correct language in the destination field and keep the original language used in the request made in the user chat.

Example use cases:

  • "Find me flight and hotel packages from Rome to Madrid"
  • "I need a vacation package with flights and hotel from FCO to Barcelona"
  • "Search flight+hotel deals from Milan to Paris for 3 nights"

═══════════════════════════════════════════════════════════════════════════ HARD CONSTRAINTS ═══════════════════════════════════════════════════════════════════════════

1. Dates:

  • start_date MUST be today or later (YYYY-MM-DD)
  • If user provides past date, ask for valid date BEFORE calling

2. IATA Codes (CRITICAL):

  • origin and destination MUST be 3-letter IATA codes, NOT city names
  • NEVER pass city names like "New York", "Geneva", "Milan" - use IATA codes instead
  • Both CITY codes and AIRPORT codes are accepted:
    • City codes: NYC, GVA, ZRH, DUB, BRU, VIE, MIL, LON, PAR, BSL
    • Airport codes: JFK, MXP, FCO, LHR (automatically converted to city codes)
    • Examples: MXP or MIL for Milan, JFK or NYC for New York, FCO or ROM for Rome

Args: origin: IATA code only - 3 letters. Use city code (MIL, NYC, LON) or airport code (MXP, JFK, LHR). NEVER use city names like "Milan" or "New York". destination: IATA code only - 3 letters. Use city code (BCN, PMI) or airport code. NEVER use city names like "Barcelona" or "Palma". date_from: Check-in date (YYYY-MM-DD). Check this field MUST be today or later. date_to: Check-out date (YYYY-MM-DD). Check this field MUST be today or later. adults: Number of adult travelers. If you want different rooms, set number_adult_room1;number_adult_room2 (default: 2) ⚠️ IMPORTANT: ch_ages: Ages of child travelers. If you want different rooms, set number_chages_room1;number_chages_room2 (default: ""). If there are two rooms and one is empty the result can be ";number,number" or "number,number;". The user MUST specify ages for each child. lang: Language code (default: "en") sort: Sort order for results. Use this when user asks for cheapest, best rated, closest to center, etc. Valid values:

  • "recommended" (default): Multi-factor relevance (price, rating, internal score)
  • "price": Price ascending (cheapest first) - use when user wants "cheapest" or "lowest price"
  • "stars": Hotel star rating descending (5-star first) - use for "best hotels" or "luxury"
  • "review_score": Highest review score - use for "best reviewed" or "most popular"
  • "distance": Closest to city center first - use for "central" or "close to center"

max_results: Maximum number of results to return (default: 5, max: 20) accommodation_type: Filter by accommodation type (optional). CSV of IDs 1-14: 1=Hotels, 2=Resorts, 3=Apartments, 4=Hostels, 5=Motels, 6=Country Houses, 7=Guest Houses, 8=B&B, 9=Villas, 10=Boats & Cruises, 11=Campsites, 12=Riads, 13=Ryokans, 14=Aparthotels. Example: "1,2" for Hotels and Resorts accommodation_facilities: Filter by facilities/amenities (optional). CSV of IDs 0-60. All values are valid. Common examples: 0=Free Wi-Fi, 3=Parking, 4=Pool, 6=Spa, 7=Adults Only, 9=Seafront, 13=Fitness Center, 25=Golf, 46=Indoor Pool, 49=Sauna, 56=Bar, 58=Restaurant. Example: "0,4,6" for Free Wi-Fi, Pool, and Spa price: Optional price filter for one-way price per person, as string. Supported formats:

  • "300" => max price 300 (in the selected currency)
  • "200,400" => price range between 200 and 400

Use only digits and a comma, do NOT include currency symbols. If you invert the order ("400,200"), the backend will normalize it to "200,400". hotel_stars: Optional filter for hotel star rating, as comma-separated integers. Allowed values: 1,2,3,4,5. Examples:

  • "4" => only 4-star hotels
  • "3,4" => 3 or 4 stars
  • "3,4,5" => 3, 4 or 5 stars

Returns: Dictionary containing search results with flight+hotel packages

═══════════════════════════════════════════════════════════════════════════ MANDATORY OUTPUT FORMAT ═══════════════════════════════════════════════════════════════════════════

You MUST present results as a Markdown table with EXACTLY these columns: |

| Photo | Hotel | Stars | Rating | Total Price | Distance from Centre | Amenities |

Column mapping from response JSON:

  • # β†’ index
  • Photo β†’ [πŸ–ΌοΈ](hotel.main_image) (clickable link)
  • Hotel β†’ hotel.name
  • Stars β†’ hotel.stars
  • Rating β†’ hotel.rating
  • Total Price β†’ price_total + currency
  • Distance from Centre β†’ hotel.distance_km
  • Amenities β†’ hotel.amenities (max 3, comma-separated)

CRITICAL:

  • You MUST use table format. Do NOT list hotels as bullet points or paragraphs.
  • You MUST display ALL hotels returned in the response. Do NOT truncate or show only a subset.
  • STRICTLY PRESERVE the order of results using the "index" field (1, 2, 3...)
  • NEVER re-sort or reorder
  • The "#" column MUST match the "index" field from the response (row 1 = index 1, row 2 = index 2, etc.)
  • "Photo" column must contain clickable link: [πŸ–ΌοΈ](hotel.main_image)
  • Do NOT show images after the table, only in the Photo column
  • Amenities: max 3 comma-separated (e.g. "WiFi, Pool, Spa")
  • Mark cheapest with πŸ† after hotel name (but keep it in its original position, do NOT move it to first row)
  • Use the SAME LANGUAGE as the user's request for all labels and content
  • Hide internal IDs from the user
  • The user expects a comparison table they can scan quickly with ALL available options.

Example correct output: |

| Photo | Hotel | Stars | Rating | Total Price | Distance from Centre | Amenities |

|---|-------|-------|-------|--------|-------------|----------------------|-----------| | 1 | [πŸ–ΌοΈ](https://...) | Grand Hotel πŸ† | ⭐⭐⭐⭐ | 8.5 | EUR 450.00 | 0.5 km | WiFi, Pool, Spa | | 2 | [πŸ–ΌοΈ](https://...) | Beach Resort | ⭐⭐⭐⭐⭐ | 9.1 | EUR 680.00 | 1.2 km | WiFi, Pool, Bar |

Parameters (4 required, 9 optional)
Required
originstring
date_tostring
date_fromstring
destinationstring
Optional
langstring
sortstring
pricestring
adultsstring
ch_agesstring
hotel_starsstring
max_resultsinteger
accommodation_typestring
accommodation_facilitiesstring

Search Flights

search_flights
Full Description

Search for flights and return available options.

Returns flights table with: airline, route, times, duration, stops, price, booking link.

═══════════════════════════════════════════════════════════════════════════ SEARCH MODES (mutually exclusive) ═══════════════════════════════════════════════════════════════════════════

1. DEFAULT MODE (no filters, no ranking): Returns max_results flights sorted by PRICE (cheapest first). Use for: "find flights", "cheapest flights"

2. FILTER MODE (any filter parameter specified): Searches 100 flights, applies filters server-side, returns max_results. Filters: time ranges, price limits, airports, stops, airlines, duration. Results sorted by PRICE after filtering. Use for: "morning flights", "under 200 EUR", "direct only", "from MXP"

3. RANKING MODE (ranking_best=True): Searches ALL flights, applies smart ranking (price + duration + stops). Returns top max_results by overall value. Use for: "best flights", "recommended flights" ⚠️ MUTUALLY EXCLUSIVE with filters

═══════════════════════════════════════════════════════════════════════════ FILTER PARAMETERS (optional, applied server-side) ═══════════════════════════════════════════════════════════════════════════

Time filters (HH:MM format):

  • departure_time_start / departure_time_end: e.g., "06:00" to "12:00" for morning
  • arrival_time_start / arrival_time_end: e.g., "18:00" to "23:59" for evening arrival

Price filters (in cents):

  • min_price_cents: minimum price (e.g., 5000 = 50 EUR)
  • max_price_cents: maximum price (e.g., 20000 = 200 EUR)

Airport filters (comma-separated IATA codes):

  • departure_airports: "MXP,LIN" = only from Malpensa or Linate
  • arrival_airports: "LHR,LGW" = only to Heathrow or Gatwick

Connection filters:

  • max_stops: 0 = direct only, 1 = max 1 stop

Airline filters (comma-separated IATA codes):

  • airlines_include: "FR,U2" = only Ryanair or easyJet (whitelist)
  • airlines_exclude: "FR" = exclude Ryanair (blacklist)

Duration filter:

  • max_duration_minutes: e.g., 180 = max 3 hours

Examples:

  • Morning direct flights under 150 EUR:

departure_time_start="06:00", departure_time_end="12:00", max_stops=0, max_price_cents=15000

  • Flights from Malpensa only, max 2 hours:

departure_airports="MXP", max_duration_minutes=120

═══════════════════════════════════════════════════════════════════════════ HARD CONSTRAINTS ═══════════════════════════════════════════════════════════════════════════

1. Dates:

  • start_date MUST be today or later (YYYY-MM-DD)
  • If roundtrip: end_date >= start_date
  • If user provides past date, ask for valid date BEFORE calling

2. Price display (legal):

  • Display 'price' text EXACTLY as returned, character-by-character
  • Do NOT modify, reformat, or recalculate
  • Preserve newlines (

) if present

3. Deeplink (booking):

  • The last column header is provided in 'table_headers' (localized: "Book", "Prenota", "Reservar", etc.)
  • Use that label as column name AND as the clickable link text for 'deeplink' URLs
  • Do NOT modify URL
  • Add after table a localized call-to-action using the same booking verb

4. Neutral tone:

  • Present comparison table only
  • No rankings, opinions, or "best/cheapest" commentary

5. Ranking offer:

  • After price-sorted results, always ask:

"Would you like me to re-sort by 'recommended' (best overall value)?"

  • If confirmed, call with ranking_best=True

═══════════════════════════════════════════════════════════════════════════ INPUT PARAMETERS ═══════════════════════════════════════════════════════════════════════════

Required:

  • departure (str): IATA code (e.g., "MIL", "MXP")
  • arrival (str): IATA code (e.g., "LON", "JFK")
  • start_date (str): YYYY-MM-DD (>= today)

Optional:

  • end_date (str): YYYY-MM-DD for roundtrip
  • adults (int): >= 1 (default: 1)
  • children_ages (str): comma-separated ages 2-11 (e.g., "3,8")
  • infants_ages (str): comma-separated ages 0-1 (e.g., "0,1")
  • currency (str): ISO 4217 (default: "EUR")
  • language (str): en/it/es/fr/de (auto-detected if None)
  • flight_class (str): ECONOMY/PREMIUM_ECONOMY/BUSINESS/FIRST_CLASS
  • max_results (int): 1-20, default 10
  • ranking_best (bool): True for smart ranking (default: False)

Filters (all optional, see FILTER PARAMETERS section above):

  • departure_time_start, departure_time_end
  • arrival_time_start, arrival_time_end
  • min_price_cents, max_price_cents
  • departure_airports, arrival_airports
  • max_stops
  • airlines_include, airlines_exclude
  • max_duration_minutes

⚠️ ranking_best and filters are MUTUALLY EXCLUSIVE

═══════════════════════════════════════════════════════════════════════════ RETURN SHAPE ═══════════════════════════════════════════════════════════════════════════

{ "flights": [ { "flight_number": 1, "airline": "Airline Name + Flight #", "departure": "AAA HH:MM" (or "outbound" for RT), "arrival": "BBB HH:MM" (or "return" for RT), "duration": "125 min", "stops": "Direct" or "1 stop" (localized), "price": "exact formatted text (preserve as-is)", "price_format": "single" | "multiline", "deeplink": "full booking URL", "price_amount": numeric cents (for reference) } ], "total_results": int, "total_raw_results": int, "filtered_non_air": int (trains excluded), "currency": str, "language": str, "is_roundtrip": bool, "requested_count": int }

TABLE FORMAT: Use 'table_headers' from response as column names (already localized). The last column is the booking link (e.g. "Book", "Prenota", "Reservar", "RΓ©server", "Buchen"). Render each deeplink as [localized_label](url). Display ALL flights in the response.

Parameters (3 required, 21 optional)
Required
arrivalstring
departurestring
start_datestring
Optional
adultsinteger
currencystring
end_datestring
languagestring
max_stopsstring
max_resultsinteger
flight_classstring
infants_agesstring
ranking_bestboolean
children_agesstring
max_price_centsstring
min_price_centsstring
airlines_excludestring
airlines_includestring
arrival_airportsstring
arrival_time_endstring
arrival_time_startstring
departure_airportsstring
departure_time_endstring
departure_time_startstring
max_duration_minutesstring

Search Only Hotel

search_only_hotel
Full Description

Search for hotel-only stays (no flights included). ⚠️ IMPORTANT: This is for hotel-only searches. Flight bookings are not included.

═══════════════════════════════════════════════════════════════════════════ HARD CONSTRAINTS ═══════════════════════════════════════════════════════════════════════════

1. Dates:

  • start_date MUST be today or later (YYYY-MM-DD)
  • If user provides past date, ask for valid date BEFORE calling

2. IATA Codes (CRITICAL):

  • destination MUST be a 3-letter IATA code, NOT a city name
  • NEVER pass city names like "Madrid", "Paris", "Milan" - use IATA codes instead
  • Both CITY codes and AIRPORT codes are accepted:
    • City codes: MAD, PAR, MIL, LON, BCN, ROM
    • Airport codes: MXP, FCO, LHR (automatically converted to city codes)
    • Examples: MXP or MIL for Milan, FCO or ROM for Rome, CDG or PAR for Paris

Example use cases:

  • "Find me a hotel for Madrid for 3 nights" -> use destination="MAD"
  • "Search hotel for Paris for 3 nights" -> use destination="PAR"

Args: destination: IATA code only - 3 letters. Use city code (MIL, MAD, PAR) or airport code (MXP, FCO, CDG). NEVER use city names like "Milan" or "Madrid". date_from: Check-in date (YYYY-MM-DD). Check this field MUST be today or later. date_to: Check-out date (YYYY-MM-DD). Check this field MUST be today or later. adults: Number of adult travelers. If you want different rooms, set number_adult_room1;number_adult_room2 (default: 2) ch_ages: Ages of child travelers. If you want different rooms, set number_chages_room1;number_chages_room2 (default: ""). If there are two rooms and one is empty the result can be ";number,number" or "number,number;". The user MUST specify ages for each child. lang: Language code (default: "en") sort: Sort order for results. Use this when user asks for cheapest, best rated, closest to center, etc. Valid values:

  • "recommended" (default): Multi-factor relevance (price, rating, internal score)
  • "price": Price ascending (cheapest first) - use when user wants "cheapest" or "lowest price"
  • "stars": Hotel star rating descending (5-star first) - use for "best hotels" or "luxury"
  • "review_score": Highest review score - use for "best reviewed" or "most popular"
  • "distance": Closest to city center first - use for "central" or "close to center"

max_results: Maximum number of results to return (default: 5, max: 20) accommodation_type: Filter by accommodation type (optional). CSV of IDs 1-14: 1=Hotels, 2=Resorts, 3=Apartments, 4=Hostels, 5=Motels, 6=Country Houses, 7=Guest Houses, 8=B&B, 9=Villas, 10=Boats & Cruises, 11=Campsites, 12=Riads, 13=Ryokans, 14=Aparthotels. Example: "1,2" for Hotels and Resorts accommodation_facilities: Filter by facilities/amenities (optional). CSV of IDs 0-60. Examples: 0=Free Wi-Fi, 4=Pool, 6=Spa, 7=Adults Only, 9=Seafront, 25=Golf, 46=Indoor Pool, 56=Bar, 58=Restaurant. Example: "0,4,6" for Free Wi-Fi, Pool, and Spa price: Optional price filter for one-way price per person, as string. Supported formats:

  • "300" => max price 300 (in the selected currency)
  • "200,400" => price range between 200 and 400

Use only digits and a comma, do NOT include currency symbols. If you invert the order ("400,200"), the backend will normalize it to "200,400". hotel_stars: Optional filter for hotel star rating, as comma-separated integers. Allowed values: 1,2,3,4,5. Examples:

  • "4" => only 4-star hotels
  • "3,4" => 3 or 4 stars
  • "3,4,5" => 3, 4 or 5 stars

Returns: Dictionary containing search results with hotel results.

═══════════════════════════════════════════════════════════════════════════ MANDATORY OUTPUT FORMAT ═══════════════════════════════════════════════════════════════════════════

You MUST present results as a Markdown table with EXACTLY these columns: |

| Photo | Hotel | Stars | Rating | Total Price | Distance from Centre | Amenities |

Column mapping from response JSON:

  • # β†’ index
  • Photo β†’ [πŸ–ΌοΈ](hotel.main_image) (clickable link)
  • Hotel β†’ hotel.name
  • Stars β†’ hotel.stars
  • Rating β†’ hotel.rating
  • Total Price β†’ price_total + currency
  • Distance from Centre β†’ hotel.distance_km
  • Amenities β†’ hotel.amenities (max 3, comma-separated)

CRITICAL:

  • You MUST use table format. Do NOT list hotels as bullet points or paragraphs.
  • You MUST display ALL hotels returned in the response. Do NOT truncate or show only a subset.
  • STRICTLY PRESERVE the order of results using the "index" field (1, 2, 3...)
  • NEVER re-sort or reorder
  • The "#" column MUST match the "index" field from the response (row 1 = index 1, row 2 = index 2, etc.)
  • "Photo" column must contain clickable link: [πŸ–ΌοΈ](hotel.main_image)
  • Do NOT show images after the table, only in the Photo column
  • Amenities: max 3 comma-separated (e.g. "WiFi, Pool, Spa")
  • Mark cheapest with πŸ† after hotel name (but keep it in its original position, do NOT move it to first row)
  • Use the SAME LANGUAGE as the user's request for all labels and content
  • Hide internal IDs from the user
  • The user expects a comparison table they can scan quickly with ALL available options.

Example correct output: |

| Photo | Hotel | Stars | Rating | Total Price | Distance from Centre | Amenities |

|---|-------|-------|-------|--------|-------------|----------------------|-----------| | 1 | [πŸ–ΌοΈ](https://...) | Grand Hotel πŸ† | ⭐⭐⭐⭐ | 8.5 | EUR 450.00 | 0.5 km | WiFi, Pool, Spa | | 2 | [πŸ–ΌοΈ](https://...) | Beach Resort | ⭐⭐⭐⭐⭐ | 9.1 | EUR 680.00 | 1.2 km | WiFi, Pool, Bar |

Parameters (3 required, 9 optional)
Required
date_tostring
date_fromstring
destinationstring
Optional
langstring
sortstring
pricestring
adultsstring
ch_agesstring
hotel_starsstring
max_resultsinteger
accommodation_typestring
accommodation_facilitiesstring

Select Hotel Options

select_hotel_options
Full Description

Get detailed options for a specific hotel after initial search.

This tool automatically uses the same number of adults, children, currency, and business profile from the original search to ensure consistency.

Args: search_id: The search ID from the previous flight+hotel search or only hotel search hotel_internal_id: The internal hotel ID from the search results (internal_id_hotel) date_from: Check-in date (YYYY-MM-DD) date_to: Check-out date (YYYY-MM-DD)

Returns: Dictionary containing detailed hotel options, room types, and rates

OUTPUT FORMAT: Use structured sections with emoji headers (πŸ¨βœˆοΈπŸ›οΈπŸ“Έ). 1) Hotel info: name, stars, address, check-in/out, hdp_mcp, photos (inline links) 2) Flights: if present, show outbound/return with carrier, times, duration 3) Rooms table: | Room | Total Price | Cancellation | Availability |

  • Sort by price, mark cheapest with ⭐
  • Simplify cancellation policy

Use the SAME LANGUAGE as the user's request for all labels and content. Hide internal IDs (rate_id kept for booking but not shown in the display).

Parameters (4 required)
Required
date_tostring
date_fromstring
search_idinteger
hotel_internal_idinteger