a:6:{i:0;s:18754:"						<section class="headBg theme2 ">
						<div class="wrap">
						<div class="page-title-inner fo"> 
						<div class="h1"><h1>Dubai Tour Package 5 Days</h1></div>
						<p class="breadcrumb ar uu small"><a href="http://www.kanadiantravels.com/" title="Home">Home</a>
						
													<b class="ffv p2px">&rsaquo;</b><a href="http://www.kanadiantravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>
								
						<b class="ffv p2px">&rsaquo;</b> Dubai Tour Package 5 Days</p>
						</div>
						</div>
						</section>
										<section id="middle"><br />
				<div class="wrap packages" id="bodyFormatNT">
				<div class="row1 dt columns12"><!--MIDDLE ROW1 STARTS-->
				<div class="col-2 wideColumn ip ls"><!--MIDDLE ROW1 COL-2 STARTS-->				
								
						<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">
					
											<p class="mb5px"><b>Duration :</b> 
						4 Nights / 5 Days 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> Dubai</p>
												<p class="mb5px"><b>Price (Starting From) :</b> <span class="dif">On Request</span></p>
												<br />
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.kanadiantravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Dubai Tour Package 5 Days - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="buttonBig p10px20px c5px b large dib">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="195284"/>
						</form>
						
												</p>
											</td>
											<td class="p10px vat imgWidth200 w200px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w200px h200px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_23/681306/309533.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_23/681306/309533.jpg"  width="150" height="100"    alt="Dubai Tour Package 5 Days" title="Dubai Tour Package 5 Days" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
													<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Tour Detail</p>
								</div>
													
								Highlights:<br />
<br />
Single Entry Tourist Visa<br />
Return Economy-Class Airfare<br />
3-Star Hotel accommodation with Daily Breakfast<br />
03 Sightseeing<br />
Airport Transfers & Sightseeing in (SIC basis)								</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> Arrive in Dubai & (Dhow cruise in evening)
										</p>
										<p class="aj">Arrive at Dubai Airport and after clearing Immigration and Custom formalities, proceed towards the meeting point. Airport Representative will greet you and welcome you and Drop at Dubai hotel .In evening Pickup From Hotel (19:30 Hrs) and Duration is (2 Hrs) The two-hour Dubai Dhow cruise that usually begins after sunset covers almost the entire of Creek . As you gaze at the splendid views of the Creek wherein the modern era classiness joins hands with the aura and charm of olden times, our traditional Arabian dhow cruise Dubai provides you with an as-never-before sightseeing experience while allowing you to savor a wide range of freshly prepared international gourmet specialties and enjoy a spectrum of onboard activities including live music performances and traditional Tanura dance shows. Meal :- Breakfast And Dinner.</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> Day Free For Leisure
										</p>
										<p class="aj">Day Free for Leisure you you can take any optional tour or complete your shopping. Meal :- Breakfast</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> Half Day Dubai City Tour And Desert Safari with BBQ Dinner
										</p>
										<p class="aj">After Breakfast at Hotel Pick Up from your Hotel Lobby for Enjoy Dubai City Tour (09:00 Am) and Duration (4 Hrs )Dubai, our itinerary further comprises a tour to such phenomenal attractions of the city as Burj Al Arab Hotel the world only seven-star hotel that is especially noted for its distinctive silhouette resembling a billowing sail, the Palm Island â€“ the crescent shaped man-made island, Atlantis Hotel and Burj Khalifa the towering building that is one of its kind in the whole world. Equally noteworthy is Dubai scenic attractions, and a visit to well-maintained Jumeirah Beach will provide you with a unique opportunity to immerse in the city natural beauty. The journey ends with a drive through Sheik Zayed Road that has imposing skyscrapers lined on its either side and a shopping at one of the city prominent shopping malls. Whether you re history buff, shopping freak or just here to have a glimpse of city significant tourist attractions, our city tour assures to cover all your unique requirements. Important Notes: Minimum 02 passengers required, Pick up and drop off services from major hotels Customers are requested to wait at hotel reception 15 minutes prior to pick up time. Requires half day from 9 Am to 1.30 Pm In Afternoon pick up from Hotel Lobby for enjoy Desert Safari With BBQ Dinner & Belly Dance Pick up (15:00 Hrs) from hotel lobby and drop off (21:30 Hrs) at hotel - Services from all major hotels in standard vehicle. The real highlight of the tour is an exciting, adrenaline-pumping 4x4 drive deep into the desert to explore the vast stretch of the golden dunes by plummeting low in the deep ditches and escalating high on the summit of the dunes. This is followed by a visit to our traditional Arabic Bedouin campsite, which enables you to capture the real essence and beauty of the desert, as you relish traditional Arabic coffee, smoke a flavored Shisha, and rivet in the mesmerizing belly dance movements and Tanura horse shows. A not to miss out is the enchanting desert sunset views that promote for an exceptional photographic experience. You will also get the opportunity to ride a camel, walk over desert sand, put on Arabic attire, adorn your hands with mind blowing henna designs, and take pictures of falcon sitting on your shoulder. To tantalize your taste buds, the tour includes a scrumptious dinner featuring international buffet with a choice of vegetarian and non-vegetarian dishes. Meal :- Breakfast And Dinner.</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> Day Free For Leisure
										</p>
										<p class="aj">Day Free for Leisure you you can take any optional tour or complete your shopping. Meal :- Breakfast</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 To India Return
										</p>
										<p class="aj">If Hotel serve Breakfast on time so After breakfast at hotel check out from the hotel and our Driver/Coach person pick up from your Hotel Lobby and Drop at Airport for Dubai to Delhi flight . Meal :- Breakfast</p>
										</td>
										</tr>
										</table>					
										</div>								<br />
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Inclusions</p>
								</div>
												
								<ul>
																			<li>CP (Room + Breakfast)</li>
																						<li>Hotel</li>
																						<li>Sightseeing</li>
																				<li>Single Entry Tourist Visa</li><li>
Return Economy-Class Airfare</li><li>
04 Nights Accommodation in 3 Star Hotel with Daily ABF</li><li>
Daily Breakfast (ABF)</li><li>
Half Day Dubai City Tour</li><li>
Desert Safari with BBQ Dinner & Live Entertainment</li><li>
Dhow Cruise with Dinner & Transfers</li><li>
Return Transfers to the airport</li><li>
All tours & transfers on SIC basis.</li><li>
Meet and greet assistance outside Dubai International Airport</li><li>
5% Govt. Service Tax</li>
																	</ul>
								</div>
																<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Payments Terms</p>
								</div>
								
								<ul><li>Some Advance Percentage of total booking amount</li><li>
Airfare/Transport fare to be paid full at one time in advance.</li></ul>					
								</div>
														<div class="data mt20px p15px">            
						<div class="mb7px"> 
						<p class="b xlarge mb10px dib">Cancellation &amp; Refund Policy</p>
						</div>
								
						<ul><li>Upon cancellation, refund will be made after deducting the Retention Amount.</li><li>
Retention Amount varies as per the number of days left before your package start date.</li></ul>			
						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.kanadiantravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Dubai Tour Package 5 Days - 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="195284"/>
						</form>
						</div>
						
										</div>
				<div class="col-3 thinColumn"><!--MIDDLE ROW1 COL-1 STARTS-->
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by City</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.kanadiantravels.com/dubai-tour-packages.htm" title="Dubai Tour Packages">Dubai</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.kanadiantravels.com/singapore-city-tour-packages.htm" title="Singapore Tour Packages">Singapore</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.kanadiantravels.com/kuala-lumpur-tour-packages.htm" title="Kuala Lumpur Tour Packages">Kuala Lumpur</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.kanadiantravels.com/abu-dhabi-tour-packages.htm" title="Abu Dhabi Tour Packages">Abu Dhabi</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.kanadiantravels.com/kallang-tour-packages.htm" title="Kallang Tour Packages">Kallang</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.kanadiantravels.com/goa-city-tour-packages.htm" title="Goa City Tour Packages">Goa City</a> <b class="alpha50 bn small">(1)</b></span>
										
				</div>
				</div>
				</div>
				</div>
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by Category</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.kanadiantravels.com/adventure-holidays-catid.htm" title="Adventure Packages">Adventure</a> <b class="alpha50 bn small">(6)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.kanadiantravels.com/beach-islands-holidays-catid.htm" title="Beach and Islands Packages">Beach and Islands</a> <b class="alpha50 bn small">(1)</b></span>
						
				</div>
				</div>
				</div>
				</div>
				
				
				</div>
				</div>
				
										<br />
						<div class="row1"> 
						<div class="col-1"> 
						<div class="mt30px">
						<p class="xxlarge b pb10px bdrB db"> Similar Tour Packages for Dubai</p>
						</div>
						<br/>
						<div class="cf_3img">
						<ul class="lsn m0px p0px fo idv_eqheight cols_similar">
											
							<li>
							<div class="bdr">
							<div class="cp" onclick="location.href='http://www.kanadiantravels.com/holiday-packages/dubai-tour-package.htm'">
															<div class="picBg ac vam lh0"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_23/681306/309510.jpg"  alt="Dubai Tour Package" title="Dubai Tour Package"  class="bdr p1px"  /></div>
															
							<div class="headHr bdr0 p7px b ml2px mr2px mt1px large tp-head"><a href="http://www.kanadiantravels.com/holiday-packages/dubai-tour-package.htm" title="Dubai Tour Package"><h3>Dubai Tour Package</h3></a></div>
							<div class="bdrT p12px">
															<div class="b large dif pt5px pb5px">Price On Request</div>
																<p class="mt7px"><b class="alpha50">Duration</b> : 
								5 Nights / 6 Days 
								</p>
																<p class="mt2px"><b class="alpha50">Destinations Covered</b> :  Dubai</p>
															<div class="mt10px small">
							<form name="pkg_195278" id="pkg_195278" method="post" action="http://www.kanadiantravels.com/enquiry-form-10002.htm">
							<a class="theme1 dib p5px10px ts0 b c5px lh15em" href="http://www.kanadiantravels.com/holiday-packages/dubai-tour-package.htm" title="View Details">View Details</a> 
							<input type="hidden" name="subject" value="Dubai Tour Package - Tour Package"/>
							<input type="hidden" name="allocate_type" value="tour"/>
							<button type="submit" class="theme2 p5px10px ts0 b dib c5px bdr0 lh15em">Book Your Tour</button>
							<input type="hidden" name="pkg_slno" value="195278"/>
							</form>
							</div>
							</div>
							</div>
							</div>
							</li>
												
							<li>
							<div class="bdr">
							<div class="cp" onclick="location.href='http://www.kanadiantravels.com/holiday-packages/dubai-and-abu-dhabi-tour-package4n5d.htm'">
															<div class="picBg ac vam lh0"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_23/681306/309509.jpg"  alt="Dubai and Abu Dhabi Tour Package 4n 5d" title="Dubai and Abu Dhabi Tour Package 4n 5d"  class="bdr p1px"  /></div>
															
							<div class="headHr bdr0 p7px b ml2px mr2px mt1px large tp-head"><a href="http://www.kanadiantravels.com/holiday-packages/dubai-and-abu-dhabi-tour-package4n5d.htm" title="Dubai and Abu Dhabi Tour Package 4n 5d"><h3>Dubai And Abu Dhabi Tour Package 4n 5d</h3></a></div>
							<div class="bdrT p12px">
															<div class="b large dif pt5px pb5px">Price On Request</div>
																<p class="mt7px"><b class="alpha50">Duration</b> : 
								4 Nights / 5 Days 
								</p>
																<p class="mt2px"><b class="alpha50">Destinations Covered</b> :  Dubai, Abu Dhabi</p>
															<div class="mt10px small">
							<form name="pkg_195277" id="pkg_195277" method="post" action="http://www.kanadiantravels.com/enquiry-form-10002.htm">
							<a class="theme1 dib p5px10px ts0 b c5px lh15em" href="http://www.kanadiantravels.com/holiday-packages/dubai-and-abu-dhabi-tour-package4n5d.htm" title="View Details">View Details</a> 
							<input type="hidden" name="subject" value="Dubai and Abu Dhabi Tour Package 4n 5d - Tour Package"/>
							<input type="hidden" name="allocate_type" value="tour"/>
							<button type="submit" class="theme2 p5px10px ts0 b dib c5px bdr0 lh15em">Book Your Tour</button>
							<input type="hidden" name="pkg_slno" value="195277"/>
							</form>
							</div>
							</div>
							</div>
							</div>
							</li>
															
						</ul>
						</div>
						</div> 		  
						<br>
						</div>  
						<br />
										
				</div>
				</section>
				
				<script>
					window.addEventListener("DOMContentLoaded", function(){
						jQuery(document).on("click", ".showallspan", function(){
							if(jQuery(this).attr("data-target") === 'show'){
								jQuery(this).text("View Less");
								jQuery(this).attr("data-target", "hide");
								jQuery(this).closest("div").find(".spanlist").removeClass("dn");
							}else{
								jQuery(this).text("View More");
								jQuery(this).attr("data-target", "show");
								jQuery(this).closest("div").find(".spanlist").addClass("dn");
							}
						});
					});
				</script>
				";i:1;s:64:"Book Dubai Tour Package 5 Days - 4 Nights / 5 Days Tour Packages";i:2;s:110:"book dubai tour package 5 days - 4 nights / 5 days tour packages, adventure tour packages, dubai tour packages";i:3;s:143:"Kanadian Travels offers Dubai Tour Package 5 Days - 4 Nights / 5 Days tour package, budget Adventure tour packages for Dubai at exciting price.";i:4;s:585:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Dubai"        
		                 },
		      "description": "Highlights:

Single Entry Tourist Visa
Return Economy-Class Airfare
3-Star Hotel accommodation with Daily Breakfast
03 Sightseeing
Airport Transfers & Sightseeing in (SIC basis)",
		      "name": "Dubai Tour Package 5 Days",
		      "telephone": "+91-8427959966"
		    }
		    </script>
			";i:5;N;}