a:6:{i:0;s:16599:"				<div class="h1"><h1>Pilgrimage Tour of Andhra Pradesh & Telangana</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.satyasrinivasatravels.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.satyasrinivasatravels.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Pilgrimage Tour of Andhra Pradesh & Telangana</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">
						12 Nights / 13 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Hyderabad</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.satyasrinivasatravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Pilgrimage Tour of Andhra Pradesh & Telangana - 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="116597"/>
						</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_12/334412/189688.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_12/334412/189688.jpg"  width="150" height="150"    alt="Pilgrimage Tour of Andhra Pradesh & Telangana" title="Pilgrimage Tour of Andhra Pradesh & Telangana" /></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> Arrive Hyderabad
								</p>
								<p class="aj">On arrival at Hyderabad Airport/Railway station, meet our tour representative who will be there for your welcome and smooth transfer to your already booked hotel in the city. Check in at the hotel and rest for some time. The rest of the day is free at leisure. During your free time, you can go out to explore the nearby attractions or walk down the streets, enjoy street food and speak to locals. Later, return back to the hotel 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> Hyderabad
								</p>
								<p class="aj">After breakfast in the morning, we will leave to visit the famous architectural heritage sites of Hyderabad. We will head to the royal Tombs of the Qutb Shahi Kings and the magnificent Golkonda Fort also known as Golconda or Golla konda. This fort is the capital of the medieval sultanate of the Qutb Shahi dynasty and is located 11 kms of Hyderabad. Thereafter, we will visit Nizams Museums, which is located in Hyderabad at Purani Haveli. It is a palace of the former Nizams and showcases the gifts that the last Nizam of Hyderabad state, Osman Ali Khan, Asaf Jah VII received on his silver jubilee celebrations. Afterwards, we will head towards Birla Temple, a Hindu temple that is built on a 280 feet high hillock called Naubath Pahad. Rest the evening is free at leisure. During your free time you can explore the local markets and buy artefacts as gifts. Later, we will return back to the hotel for dinner followed by 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 3:</b> Hyderabad
								</p>
								<p class="aj">We will start our day a bit early in the morning and have breakfast before leaving to visit the other major tourist places of Hyderabad city. In our today's day tour, we will be visiting 'One Man Collection' - Salarjung Museum. This national museum comprise of a wide collection of ceramics, metallic artifacts, paintings, manuscripts, carpets, carvings, textiles and clocks. Also, visitors can witness a vast collection of furniture from various countries across the globe including North America, Persia, Egypt, Europe, Japan, Burma and many others. After exploring the museum, we will head towards Charminar, well known as The Arc de Triomphe of the east. It is the second biggest Mosque of India. Later, we will return back to the hotel for a relaxing 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 4:</b> : Hyderabad - Warangal
								</p>
								<p class="aj">In the morning after breakfast, we will check out from the hotel in Hyderabad and leave for Warangal by road. On the way, we will stop to visit Pembarti Village for its carpet weaving center, Brass making, and Kulpakji (Kolanupaka) for the 2000 years Jain Temple. Afterwards, we will continue our drive to Warangal. On reaching, check in at the already booked hotel and rest for some time. The rest of the day is free at leisure. During your free time you can either rest in the room or go out for exploring the major tourist attractions of the place. Enjoy dinner followed by an overnight stay in 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> Warangal - Vijayawada
								</p>
								<p class="aj">Today we will start our day a bit early in the morning and have breakfast before checking out from the hotel and leaving by road for Vijayawada. On the way, we will stop to visit the Ramappa Temple, the 1000 Pillar Temple. One can witness sculpted figures that are inspired from Hindu mythology drawn on the wall panels, pillars and ceiling. We will also visit the mud-brick forts that are ruins today. Afterwards, we will continue our drive to Vijayawada. On arrival, check in at the pre-booked hotel for a relaxing 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> Vijayawada
								</p>
								<p class="aj">After breakfast in the morning, we will leave for guided tour to Kondapali Village. Once can explore the unique wooden toys in the village and spend a wonderful time. Afterwards, we will visit Kanaka Durga Temple, an ancient living temple with inscriptions of different dynasties. In the afternoon, we will visit a finest testimonial of ancient Vishwakarma Sthapathis, Undavalli Caves. After completing a full day excursion, we will return back to the hotel for dinner followed by 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 7:</b> Vijayawada - Nagarjuna Sagar
								</p>
								<p class="aj">Today after breakfast in the morning, we will check out from the hotel in Vijayawada and leave for Nagarjuna Sagar by road. On reaching, check in at the already booked hotel and rest for a while. Later in the afternoon, we will visit the Nagarjuna Konda and Anupu - the Amphitheatre. Nagarjunakonda is a historical Buddhist town now an island situated near Nagarjuna Sagar in Guntur district in Andhra Pradesh. Afterwards, we will visit various other Buddhist remains in the area. Later in the evening, we will return back to the hotel for dinner and 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 8:</b> Nagarjuna Sagar - Srisailam
								</p>
								<p class="aj">In the morning after breakfast, we will check out from the hotel in Nagarjuna Sagar and leave by raod for Srisailam. On reaching, check in at the already booked hotel and relax for some time. Later in the evening, we will pay a visit to Mallikarjuna Temple. The temple is one of the twelve Jyotir Lingam temples of India and is situated in the Jungles of Nallamala. After exploring the temple, we will return back to the 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 9:</b> Srisailam - Kurnool
								</p>
								<p class="aj">After morning breakfast, we will check out from the hotel in Srisailam and drive to Kurnool. On reaching, check in at the pre-booked hotel and relax for some time. Later in the afternoon, we will pay a visit to the magnificent 7th century Chalukyan Nava Bramha temples. Located at Alampur in Telangana, there are a total of nine temples in Alampur and all of them are devoted to Lord Shiva. Afterwards, we will head towards the wonderful museum at Alampur. Later in the evening, we will return back to the hotel for dinner followed by 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 10:</b> Kurnool - Puttaparthy
								</p>
								<p class="aj">We will start our day a bit early in the morning and have breakfast before checking out from the hotel in Kurnool and driving to Puttaparthy (Puttaparthi). On reaching, check in at the already booked hotel in Puttaparthy and freshen up. Later in the afternoon, we will visit Vijayanagar temple and the great Nandi at Lepakshi temple. Constructed in the 16th century, the Lepakshi Temple is a brilliant example of the Vijayanagar style of architecture. After exploring these ancient temples, we will visit the impressive Fort ruins at Penugonda. Later, we will return back to the hotel for dinner and a comfy overnight stay.</p>
								</td>
								</tr>
								</table>					
								</div><div id="show_more_content" style="display:none;">
									<div class="data">
									<table class="w100 formTable bdr0 imgWidth">
									<tr>
									<td class="p10px vat">
									<p class="b large mb5px"><b class="dif">Day 11:</b> Puttarpathy
									</p>
									<p class="aj">The day is fixed for the full day excursion to Puttaparthy Prasanthi Nilayam, the main ashram of Sri Sathya Sai Baba. Established 40 years ago, the ashram offer a soothing ambience that offer peace to the soul and mind of the visitors. We will attend the early morning prayers in the ashram and later explore the attractions of the ashram. We will also attend evening prayers and afterwards we will return back to the hotel 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 12:</b> Puttaparthy - Tirupathi
									</p>
									<p class="aj">We will start our day a bit early in the morning and be ready to leave for a full day excursion to Tirupathi (Tirupati). We will start our day tour by paying a visit to the Govindaraja temple. It is one of the substantial sub temples associated with Sri Venkateswara Swamy Tirupati dedicated to Lord Govindaraja who is believed to be the elder brother of Lord Balaji. Afterwards, we will head towards Padmavati temple, the most prominent shrine of Padmavathi or Alamelumanga who is believed to be the consort of Lord Venkateswara. Later in the evening, we will return back to the hotel, for dinner followed by 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 13:</b> Tirupathi - Chennai
									</p>
									<p class="aj">On the last day of our tour after breakfast, we will get check out from the hotel in Tirupati and drive to Chennai, which is about hour journey. On reaching, get direct transfer to the Chennai airport/railway station to board the flight/train for onward journey</p>
									</td>	
									</tr>
									</table>				
									</div>					
							</div>							<p class="mt10px ac"><a class="buttonBig p5px10px dib b" id="more_button" href="javascript:topDestinationToggle('show_more_content','more_button');" >View More &#9660;</a></p>
													<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.satyasrinivasatravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Pilgrimage Tour of Andhra Pradesh & Telangana - 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="116597"/>
						</form>
						</div>
						
						";i:1;s:86:"Book Pilgrimage Tour of Andhra Pradesh & Telangana - 12 Nights / 13 Days Tour Packages";i:2;s:149:"book pilgrimage tour of andhra pradesh & telangana - 12 nights / 13 days tour packages, religious & pilgrimage tour packages, hyderabad tour packages";i:3;s:189:"Satya Srinivasa Travels offers Pilgrimage Tour of Andhra Pradesh & Telangana - 12 Nights / 13 Days tour package, budget Religious & Pilgrimage tour packages for Hyderabad at exciting price.";i:4;s:426:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Hyderabad"        
		                 },
		      "description": "",
		      "name": "Pilgrimage Tour of Andhra Pradesh & Telangana",
		      "telephone": "+91-9848550057"
		    }
		    </script>
			";i:5;N;}