Search Holidays (ChatGPT)
searchHolidaysChatGPTFull Description
Search for holiday packages (flights + hotel) or hotel-only stays. loveholidays offers flexible 'any any' search - you can search without specifying destination, airport, or dates. SEARCH BEHAVIOR: For package holidays (hotelOnly=false): Search immediately with whatever info the user provides. Defaults (7 nights, 2 adults) work well. No need to ask clarifying questions first - show results and refine. For hotel-only (hotelOnly=true): MUST ask for dates before searching - hotel search requires dates to work. WHEN TO ASK QUESTIONS: If user mentions children but not ages, ALWAYS ask for ages before searching - this affects pricing and availability. For hotel-only requests, ALWAYS ask for check-in date/month before searching. Otherwise, search first and offer to refine after. COMMUNICATION: Before each search, briefly tell the user what you're searching for (one line). Examples: 'Let me search for holidays to Spain in July...', 'Searching for 5-star hotels with all-inclusive...'. This is especially important for follow-up searches - users may be confused seeing multiple searches without context. RESPONSE STYLE: Keep responses brief and friendly. Let the visual result cards do the talking. After showing results, gently mention that filters are available if the user wants to narrow down. Don’t over-analyze results — a simple "Here are some options that might work for you" is enough. POST-SEARCH INTERPRETATION RULES (IMPORTANT): After a search is executed, the assistant MUST ONLY:
- Describe, summarize, or compare information explicitly present in the tool response
- Reference fields returned by the API (e.g. price, nights, departure airport, board basis, star rating, filters)
- Use availableFilters ONLY to suggest refinements The assistant MUST NOT:
- Infer availability, popularity, suitability, or value beyond what the data shows
- Add subjective opinions not present in the response
- Assume missing data (e.g. weather, flight duration, walkability, nightlife, “good for pregnancy”, etc.)
- Recommend destinations, hotels, or timing unless directly supported by the returned results If information is not present in the tool response, the assistant should either:
- Stay silent about it, or
- Ask a clarifying question / offer to refine the searchPARAMETERS: destinationName: Extract from user input (e.g., 'Spain', 'Marbella'). Omit for open search showing popular deals. destinationGroupId: Use for themes like WINTER_SUN_DESTINATIONS, CITY_BREAKS_DESTINATIONS, SKI_DESTINATIONS. departureDateMin/Max: Format YYYY-MM-DD. Optional for packages, REQUIRED for hotel-only. departureAirports: IATA codes. Optional - omit for any-airport search. rooms: Default [{ adults: 2, childAges: [] }]. Ask for child ages if children mentioned. nights: Default 7. Use user's preference if stated. hotelOnly: true for 'hotel', 'accommodation', 'stay'. false (default) for 'holiday', 'trip', 'vacation', 'package'. sort: POPULAR (default), POPULAR_FOR_FAMILIES (if children in party), PRICE_LOW_TO_HIGH, PRICE_HIGH_TO_LOW, TRIPADVISOR_RATING. FILTERS: Do NOT include filters on initial searches. After first search, availableFilters in the response shows valid options. Only use filters on subsequent searches with exact values from availableFilters.
Parameters (0 required, 11 optional)
departureAirportsarrayOmit for any-airport search (most flexible). If user specifies airport/city, use IATA codes: London -> ['LHR','LGW','STN','LTN','LCY'], Manchester -> ['MAN']. Ignored for hotel-only searches.
departureDateMaxstringLatest departure/check-in date. Format YYYY-MM-DD. Calculate from user intent: 'summer 2025' -> '2025-08-31', 'Christmas week' -> '2025-12-27'. For exact dates, set equal to departureDateMin. REQUIRED for hotel-only, optional for packages.
departureDateMinEarliest departure/check-in date. Format YYYY-MM-DD. Calculate from user intent: 'summer 2025' -> '2025-06-01', 'Christmas' -> '2025-12-20'. REQUIRED for hotel-only searches - ask for dates before searching. Optional for packages - omit for any-date search.
destinationGroupIdstringDo NOT populate this field if a specific destination is asked for. Only set this if users ask for vague description that are matching the following descriptions. WINTER_SUN_DESTINATIONS: 'winter sun', 'somewhere warm in winter'. CITY_BREAKS_DESTINATIONS: 'city break', 'weekend city trip'. SKI_DESTINATIONS: 'skiing', 'ski holiday'. LAKES_AND_MOUNTAINS: 'lakes', 'mountains', 'alpine'. LONG_HAUL_DESTINATIONS: 'long haul', 'far away'. CHRISTMAS_CITY_BREAKS: 'Christmas markets', 'festive city break'. When used, destinationName is ignored.
LAKES_AND_MOUNTAINSLONG_HAUL_DESTINATIONSWINTER_SUN_DESTINATIONSCITY_BREAKS_DESTINATIONSSKI_DESTINATIONSCHRISTMAS_CITY_BREAKSdestinationNamestringExtract destination from user input (e.g., 'Spain', 'Marbella', 'Greek islands'). Omit to search across all destinations (any-any search).
filtersobjectIMPORTANT: Do NOT include filters on initial searches. Filters can ONLY be used after a previous search has returned availableFilters. Use exact filter keys and values from availableFilters in the previous response. Never guess or assume filter values - only use values explicitly provided by the user that match options in availableFilters.
hotelOnlybooleantrue for hotel/accommodation only (no flights). Triggers: 'hotel in X', 'find accommodation', 'book a hotel', 'hotel stay'. false (default) for packages with flights. Triggers: 'holiday', 'trip', 'vacation', 'flights and hotel'. IMPORTANT: When true, dates are REQUIRED - ask before searching.
FalsenightsnumberNumber of nights. Default 7. Use customer's preference if stated.
7resultsStartIndexnumberPagination offset. Default 0. For 'show more', set to previous offset + 10.
0roomsarrayRoom configurations. Default [{ adults: 2, childAges: [] }]. MUST ask for child ages if children mentioned but ages not given. Rules: Max 5 per room, min 1 adult per 4 children, ages 0-17. Examples: 2 adults + 2 kids (8,5) = [{ adults: 2, childAges: [8, 5] }]. 6 adults = [{ adults: 3, childAges: [] }, { adults: 3, childAges: [] }]. 2 adults + 4 kids = [{ adults: 1, childAges: [10, 8] }, { adults: 1, childAges: [5, 3] }].
[{'adults': 2, 'childAges': []}]sortstringSort order. Auto-select POPULAR_FOR_FAMILIES when children in party, otherwise POPULAR. Override with user preference: 'cheapest' -> PRICE_LOW_TO_HIGH, 'best rated' -> TRIPADVISOR_RATING.
POPULARPOPULAR_FOR_FAMILIESPRICE_LOW_TO_HIGHPRICE_HIGH_TO_LOWTRIPADVISOR_RATINGPOPULAR