a:6:{i:0;s:10953:"				<div class="h1"><h1>Garden Route & Wineland Wonder Package</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>Garden Route & Wineland Wonder Package</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">Cape Town</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="Garden Route & Wineland Wonder Package - 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="14873"/>
						</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/22089.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_2/37817/22089.jpg"  width="150" height="150"    alt="Garden Route & Wineland Wonder Package" title="Garden Route & Wineland Wonder Package" /></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> Cape Town - Oudtshoorn
								</p>
								<p class="aj">Depart Cape Town and travel through the ‘Little Karoo’ and Montagu, a picturesque and historic spa town. En route, stop off in the town of Barrydale, where you will have the opportunity to visit a local farm school, interact with the children and teachers, spending time with them in the classroom learning more about the local farming community, before continuing to Oudtshoorn, the “ostrich feather capital” and center of the world’s Ostrich farming industry. (The school visit is subject to school being opened). Overnight in Oudtshoorn.</p>					
									<p><b>Meals : </b> Dinner</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> Oudtshoorn
								</p>
								<p class="aj">After breakfast take a tour of the spectacular limestone caverns of the Cango Caves, one of the world’s great natural wonders, sculpted by nature through the ages. Afterwards, ascend the Swartberg Mountains via the world renowned Swartberg Pass (weather permitting). Get close to nature and explore the spectacular Sandstone formations dating back more than 300 million years. Feast your eyes on the full splendour of diverse “fynbos” species ranging from various protea species as well as “cone bush” and “pin cushions”.  Return to Oudtshoorn for a tour and light lunch at an Ostrich Farm.Overnight in Oudtshoorn.</p>					
									<p><b>Meals : </b> Breakfast , Lunch</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> Oudtshoorn - Knysna
								</p>
								<p class="aj">After breakfast, travel over the scenic Outeniqua Pass to George, the administrative hub of the Garden Route area and then onto Knysna, known as the oyster box of South Africa, nestling on the banks of a beautiful lagoon in the heart of the Garden Route. Enjoy a lagoon cruise to the Featherbed Nature  Reserve, where you can take a trailer ride to the top of the Western Head to enjoy panoramic views of the town and lagoon, returning for lunch under the milkwood trees. The afternoon is at leisure to further explore this charming town set around a natural harbour lagoon.Overnight in Knysna.</p>					
									<p><b>Meals : </b> Breakfast , Lunch</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> Knysna
								</p>
								<p class="aj">After a leisurely breakfast, drive through the Tsitsikamma Forests, continuing to Bloukrans Bridge, the <br />
highest single span arch bridge in the world, currently offering the highest commercially operated Bungy Jump in the world. Explore this breathtaking stretch of the Garden Route, where mountains, indigenous forests, deep gorges, and lush vegetation hug the rugged coastline of cliffs and sandy beaches. Here is an abundance of indigenous flora, ancient yellowwood trees and magnificent fynbos plants. In the afternoon you’ll return to Knysna, via Plettenberg Bay, originally christened "Bahia Formosa" (beautiful bay) by early Portuguese explorers. The highlight of the area is undoubtedly the rivers, beaches and the bay with its ideal conditions for all facets of water-sports, including sailing in the safe waters of the Bay, superb rock and surf fishing and scuba diving spots. Overnight in Knysna.</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> Knysna - Hermanus
								</p>
								<p class="aj">Today, begin the first leg of the return journey. Travel via George and Mossel Bay to the picturesque Cape Dutch town of Swellendam, where lunch will be enjoyed. This charming town was founded in 1745 at the foot of the Langeberg Mountain Range and is famous for its young berries, eclectic architecture and National Parks, as well as outdoor activities. Our journey further continues to the seaside resort of Hermanus, known as the heart of the whale route, offering the best land based whale watching (Aug-Nov) in the world. Overnight in Hermanus.</p>					
									<p><b>Meals : </b> Breakfast , Lunch</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> Hermanus - Cape Town
								</p>
								<p class="aj">After a leisurely breakfast depart Hermanus and continue to Somerset West, travelling via the scenic coastal road to Gordon's Bay. This is a spectacular route with steep cliffs and lovely coves. Locals label it as the Helderberg areas own "Chapman's Peak" drive and the route offers amazing views over False Bay. Travel to the Stellenbosch area, set within the scenic Cape Wine lands. This “Heart of Cape Heritage and hospitality” is a gracious blend of old Cape Dutch, Georgian and Victorian architecture. A wine tasting will be enjoyed, before travelling to Cape Town, where the tour ends on arrival. [B]. Passengers may disembark, on request, at Cape Town International Airport.</p>					
									<p><b>Meals : </b> Breakfast</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>Sightseeing</li>
																		<li>Transport</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<ul>
	<li>Rooms Are Double/Twin Sharing Basis. Kids Below 8 Years Not Allowed For This Tour. Kids 12 Years And Older Will Pay Full Adult Rate - No Child Discount. Rooms And Rates Are Subject To Availability.</li>
	<li>Rates May Change Without Prior Notice. Air Fares Are Not Included. South Africa Holidays Terms &amp; Conditions Apply.</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="Garden Route & Wineland Wonder Package - 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="14873"/>
						</form>
						</div>
						
						";i:1;s:77:"Book Garden Route & Wineland Wonder Package - 5 Nights / 6 Days Tour Packages";i:2;s:130:"book garden route & wineland wonder package - 5 nights / 6 days tour packages, hill station tour packages, cape town tour packages";i:3;s:221:"Book Garden Route & Wineland Wonder Package - 5 Nights / 6 Days tour packages from Oppex Travels & Tours ( a Division of Oppex Freight Systems - Get attractive 5 Nights / 6 Days Hill Station  tour packages for  Cape Town.";i:4;s:419:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Cape Town"        
		                 },
		      "description": "",
		      "name": "Garden Route & Wineland Wonder Package",
		      "telephone": "+91-9821321975"
		    }
		    </script>
			";i:5;N;}