a:6:{i:0;s:10571:"				<div class="h1"><h1>Fascinating Australia Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.mytravoholidays.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.mytravoholidays.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Fascinating Australia 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">
						7 Nights / 8 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Perth, Alice Springs, Ayers Rock</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.mytravoholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Fascinating Australia 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="116866"/>
						</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_10/286827/190036.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/286827/190036.jpg"  width="150" height="150"    alt="Fascinating Australia Tour" title="Fascinating Australia 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 in Perth
								</p>
								<p class="aj">After you arrive at the Perth airport, get an assisted transfer to your pre-booked hotel. Once you complete the check-in formalities, spend the in doing the activities of your interest. Stay overnight in Perth.</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> Perth sightseeing
								</p>
								<p class="aj">After relishing breakfast, leave for sightseeing in Perth. Visit Fremantle to get a sneak-peek into the casual lifestyle of the locals. Today, you get a chance to explore the prime attractions of Perth including King Park Botanical Gardens. Enjoy a leisure walk here through the tree canopies on the Tree Top Walk. Later, have a scenic drive past off the Cottesloe Beach. Night stay in Perth. (B)</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> Perth- Nambung National Park
								</p>
								<p class="aj">On day 3, have your breakfast, and then explore the very well-known Nambung National Park to enjoy a great view of the Pinnacles Desert, home to exotic limestone spires. Enjoy a drive over the sand dunes here and interact with the wildlife, take pictures of the cute koalas. You can also try your hand at sand-boarding. Thereafter, you can visit a wildflower shop or enjoy swimming (Subject to weather condition). Stay overnight in Perth. (B)</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> Perth - Ayers Rock (around 6 hrs)
								</p>
								<p class="aj">Once you have your breakfast, proceed to the airport to catch a flight to Ayers Rock. After arriving, check-in at your pre-booked hotel. Later, enjoy a tour to the Uluru-Kata Tjuta National Park to visit the Cultural Centre, take a stroll to the waterhole of Mutitjulu. Thereafter, have a guided tour of MalaWalk. You can also visit the traditional art sites to learn the geology and flora of the region. During sunset enjoy a complimentary glass of wine at Uluru. Relish open-air dinner under the stars, accompanied with champagne with the sound of the didgeridoo filling the air. Have a great view of the Kata Tjuta (the Olgas) and Uluru (Ayers Rock). Overnight stay at Ayers Rock. (B)</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> Ayers Rock - Kings Canyon (4.5 hours)
								</p>
								<p class="aj">Get up early today to have a great view of the sunrise at Uluru. Post tea/coffee, enjoy the enchanting sight. After breakfast, proceed to the western area of Uluru-Kata Tjuta National Park where you arrive at the gigantic 36 -rock domes of Kata Tjuta. Have a guided walk into Walpa (Olga) Gorge and admire the beauty sprinkled all around. In the afternoon, proceed to the stunning Kings Canyon in the Watarrka National Park. Overnight stay in Kings Canyon. (B)</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> King Canyon - Alice Springs
								</p>
								<p class="aj">Post breakfast on day 6, continue to the outstanding formations of Kings Canyon. You can opt for a guided walk along the rim walk that takes you to the canyon rim, passing through the Lost City towards the Garden of Eden. However, to embark on this walk, you need to be extremely fit. Finally, you arrive at the canyon floor walk where you reach the towering orange walls. In the afternoon, begin travelling to Alice Springs. Halt at the Kings Creek Station, an outback cattle/ camel station. This station is the largest exporter of wild camels in Australia, which it sells for various purposes. Stay overnight in Alice Springs. (B)</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 7:</b> Alice Springs
								</p>
								<p class="aj">Post breakfast, you get a chance to explore Alice Springs –once-in-a-lifetime experience. This place is most popular outback town of the world. Here you can have an insight into the region’s history and wildlife too. This place is the spiritual heart of Australia’s Red Centre Overnight stay in Alice Springs. (B)</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 8:</b> Departure
								</p>
								<p class="aj">Today is the last day of your tour when you get transferred to the airport to board a flight for your next destination.</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>
																		<li>Sightseeing</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.mytravoholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Fascinating Australia 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="116866"/>
						</form>
						</div>
						
						";i:1;s:65:"Book Fascinating Australia Tour - 7 Nights / 8 Days Tour Packages";i:2;s:137:"book fascinating australia tour - 7 nights / 8 days tour packages, heritage tour packages, perth, alice springs, ayers rock tour packages";i:3;s:177:"My Travo Tours Solution offers Fascinating Australia Tour - 7 Nights / 8 Days tour package, budget Heritage tour packages for Perth, Alice Springs, Ayers Rock at exciting price.";i:4;s:430:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Perth, Alice Springs, Ayers Rock"        
		                 },
		      "description": "",
		      "name": "Fascinating Australia Tour",
		      "telephone": "+91-9717748667"
		    }
		    </script>
			";i:5;N;}