a:6:{i:0;s:11302:"				<div class="h1"><h1>The Best of South Africa Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.mytravoholidays.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.mytravoholidays.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>The Best of South Africa 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">Cape Town, Johannesburg, Knysna, Oudtshoorn, Sun City</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.mytravoholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="The Best of South Africa 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="116878"/>
						</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_10/286827/190048.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/286827/190048.jpg"  width="150" height="150"    alt="The Best of South Africa Tour" title="The Best of South Africa 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">After arriving at the Cape Town airport, meet our tour representative who helps you with an assisted transfer to your pre-booked hotel. The rest of the day is free. After a special dinner, retire to the comforts of your home for an 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
								</p>
								<p class="aj">Day 2, post breakfast, proceed for visiting the major tourist attractions of Cape Town. Proceed for going aboard the Table Mountain Cable Car 3600 (Note: Subjected to weather conditions). During the ride, you enjoy a spectacular view of the city and coastline. Later, the Kirstenbosch Botanical Gardens. Next in line is visit to the well-known Victoria and the Alfred waterfront, one of the most-visited tourist attractions of Cape Town where one can indulge in shopping and guided boat cruise, GreenMarket square- a historical square, District Six. You can take a leisurely walk in the company gardens. Drive past popular buildings like the Houses of the Parliament, the Castle, the City Hall and Slave Lodge. The last visit is to the market to indulge in shopping at the Canal Walk Shopping Centre. Overnight stay followed by a sumptuous 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 3:</b> Cape of Good Hope
								</p>
								<p class="aj">Have your breakfast on day 3 and later leave for a day’s excursion to the Cape of Good Hope. Drive through Ou Kaapse Weg and the Atlantic Coast to arrive at Cape Point where the Atlantic and the Indian Ocean meet. Enjoy the spectacular view. Later, enjoy a glass bottom boat cruise towards Hout Bay to reach the Seal Colony (Note: Subjected to weather conditions). During the return cruise, along the False Bay Coast, to view the Jackass penguins found at the Boulders Beach. Later, halt at the Simon’s Town, a beautiful town that is also an important Naval base. Post dinner, stay overnight in Cape Town.</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">Post breakfast, check-out of your hotel and proceed for Knysna through Mossel Bay, a harbor town. Visit the Bartolomeu Dias Museum complex, the largest of the museums in this town.  Next in line is a visit to the Post Office Tree – a book- shaped post box under the tree, which is a national heritage site. Continue to Knysna. On arrival, complete the check-in formalities at the hotel after which you leave for the memorable sunset cruise. Have dinner. Night stay in Knysna.</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> Oudtshoorn
								</p>
								<p class="aj">After breakfast, leave for Oudtshoorn, a town housing the world's largest ostrich population. To reach ‘the Feather Capital of the World’, set in a semi-arid valley, you drive past, the Wine lands along the Breede River. Visit the famous Cango Caves, to view the stalactite and stalagmite formation is a spectacular sight.<br />
<br />
The next visit of the day is the Ostrich Farm to enjoy shows performed by the well-trained birds. You can indulge in the various interesting activities like riding an ostrich or breaking an ostrich egg, a tough task. You also have the opportunity to ride this magnificent bird and try your luck at breaking an, which is an impossible task. Thereafter, drive to Cango Wildlife Ranch, popular as Cheetah Ranch. Spot the beauty of the fastest animal of the world. Also visit the Crocodile Enclosure to spot natural-born predators. Continue your journey to back to Knysna. On arrival, check-in your pre-booked hotel for dinner and an 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 6:</b> Johannesburg-Sun City
								</p>
								<p class="aj">After breakfast, get on-time transfer to the airport to board a flight to Johannesburg. On arrival get transferred to the Sun City, rightly called the man-made wonder of the world. The place is popular as a city that never sleeps. Enjoy the rocking life of the city, the sights and the sounds of this lively place. Indulge in dancing at the popular clubs or try your luck at the casinos. The day is at leisure, you can spend in the way you want to. After dinner, overnight stay in the Sun City.</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> Johannesburg
								</p>
								<p class="aj">Have breakfast and return to Johannesburg. On arrival, check-in formalities at your pre-booked hotel.  Proceed for a city tour of Johannesburg followed by the tour of the Gold Reef city tour. After a fun-filled day, have dinner and retire in the comfort of your room for good night’s sleep in Johannesburg.</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">Post breakfast at the hotel, get transferred to the Johannesburg International Airport to board the flight back home.</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.mytravoholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="The Best of South Africa 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="116878"/>
						</form>
						</div>
						
						";i:1;s:68:"Book The Best of South Africa Tour - 7 Nights / 8 Days Tour Packages";i:2;s:161:"book the best of south africa tour - 7 nights / 8 days tour packages, heritage tour packages, cape town, johannesburg, knysna, oudtshoorn, sun city tour packages";i:3;s:201:"My Travo Tours Solution offers The Best of South Africa Tour - 7 Nights / 8 Days tour package, budget Heritage tour packages for Cape Town, Johannesburg, Knysna, Oudtshoorn, Sun City at exciting price.";i:4;s:454:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Cape Town, Johannesburg, Knysna, Oudtshoorn, Sun City"        
		                 },
		      "description": "",
		      "name": "The Best of South Africa Tour",
		      "telephone": "+91-9717748667"
		    }
		    </script>
			";i:5;N;}