a:6:{i:0;s:9355:"				<div class="h1"><h1>Karnataka with Tamilnadu Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.geetcompany.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.geetcompany.com/holiday-tour-packages.htm" title="Holiday Tour Packages">Holiday Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Karnataka with Tamilnadu Tour</p>
				<br />
				
									<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>
					
					<table class="w100 formTable imgWidth">
					<tr>
					
											<td class="p10px vat imgWidth150 w150px">
						<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_1/22362/55156.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_1/22362/55156.jpg"  width="150" height="150"    alt="Karnataka with Tamilnadu Tour" title="Karnataka with Tamilnadu Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											
					<td class="p10px">
											<p class="mb5px"><b>Tour Code :</b> 121</p>
												<p class="mb5px"><b>Duration :</b> 
						6 Nights / 7 Days 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> Bangalore, Mysore, Kodaikanal, Ooty</p>
												<p><b>Price (Starting From) :</b>						
						INR 19100 Per Person						</p>
												<br />
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.geetcompany.com/travel-inquiry.htm">
						<input type="hidden" name="subject" value="Karnataka with Tamilnadu Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="buttonBig p10px20px c5px b large dib">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="28125"/>
						</form>
						</p>
											</td>
					</tr>
					</table>
											<div class="mt7px dif">* Mentioned prices may vary depending upon date of travel, hotel availability, surge pricing and seasonal rush.</div>
											<br />
					
					<div class="packageTabs myTabs horizontal mc"><!--MY TABS STARTS-->
					<ul class="fo lsn m0px p0px">
					
											<li id="tab2"><a href="#data2">Itinerary</a></li>
												<li id="tab4"><a href="#data4">Tour Detail</a></li>
												<li id="tab6"><a href="#data6">Terms &amp; Conditions</a></li>
											</ul>
					
					
											<div class="ic bdr" id="data2"><!--DATA2 START-->
						<br />
						<ul class="lsn m0px p0px">
									<li>
									<p class="b mb5px">Day 1: Bangalore
									</p>
									<div class="data p10px">Arrive at Bangalore airport and check-in to the hotel. Later go for city tour where you can visit Nandi Hills, Bangalore Palace, and Lalbagh Palace etc. Evening will be free for shopping and relaxation. Overnight stay at hotel.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 2: Bangalore - Mysore
									</p>
									<div class="data p10px">After breakfast check-out from hotel and processed for the Mysore which is around 140kms (4hrs) drive from Bangalore. Later check-in to the hotel. Then go for city tour where you can see Mysore Palace, Chamundi Hills, and The Rail Museum. Evening visit Brindavan Garden.Later back to hotel. Overnight stay at hotel.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 3: Mysore - Ooty
									</p>
									<div class="data p10px">After breakfast check-out from hotel and processed for the Ooty which is around 155kms (3hrs) drive from Mysore. Later check-in to the hotel. Then go for local sightseeing Botanical Garden, Ooty Lake, Rose Garden, Doddabetta peek, Pykara boat house, etc. Evening back to hotel.Overnight stay at hotel.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 4: Ooty
									</p>
									<div class="data p10px">Whole day will be free for leisure. Overnight stay at hotel.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 5: Ooty - Kodaikanal
									</p>
									<div class="data p10px">After breakfast check-out from hotel and processed for the Kodai which is around 236kms (6hrs) drive from Ooty. Later check-in to the hotel then rest whole day will be free for leisure and relaxation.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 6: Kodaikanal
									</p>
									<div class="data p10px">After breakfast go for local sightseeing of Kodai where you can see Kurinji Andavar Temple, Pillar rocks, solar observatory,Bryant Park. Evening visit waterfalls of Kodai such as Bear Shola Falls, Silver Cascade, Fairy Falls and Glen Falls.Late evening back to hotel.Overnight stay at hotel.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 7: Departure
									</p>
									<div class="data p10px">After breakfast check-out from hotel and processed for you next destination with lots of beautiful memories of south India tour.</div>					
									</li>
									<br />					
							</ul>						<!--DATA2 EMD--></div>
											
						<div class="ic bdr" id="data4"><!--DATA4 START-->
						<br />
						Bangalore<br />
Bangalore, recently renamed as Bangalore, is the state capital of Karnataka and one of the most attractive modern cities in India. It has grown into the fifth largest metropolis of India. The city is famous for its beautiful parks, avenues, impressive buildings, heritage centers and excellent shopping. These qualities make it a magnificent place to visit, a delightful destination in its own right as well as the gateway to Southern India.<br />
<br />
Mysore<br />
Mysore is a major tourist city of Karnataka. The city was the erstwhile capital of the state and hence has played an important role in the history of the state and of South India. Today it has developed into a modern city like many other cities in the country. But this city has not lost touch with its rich historical and cultural legacy. Mysore city is a favorite tourist destination in Karnataka. Tourist from within the country and from outside come see the splendour of the city of Mysore. The city has a number of places a person can visit. There are a number of Royal buildings, gardens, waterfalls, temples, museums and modern amusement parks.<br />
<br />
Ooty<br />
Ooty is also known as "Udhagamandalam". It’s been rightly titled as the as Queen of Hills. Ooty, the headquarters of The Nilgiri district is one of the famous hill stations in India. It is situated at an altitude of 2,240 meters above mean sea level. The word Nilgiri means Blue Mountains. It is a land of picturesque picnic spots and had been a popular summer and weekend getaway for the British during the colonial days. There are plenty of interesting tourist more.<br />
<br />
Kodaikanal<br />
One of the attractive hill station in India, Kodaikanal lies amidst the natural beauty of the southern crest of the upper palani hills near near the city of Madurai. The verdant pali hills with its slippery slopes, curved rocks, never ending waterfalls, lakes provide the required serenity and pleasure to the wonder destination. Kodaikanal preserves a unique flowering plant Kurunji or kunjarani only found there and is nature's gift to that place. The flower is seen blooming once in every 12 years. Situated at a height of about 2,133 m altitude and covering an area of 21,45 sq km, the charming hill station is the best place for the newly wed couples and peoples who wants to have peace of mind in nature's lap. The hill town is also renowned for the international institution of repute.3.09% Government Service Tax.<br />
Anything else which is not mentioned in the Package.<br />
Surcharge would be charge on pick season.01-1031-03							<p class="b mb5px dif">Inclusions :</p>
							<ul>
																	<li>Hotel</li>
																				<li>Sightseeing</li>
																				<li>Transport</li>
																	</ul>
							<br />
														<p class="b mb5px dif">Exclusions :</p> <ul><li>3.09% Government Service Tax.</li><li>
Anything else which is not mentioned in the Package.</li><li>
Surcharge would be charge on pick season.</li></ul><br />
													<!--DATA4 EMD--></div>
												<div class="ic bdr" id="data6"><!--DATA6 START-->
						<br />
						* 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. ~^#^~						<!--DATA6 EMD--></div>
											
					<!--MY TABS END--></div>
					";i:1;s:68:"Book Karnataka with Tamilnadu Tour - 6 Nights / 7 Days Tour Packages";i:2;s:143:"book karnataka with tamilnadu tour - 6 nights / 7 days tour packages, heritage tour packages, bangalore, mysore, kodaikanal, ooty tour packages";i:3;s:189:"Book Karnataka with Tamilnadu Tour - 6 Nights / 7 Days tour packages from Geet & Company - Get attractive 6 Nights / 7 Days Heritage  tour packages for  Bangalore, Mysore, Kodaikanal, Ooty.";i:4;s:2975:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Bangalore, Mysore, Kodaikanal, Ooty"        
		                 },
		      "description": "Bangalore
Bangalore, recently renamed as Bangalore, is the state capital of Karnataka and one of the most attractive modern cities in India. It has grown into the fifth largest metropolis of India. The city is famous for its beautiful parks, avenues, impressive buildings, heritage centers and excellent shopping. These qualities make it a magnificent place to visit, a delightful destination in its own right as well as the gateway to Southern India.

Mysore
Mysore is a major tourist city of Karnataka. The city was the erstwhile capital of the state and hence has played an important role in the history of the state and of South India. Today it has developed into a modern city like many other cities in the country. But this city has not lost touch with its rich historical and cultural legacy. Mysore city is a favorite tourist destination in Karnataka. Tourist from within the country and from outside come see the splendour of the city of Mysore. The city has a number of places a person can visit. There are a number of Royal buildings, gardens, waterfalls, temples, museums and modern amusement parks.

Ooty
Ooty is also known as "Udhagamandalam". It’s been rightly titled as the as Queen of Hills. Ooty, the headquarters of The Nilgiri district is one of the famous hill stations in India. It is situated at an altitude of 2,240 meters above mean sea level. The word Nilgiri means Blue Mountains. It is a land of picturesque picnic spots and had been a popular summer and weekend getaway for the British during the colonial days. There are plenty of interesting tourist more.

Kodaikanal
One of the attractive hill station in India, Kodaikanal lies amidst the natural beauty of the southern crest of the upper palani hills near near the city of Madurai. The verdant pali hills with its slippery slopes, curved rocks, never ending waterfalls, lakes provide the required serenity and pleasure to the wonder destination. Kodaikanal preserves a unique flowering plant Kurunji or kunjarani only found there and is nature's gift to that place. The flower is seen blooming once in every 12 years. Situated at a height of about 2,133 m altitude and covering an area of 21,45 sq km, the charming hill station is the best place for the newly wed couples and peoples who wants to have peace of mind in nature's lap. The hill town is also renowned for the international institution of repute.3.09% Government Service Tax.
Anything else which is not mentioned in the Package.
Surcharge would be charge on pick season.01-1031-03",
		      "name": "Karnataka with Tamilnadu Tour",
		      "telephone": "+91-9896771268"
		    }
		    </script>
			";i:5;N;}