a:6:{i:0;s:19318:"				<div class="h1"><h1>Australian Extravaganza – 12 Nights & 13 Days Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.oppexholidays.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.oppexholidays.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Australian Extravaganza – 12 Nights & 13 Days 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">
						12 Nights / 13 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Sydney, Cairns, Melbourne, Gold Coast</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 108099 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.oppexholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Australian Extravaganza – 12 Nights & 13 Days 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="114292"/>
						</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_2/37817/186720.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_2/37817/186720.jpg"  width="150" height="150"    alt="Australian Extravaganza – 12 Nights & 13 Days Tour" title="Australian Extravaganza – 12 Nights & 13 Days Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					(Inclusive of Visa Charges for Australia)<br />
03 Night accommodation in Melbourne<br />
03 Night accommodation in Gold Coast<br />
03 Night accommodation in Cairns<br />
03 Night accommodation in Sydney<br />
Daily Breakfast<br />
City Tour (Melbourne)<br />
Great Ocean Road Tour (Melbourne)<br />
Dream world (Gold Coast)<br />
Sea World (Gold Coast)<br />
Big Cat Cruise Tour to Green Island Reef with Buffet Lunch (Cairns)<br />
Kuranda Tour including 1Way Sky Rail admission & 1Way Scenic Rail admission<br />
(Cairns)<br />
City Tour (Sydney)<br />
Blue Mountains and see native wildlife (Sydney)<br />
Return airport transfers<br />
Australia VisaAirfare<br />
Any expenses of personal nature.<br />
GST as per applicable<br />
Hotels not booked yet.<br />
Rates Subject to change without prior notice.<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> MELBOURNE
								</p>
								<p class="aj">Arrive Melbourne Tullamarine Airport & SIC transfers to hotel. Overnight at the Hotel</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> MELBOURNE
								</p>
								<p class="aj">Morning half day SIC Melbourne City Tour<br />
Melbourne City Tour with Guided Walk of Arcades & Laneways, with Eureka Tower Welcome to Melbourne - Heart of Australia's classic south. Home to the Australian Open Tennis, Australian rules football, the Melbourne Cup and for a short time Australia's capital. Melbourne is known for its gardens, restaurants, cafes and markets, arcades and laneways, galleries, the arts and its relaxed elegant charm. Inhabited by peoples from all corners of the globe its cosmopolitan people give generously and share passionately in the riches of this dynamic and elegant city. Departure Point : Federation Square East<br />
Overnight at your hotel.</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> MELBOURNE
								</p>
								<p class="aj">Explore, experience and embrace the magic that is the Great Ocean Road on this sunset tou. The spectacular Great Ocean Road is one of the world's most beautiful and naturally maintained secrets. Experience and enjoy the breathtaking coastline. Every twist and turn exposes you to stretches of broad, uninterrupted beaches, dramatic coastlines and the lush rainforests of the Otway Ranges , all of which provides an amazing postcard backdrop for all your memories. See Bells Beach, one of Australia's famous surfing beaches, world renowned for the Rip Curl Surfing Pro event. At Cape Otway Lighthouse, you will have breathtaking views over the Southern Ocean along with exclusive entry inside the lighthouse. Enjoy a magnificent dinner along the coastal road, before seeing the spectacular sunset over the coastline.<br />
Departure Point : Neighbours Centre</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 4:</b> GOLD COAST
								</p>
								<p class="aj">Depart to Melbourne Tullamarine Airport by SIC Transfer for Flight.<br />
Arrive Gold Coast Airport and SIC Transfer to your Hotel. If time permits then you can opt for Jet Boating ride (on your own).</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 5:</b> GOLD COAST
								</p>
								<p class="aj">Later on start for Dreamworld Tour. Overnight at your Hotel. Departure Point: Pick up from hotel or point nearest to hotel<br />
Add White Water World Admission at incremental cost of AUD 33 pp.</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 6:</b> GOLD COAST
								</p>
								<p class="aj">Later on start for Sea World or Movie World (must be decided). Overnight at your Hotel Departure Point: Pick up from hotel or point nearest to hotel In case, you want to opt for any other adventure in Gold Coast like Hot Air Balloon Ride or Sky diving or Jet Boating then can be done (at additional cost) and can take off SeaWorld / Movie World.</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 7:</b> CAIRNS
								</p>
								<p class="aj">Check-out & SIC transfer to Gold Coast Airport. Arrive Cairns Airport & SIC Transfer to Hotel. Check-in Hotel. Overnight at your Hotel</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 8:</b> CAIRNS
								</p>
								<p class="aj">Full Day SIC Big Cat Cruise Tour to Green Island Reef with Buffet Lunch.<br />
Enjoy the tropical & enchanting Green Island on this full day tour. Discover the fascinating underwater world among the coral reefs and swim in the cool clear island water.<br />
After collection from your accommodation you will be transferred to the terminal to board the 'Big Cat' for your day on Green Island. Enjoy tea or coffee before you depart. Once on Green Island discover the fascinating underwater world among the coral reefs, you will see an endless variety of colourful fish, turtles, giant clams, starfish, shells, anemones, eels, sponges, sea urchins and many more incredible marine creatures. You have the choice of experiencing the glass bottom boat tour or snorkel in the clear cool island waters. Enjoy a delicious Aussie style buffet lunch onboard the comfort of your vessel. Your Semi-Submarine experience lets you explorer the underwater world in air-conditioned comfort with a lively fish feeding display and commentary. Explore the island, stroll along the beach and rainforest tracks. You will also be participating in carbon offset by traveling to Green Island through the Great Barrier Reef Marine Park tourism operator to have achieved carbon neutral status.<br />
Departure Point: Hotel Pick Up</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 9:</b> CAIRNS
								</p>
								<p class="aj">Full Day SIC Kuranda Tour including 1Way Sky Rail admission & 1Way Scenic Rail admission.<br />
Enjoy Stunning Overhead views from an aerial cableway ride and leisurely Scenic railway trip through the lush rainforest and free time to browse the stalls at Kuranda’s market and close up views of Stunning Barron Gorge and falls.</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 10:</b> SYDNEY
								</p>
								<p class="aj">Depart for Cairns Airport by SIC Transfer for your onward flight. Arrive Sydney Airport & SIC Transfer to your Hotel. Overnight at your Hotel</p>					
									<p><b>Meals : </b> Breakfast</p>
								</td>
								</tr>
								</table>					
								</div><div id="show_more_content" style="display:none;">
									<div class="data">
									<table class="w100 formTable bdr0 imgWidth">
									<tr>
									<td class="p10px vat">
									<p class="b large mb5px"><b class="dif">Day 11:</b> SYDNEY
									</p>
									<p class="aj">Enjoy Full Day City Tour, covering iconic Opera House & Harbour Bridge, Stunning cityscape views from Mrs Macquarie’s Chair, Gold sandy beaches at famous Bondi & Manly beaches, Panoramic sights over the ocean & harbour from The Gap.</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 12:</b> SYDNEY
									</p>
									<p class="aj">Discover the spectacular Blue Mountains and see native wildlife whilst you explore World Heritage-listed Blue Mountains National Park.<br />
This rugged and beautiful region forms part of the Great Dividing Range, linking tropical north to temperate south, while dividing coastal cities from the vast Outback. Enjoy a stop at Echo Point and see the famous Three Sisters rock formation and have an opportunity to visit the Waradah Aboriginal Centre and hear the ancient Aboriginal legends of this impressive rock formation (own expense). Arrive at Scenic World and join the optional Blue Mountain rides - Scenic Railway, Cableway or Skyway (optional add-on). These rides are a great way to see the steep valleys, canyons and Three Sisters rock formation. Discover Leura village where you will have free time for lunch (optional add-on) or the chance to wander the streets. Next we enjoy an afternoon encounter at Featherdale Park and have your photo taken with a cuddly koala, see kangaroos, wombats, dingoes and cute little fairy penguins. Our last stop will be at Homebush Bay, the venue of the Sydney 2000 Olympic Games. Here, you have the opportunity to catch your river cruise vessel back to Sydney and enjoy a relaxing cruise along the Parramatta River (optional add-on). If you do not wish to join the ferry, the coach will arrive in Sydney at approximately 5.45pm.<br />
Departure Point : A AT Kings Departure Point</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 13:</b> SYDNEY
									</p>
									<p class="aj">Check Out of Hotel. SIC transfer to Sydney Airport for onward flight.</p>					
										<p><b>Meals : </b> Breakfast</p>
									</td>	
									</tr>
									</table>				
									</div>					
							</div>							<p class="mt10px ac"><a class="buttonBig p5px10px dib b" id="more_button" href="javascript:topDestinationToggle('show_more_content','more_button');" >View More &#9660;</a></p>
													<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>Meals</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Airfare</li><li>
Any expenses of personal nature.</li><li>
GST as per applicable</li><li>
Hotels not booked yet.</li><li>
Rates Subject to change without prior notice.</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<ul>
	<li>The above is only an offer. In the event of Non availability of the specified hotel, alternate or similar hotels would be offered.</li>
	<li>Rates valid strictly for the requested period.</li>
	<li>RATES FOR PRIVATE SERVICES ARE BASED ON MINIMUM PAX TRAVELING. ANY CHANGE IN THRE NUMBER OF PAX WOULD LEAD TO CHANGE IN COST</li>
	<li>Any increase in the Airlines taxes /Hotel Surcharges from the time of Booking till the Departure date must be borne by pax.</li>
	<li>No refund for unutilized service</li>
	<li>All Hotels, Itinerary, restaurants subject to change without notice.</li>
	<li>Rates valid only for the dates and period requested. Change in date would lead to change of Cost</li>
	<li>Rates are based on as on date&rsquo;s exchange rate. Should there be any major fluctuation OPPEX TRAVELS AND TOURS reserve the right to furnish a fresh quote.</li>
	<li>Rates do not include Event/ Peak Season surcharges. Would be advised at the time of booking.</li>
	<li>Any damage caused to hotel rooms/ Coach during your stay, shall be payable by the Passengers.</li>
	<li>OPPEX TRAVELS AND TOURS will not be liable for the same.</li>
	<li>The Company shall not accept any liability or responsibility for any damages, loss, injury, accident, death, Flight Cancelation by Airline , breakdown, or irregularity, which may occur in carrying out the tour arrangement, weather conditions, strikes, wars, quarantine or any other cause whatsoever and all such loss or expense must be borne by pax.</li>
	<li>All Tours subject to OPPEX TRAVELS AND TOURS Tour conditions</li>
	<li>For payments made in INR, the conversion would be based on the ROE as on the date of payments.</li>
	<li>(Please refer our Terms and Conditions and cancellation policies mentioned in our</li>
</ul>						
    	<p class="h dif xlarge b mb5px">HOTEL DETAILS:</p>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="headHr p5px b">PLACE</td>
				<td class="headHr p5px b">HOTEL NAME</td>
				<td class="headHr p5px b">ROOM TYPE</td>
			</tr>
			<tr>
				<td class="data p5px">Melbourne</td>
				<td class="data p5px">Ibis Styles or Similar</td>
				<td class="data p5px">Standard Heritage Room</td>
			</tr>
			<tr>
				<td class="data p5px">Gold Coast</td>
				<td class="data p5px">Crowne Plaza or Mantra Legend or similar</td>
				<td class="data p5px">Standard Room</td>
			</tr>
			<tr>
				<td class="data p5px">Cairns</td>
				<td class="data p5px">Cairns Colonial Club or similar</td>
				<td class="data p5px">Standard Room</td>
			</tr>
			<tr>
				<td class="data p5px">Sydney</td>
				<td class="data p5px">Travelodge Sydney</td>
				<td class="data p5px">Guest Room</td>
			</tr>
		</table></div><br>						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.oppexholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Australian Extravaganza – 12 Nights & 13 Days 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="114292"/>
						</form>
						</div>
						
						";i:1;s:93:"Book Australian Extravaganza – 12 Nights & 13 Days Tour - 12 Nights / 13 Days Tour Packages";i:2;s:170:"book australian extravaganza – 12 nights & 13 days tour - 12 nights / 13 days tour packages, heritage tour packages, sydney, cairns, melbourne, gold coast tour packages";i:3;s:263:"Book Australian Extravaganza – 12 Nights & 13 Days Tour - 12 Nights / 13 Days tour packages from Oppex Travels & Tours ( a Division of Oppex Freight Systems - Get attractive 12 Nights / 13 Days Heritage  tour packages for  Sydney, Cairns, Melbourne, Gold Coast.";i:4;s:1172:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Sydney, Cairns, Melbourne, Gold Coast"        
		                 },
		      "description": "(Inclusive of Visa Charges for Australia)
03 Night accommodation in Melbourne
03 Night accommodation in Gold Coast
03 Night accommodation in Cairns
03 Night accommodation in Sydney
Daily Breakfast
City Tour (Melbourne)
Great Ocean Road Tour (Melbourne)
Dream world (Gold Coast)
Sea World (Gold Coast)
Big Cat Cruise Tour to Green Island Reef with Buffet Lunch (Cairns)
Kuranda Tour including 1Way Sky Rail admission & 1Way Scenic Rail admission
(Cairns)
City Tour (Sydney)
Blue Mountains and see native wildlife (Sydney)
Return airport transfers
Australia VisaAirfare
Any expenses of personal nature.
GST as per applicable
Hotels not booked yet.
Rates Subject to change without prior notice.",
		      "name": "Australian Extravaganza – 12 Nights & 13 Days Tour",
		      "telephone": "+91-9821321975"
		    }
		    </script>
			";i:5;N;}