a:6:{i:0;s:11161:"				<div class="h1"><h1>Oman Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.travelect.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.travelect.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Oman 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">Tour Code </td>
						<td class="p5px pl0px vat">005</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						3 Nights / 4 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Muscat, NIZWA</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </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.travelect.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Oman 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="62362"/>
						</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_12/333350/116378.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_12/333350/116378.jpg"  height="150"  width="150"    alt="Oman Tour" title="Oman Tour" /></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 Muscat - Nizwa
								</p>
								<p class="aj">After your arrival at Muscat airport around 0800 hrs you will meet your tour Guide/driver who will escort you to the waiting 4 wheel drive which you will board for a soft adventure tour.  Drive to Barka to visit the famous Barka fish market. After visiting the fish market, drive to Nakhal.<br />
<br />
Arrive at Nakhal and visit the Nakhal Fort. This fort once served the Imams of BaniKharous and the Ya'arubah dynasty. After recent restoration work carried out, it is refurbished with the traditional furniture, handicrafts and historic relics.  The ceilings, the doors and the windows are decorated with beautiful carvings. The view from the roof-top is very impressive and offers a panoramic view of the surrounding landscape. The old village of Nakhal, which nestles below the fort, gradually leads to the famous warm springs of Nakhal situated at the end of an attractive Oasis. Relax by the side of the shallow waters of the springs surrounded by lush green date plantations and steep mountain peaks. From there drive to WadiBaniAwf and reach BiladSayt. Arrive at BiladSayt, the most idyllic village with a wealth of verdant terraces. The graded track through the mountains is stunning. , ‘It is one of the most interesting off road drive in Oman and most of the time, this Wadi has water making it a unique place for bashing. Make a short stop at BiladSayt and continue driving to Nizwa. Check in at Hotel in Nizwa. Rest of the day at leisure. Overnight stay at Nizwa.</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> Nizwa - Jabal Shams- Nizwa
								</p>
								<p class="aj">After breakfast at 0800 hrs you will drive to the Oasis city of Nizwa and then continue on a tour of the Nizwa fort with its enormous round tower built in the 17th century built by Imam Sultan Bin Saif Al Ya'aruba to defend the route to the interior. The fort dominates the entire area with the town having grown around the edifice. Access to the top is possible only by means of a narrow, twisting staircase barred by heavy wooden doors, studded with metal. From the top of the tower one can get a bird's eye view of the Nizwa city. From here you will proceed to the NizwaSouq which is renowned for its intricately hand carved Khanjar and ornately designed silver Jewelry. <br />
Here on a Friday a unique goat and cattle auction is held. The atmosphere here is electric.  Continue your drive to Al Hamra. Make a stop at Al Hamra by the old houses. After the stop, continue driving to Jabal Shams. Jabal Shams, the highest peak in Oman with a height of 3,009 meters. Jabal Shams means “Mountain of the Sun” and its old name is JABEL AL QANAH. The area is home to weavers of heavy woolen rugs in distinctive colours. Take a walk to see the Grand Canyon before driving back to your Hotel in Nizwa. Rest of the day at leisure.Overnight stay at Nizwa.</p>					
									<p><b>Meals : </b> 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> Nizwa-Sinaw-Wadi bani khalid-Ras al had
								</p>
								<p class="aj">After breakfast you will check-out and proceed Wahiba. En Route stopping in Sinaw to visit Old Bedouin Market. After visiting sinew, continue to Wahiba Sands, the great desert of Oman known as “Rumlat Al Wahiba” where our expert driver will give you the thrill of driving over the undulating dunes. After enjoying the dune driving, you will bid goodbye to the inhabitants of the desert to proceed to towards WadiBani Khalid, one of the beautiful Wadis in the country. You will drive through small villages and towns before arriving at WadiBani Khalid.This drive through the mountain offers a panoramic view of the beautiful landscape below.<br />
<br />
<br />
You will pass many pretty villages embedded in the mountains. Here the road winds down to the wadialong side a large, shallow pool fringed with vegetation & ends at a village. We park our vehicles at this point & continue on a short trek to the deep blue pools of the wadi. If you wish you may enjoy a swim in this glorious grace of nature. It is recommended to wear comfortable clothes & walking shoes for this trip. You can also enjoy some juices and fast food at the coffee shop situated by the poolside (at own expenses). Spend some time there and continue driving to Ras Al Haad. Check in and time at leisure. Enjoy early dinner at the Hotel and then proceed to Ras Al Jinz to see turtles coming ashore to lay eggs. After the tour, drive back to your Hotel.</p>					
									<p><b>Meals : </b> Breakfast & 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> Departure
								</p>
								<p class="aj">Breakfast at the hotel. At around 0800 hrs you will be met by your guide in the lobby, embark your jeep and start driving to Muscat. This tour along the coast line to Muscat offers breath taking glimpses of the blue waters of the Gulf of Oman offset pristine beaches. Short visit of Sur town & Dhow Building Yard. Thereafter proceed to WadiShaab.Shaab in Arabic literally means 'Ravine between Cliffs "shallow green pools and abundant shade give wadiShaab a perfect setting for a picnic. Continue on the bumpy track, sometimes touching the sea following a creek or overlooking superb white beaches hundreds of metres long.  Arrive at Fins beach (White beach) stop. After spending some time proceed for Muscat. En-route visiting Quriyat, a very large fishing village between the lagoon and the sea. The port of Quriyat is still guarded by a watchtower. Departure to Muscat airport</p>					
									<p><b>Meals : </b> Breakfast</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.travelect.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Oman 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="62362"/>
						</form>
						</div>
						
						";i:1;s:48:"Book Oman Tour - 3 Nights / 4 Days Tour Packages";i:2;s:101:"book oman tour - 3 nights / 4 days tour packages, heritage tour packages, muscat, nizwa tour packages";i:3;s:142:"El Travel Elect Pvt. Ltd offers Oman Tour - 3 Nights / 4 Days tour package, budget Heritage tour packages for Muscat, NIZWA at exciting price.";i:4;s:394:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Muscat, NIZWA"        
		                 },
		      "description": "",
		      "name": "Oman Tour",
		      "telephone": "+91-9225503370"
		    }
		    </script>
			";i:5;N;}