a:6:{i:0;s:18696:"				<div class="h1"><h1>Marvellous Australia – 11 Nights & 12 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>Marvellous Australia – 11 Nights & 12 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">
						11 Nights / 12 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Sydney, Melbourne, 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.oppexholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Marvellous Australia – 11 Nights & 12 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="114287"/>
						</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/191749.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_2/37817/191749.jpg"  width="150" height="150"    alt="Marvellous Australia – 11 Nights & 12 Days TOUR" title="Marvellous Australia – 11 Nights & 12 Days TOUR" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					(Inclusive of Visa Charges for Australia)<br />
04 Night accommodation in Sydney<br />
04 Night accommodation in Gold Coast<br />
03 Night accommodation in Melbourne<br />
Daily Breakfast<br />
Sydney City Tour<br />
Sydney Blue Mountain tour with Scenic Rides<br />
Dreamworld - Dream Pass (FAR EAST) Gold Coast<br />
Sea World Tickets Gold Coast<br />
Melbourne City Tour<br />
Great Ocean Road Sunset Tour<br />
Return airport transfersAirfare<br />
Any expenses of personal nature.<br />
Guaranteed early check in / late checkout is completely at the discretion of the hotel and we can only put in a request for the same.<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> SYDNEY
								</p>
								<p class="aj">Arrive Sydney Airport& SIC Transfer to your 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 2:</b> SYDNEY
								</p>
								<p class="aj">Tour Description:<br />
Depart your hotel for an unforgettable Panoramic Sydney half day city sights tour. On tour you'll visit the historic Rocks area and hear early convict history. Enjoy magnificent views of the Opera House and Harbour Bridge. See the shopping heart of the city, QVB, Centrepoint. Visit Sydney's trendy new district Oxford Street. Travel through elegant Paddington with its terrace houses before arriving at the Pacific Ocean. See the superb coast cliff walk around Tamarama and Bronte. Travel on to famous Bondi Beach. Visit the beachfront promenade, enjoy a coffee or cool drink (at own cost). See bronzed Aussie lifesavers and Sydney's best panoramic view at Dover Heights. Return to Sydney via Double Bay, Kings Cross and Mrs Macquarie's Point for a final magical viewpoint over the harbour before returning to the city centre. Passengers can join the optional harbour lunch cruises (own expense), seaplane tours (own expense), or return directly to their hotels. The designated harbour lunch cruise drop-off point is Darling Harbour (adjacent to the aquarium). <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 3:</b> SYDNEY
								</p>
								<p class="aj">Tour Description: Discover the spectacular Blue Mountains and see native wildlife whilst you explore World Heritage-listed Blue Mountains National Park. 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. Hotel drop offs to most city hotels are available; your driver guide will ask you at the end of the day where you would like to be dropped off. <br />
Departure Point : AAT 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 4:</b> SYDNEY
								</p>
								<p class="aj">Breakfast. Day at Leisure. Overnight at 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 5:</b> SYDNEY TO GOLD COAST
								</p>
								<p class="aj">Check Out of Hotel. SIC transfer to Sydney Airport for onward flight. Arrive Gold Coast Airport and SIC Transfer to 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 6:</b> GOLD COAST
								</p>
								<p class="aj">Later on start for DreamworldTour.Overnight at your Hotel.<br />
Tour Description:<br />
Enjoy this 3 Day Holiday World Pass allowing you entry to three of the great attractions on the Gold Coast: Dreamworld, WhiteWater World and Skypoint Observation Deck. Located next door to each other, Dreamworld and WhiteWater World provide a one stop shop for thrills, spills and family fun. Dreamworld is home to a host of exciting rides and attractions to keep you entertained all day. WhiteWater World is a Water Ride Park offering the most extreme waterslides on the planet to family friendly attractions. SkyPoint provides breathtaking 360 degree views from the surf to the hinterland and beyond from Level 77 of the Q1 building. SkyPoint is an all weather, day and night experience and provides high powered, coin operated binoculars (own expense).<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 7:</b> GOLD COAST
								</p>
								<p class="aj">Later on start for Sea World or Movie World (must be decided). Overnight at your Hotel<br />
Departure Point: Hotel Pick Up 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 8:</b> GOLD COAST
								</p>
								<p class="aj">Breakfast. Day at Leisure. Overnight at 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 9:</b> GOLD COAST TO MELBOURNE
								</p>
								<p class="aj">Check Out of Hotel. SIC transfer to Gold Cost Airport for onward flight.<br />
Arrive Melbourne Tullamarine Airport & SIC transfers to hotel.Overnight at the 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 10:</b> MELBOURNE
								</p>
								<p class="aj">Morning half day SIC Melbourne City Tour<br />
Tour Description:<br />
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 (on non-market days, will visit the Shrine area of the Botanic Gardens), 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 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> MELBOURNE
									</p>
									<p class="aj">Explore, experience and embrace the magic that is the Great Ocean Road on this sunset tour.<br />
Tour Description:<br />
The spectacular Great Ocean Road is one of the world's most beautiful and naturally maintained secrets. Experience and enjoy the breath taking 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. This is a day you will always remember.<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 12:</b> MELBOURNE
									</p>
									<p class="aj">Check Out of Hotel. SIC transfer to Gold Cost 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>
Guaranteed early check in / late checkout is completely at the discretion of the hotel and we can only put in a request for the same.</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>
			</tr>
			<tr>
				<td class="data p5px">Sydney</td>
				<td class="data p5px">Astral Tower or Similar</td>
			</tr>
			<tr>
				<td class="data p5px">Gold Coast</td>
				<td class="data p5px">Hilton Hotel or similar</td>
			</tr>
			<tr>
				<td class="data p5px">Melbourne</td>
				<td class="data p5px">Pullman Melbourne On The Park Or similar</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="Marvellous Australia – 11 Nights & 12 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="114287"/>
						</form>
						</div>
						
						";i:1;s:90:"Book Marvellous Australia – 11 Nights & 12 Days TOUR - 11 Nights / 12 Days Tour Packages";i:2;s:159:"book marvellous australia – 11 nights & 12 days tour - 11 nights / 12 days tour packages, heritage tour packages, sydney, melbourne, gold coast tour packages";i:3;s:235:"Oppex Travels & Tours ( a Division of Oppex Freight Systems offers Marvellous Australia – 11 Nights & 12 Days TOUR - 11 Nights / 12 Days tour package, budget Heritage tour packages for Sydney, Melbourne, Gold Coast at exciting price.";i:4;s:1104:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Sydney, Melbourne, Gold Coast"        
		                 },
		      "description": "(Inclusive of Visa Charges for Australia)
04 Night accommodation in Sydney
04 Night accommodation in Gold Coast
03 Night accommodation in Melbourne
Daily Breakfast
Sydney City Tour
Sydney Blue Mountain tour with Scenic Rides
Dreamworld - Dream Pass (FAR EAST) Gold Coast
Sea World Tickets Gold Coast
Melbourne City Tour
Great Ocean Road Sunset Tour
Return airport transfersAirfare
Any expenses of personal nature.
Guaranteed early check in / late checkout is completely at the discretion of the hotel and we can only put in a request for the same.
GST as per applicable
Hotels not booked yet.
Rates Subject to change without prior notice.",
		      "name": "Marvellous Australia – 11 Nights & 12 Days TOUR",
		      "telephone": "+91-9821321975"
		    }
		    </script>
			";i:5;N;}