a:6:{i:0;s:13734:"				<div class="h1"><h1>Oppex 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>Oppex 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">Western Cape, Cape Town, Pilanesberg, Oudtshoorn</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="Oppex 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="14018"/>
						</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/19477.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_2/37817/19477.jpg"  width="150" height="150"    alt="Oppex Tour" title="Oppex 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> Cape Town
								</p>
								<p class="aj">Cape Town - Famously Known As The Mother City Is The Legislative Capital Of South Africa And Also The Seat Of The National Parliament. With A Wealth Of Beautiful White Sandy Beaches, Attractions, Accommodation And Activities On Offer, Cape Town Is A World Waiting To Be Explored. Upon Arrival, Enjoy Some Free Time To Unwind From Your Flight, Relaxing At The Hotel Followed By 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 2:</b> Cape Town - Table Mountain, guided city tour and V & A Waterfront with cruise
								</p>
								<p class="aj">After Breakfast, Proceed To Discover The Spirit Of The Mother City, Experience Her Vibrant Cultures And History. We Take The Cable Car To The Top Of Table Mountain For A Panoramic View Of The City And Coastline. The Table Mountain Cableway Is One Of South Africa'S Most Popular Tourist Attractions. The Floor Of Each Car Rotates, Giving Everyone A 360 Degree View On The Way Up. One Can See Spectacular Views Over The Cape Peninsula And Explore The Richest Corner Of The Cape Floral Region.<br />
After The Incredible Table Mountain Experience, Proceed On A Guided City Tour Of Cape Town Including Scenic Coastal Drive Through Clifton And Sea Point, Green Market Square, District Six, Company Gardens, The Houses Of Parliament, The City Hall, The Cape Castle, Slave Lodge And Historic Malay Quarter.<br />
Hereon, We Visit The Victoria And Alfred Waterfront Which Is South Africa’s Most Talked About Tourist Venue With Many Shops And Restaurants. Situated At The Foot Of Table Mountain, Within A Stone’s Throw From The Cape Town Stadium And In The Heart Of Cape Town’s Working Harbour, The V And A Waterfront Offer The Visitor An Abundance Of Unforgettable Experiences. Indoor Shopping And Entertainment Venues Seamlessly Merge With Ocean Vistas And Mountain Views And The Fresh Sea Breeze And Warm African Sun Add Zest To A Cosmopolitan, Vibrant Atmosphere. More Than 80 Restaurants Bring A Fusion Of International Food. We Also Enjoy A Cruise As Part Of The Tour.Enjoy A Comfortable Overnight Stay 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 3:</b> Cape Town, Full Day Tour of Cape Point, Cape Point nature reserve & Cape of Good Hope
								</p>
								<p class="aj">After Breakfast Today, Commence On A Full Day Tour Of Cape Point. We Flank The Cold Atlantic Ocean En Route To Hout Bay. Once A Fishing Community, Now One Of The Most Popular Residential Areas, The Harbour Still Has A Charm Of The Days Gone By. Enjoy A Half-Hour Cruise To Seal Island. We Now Continue Alongside The Indian Ocean, And Stop To See The Jackass Penguin Colony, Which Has Become Well Established, At Boulders Beach Near Simons Town. Then We Travel Onwards Until We Reach Cape Point And The Cape Of Good Hope. Said To Be The Romantic Meeting Place Of The Two Mighty Oceans, The Atlantic And The Indian, Sir Francis Drake The Explorer Once Called It The Fairest Cape That We Saw In The Whole Circumference Of The Globe.<br />
Enjoy A Comfortable Overnight Stay 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 4:</b>  Garden Route, Mossel Bay and sunset cruise on the Knysna Lagoon 
								</p>
								<p class="aj">After Breakfast, Proceed On The Garden Route- South Africa'S Most Famous Scenic Highway. En-route We Visit The Harbor Town Of Mossel Bay. This Popular Holiday Town Is Surrounded By A Sunbathed Peninsula And The Refreshing Waters Of The Indian Ocean. It Is Blessed With A Mild Climate All-Year Round But Its Most Important Feature Is Its Status As The Historical Capital Of The Garden Route. Hereon We Proceed To The Charming Town Of Knysna - Southern Cape Coasts Best Known Holiday Destination Situated Between Lush Forests And The Shores Of The Peaceful Lagoon - It Offers Many Activities And Attractions Of A Wide Variety. In Knysna Take An Unforgettable Experience On The Knysna Lagoon - A Relaxing Sunset Cruise.<br />
Enjoy A Comfortable Overnight Stay 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 5:</b> Full Day tour of Oudtshoorn including Cango Caves, Ostrich Farm and Cango Wildlife Ranch
								</p>
								<p class="aj">Today After Breakfast, We Take A Full Day Tour Of Oudtshoorn, The Feather Capital Of The World. We Visit Cango Caves, The Klein Karoos Oldest And Most Popular Attraction, One Of The Worlds Natural Wonders. The Cango Caves Are A True Showcase Of Evocative Dripstones. You Will Be Amazed By The Range Of Dripstone Formations They Contain, Some Resembling Real-Life Objects And Even Historical Figures. Little Wonder The Caves Have Been A Major Attraction For More Than 200 Years.<br />
Our Next Stop For The Day Is The Ostrich Farm.<br />
Hereon We Proceed To Visit The Cango Wildlife Ranch Where You Can See Crocodile Enclosures, Snake Park And Cheetahland. The Cango Wildlife Ranch Is Uniquely Designed To Comfortably Host More Than 40 Species Of Animals, Giving Visitors The Opportunity To View And, In Some Cases, Even Interact With A Variety Of Endangered Animals.<br />
Enjoy A Comfortable Overnight Stay 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 6:</b> Sun City
								</p>
								<p class="aj">Today After Breakfast, We Proceed To The Airport To Board Our Flight To Johannesburg From Where We Drive To Africa'S Premier Holiday Resort Sun City.  The Resort Offers A Myriad Of Different Attractions And Activities To Keep Everyone Busy. The Sun City Resort Complex Captivates Visitors With Its Combination Of Golf, Game And Gambling As Well As World-Class Hotels. Formerly The Gaming Mecca Of South Africa, Sun City Still Attracts Those Wishing To Gamble But Also Those Just Wishing To Relax, And The Focus Is Now On The Total Experience Of Africa. The Resort At Sun City Features Glamorous Casinos, Gourmet Restaurants, Extensive Sports Facilities And Star Studded Performances. From Slots To Safaris, Theatre Extravaganzas To The Games Arcade For Children, Horse Riding To Golf, And The Valley Of Waves To The Lost City, A Mind-Blowing Experience.<br />
Enjoy A Comfortable Overnight Stay 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 7:</b> Pilanesberg game drive
								</p>
								<p class="aj">Today We Undertake An Activity That No One Should Miss While In Africa, A Thrilling Big 5 Experience At Pilanesberg Game Reserve. See The Big Five In One Of The Country'S Most Popular Wildlife Areas. Set In An Ancient Volcanic Crater, This Well-Stocked Reserve Has A Dramatic Landscape That Supports A Wide Variety Of Plants, Animals And Birds.<br />
Spend The Rest Of The Day At Leisure As You Please. The Magnificent Pool Area Is Surrounded By Tropical Plants And Nearby Is The Incredible Water World And The Valley Of Waves. Sun City Is A Sportsman'S Paradise, From The Two Golf Courses Designed By Gary Player To The Tennis Courts. Other Sport Activities Include Bowls, Mini Golf, Squash, Ten-Pin Bowling And Horse Riding. There Is Also A Gym And Sauna For The More Physical Enthusiasts. (Costs Not Included For Additional Activities)<br />
Enjoy A Comfortable Overnight Stay 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 8:</b> Departure
								</p>
								<p class="aj">After A Hearty Breakfast, It Is Time To Bid Good Bye To South Africa, With An Enriching Experience, New Friends And A Bagful Of Memoirs, All Of Us Would Like To Keep For Posterity.</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>
															</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.oppexholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Oppex 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="14018"/>
						</form>
						</div>
						
						";i:1;s:49:"Book Oppex Tour - 7 Nights / 8 Days Tour Packages";i:2;s:141:"book oppex tour - 7 nights / 8 days tour packages, birdwatching tour packages, western cape, cape town, pilanesberg, oudtshoorn tour packages";i:3;s:217:"Oppex Travels & Tours ( a Division of Oppex Freight Systems offers Oppex Tour - 7 Nights / 8 Days tour package, budget Birdwatching tour packages for Western Cape, Cape Town, Pilanesberg, Oudtshoorn at exciting price.";i:4;s:430:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Western Cape, Cape Town, Pilanesberg, Oudtshoorn"        
		                 },
		      "description": "",
		      "name": "Oppex Tour",
		      "telephone": "+91-9821321975"
		    }
		    </script>
			";i:5;N;}