a:6:{i:0;s:17081:"				<div class="h1"><h1>Mind Blowing New Zealand & Fabulous Australia 13 Nights & 14 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>Mind Blowing New Zealand & Fabulous Australia 13 Nights & 14 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">
						13 Nights / 14 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Sydney, Auckland, Dunedin, Rotorua, Queenstown, Gold Coast</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 173799 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="Mind Blowing New Zealand & Fabulous Australia 13 Nights & 14 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="114282"/>
						</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/186712.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_2/37817/186712.jpg"  width="150" height="150"    alt="Mind Blowing New Zealand & Fabulous Australia 13 Nights & 14 Days Tour" title="Mind Blowing New Zealand & Fabulous Australia 13 Nights & 14 Days Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					(Inclusive of Visa Charges for New Zealand & Australia)<br />
HOTEL DETAILS:<br />
Auckland : Rendezvous or Similar<br />
Rotorua : Sudima or Rydges or Similar<br />
Dunedin : Kingsgate Hotel or Similar<br />
Queenstown : Rydges Queenstown or Similar<br />
Gold Coast : Mantra Legends or Similar<br />
Sydney : Sydney Boulevard or Similar<br />
<br />
01 Nights’ accommodation in Auckland<br />
02 Nights’ accommodation in Rotorua<br />
02 Nights’ accommodation in Dunedin<br />
02 Nights’ accommodation in Queenstown<br />
03 Nights’ accommodation in Gold Coast<br />
03 Nights’ accommodation in Sydney<br />
Daily Breakfast<br />
Sky Tower (Auckland)<br />
Waitomo Glowworm Caves (Rotorua)<br />
Elms Wildlife Tour (Dunedin)<br />
Milford Sound Cruise (Queenstown)<br />
Movie World (Gold Coast)<br />
Get ready for Half day city tour and visit to aquarium and Madame Tussauds<br />
(Sydney)<br />
Blue Mountain tour with scenic rides (Sydney)<br />
Newzealand & Australia Visa<br />
All Airport Pick up and DropAirfare<br />
GST as per applicable<br />
Any expenses of personal nature.<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> AUCKLAND
								</p>
								<p class="aj">Arrive in Auckland airport and pick up rental self-driven car to your hotel. Check in to the hotel. Get ready to experience the eagle eye view of Auckland from highest building Sky Tower and take amazing photos of lively New Zealand city. Overnight stay at the hotel in Auckland. Auckland is Among world's TOP 10 city to live in.</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> WAITOMO CAVES ROTORUA
								</p>
								<p class="aj">After Breakfast, Prepare today morning to leave Auckland and heads towards south direction of North Island. Rotorua is the next destination, 2 ½ hours scenic drive in between stop at Waitomo for a guided tour of the world famous Waitomo Glowworm Caves including an underground boat ride viewing the millions of glow worms on the cavern roof. Enjoy evening at leisure. Overnight at the hotel in Rotorua.</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> ROTORUA
								</p>
								<p class="aj">After Breakfast, enjoy your day at leisure. Today visit Te Puia Thermal Reserve to see boiling mudpools and roaring geysers. The environment alone is of enormous geological significance, with thermal activity ranging from boiling mud to the worldfamous 30-metre Pohutu geyser, erupting up to 20 times each day. Later, continue to the Agrodome for a New Zealand farm show featuring sheep dog demonstrations, cow milking and an introduction to the stars of our sheep industry. Overnight at the hotel in Rotorua.</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> ROTORUA – AUCKLAND - DUNEDIN
								</p>
								<p class="aj">After Breakfast, Prepare to leave Rotorua to Auckland to return the car at the airport and take your flight to Dunedin. Enjoy evening at leisure. Overnight at the hotel in Dunedin.</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> DUNEDIN
								</p>
								<p class="aj">After Breakfast, Experience absolutely unrivaled close-up viewing of rare yellow eyed penguins at Elms Wildlife Tour, Hooker's sea lions, NZ fur seals and little blue penguins within our restricted wildlife conservation sanctuary, see albatross at Taiaroa headland and other wildlife around Otago peninsula bay's and lagoons. Overnight at the hotel in Dunedin.</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> QUEENSTOWN
								</p>
								<p class="aj">After Breakfast, Proceed from Dunedin to the resort town of Queenstown. On this route, you will go for an enjoyable Milford Sound Cruise. A popular cruise, it offers a chance to see the glorious Mitre Peak, which is situated close to the shore with assistance from a guide, on kayaks and different vessels. Spot beautiful waterfalls, sea birds and fur seals at this scenic place. Overnight at the hotel in Queenstown.</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> QUEENSTOWN
								</p>
								<p class="aj">After breakfast, spend the rest of the day at leisure or can opt (Own cost) for exciting activities like jet boat ride, river rafting, sky diving and ledge bunny jumping (activities not included). Later, return to the hotel room for a comfortable overnight stay.</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> QUEENSTOWN TO GOLD COAST
								</p>
								<p class="aj">After Breakfast, board flight from Queenstown to Gold coast, Australia. Get transferred to Hotel in Gold Coast. Gold Coast - Fun City of Australia famed for its long sandy beaches, surfing and elaborate system of inland canals and waterways</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
								</p>
								<p class="aj">Enjoy the Movie World - Warner Bros. Movie World is a popular movie related theme park. Experience first-class rides, action-packed shows</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> GOLD COAST
								</p>
								<p class="aj">Opt (additional cost) for one out of Dream World or Sea World Dream World – Largest theme park of Australia with 40+ rides - Family fun, thrills rides, live shows and entertainment Sea World - Sea World is a marine mammal park, oceanarium, and theme park offering amazing attractions and rides. Or Opt (Additional Cost) for Hot Air Balloon Ride or jet Boating (Highly recommended)</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> GOLD COAST TO SYDNEY
									</p>
									<p class="aj">After breakfast, Board flight from Gold Coast to Sydney and get transferred to Hotel and evening at leisure.</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">After breakfast. Get ready for Half day city tour and visit to aquarium and Madame Tussauds</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">After breakfast, Blue Mountain tour with scenic rides. It is a full day activity.</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 14:</b> DEPART FOR INDIA
									</p>
									<p class="aj">Check out of the hotel as you will be transferred to the airport.</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>
GST as per applicable</li><li>
Any expenses of personal nature.</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>~^#^~~^#^~<p><strong>NOTES :</strong>

<ul>
	<li>Driving in New Zealand</li>
	<li>Self-driving holidays are one of the most relaxing ways of enjoying New Zealand&#39;s landscape. Many of its roads are scenic and traffic is low when compared to international standards.</li>
	<li>It is important not to underestimate driving times. Although distances may seem short, its roads often include hilly or winding terrain, which slow down your journey.</li>
	<li>In New Zealand, all motorists drive on the left-hand side of the road</li>
	<li>When the traffic light is red, you must stop. There is no left turn rule</li>
	<li>Drivers and passengers must wear seat belts at all times, in both front and rear seats</li>
	<li>Do not drink alcohol before driving in New Zealand - drinking and driving laws are strictly enforced</li>
</ul>

<p><strong>TERMS AND CONDITIONS</strong>

<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>												</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="Mind Blowing New Zealand & Fabulous Australia 13 Nights & 14 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="114282"/>
						</form>
						</div>
						
						";i:1;s:111:"Book Mind Blowing New Zealand & Fabulous Australia 13 Nights & 14 Days Tour - 13 Nights / 14 Days Tour Packages";i:2;s:209:"book mind blowing new zealand & fabulous australia 13 nights & 14 days tour - 13 nights / 14 days tour packages, heritage tour packages, sydney, auckland, dunedin, rotorua, queenstown, gold coast tour packages";i:3;s:302:"Book Mind Blowing New Zealand & Fabulous Australia 13 Nights & 14 Days Tour - 13 Nights / 14 Days tour packages from Oppex Travels & Tours ( a Division of Oppex Freight Systems - Get attractive 13 Nights / 14 Days Heritage  tour packages for  Sydney, Auckland, Dunedin, Rotorua, Queenstown, Gold Coast.";i:4;s:1536:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Sydney, Auckland, Dunedin, Rotorua, Queenstown, Gold Coast"        
		                 },
		      "description": "(Inclusive of Visa Charges for New Zealand & Australia)
HOTEL DETAILS:
Auckland : Rendezvous or Similar
Rotorua : Sudima or Rydges or Similar
Dunedin : Kingsgate Hotel or Similar
Queenstown : Rydges Queenstown or Similar
Gold Coast : Mantra Legends or Similar
Sydney : Sydney Boulevard or Similar

01 Nights’ accommodation in Auckland
02 Nights’ accommodation in Rotorua
02 Nights’ accommodation in Dunedin
02 Nights’ accommodation in Queenstown
03 Nights’ accommodation in Gold Coast
03 Nights’ accommodation in Sydney
Daily Breakfast
Sky Tower (Auckland)
Waitomo Glowworm Caves (Rotorua)
Elms Wildlife Tour (Dunedin)
Milford Sound Cruise (Queenstown)
Movie World (Gold Coast)
Get ready for Half day city tour and visit to aquarium and Madame Tussauds
(Sydney)
Blue Mountain tour with scenic rides (Sydney)
Newzealand & Australia Visa
All Airport Pick up and DropAirfare
GST as per applicable
Any expenses of personal nature.
Hotels not booked yet.
Rates Subject to change without prior notice.",
		      "name": "Mind Blowing New Zealand & Fabulous Australia 13 Nights & 14 Days Tour",
		      "telephone": "+91-9821321975"
		    }
		    </script>
			";i:5;N;}