a:6:{i:0;s:12001:"				<div class="h1"><h1>Majestic Dubai Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.rajastravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.rajastravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Majestic Dubai Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Dubai, Abu Dhabi, Burj Khalifa, Burj Al Arab</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.rajastravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Majestic Dubai Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="79275"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_13/370602/139596.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/370602/139596.jpg"  height="150"  width="150"    alt="Majestic Dubai Tour" title="Majestic Dubai Tour" loading="lazy" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrival in Dubai - Abu Dhabi
								</p>
								<p class="aj">As you will arrive in Dubai, you will be received by our tour representative and further escorted to the city of Abu Dhabi. Upon reaching Abu Dhabi, guests would be transferred to one of our listed hotels. Relax in your cozy rooms as the rest of the day is at leisure. If you wish to explore the nearby surroundings and market, make sure you do that in the evening.<br />
<br />
Overnight in Abu Dhabi.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Abu Dhabi- City Tour and Ferrari World
								</p>
								<p class="aj">Right after the morning breakfast, guests would be embarked on a city tour of Abu Dhabi. This will include visit to the Grand Mosque. Rightfully named as the Sheikh Zayed Grand Mosque, the spectacular site is considered to be the most sacred in the country. Post this visit, you would be heading for a tour of the Ferrari World.<br />
<br />
Claimed to be world's largest Indoor theme park, the Ferrai world is located on the Yas Island in Abu Dhabi. The theme park is renowned for its unique rides that count to more than 20. From thrilling speed rides, stimulating rides to family friendly attractions, the indoor park suits tourists of all ages and tastes. Moreover, the theme park is also packed with a variety of Italian restaurants, international retail shops and entertainment joints.<br />
<br />
Overnight stay in Dubai.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Abu Dhabi- Dubai- Dhow Cruise
								</p>
								<p class="aj">Post breakfast, you would be transferred from Abu Dhabi to a hotel in Dubai. Rest of the day is to be spent at leisure, while the evenings are meant for a Dhow cruise ride along the beautiful Dubai Creek. As you would be gently cruising on the traditional wooden Dhow; wining and dining, spectacular views along the creek would be bound to pass by, making it a magical experience.<br />
<br />
The wooden Dhow would be cruising along the magnificently lit attractions of the city which include places like the National Bank of Dubai and the Chamber of Commerce Building. Guests would be served a sumptuous international buffet dinner. Post this cruise ride, return back to the hotel.<br />
<br />
Overnight stay in Dubai.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Dubai- City tour- Desert Safari tour
								</p>
								<p class="aj">After being done with the morning breakfast, guests would be picked up by our tour representative for a half day city tour of Dubai. Now it is your chance to discover the traditional side of modern Dubai. The tour will start with the visit to Palm Jumeirah, which is also famed as the eighth wonder of the world. While on your drive, make a halt for a quick photo session at the Atlantis hotel. Post that, continue on your course to the mosque. Built in the year 1979 in the style of Fatimi mosques of Egypt, the Palm Jumeirah is amongst the prominent structures of the city. As you would be done with the visit to the mosque, proceed towards the famous Sheikh Zayed Road to admire the tallest building in the world; Burj Khalifa tower from a long distance.<br />
<br />
Drive to the old parts of the city will pass through majestic palaces of the ruling family of Dubai. Next on the journey would be the visit to Al Fahidi fort and Dubai Museum. Al Fahidi fort is a prominent historic structure that is highly reminiscent of Dubai's illustrious past. Next in the itinerary would be the renowned gold and spice souk. Following it would be the visit to the souvenir shop. Here you can buy a lot of antiques, souvenirs and art & craft items. The city tour of Dubai will end with the final stoppage at the Burj Al Arab hotel.<br />
<br />
In the second half of the day, guests would be picked up to enjoy a desert safari that includes a BBQ dinner and an Arabic Belly Dance program for the evening. You would be starting first with a thumping ride in the desert right over the sand dunes. Amidst this roller coaster ride, you can stop for clicking pictures. Post this, you would be moving for a short visit to Ali's Camel Farm. Later on, you would be arriving at the pre-booked desert camp. Do catch the sight of the beautiful desert sunset. Guests would be given a traditional welcome with Arabic tea, coffee and dates, as they will make their arrival at the desert camp. Feel free to relax in the specially furnished Arabic tents while the traditional oven is lit in preparation of the dinner. You can even get a henna tattoo done or simply embark on a camel ride as the arrangements of the evening dance show and performance get fully done.<br />
<br />
To make it an unforgettable evening, the highlights will include a Tannoura dance show and a belly dance performance to the beats and rhythm of Arabia. On the other hand, the evening cuisines will comprise a sumptuous three course barbeque meal teamed up with a variety of salad and meat. Post dinner, you would be driven back to the city hotel for an overnight stay.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Dubai- Snow Park Ski Dubai
								</p>
								<p class="aj">Post breakfast, guests would be leaving for skiing at the world's largest indoor snow park known as Ski Dubai. The park is built over a sprawling area of 3000 sq meters. Fully covered with snow, the park offers an ultimate family fun time. Get in your snow boots and enjoy the Tobogganing hills, the Twin Track Bobsled runs and the snow cavern. The snow park also offers a Giant Ball ride, for that you have to go to the top of the upgrade station. This point also offers a perfect bird's eye view of the whole snow park. Post all the fun, return to the comforts of your hotel.<br />
<br />
Overnight in Dubai.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Depart Dubai
								</p>
								<p class="aj">This brings the end of our amazing Dubai tour. Enjoy your breakfast at the hotel after which you would be transferred to the Dubai International Airport for your onward journey back home. The tour ends here.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.rajastravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Majestic Dubai Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="79275"/>
						</form>
						</div>
						
						";i:1;s:58:"Book Majestic Dubai Tour - 5 Nights / 6 Days Tour Packages";i:2;s:151:"book majestic dubai tour - 5 nights / 6 days tour packages, forts and palaces tour packages, dubai, abu dhabi, burj khalifa, burj al arab tour packages";i:3;s:196:"Book Majestic Dubai Tour - 5 Nights / 6 Days tour packages from RAJAS TRAVELS - Get attractive 5 Nights / 6 Days Forts and Palaces  tour packages for  Dubai, Abu Dhabi, Burj Khalifa, Burj Al Arab.";i:4;s:435:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Dubai, Abu Dhabi, Burj Khalifa, Burj Al Arab"        
		                 },
		      "description": "",
		      "name": "Majestic Dubai Tour",
		      "telephone": "+91-9820123553"
		    }
		    </script>
			";i:5;N;}