hero picture
hero picture
hero picture

Where to stay

Experience luxury and nature, residing in perfect harmony

THE RED SEA

Discover our luxury resorts

A handpicked selection of the best luxury hotels and resorts on the planet.

/>
/>
/>
1 2 3

Inspired by the Nabataean traders, the Six Senses Southern Dunes Resort echoes the shape of the desert to offer prime aspects over the inspiring landscape of the Hijaz Mountains. Venture to The Artisan Village to hear a story of cultural history and heritage, or under the canopy of the Oasis, the heart of the resort, where vibrant activities gather under one roof.

/>
/>
/>
1 2 3

Find your sanctuary on the secluded Ummahat Island at The St. Regis Red Sea Resort, where 90 spectacular avant- garde villas dot the landscape. Fringed by a thriving coral reef, and devoted to the preservation of a diverse ecosystem, this vision of exquisite living is just a short boat – or seaplane – ride away.

Transcend the ordinary, with a high-tech fitness center and kids club, or relax in our state-of-the-art spa and pool. Bespoke services and the St. Regis Butler Service ensures everyone’s needs are catered to, whilst three restaurants, each with its own distinct concept, artfully combine the spirit of the region with exceptional fine dining.

1 2 3

EXPLORING THE RED SEA

Pristine islands and breathtaking reefs

One of the world’s last true hidden treasures, The Red Sea is surrounded by the world’s fourth-largest barrier reef system and spans over 28,000-square-kilometer with an archipelago of more than 90 untouched island,dormant volcanos, sweeping desert dunes, mountain canyons and historical and cultural sites. The Red Sea will be ready to welcome the first guests in Winter 2024.

EXPLORING THE RED SEA

Majestic mountains and sprawling dunes

As the sun's gentle touch illuminates the rugged mountain peaks and the golden sands of the desert dunes, a world of opulence and elegance unfolds. Indulge in the finest accommodations, where modern comfort harmonizes with ancient landscapes, offering breathtaking views and unparalleled relaxation.

>
An error occurred while processing the template.
The following has evaluated to null or missing:
==> element.linkToPage  [in template "20097#20123#378290" at line 72, column 62]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${element.linkToPage.getFriendlyUrl()}  [in template "20097#20123#378290" at line 72, column 60]
----
1<div class="bgContainer bgContainer--shapeBottomStart bgContainer--white"> 
2    <#if (shapeBackgroundImage.getData())?? && shapeBackgroundImage.getData() != ""> 
3        <img class="bgContainer__shape bgContainer__shape--1" ale="background shape" width="417" height="1172" data-fileentryid="${shapeBackgroundImage.getAttribute("fileEntryId")}" src="${shapeBackgroundImage.getData()}" /> 
4    </#if> 
5    <!-- begin sections/filteredGrid --> 
6    <section 
7            class="filteredGrid filteredGrid--transparent filteredGrid--smallPaddingTop filteredGrid--smallPaddingBottom"> 
8        <div class="filteredGrid__inner wrapper" data-scroll-anim=""> 
9 
10            <!-- begin components/heading --> 
11            <div class="heading heading--horizontal heading--horizontal11 filteredGrid__heading" 
12                 data-scroll-anim-item="fadeInStart;0;0.3;easeOutCubic" style="transform: translateX(0px); opacity: 1;"> 
13                <h2 class="heading__title"><#if (title.getData())??> 
14                        ${title.getData()} 
15                    </#if></h2> 
16                <h3 class="heading__subtitle"><#if (subtitle.getData())??> 
17                        ${subtitle.getData()} 
18                    </#if></h3> 
19                <p class="heading__text"><#if (lead.getData())??> 
20                        ${lead.getData()} 
21                    </#if></p> 
22            </div> 
23            <!-- end components/heading --> 
24            <div class="filteredGrid__filters"> 
25                <div class="filteredGrid__label"><#if (searchText.getData())??>${searchText.getData()}</#if></div> 
26                <div class="filteredGrid__fields"> 
27                    <#if categoryGroup.getSiblings()?has_content> 
28                        <#assign seq = categoryGroup.getSiblings()> 
29                        <#list categoryGroup.getSiblings() as cur_category_group> 
30                            <div id="hotel-filter-${cur_category_group?index}" class="filteredGrid__field"> 
31 
32                                <!-- begin components/select --> 
33 
34                                <div class="select select--skies select--placeholder" data-input-label="select--filled" 
35                                     data-custom-select="" data-custom-select-theme="skies"> 
36                                    <select id="<#if (cur_category_group.category.getData())??>${cur_category_group.category.getData()} 
37</#if>" name="<#if (cur_category_group.category.getData())??>${cur_category_group.category.getData()}</#if>" class="select__select select__input--hidden" data-input-label-input="" data-custom-select-input=""> 
38                                        <option value="" class="select__option" selected="selected"></option> 
39                                        <#if cur_category_group.option.getSiblings()?has_content> 
40                                            <#list cur_category_group.option.getSiblings() as cur_categoryGroup_option> 
41                                                <#if (cur_categoryGroup_option.getData())??> 
42                                                    <option value="${cur_categoryGroup_option.getData()}" 
43                                                            class="select__option">${cur_categoryGroup_option.getData()}</option> 
44 
45                                                </#if> 
46                                            </#list> 
47                                        </#if> 
48 
49                                    </select> 
50                                    <label for="<#if (cur_category_group.category.getData())??>${cur_category_group.category.getData()}</#if>" class="select__label"><#if (cur_category_group.category.getData())??> 
51                                            ${cur_category_group.category.getData()} 
52                                        </#if> 
53                                    </label> 
54                                    <span class="input__error"></span> 
55                                </div> 
56 
57                                <!-- end components/select --> 
58                            </div> 
59                        </#list> 
60                    </#if> 
61 
62                </div> 
63            </div> 
64 
65            <div class="filteredGrid__grid"> 
66 
67                <#if card.getSiblings()?has_content> 
68                    <#list card.getSiblings() as element> 
69                        <#if (element.cardLink.getData()?has_content)> 
70                            <a href="<#if (element.cardLink.getData())??>${element.cardLink.getData()}</#if>" class="gridTile gridTile--default filteredGrid__item" data-card" <#if getterUtil.getBoolean(element.openInNewTab.getData())>target="_blank"</#if>> 
71                        <#else> 
72                            <a data-senna-off="true" href="${element.linkToPage.getFriendlyUrl()}" class="gridTile gridTile--default filteredGrid__item" data-card" <#if getterUtil.getBoolean(element.openInNewTab.getData())>target="_blank"</#if>> 
73                        </#if> 
74                        <div class="gridTile__label gridTile__label--top"><#if getterUtil.getBoolean(element.opens.getData())>OPENS<#elseif getterUtil.getBoolean(element.planned.getData())><#else></#if></div> 
75                        <#if element.cardCategory.getSiblings()?has_content> 
76                            <#list element.cardCategory.getSiblings() as cur_card_category> 
77                                <input class="hidden-input" type="hidden" 
78                                       data-select-id="${cur_card_category?index}" 
79                                       data-input-id="${element_index}" 
80                                       value="<#if (cur_card_category.categoryValue.getData())??>${cur_card_category.categoryValue.getData()}</#if>" 
81
82                            </#list> 
83                        </#if> 
84                        <div class="gridTile__logo"> 
85                            <#if (element.cardDefaultImage.getData())?? && element.cardDefaultImage.getData() != ""> 
86                                <img width="140" height="30" class="gridTile__logoImg gridTile__logoImg--default" 
87                                     alt="${element.cardDefaultImage.getAttribute("alt")}" 
88                                     data-fileentryid="${element.cardDefaultImage.getAttribute("fileEntryId")}" 
89                                     src="${element.cardDefaultImage.getData()}"/> 
90                            </#if><#if (element.cardOverlayImage.getData())?? && element.cardOverlayImage.getData() != ""> 
91                                <img width="140" height="30" class="gridTile__logoImg gridTile__logoImg--hover" 
92                                     alt="${element.cardOverlayImage.getAttribute("alt")}" 
93                                     data-fileentryid="${element.cardOverlayImage.getAttribute("fileEntryId")}" 
94                                     src="${element.cardOverlayImage.getData()}"/> 
95                            </#if> 
96                        </div> 
97                        <div class="gridTile__label gridTile__label--bottom"><#if (element.date.getData())??>${element.date.getData()}</#if> 
98                        </div> 
99 
100                        </a> 
101                    </#list> 
102                </#if> 
103 
104            </div> 
105        </div> 
106    </section> 
107    <!-- end sections/filteredGrid --> 
108</div> 
109<script> 
110    function getValues(select) { 
111        const newArray = [] 
112        var inputs = select.querySelector('.select__value'); 
113        inputs.forEach(function (input) { 
114            if (!!input.innerHTML.trim()) { 
115                newArray.push(input.innerHTML.trim()); 
116
117        }) 
118        return newArray; 
119
120 
121    function Listen() { 
122        var filterSelects = document.querySelectorAll('.select'); 
123        const cards = document.querySelectorAll(`[data-card]`); 
124        function getCardValues(card) { 
125            const CardValueArray = [] 
126            var inputs = card.querySelectorAll('.hidden-input'); 
127            inputs.forEach(function (input) { 
128                if (!!input.value.trim()) { 
129                    CardValueArray.push(input.value.trim()); 
130
131            }) 
132            return CardValueArray; 
133
134        function updateCardVisibility() { 
135            cards.forEach(function (card) { 
136                const cardValues = Array.from(card.querySelectorAll('.hidden-input')); 
137                const cardMatches = Array.from(filterSelects).every(function (filterSelect, selectIndex) { 
138                    const selectedValue = filterSelect.querySelector('.select__value').innerHTML; 
139                    console.log("selectedValue " + selectedValue); 
140                    const hasMatchingValue = cardValues.some(function (cardValue) { 
141                        console.log(cardValue.value); 
142 
143                        return cardValue.dataset.selectId == selectIndex && cardValue.value.trim() == selectedValue.trim(); 
144                    }); 
145                    return selectedValue === '' || hasMatchingValue; 
146                }); 
147                card.style.display = cardMatches ? 'flex' : 'none'; 
148            }); 
149
150        filterSelects.forEach(function (filterSelect) { 
151            const selectInSelect = filterSelect.querySelector('select'); 
152            selectInSelect.addEventListener('blur', updateCardVisibility); 
153        }); 
154
155    Listen(); 
156 
157    window.dataLayer = window.dataLayer || []; 
158 
159    const hotelFilter0 = document.querySelector("#hotel-filter-0"); 
160    const hotelFilter1 = document.querySelector("#hotel-filter-1"); 
161    const hotelFilter2 = document.querySelector("#hotel-filter-2"); 
162    const gridTile = document.querySelectorAll(".filteredGrid__grid .gridTile"); 
163 
164    let filter1 = ""; 
165    let filter2 = ""; 
166    let filter3 = ""; 
167    let hotelName = ""; 
168     
169    gridTile.forEach((element)=>{ 
170        element.addEventListener("click", function() { 
171            hotelName = this.querySelector(".gridTile__logo img").alt 
172            filter1 = hotelFilter0.querySelector("select").value; 
173            filter2 = hotelFilter1.querySelector("select").value; 
174            filter3 = hotelFilter2.querySelector("select").value; 
175 
176            window.dataLayer.push({ 
177                'event': 'book_your_stay', 
178                'hotel_name': hotelName, 
179                'location': filter1, 
180                'type_of_property': filter2, 
181                'facilities': filter3, 
182                'language': (document.documentElement.getAttribute("lang") == "en-US") ? "English" : "Arabic", 
183                'page path': '' 
184            }); 
185        }); 
186    }); 
187</script> 

WHAT THEY SAY ABOUT US

The best things in life are shared

FOLLOW US