a:6:{i:0;s:18446:"				<div class="h1"><h1>Group Tours / 15 Days - India Nepal Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.pptt.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.pptt.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Group Tours / 15 Days - India Nepal 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">
						13 Nights / 14 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">New Delhi, Jaipur, Agra, Varanasi, Kathmandu, Nagarkot, Fatehpur Sikri</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.pptt.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Group Tours / 15 Days - India Nepal 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="94335"/>
						</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_8/228917/160981.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_8/228917/160981.jpg"  width="150" height="150"    alt="Group Tours / 15 Days - India Nepal Tour" title="Group Tours / 15 Days - India Nepal 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> International Arrival at Delhi
								</p>
								<p class="aj">As you arrive at the international airport in Delhi, meet  representative will meet and greet you. Whether it is late night or early morning hours, you will be accompanied by the representative to your hotel and will be assisted throughout the check-in process. Freshen up and relax in your hotel.<br />
<br />
Overnight stay will be at Delhi.</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> Delhi
								</p>
								<p class="aj">Post breakfast; proceed for a city tour in Old Delhi accompanied by a guide.<br />
<br />
Commence your guided tour by paying a visit to Raj Ghat. Then drive past Red Fort, which is considered as one of the prominent buildings of Old Delhi.<br />
<br />
Ride a bicycle rickshaw in the street of Old Delhi to visit Jama Mosque. Continue the rickshaw ride through the narrow winding lanes of Chandani Chowk.<br />
<br />
Post lunch; continue city tour in New Delhi covering Qutub Minar and the majestic Humayun’s Tomb. Later, drive past some of the remarkable buildings like India Gate, the residence of India’s President or the Rashtrapati Bhawan and the Parliament House.<br />
<br />
The trip will also include a visit to the Lotus Temple located at the southern part of Delhi, if time permits. This lotus shaped Bahai temple is made of marble, dolomite, cement, and sand.<br />
<br />
Your overnight stay will be scheduled in Delhi.</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> Delhi - Agra By Surface ( 250 kms in Approx 5 hours )
								</p>
								<p class="aj">After breakfast, proceed to Agra.<br />
<br />
On reaching Agra, you will be accompanied to your pre-booked hotel. Spend some relaxed moments in the hotel after check-in.<br />
<br />
Agra: Agra was enhanced and accepted as the second capital of Mughal Empire by two great Mughal Emperors Akbar and Shahjahan. Then it was named as Dar-ul-Khilafat which means “seat of the Emperor”. The city of Agra still has the influence of Mughal culture and heritage. Visitors can enjoy leisure walk through the narrow and bustling streets of the city fumed with the aroma of Mughlai Dishes.<br />
<br />
Proceed for a guided tour of Agra covering Agra Fort - The fascinating red sandstone structure called Agra Fort is surrounded by Char Bagh, which is a foursquare garden. It is located in the heart of the city and on the bank of river Yamuna.<br />
<br />
Enjoy an overnight stay at Agra.</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> Agra - Jaipur By Surface ( 242 kms in Approx 5 hours )
								</p>
								<p class="aj">Wake up early morning for visit to the Taj Mahal during sunrise, it is considered as an ideal time.<br />
<br />
Taj Mahal : It is needless to mention that this architectural wonder of Agra mesmerize every tourist. This white marble mausoleum was built by Mughal Emperor Shah Jahan, in the memory of his beloved wife Mumtaz Mahal. The monument was built in 22 years, which was planned & designed by an architect, hailing from Persia named Ustad Isa. The Taj is not only famous worldwide for its impressive design and wonderful symmetry, but also for its classic domes, exquisitely carved screens and fantastic inlay work.   <br />
<br />
Return back to your hotel for freshening up and to have your breakfast.<br />
<br />
After breakfast, move towards Jaipur via Fatehpur Sikri, located 37 km away to the west of Agra and later drive towards Jaipur.<br />
<br />
Jaipur : The capital city of Rajasthan, which is a culturally enriched state of India, houses magnificent palaces and splendid fortresses. It is popular for its royal family of Maharajas, Kshatriya or warrior caste.<br />
<br />
The capital of Rajasthan, Jaipur is named after the respected Rajput founder Jai Singh II. He earned the title Sawai Maharaja from the Mughals. Jaipur is popularly known as the ’Pink City’ as the buildings of the city are painted pink. To honor the State visit of Prince Albert, in the year 1856, the city was beautified by painting the buildings with a distinctive color.<br />
<br />
Learn about the religious aspect of Jaipur by visiting the famous Birla Temple, in the evening. You will observe the AARTI Ceremony (the waving of illuminated oil lamps to awaken and appeal to the deity) in the temple. Have an ultimate experience in the city of Jaipur.<br />
<br />
Reach and check-in to hotel.<br />
<br />
A comfortable overnight stay will be in Jaipur.</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> Jaipur
								</p>
								<p class="aj">Post breakfast, Enjoy a fascinating elephant ride to Amber Fort.<br />
<br />
Amber Fort Palace : The classic and romantic Amber Fort Palace has hostile exterior and beautiful interiors with the perfect blend of architecture in Mughal and Hindu styles. Get down of your colorful elephant at the foot of the hill and begin your climb up to the fort.<br />
<br />
Continue with the city tour for sightseeing.<br />
<br />
City Palace : The palace represents an ideal combination of Rajasthani and Mughal architecture. Within the premises of the Palace, you will find Shri Govind Dev Temple, the Chandra Mahal and the City Palace Museum.<br />
<br />
Jantar Mantar : Jai Sing II built the largest observatory named Jantar Mantar, which is also considered as one of the best preserved observatories in India. This observatory is still in use though it has huge astronomical instruments.<br />
<br />
Hawa Mahal : Hawa Mahal or the "Palace of Winds" is one of the major landmarks in Jaipur. The five-storied structure is made of sandstone and has pink plaster. This Palace was once a grandstand for the women of the royal family.<br />
<br />
Explore the city by your own or relax in the comfort of the hotel or go for shopping in the local markets at noon.<br />
<br />
Overnight stay will be scheduled in Jaipur.</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> Jaipur - Delhi By surface ( 337 kms in Approx 6 hours )
								</p>
								<p class="aj">Have breakfast at hotel.<br />
<br />
After breakfast, enjoy shopping in the local markets and later drive to Delhi.<br />
<br />
Reach and check-in to hotel.<br />
<br />
A comfortable overnight stay will be in Delhi.</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> Delhi - Varanasi
								</p>
								<p class="aj">Have breakfast at the hotel.<br />
<br />
Proceed to the airport to board the flight to Varanasi.<br />
<br />
Reach and check in to hotel.<br />
Later in the evening, proceed to the ghats of Ganges to witness the grand evening AARTI.<br />
<br />
Return to the hotel and have a comfortable overnight stay at Varanasi.<br />
<br />
<br />
Enjoy your overnight stay at Jodhpur.</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> Varanasi
								</p>
								<p class="aj">Have breakfast at the hotel.<br />
<br />
Wake-up early morning and drive to Dashashwamedh Ghat for guided boat tour.<br />
<br />
On the way to your hotel, pay a visit to the Kashi Vishwanath Temple.<br />
<br />
Enjoy breakfast at hotel and spend some relaxed moments.<br />
<br />
Later, enjoy a guided day tour of Varanasi that will include visit to Bharat Mata Temple, Durga Temple (also known as Monkey Temple) and Tulsi Manas Temple. Continue the city tour by visiting the biggest residential university of Asia - BHU.<br />
<br />
In the afternoon, you will go for an excursion at Sarnath, 5 miles away from Varanasi. Sarnath is one of the world’s holiest Buddhist sites. Buddha preached his first Sermon at Sarnath, in 590 BC.<br />
<br />
In the evening, explore local markets and roam around the city.<br />
<br />
Have a comfortable overnight stay at Varanasi</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> Varanasi - Delhi
								</p>
								<p class="aj">Have breakfast at the hotel. <br />
<br />
Proceed to the airport to board the flight to Delhi.<br />
<br />
Reach and check in to hotel and explore local markets in the evening.<br />
<br />
Have a comfortable overnight stay at Delhi.</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> Delhi - Kathmandu
								</p>
								<p class="aj">Have your breakfast at the hotel.<br />
<br />
Proceed to the airport to board the flight to Kathmandu.<br />
<br />
Upon arrival, our representative will welcome you and transfer to hotel and relax.<br />
<br />
Afternoon, start for Kathmandu city sightseeing covering Hanuman Dhoka (shrot-style - protected as a UNESCO World Heritage Site, epitomizes the religious and cultural life of people) and Swayambhunath (Samhengu - one of the most glorious Buddhist sights in Nepal).<br />
<br />
Return to the hotel and overnight stay at Kathmandu.</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> Kathmandu
									</p>
									<p class="aj">Enjoy leisurely breakfast.<br />
<br />
After breakfast, visit Pashupatinath Temple, Boudhnath Stupa and Patan City.<br />
<br />
Visit to Patan city includes Durbar Square, Patan Museum, Krishna Mandir and Tibetan Refugee Camp.<br />
<br />
Return to hotel and relax at hotel.<br />
<br />
Overnight stay at Kathmandu.</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> Kathmandu
									</p>
									<p class="aj">Have breakfast at the hotel.<br />
<br />
After breakfast proceed for excursion of Nagarkot and enroute visit Bhaktapur.<br />
<br />
Nagarkot; located 32 kilometers east of Kathmandu and is renowned for its spectacular sunrise view of the Himalaya when the weather is clear. It is also famous as one of the best spots to view Mount Everest as well as other snow-topped peaks of the Himalayan range of eastern Nepal.<br />
<br />
Return to Kathmandu in the evening and relax at hotel.<br />
<br />
Overnight stay at Kathmandu.</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> Kathmandu - Delhi
									</p>
									<p class="aj">After breakfast, relax and enjoy your stay in hotel.<br />
<br />
As per flight timing, proceed to the airport to board the flight to Delhi. Upon arrival, we will receive you at the airport and transfer to the hotel.<br />
<br />
Spend the day at leisure.</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 14:</b> Delhi - Departure
									</p>
									<p class="aj">Have breakfast at the hotel.<br />
We will drop you to airport to board your flight for onward journey ahead with sweet memories of the tour.</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>
																		<li>Sightseeing</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.pptt.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Group Tours / 15 Days - India Nepal 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="94335"/>
						</form>
						</div>
						
						";i:1;s:81:"Book Group Tours / 15 Days - India Nepal Tour - 13 Nights / 14 Days Tour Packages";i:2;s:191:"book group tours / 15 days - india nepal tour - 13 nights / 14 days tour packages, heritage tour packages, new delhi, jaipur, agra, varanasi, kathmandu, nagarkot, fatehpur sikri tour packages";i:3;s:236:"Pretty Planet Tour & Travels offers Group Tours / 15 Days - India Nepal Tour - 13 Nights / 14 Days tour package, budget Heritage tour packages for New Delhi, Jaipur, Agra, Varanasi, Kathmandu, Nagarkot, Fatehpur Sikri at exciting price.";i:4;s:482:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Jaipur, Agra, Varanasi, Kathmandu, Nagarkot, Fatehpur Sikri"        
		                 },
		      "description": "",
		      "name": "Group Tours / 15 Days - India Nepal Tour",
		      "telephone": "+91-9906543070"
		    }
		    </script>
			";i:5;N;}