a:6:{i:0;s:14126:"				<div class="h1"><h1>Enchanting Australia Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.travelbhai.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.travelbhai.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Enchanting 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">Sydney, Cairns, Brisbane, Gold Coast</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.travelbhai.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Enchanting 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="53620"/>
						</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_14/397474/104234.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_14/397474/104234.jpg"  width="150" height="150"    alt="Enchanting Australia Tour" title="Enchanting 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 at Brisbane
								</p>
								<p class="aj">The 'Enchanting Australia' tour starts with your arrival at the Brisbane airport. Our IHPL tour representative would be escorting you from the airport to the city of Gold Coast in Australia (87 km away). On arrival at Gold Coast, you would be checking-in to a pre-booked hotel. Spend the rest of the day relaxing in your rooms or if you wish, move out to explore the nearby market and surroundings. Dinner would be served at an Indian restaurant.<br />
<br />
Overnight stay in Gold Coast.</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> Non-stop fun at Gold Coast
								</p>
								<p class="aj">A pleasing combination of a metropolis and coastal city, Gold Coast resides on the eastern edge of Australia. The city is highly famed for its sun-kissed beaches, inland waterways, scenic rainforest's and amazing theme parks.<br />
<br />
Post breakfast at the hotel restaurant, guests would be embarking on a trip to the fun and thrilling side of Gold Coast; Dreamworld amusement park. Filled with around 50 fast paced rides and magnificent attractions of 8 different countries, Dreamworld is Australia's biggest. Starting with the rides, guests can indulge in the watery family rides (River rapids, Log ride), special rides for kids and at last the series of thrill rides; they prefer to call the 'BIG 9' (Giant Drop, Buzz Saw, Tower of Terror).<br />
<br />
Besides these high speed rides, you can get yourself busy in sunset safari, croc feeding, wildlife photography and tiger feeding. Don't forget to meet your favorite animated characters from movies like King Fu Panda, Madagascar and Shrek come alive at the Dream Works experience section.<br />
<br />
Lunch and Dinner at Indian restaurant.<br />
<br />
Overnight in Gold Coast.</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> Fun continues at Gold Coast
								</p>
								<p class="aj">Right after you would be done with your breakfast at the hotel restaurant, you would be taken on a tour of one of the most popular tourist attraction at Gold Coast-Warner Bros Movie World.<br />
<br />
Simply known as the Movie World, it is an amusement park that is best known for its motion stimulating movie-themed rides and attractions. Within its complex, the movie world consists of numerous film studios; accredited with the production of movies like House of Wax, Scooby-Do, Peter Pan, The Condemned and Fortress.<br />
<br />
Talking about rides, the Movie World has got all everything mixed with special effects and motion stimulators in order to impart the best fun to the tourists. While exploring the amusement park, don't forget to click yourself with your favorite costumed animated character (Batman, Superman, Wonder Woman).<br />
<br />
In the second half of the day, guests would be taken on a tour of the amazing 'Sea World'. This marine Animal Park and theme park is one of the prominent tourist attractions in the city. Besides the thrilling roller coaster rides, the park offers an excellent opportunity to watch fascinating marine creatures like the legendary Kraken, giant Blue whale and Megalodon.<br />
<br />
By evening, return back to the comforts of your hotel for an overnight stay at Gold Coast.<br />
<br />
Lunch and dinner at Indian restaurant.</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> Gold Coast - Brisbane - Cairns
								</p>
								<p class="aj">Post breakfast guests would be making an early morning check out from the hotel to fly to Cairns from Brisbane airport. Upon your arrival at this major city in the Queensland region of Australia, you would be embarking on a road trip to Kurnada Rainforest (28 km away).<br />
<br />
Kurnada is an exquisite getaway to the topical beauty of North Australia and is a prime tourist attraction near the city of Cairns. Originally this place is inhabited by tribal people, owing to which you can shop for various artifacts and souvenirs of the community. This tiny paradise is also a home of exotic species of wildlife; especially birds. Right at the foothills of Barron Gorge national park in the Rainforest lies the Tjapukai Aborginal Cultural Park. The park offers an excellent opportunity to immerse it in to the traditional culture of the Aborgines. You can even learn throwing boomerang or didgeridoo playing from them.<br />
<br />
Post this Rainforest trip, guests would be transferred to a pre-booked hotel at Cairns for an overnight stay.<br />
<br />
Lunch and dinner at Indian restaurant.</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> Cairns
								</p>
								<p class="aj">Your tour of the beautiful city of Cairns will start early in the morning by a Hot Balloon ride. A perfect way to kick start the day, this aerial ride will offer you a breathtaking sight of some of the most panoramic landscapes on the planet. Post that, relish a yummy breakfast at the countryside of Cairns.<br />
<br />
Cairns in the tropical portion of North Queensland is also famed for being the gateway to one of the seven natural wonders of the world; The Great Barrier Reef. Located off the coast of Queensland, Great Barrier Reef is the world's largest coral reef system. In order to explore the exotic marine life created by the corals, snorkeling is the best. However, guests need to pay an additional cost to try their hand in that water sport and even for swimming. You can also opt for a supervised beginner level scuba dive here.<br />
<br />
After all this action, call it a day and return to your hotel for an overnight stay in Cairns.<br />
<br />
Lunch on board the cruise and dinner at an Indian restaurant.</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> Cairns - Sydney
								</p>
								<p class="aj">Post an early breakfast, check out from the hotel and leave to catch the flight to Sydney. Upon your arrival at Sydney, you would be transferred to a pre-booked hotel. Relax for some hours as the evenings are booked for a spectacular showboat dinner cruise.<br />
<br />
Once there, enjoy a three course Indian dinner, which soon would be followed by a world class theatre cabaret featuring professional show girls of Australia. If you feel like you can also join the talented singers in the chorus. In the turnover of these dazzling events, the boat would be cruising along the glistening Sydney harbor, Opera House and Harbor Bridge.<br />
<br />
Overnight stay 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 7:</b> Sydney
								</p>
								<p class="aj">This day is completely booked for the sightseeing tour of Sydney. Settled on the eastern coast of Australia, this metropolis is surrounded by world's largest natural harbor, which includes the Sydney Opera House, Darling Harbor and Sydney Harbor Bridge as the city's major tourist attractions. Along with these attractions, guests would be visiting the Hyde Park, Mrs Macquarries Chair, Kings Cross, the Rocks area and the bustling CBD area. Don't forget to take photographs of the wonderful cityscape from the top of the Sydney tower.<br />
<br />
Later, guests would be visiting the Sydney Aquarium & Sydney Wildlife Park, which is known for putting a brilliant display of the rich aquatic life of Australia; Murray Cod and Saltwater Crocodile.<br />
<br />
In the evening, feel free to explore the whereabouts of Sydney on your own.<br />
<br />
Breakfast at the hotel, Lunch and dinner at an Indian restaurant.<br />
<br />
Overnight stay 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 8:</b> Departure
								</p>
								<p class="aj">This brings the end of our wonderful Australian tour. Post breakfast, leave for Sydney airport to catch the flight back home.</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.travelbhai.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Enchanting 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="53620"/>
						</form>
						</div>
						
						";i:1;s:64:"Book Enchanting Australia Tour - 7 Nights / 8 Days Tour Packages";i:2;s:149:"book enchanting australia tour - 7 nights / 8 days tour packages, forts and palaces tour packages, sydney, cairns, brisbane, gold coast tour packages";i:3;s:177:"Travel Bhai offers Enchanting Australia Tour - 7 Nights / 8 Days tour package, budget Forts and Palaces tour packages for Sydney, Cairns, Brisbane, Gold Coast at exciting price.";i:4;s:433:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Sydney, Cairns, Brisbane, Gold Coast"        
		                 },
		      "description": "",
		      "name": "Enchanting Australia Tour",
		      "telephone": "+91-9811617033"
		    }
		    </script>
			";i:5;N;}