a:6:{i:0;s:9889:"				<div class="h1"><h1>Best Of Australia 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>Best Of 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">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Sydney</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.rajastravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Best Of 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="66339"/>
						</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/121699.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/370602/121699.jpg"  height="150"  width="150"    alt="Best Of Australia Tour" title="Best Of 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> Arrive Sydney - Showboats Dinner Cruise
								</p>
								<p class="aj">On arrival, our local representative will be waiting at the airport to welcome and transfer you to the hotel. Welcome to the Harbour City of Australia. Check In to your hotel and relax for a while. In the evening, get ready for the Sydney Showboats Dinner Cruise (at Additional Cost), Australia's most luxurious paddle wheeler, renowned for its famous dinner cruise and show. Entertainment is assured right from the moment you step on board. Captivating array of outstanding Australian performers, in-house magicians, dynamic vocalists and dancers from the finest international venues in vibrant costumes guarantee to delight audiences. Perfect for a romantic night out or any celebration that demands fun and entertainment combined with amazing restaurant dining experience. Overnight stay at hotel in Sydney.</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> Sydney - Guided City Tour
								</p>
								<p class="aj">After morning breakfast, we head for a Sydney City Tour that covers Opera House (from Inside), Sydney Tower, Sydney Aquarium and Sydney Wildlife World. We will start with a tour to the world famous Sydney Opera House. Discover the unknown history and magic of this place and discover the magnificent beauty. We proceed to Harbour Bridge, then to the Nature's Wonder, the Rocks, will head further to Lady Macquarie's Chair, one of the best vantage points in Sydney and then to spectacular Hyde Park and a stopover at Darling Harbour, one of Australia's major attractions. Our tour will not be complete without visiting Sydney Tower- the tallest free-standing structure, walk under water to explore Australia's rich & diverse aquatic life at Sea Life Sydney Aquarium. Experience a real Australian adventure at Sydney Wild Life World, now known as Wild Life Sydney Zoo and meet some of Australia's cutest national icons, including koalas and yellow footed rock wallabies! Overnight stay at hotel in Sydney.</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> Sydney - Blue Mountains & Wildlife Park
								</p>
								<p class="aj">Enjoy morning breakfast. Today we will go for a full day Blue Mountains and Australian Wildlife Park Tour. (at Additional Cost). Enroute the Blue Mountains, enjoy the most spectacular views over the Jamison Valley and Kings Tableland. We visit Katoomba with its most famous attraction, The Three Sisters and Echo Point. We will tour along some of the most scenic roads of Blue Mountains. We will head for a breathtaking lookout overlooking the Megalong Valley and beyond to the Great Dividing Range. Discover here why the Blue Mountains are so called. We will then visit Australian Wildlife Park to play with koalas, kangaroos and other Australian native animals. Return after a simply unforgettable day. Overnight stay at hotel in Sydney.</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> Sydney - Day Free
								</p>
								<p class="aj">Enjoy breakfast at hotel. Today the day is Free for you to Explore the Nearby Places on your own or we suggest you to opt for Value Pack which includes Tickets to Sydney Aquarium, Sydney Tower Eye & Dolphin Watch Cruise (at Additional Cost). Overnight stay at hotel in Sydney.</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> Sydney - Day Free
								</p>
								<p class="aj">Enjoy breakfast at hotel. Today the day is Free for you to Explore the Nearby Places on your own or we suggest you to opt for Value Pack which includes Tickets to Sydney Aquarium, Sydney Tower Eye & Dolphin Watch Cruise (at Additional Cost). Overnight stay at hotel in Sydney.</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> Sydney - Delhi
								</p>
								<p class="aj">Get up to a beautiful Aussie morning. Store the beauty in your eyes. Pack the bags and get ready to have breakfast. Today we check out from hotel and drive to airport. Return home with loads of pleasant memories</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="Best Of 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="66339"/>
						</form>
						</div>
						
						";i:1;s:61:"Book Best Of Australia Tour - 5 Nights / 6 Days Tour Packages";i:2;s:107:"book best of australia tour - 5 nights / 6 days tour packages, heritage tour packages, sydney tour packages";i:3;s:137:"RAJAS TRAVELS offers Best Of Australia Tour - 5 Nights / 6 Days tour package, budget Heritage tour packages for Sydney at exciting price.";i:4;s:400:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Sydney"        
		                 },
		      "description": "",
		      "name": "Best Of Australia Tour",
		      "telephone": "+91-9820123553"
		    }
		    </script>
			";i:5;N;}