a:6:{i:0;s:13101:"				<div class="h1"><h1>Delightful South Africa Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.trippytripstravel.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.trippytripstravel.com/holiday-packages.htm" title="Holiday Packages">Holiday Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Delightful 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">Johannesburg, Cape Tow</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.trippytripstravel.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delightful 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="108189"/>
						</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_17/494778/179157.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/494778/179157.jpg"  width="150" height="150"    alt="Delightful South Africa Tour" title="Delightful 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> Arrival
								</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">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. ~^#^~						
    	<p class="h dif xlarge b mb5px">Rate Card</p>
    	<div class="otherDetails aj">Super Luxury Services: "King's Choice" includes Sight Seeing + Snacks and Drinks for the entire journey + Free wifi, powerbanks, portable bluetooth speakers, E-Hookkah( served out of the car with 15 flavours to choose from) + 1 musical instrument (Guitar/Flute/Mouth Organ) + Video Shoot of the entire trip using Gopro camera ( underwater / Adventure Sports/ Documentary​ video/ Trip Music Video) Freely enjoy the moments of your trip instead of staying behind handling the camera.<br>
<br>
<br>
<br>
Luxury Service: Luxury Services: A budget friendly services package which includes Basic Service+Economy Service+ Free wifi,  Powerbank, Portable Bluetooth Speaker, E-Hookkah(served out of the car with 15 flavours to choose from).<br>
<br>
<br>
Economy Service: Covers your basic travel needs. includes Basic Service+Snacks and Drinks for the journey (To & From).</div><br>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="headHr p5px b">SERVICE</td>
				<td class="headHr p5px b">Duration:</td>
				<td class="headHr p5px b">Charges:</td>
			</tr>
			<tr>
				<td class="data p5px">SUPER LUXURY SERVICE</td>
				<td class="data p5px">as per the tour duration</td>
				<td class="data p5px">2600/day (For a group of 4-6 people)</td>
			</tr>
			<tr>
				<td class="data p5px">LUXURY SERVICE</td>
				<td class="data p5px">As per the tour duration</td>
				<td class="data p5px">1600/day (For a group of 4-6 people)</td>
			</tr>
			<tr>
				<td class="data p5px">ECONOMY SERVICE</td>
				<td class="data p5px">2 days. ( Onward and return journey</td>
				<td class="data p5px">1200 (For a group of 4-6 people)</td>
			</tr>
		</table></div><br>						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.trippytripstravel.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delightful 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="108189"/>
						</form>
						</div>
						
						";i:1;s:67:"Book Delightful South Africa Tour - 7 Nights / 8 Days Tour Packages";i:2;s:129:"book delightful south africa tour - 7 nights / 8 days tour packages, heritage tour packages, johannesburg, cape tow tour packages";i:3;s:164:"TrippyTrip Travels offers Delightful South Africa Tour - 7 Nights / 8 Days tour package, budget Heritage tour packages for Johannesburg, Cape Tow at exciting price.";i:4;s:422:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Johannesburg, Cape Tow"        
		                 },
		      "description": "",
		      "name": "Delightful South Africa Tour",
		      "telephone": "+91-8808443322"
		    }
		    </script>
			";i:5;N;}