a:6:{i:0;s:29920:"				<div class="h1"><h1>Buddhist Circuit Special Packages 4</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.grandindiatrip.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.grandindiatrip.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Buddhist Circuit Special Packages 4</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">Tour Code </td>
						<td class="p5px pl0px vat">Buddhist Circuit Tou</td>
						</tr>
												<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">Varanasi, Bodhgaya, Nalanda, Patna, Rajgir</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 48700 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.grandindiatrip.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Buddhist Circuit Special Packages 4 - 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="57691"/>
						</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_9/257644/109490.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/257644/109490.jpg"  width="150" height="150"    alt="Buddhist Circuit Special Packages 4" title="Buddhist Circuit Special Packages 4" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Bihar Tourist Destinations<br />
 <br />
Bihar Travel Destinations<br />
 <br />
Bihar Tourist Destinations offers areas of untouched natural beauty such as lakes, waterfalls and hot springs. Bihar’s unique tapestry of religious history is unparalleled.Bodhgaya is a fascinating place to visit and tourists and travelers flock to see this wonderful tourist haven. On a tour to Bihar, soak up the Buddhist vibes under the sacred Bodhi tree.Rajgir and Sasaram are some of the most interesting places one can find off the usual tourist trail. Enjoy the tranquility of the fascinating ruins at Nalanda University an ancient seat of learning.<br />
<br />
Since the inception of its history Bihar has been cradle of culture and civilization with unparalleled growth in the field of art, culture and religion literature & human rights. It is the land where earliest forms of democracy blossomed in the form of cities governance. With Lord Buddha it witnessed a cultural renaissance as people embraced Buddhism and spread beyond the boundaries of our country. Nalanda was established as a highest seat of learning where students joined from the world all over. The rich culture of Bihar will transport you through 3000 years of history, reliving a rich heritage of romantic legends; to a land affluent in natural beauty, whispering forests, sparkling lakes, majestic forts and palaces, holy rivers, cascading waterfalls, natural hot springs. <br />
<br />
Tourist Destinations in Bihar <br />
<br />
Bodhgaya <br />
Bodhgaya is the place where the Prince Siddharth attained the supreme enlightenment and became 'The Buddha', the enlightened one. This the place where the saga of Buddha began and Buddhism was born here under the Peepal Tree. Bodhgaya has naturally developed into the most sacred spot for Buddhists from all over the world, especially the affluent south East Asia. It is 13 km. from Gaya town. Apart from a Budhist pilgrimage destination, Gaya is also an important Centre of Hindu Pilgrimage where people go to pray for the salvation of their ancestors<br />
<br />
Rajgir <br />
Rajgir is south of Nalanda and sacred to the memory of the founder of both Buddhism and Jainism. Lord Buddha spent many months of retreat during the rainy season here, and used to meditate and preach on Griddhkuta, the 'Hill of the Vultures'. Lord Mahavir spent fourteen years of his life at Rajgir and Nalanda. It was in Rajgriha that Lord Buddha delivered some of his famous sermons and converted king Bimbisara of the Magasha Kingdom and countless others to his creed. Rajgir is located in a verdant valley surrounded by rocky hills. An aerial ropeway provides the link with a hilltop stupa "Peace Pagoda" built by the Japanese. On one of the hills in the cave of Saptparni, was held the first Buddhist Council. The Saptparni cave is also the source of the Rajgir Hot Water Springs that have curative properties and are sacred to the Hindus.<br />
<br />
Nalanda <br />
Nalanda has a very ancient history. Lord Vardhamana Mahavir and Lord Buddha frequently visited it in the 6th century BC. During his sojourns, the Lord Buddha found this place prosperous, swelling, teeming with population and containing mango-groves. It is also supposed to be the birthplace of Sariputra, one of the Chief disciples of the Lord Buddha. Nalanda, where ruins of the great ancient university have been excavated, is situated at a distance of 90 km. south east of Patna by road. It falls on way to Rajgir. It is also linked by rail with Patna, Rajgir and Bakhtiyarpur (on Delhi-Howrah main track). The great stupa flanked by flights of steps and terraces, votive stupas and beautiful sculpture give the present day tourists a glimpse of the past glory that once was Nalanda. Many of the stupas were two or even three times built one over the other on the same spot. A row of monastery sites lies from south to north. By and large all of them are of the same pattern. But most important of them is site no.1, entrance of which lies in the west wall through a large portico of which the roof rested on pillars. <br />
<br />
Patna  <br />
Patna, the capital of the State of Bihar, is an important business centre of eastern India. More significantly, it is a gateway to the Buddhist and Jain pilgrim centres of Vaishali, Rajgir, Nalanda, Bodhgaya and Pawapuri. Beneath the din and bustle of Patna, the capital of Bihar state, has a fascinating past. Some of the places of tourist attraction are Gol Ghar , Museum, Harmandirji, Khuda Baksh Oriental Library, Kumhrar, Martyrs Memorial, Jalan Museum, Pathar Ki Masjid, Agam Kuan, Biological Park, Bihar Institute of Handicrafts and Designs, Birla Mandir, Nawab Shahid-Ka-Maqbara, Pachim Darwaza and Padri-Ki-Haveli.<br />
<br />
Sonpur <br />
Situated on the confluence of the river Gandak and Ganges, Sonepur, shaped like three mighty rivers - the Ganga, Gandak, and Ghagra that demarcate this district, demarcate a triangle. Sonepur is located in the Saran district in the northern part of Bihar. <br />
<br />
Set in panoramic surroundings, Sonepur is a small quiet town situated over Asia's longest bridge, the Mahatma Gandhi Setu, which is a short distance from Patna. It is famed for the unique 3 week long Sonepur fair, rightly called the 'king of fairs' that is only one of its kind in the whole of Asia, that it hosts in the period of October - November.<br />
<br />
Vaishali <br />
Just 55 kms away from capital city Patna, Vaishali is a small village boasts of an impressive historical past. The excavations in the region have brought out several historic structures related to Lord Buddha, Mauryan King Ashoka and Lord Mahavira as well. Lord Buddha used to visit Vaishali frequently, where as the Jain Tirthankar, Lord Mahavira born on the outskirts of Vaishali and lived here till he was 22 years old. According to historic records Vaishali is the place where one of the world's first democratic republics was flourishing in the 6th century B.C. with an elected assembly of representatives. Vaishali was also the centre for trade and industry, while Pataliputra, the capital of the Mauryas and the Guptas, held political activities over the Gangetic plain. Moreover, Vaishali remained an important pilgrimage centre for both Buddhists and Jains during the ancient period. Now Vaishali attracts large number of tourists and historians who foraging for the past.<br />
<br />
Vikramshila  <br />
Vikramsila is a town situated in the state of Bihar, India. It lies at a distance of approximately 40 km from the city of Bhagalpur. One of the popular Buddhist destinations in India, Vikramshila cannot boast of a direct relation with Lord Buddha. It is mainly renowned for being one of the most significant centers of Tantric Buddhism, in the 8th century AD. It also houses the famous Vikramasila University, the main intellectual as well as learning center of Tantric Buddhism.Airfares train fare.<br />
Any monastery entrance fees, Any Joy ride or rafting.<br />
Medical expenses (apart from first aid) and insurance of any kind.<br />
Tips, laundry, liquors, wines, mineral water, telephone charges, camera fee and items of personal nature.<br />
Transportation is not on disposal basis. It is strictly as per the programme, any extra running will be charges extra.<br />
Any other item not mentioned in the cost includes section.05-0430-09<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 (Varanasi)
								</p>
								<p class="aj">Arrival at Varanasi and after the warm greetings by our tour representative, your transfer arrangement will be made to hotel. This is the most important pilgrimage city in India which is significant for both the Hindu as well as Buddhist pilgrims. The people really witness spirituality thriving in this great City. First of all you will enjoy a boat ride on the River Ganges where you can witness the Hindu Rituals on the wide ghats of the river. Later you will also visit Durga temple, Vishwanath temple, Sankat Mochan temple, Tulsi Manas temple and the Bharat Mata temple. Later you can spend some time in shopping in Varanasi. Overnight stay arrangement is made in 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 2:</b> Varanasi
								</p>
								<p class="aj">Today you will spend entire day at Sarnath, which is famous for its Buddhist links. Lord Buddha gave his maiden sermon at the Deer Park in Sarnath. You will see famous Dhamaekha Stupa, Moolgandha Kuti Vihar and famous Sarnath museum having rich collection of antiques from Ancient India. Your overnight stay arrangement is in 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 3:</b> Varanasi - Bodhgaya
								</p>
								<p class="aj">Take early morning visit to lively Ghats of the Ganges to enjoy the religious culture of Varanasi and later proceed to Bodhgaya. Check into the hotel, on arrival at Bodhgaya. Relax and stay overnight at hotel in Bodhgaya.</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> Bodhgaya
								</p>
								<p class="aj">Take morning breakfast and visit the sacred Mahabodhi Temple - where the Buddha attained enlightenment under a Bodhi Tree. Afternoon, enjoy a sightseeing tour of Bodhgaya visiting Niranjana River, Sujata Village and many beautiful monasteries. Also visit Great Buddha Statue, Mahakala (Dungeswari) cave, Vajrasana, Animeshlocan Chaiyata, Bodhi Sarovar, Vishnupada Temple, Archaeological Museum of Bodhgaya, Japanese Buddha Temple, Thai temple and many more. At evening, visit the Mahabodhi Temple for prayer. Your overnight stay arrangement is in Bodhgaya.</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> Bodhgaya - Nalanda - Rajgir
								</p>
								<p class="aj">On fifth day of your Exclusive Buddhist Tour, you will be drive to Rajgir but you will also visit a famous Budhhist site of Nalanda. Here you will visit the first university of India and centre of Buddhist education. This ancient city of Nalanda was the center of intellectual activity from the fifth century B.C. to the twelve century A.D. Also visit Hieun Tsang Memorial Hall, The remnants of Nalanda University, Nav Nalanda Vihar, Kundalpur (important destination for Jains, particularly for the Digambar sect of the Jains). Latter proceed for Rajgir where Lord Mahavira and Lord Buddha preached their sermons. Your overnight stay is arranged at a hotel in Rajgir.</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> Rajgir - Pawapuri - Rajgir
								</p>
								<p class="aj">After the morning breakfast your full day sightseeing tour will be arranged to explore the many spiritual tourist destinations in Rajgir. This place has been related with both the historical person Buddha and Mahavira and is famous because Buddha spent many years meditating here. Rajgir is also admired and recognized as a health and winter resort due to its warm water ponds. It is believed that this warm water pond contains some medicinal properties that help cure many skin diseases. Latter you will also visit other attractions of Rajgir such as Griddhakuta hill, Jail of Bimbisara, Gym of Jarasandha, Venuvana, Karand tank, Maniyar math, Swamabhandar cave, Pippala cave, newly constructed Viswa Shanti Stupa and many more. Also enjoy the ropeway that leads uphill to the Shanti Stupa and Monasteries built by the Japanese Devotees of the Buddha on top of the Ratnagiri hill. During your tour to Rajgir, you will also drive to a close excursion from Rajgir i.e. Pawapuri (38 kilometers away from Rajgir). While Rajgir and Nalanda are foremost Buddhist pilgrim destinations, Pawapuri is equally a holy place for Jains. Lord Mahavira, the twenty fourth tirthankar, attained salvation here and was cremated at Pawapuri. Your overnight stay is arranged at a hotel in Rajgir.</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> Rajgir - Patna
								</p>
								<p class="aj">On the last day of your Exclusive Buddhist Tour, your will be drive to Patna. Check-in to the hotel on arrival. Later enjoy full day sightseeing tour to explore the many tourist destinations of Patna. You will visit places such as Takht Shri Harmandir Saheb, Hanuman Temple near Patna Junction, Kumhrar (the place was the seat of Chandrgupta Maurya, the ruler of Magadh), Patna Museum, Golghar and Patna Planetarium (the largest Planetarium in Asia). Your overnight stay is arranged at a hotel in Patna.</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">Today, our representative will make your airport transfer arrangement (either Kolkata or Delhi) to board your return flight back to your own destination. Enjoy the sweet memory of your wonderful Exclusive Buddhist Tour in India.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
													<div class="headHr">
				            <p class="p7px b pl10px xlarge">Hotel Detail : </p>
				            </div>
															<div class="data lh13em p20px aj mb7px">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px"><p class="fr lh0">
								
																	<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_on.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_on.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_on.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																	
								</p>
								<div class="mb5px">
								<h2 class="dif b xxlarge">Taj Darbar</h2>
								</div>
								<p class="cb"></p>
								<p><b>Address :</b> Bodhgaya, Bihar, India</p>
								<p><b>Facility :</b> </p>
								<div class="mt7px">Hotel TajDarbar is an abode of ideal stay set within the precincts of UNESCO-declared heritage city of Bodhgaya, which is the holiest place for Buddhists. At a distance of 6 kms. from Gaya Airport and 14 kms. from Railway station, the hotel offers sumptous accommodation complimented by a host of other modern facilities to unwind yourself in the opulence and luxury that blend perfectly with the overarching spiritual dimension dispersed across by the seat of enlightenment, Mahabodhi Temple</div>
								</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="showZoomImage2" href="https://ttw.wlimg.com/hotel-package-images/photo-big/dir_9/257644/9193.jpg"><img src="https://ttw.wlimg.com/hotel-package-images/photo-small/dir_9/257644/9193.jpg"  width="150" height="122"    alt="BODHGAYA TAJ DARBAR" title="BODHGAYA TAJ DARBAR" class="bdr"  /></a></p></div></li>
																					</ul>
									</div>
									</td>
																	
								</tr>
								</table>
								</div>
																	<div id="show_more_content" style="display:none;">
																		<div class="data lh13em p20px aj mb7px">
									<table class="w100 formTable bdr0 imgWidth">
									<tr>
									<td class="p10px"><p class="fr lh0">
									
																			<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_on.png" alt=""/>
																				<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_on.png" alt=""/>
																				<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_on.png" alt=""/>
																				<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																				<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																				<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																				<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																			
									</p>
									<div class="mb5px">
									<h2 class="dif b xxlarge">Taj Darbar</h2>
									</div>
									<p class="cb"></p>
									<p><b>Address :</b> Bodhgaya, Bihar, India</p>
									<p><b>Facility :</b> </p>
									<div class="mt7px">Hotel TajDarbar is an abode of ideal stay set within the precincts of UNESCO-declared heritage city of Bodhgaya, which is the holiest place for Buddhists. At a distance of 6 kms. from Gaya Airport and 14 kms. from Railway station, the hotel offers sumptous accommodation complimented by a host of other modern facilities to unwind yourself in the opulence and luxury that blend perfectly with the overarching spiritual dimension dispersed across by the seat of enlightenment, Mahabodhi Temple</div>
									</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="f150x150"><p class="ac vam"><a rel="gall" data-fancybox="showZoomImage3" href="https://ttw.wlimg.com/hotel-package-images/photo-big/dir_9/257644/9193.jpg"><img src="https://ttw.wlimg.com/hotel-package-images/photo-small/dir_9/257644/9193.jpg"  width="150" height="122"    alt="BODHGAYA TAJ DARBAR" title="BODHGAYA TAJ DARBAR" class="bdr"  /></a></p></div></li>
																							</ul>
										</div>
										</td>
																			
									</tr>
									</table>
									</div>
																		<div class="data lh13em p20px aj mb7px">
									<table class="w100 formTable bdr0 imgWidth">
									<tr>
									<td class="p10px"><p class="fr lh0">
									
																			<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_on.png" alt=""/>
																				<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_on.png" alt=""/>
																				<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_on.png" alt=""/>
																				<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_on.png" alt=""/>
																				<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																				<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																				<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																			
									</p>
									<div class="mb5px">
									<h2 class="dif b xxlarge">Grapewine Hotel</h2>
									</div>
									<p class="cb"></p>
									<p><b>Address :</b> Varanasi, Uttar Pradesh, India</p>
									<p><b>Facility :</b> </p>
									<div class="mt7px">Hotel Grapevine is a hotel cum resort property and having good location in outskirt of city. A perfect space for meeting, conference and social function as we have

Underground banquet hall for 350-400 guests in theater style sitting.

Rendevouz

Rendevouz

Meeting cum board room on first floor for 25-30 guests.

Aamantran

Aamantran

Open sky lawn for marriage, exhibition, product launching, seminar, symposium and alumni meet. The lawn can gather 1500 guests at a time.

 Business Center & Board Room
 Foreign Exchange
 Doctor-on-Call 
 CCTV Covering Entire Hotel Premises
 Travel Desk  Spa & Health Club - Coming Soon
 Fire or any other Disaster Compatible
 First Aid 
 Parking Swimming Pool - Coming Soon 
 24 Hrs Room Service
 24 Hrs Power Backup
 Laundry
 
Hotel grapevine is perfect blend of hotel & resort and one-point-site for leisure, business gathering & social function.</div>
									</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="f150x150"><p class="ac vam"><a rel="gall" data-fancybox="showZoomImage4" href="https://ttw.wlimg.com/hotel-package-images/photo-big/dir_9/257644/14048.jpg"><img src="https://ttw.wlimg.com/hotel-package-images/photo-small/dir_9/257644/14048.jpg"  width="150" height="100"    alt="grapewine varanasi" title="grapewine varanasi" class="bdr"  /></a></p></div></li>
																							</ul>
										</div>
										</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>Flights</li>
																		<li>Sightseeing</li>
																		<li>Transport</li>
																		<li>Transfers</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Airfares train fare.</li><li>
Any monastery entrance fees, Any Joy ride or rafting.</li><li>
Medical expenses (apart from first aid) and insurance of any kind.</li><li>
Tips, laundry, liquors, wines, mineral water, telephone charges, camera fee and items of personal nature.</li><li>
Transportation is not on disposal basis. It is strictly as per the programme, any extra running will be charges extra.</li><li>
Any other item not mentioned in the cost includes section.</li></ul><br />
												<p class="large b mb5px dif">Specific Departure Dates :</p>NUMBER OF PAX<br />
<br />
Luxury<br />
<br />
Deluxe<br />
<br />
Standard<br />
<br />
Min 02 pax<br />
<br />
48700<br />
<br />
46600<br />
<br />
42344<br />
<br />
Min 04 pax<br />
<br />
43560<br />
<br />
42200<br />
<br />
36899<br />
<br />
Min 06 Pax<br />
<br />
37100<br />
<br />
36888<br />
<br />
33566<br />
<br />
Extra Bed (above 05 years)<br />
<br />
16999<br />
<br />
15000<br />
<br />
13000<br />
<br />
Hotels used:<br />
<br />
Place<br />
<br />
Luxury<br />
<br />
Deluxe<br />
<br />
Standard<br />
<br />
Patna<br />
<br />
Hotel Chanakya / Hotel Republic / Hotel Patliputra Ashok<br />
<br />
Elenent Guest Line / Royal King Retreat / Hotel Park Plaza / Hotel Windsor<br />
<br />
Heritage Regency / Hotel Chanakya Inn / Hotel Rajasthan<br />
<br />
Bodh Gaya<br />
<br />
Lemon Tree / Hotel Thai International<br />
<br />
Vishal International / shashi International / Tokyo Vihar<br />
<br />
Hotel Embassy / Hotel Mahamaya / Hotel Prince / Jeevak International<br />
<br />
Varanasi<br />
<br />
Palace on Ganges /Hotel Ziraz / Ranada / Le Meridian / Hotel Idel Tower<br />
<br />
New Temple Town / Hotel O.K. International / Pallavi International / Hotel Padmini / Hotel Diamond<br />
<br />
Hotel Pradeep / Hotel River Palace / M.M. Continental / Hotel Surya / Hotel Surabhi / Hotel Vaibhav<br />
<br />
Rajgir<br />
<br />
BRajgir Residency<br />
<br />
Tathgat Vihar<br />
<br />
Ajatshatru Vihar / Gautam Viaha<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.grandindiatrip.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Buddhist Circuit Special Packages 4 - 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="57691"/>
						</form>
						</div>
						
						";i:1;s:74:"Book Buddhist Circuit Special Packages 4 - 7 Nights / 8 Days Tour Packages";i:2;s:170:"book buddhist circuit special packages 4 - 7 nights / 8 days tour packages, religious & pilgrimage tour packages, varanasi, bodhgaya, nalanda, patna, rajgir tour packages";i:3;s:214:"Grand India Tours & Travels offers Buddhist Circuit Special Packages 4 - 7 Nights / 8 Days tour package, budget Religious & Pilgrimage tour packages for Varanasi, Bodhgaya, Nalanda, Patna, Rajgir at exciting price.";i:4;s:7642:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Varanasi, Bodhgaya, Nalanda, Patna, Rajgir"        
		                 },
		      "description": "Bihar Tourist Destinations
 
Bihar Travel Destinations
 
Bihar Tourist Destinations offers areas of untouched natural beauty such as lakes, waterfalls and hot springs. Bihar’s unique tapestry of religious history is unparalleled.Bodhgaya is a fascinating place to visit and tourists and travelers flock to see this wonderful tourist haven. On a tour to Bihar, soak up the Buddhist vibes under the sacred Bodhi tree.Rajgir and Sasaram are some of the most interesting places one can find off the usual tourist trail. Enjoy the tranquility of the fascinating ruins at Nalanda University an ancient seat of learning.

Since the inception of its history Bihar has been cradle of culture and civilization with unparalleled growth in the field of art, culture and religion literature & human rights. It is the land where earliest forms of democracy blossomed in the form of cities governance. With Lord Buddha it witnessed a cultural renaissance as people embraced Buddhism and spread beyond the boundaries of our country. Nalanda was established as a highest seat of learning where students joined from the world all over. The rich culture of Bihar will transport you through 3000 years of history, reliving a rich heritage of romantic legends; to a land affluent in natural beauty, whispering forests, sparkling lakes, majestic forts and palaces, holy rivers, cascading waterfalls, natural hot springs. 

Tourist Destinations in Bihar 

Bodhgaya 
Bodhgaya is the place where the Prince Siddharth attained the supreme enlightenment and became 'The Buddha', the enlightened one. This the place where the saga of Buddha began and Buddhism was born here under the Peepal Tree. Bodhgaya has naturally developed into the most sacred spot for Buddhists from all over the world, especially the affluent south East Asia. It is 13 km. from Gaya town. Apart from a Budhist pilgrimage destination, Gaya is also an important Centre of Hindu Pilgrimage where people go to pray for the salvation of their ancestors

Rajgir 
Rajgir is south of Nalanda and sacred to the memory of the founder of both Buddhism and Jainism. Lord Buddha spent many months of retreat during the rainy season here, and used to meditate and preach on Griddhkuta, the 'Hill of the Vultures'. Lord Mahavir spent fourteen years of his life at Rajgir and Nalanda. It was in Rajgriha that Lord Buddha delivered some of his famous sermons and converted king Bimbisara of the Magasha Kingdom and countless others to his creed. Rajgir is located in a verdant valley surrounded by rocky hills. An aerial ropeway provides the link with a hilltop stupa "Peace Pagoda" built by the Japanese. On one of the hills in the cave of Saptparni, was held the first Buddhist Council. The Saptparni cave is also the source of the Rajgir Hot Water Springs that have curative properties and are sacred to the Hindus.

Nalanda 
Nalanda has a very ancient history. Lord Vardhamana Mahavir and Lord Buddha frequently visited it in the 6th century BC. During his sojourns, the Lord Buddha found this place prosperous, swelling, teeming with population and containing mango-groves. It is also supposed to be the birthplace of Sariputra, one of the Chief disciples of the Lord Buddha. Nalanda, where ruins of the great ancient university have been excavated, is situated at a distance of 90 km. south east of Patna by road. It falls on way to Rajgir. It is also linked by rail with Patna, Rajgir and Bakhtiyarpur (on Delhi-Howrah main track). The great stupa flanked by flights of steps and terraces, votive stupas and beautiful sculpture give the present day tourists a glimpse of the past glory that once was Nalanda. Many of the stupas were two or even three times built one over the other on the same spot. A row of monastery sites lies from south to north. By and large all of them are of the same pattern. But most important of them is site no.1, entrance of which lies in the west wall through a large portico of which the roof rested on pillars. 

Patna  
Patna, the capital of the State of Bihar, is an important business centre of eastern India. More significantly, it is a gateway to the Buddhist and Jain pilgrim centres of Vaishali, Rajgir, Nalanda, Bodhgaya and Pawapuri. Beneath the din and bustle of Patna, the capital of Bihar state, has a fascinating past. Some of the places of tourist attraction are Gol Ghar , Museum, Harmandirji, Khuda Baksh Oriental Library, Kumhrar, Martyrs Memorial, Jalan Museum, Pathar Ki Masjid, Agam Kuan, Biological Park, Bihar Institute of Handicrafts and Designs, Birla Mandir, Nawab Shahid-Ka-Maqbara, Pachim Darwaza and Padri-Ki-Haveli.

Sonpur 
Situated on the confluence of the river Gandak and Ganges, Sonepur, shaped like three mighty rivers - the Ganga, Gandak, and Ghagra that demarcate this district, demarcate a triangle. Sonepur is located in the Saran district in the northern part of Bihar. 

Set in panoramic surroundings, Sonepur is a small quiet town situated over Asia's longest bridge, the Mahatma Gandhi Setu, which is a short distance from Patna. It is famed for the unique 3 week long Sonepur fair, rightly called the 'king of fairs' that is only one of its kind in the whole of Asia, that it hosts in the period of October - November.

Vaishali 
Just 55 kms away from capital city Patna, Vaishali is a small village boasts of an impressive historical past. The excavations in the region have brought out several historic structures related to Lord Buddha, Mauryan King Ashoka and Lord Mahavira as well. Lord Buddha used to visit Vaishali frequently, where as the Jain Tirthankar, Lord Mahavira born on the outskirts of Vaishali and lived here till he was 22 years old. According to historic records Vaishali is the place where one of the world's first democratic republics was flourishing in the 6th century B.C. with an elected assembly of representatives. Vaishali was also the centre for trade and industry, while Pataliputra, the capital of the Mauryas and the Guptas, held political activities over the Gangetic plain. Moreover, Vaishali remained an important pilgrimage centre for both Buddhists and Jains during the ancient period. Now Vaishali attracts large number of tourists and historians who foraging for the past.

Vikramshila  
Vikramsila is a town situated in the state of Bihar, India. It lies at a distance of approximately 40 km from the city of Bhagalpur. One of the popular Buddhist destinations in India, Vikramshila cannot boast of a direct relation with Lord Buddha. It is mainly renowned for being one of the most significant centers of Tantric Buddhism, in the 8th century AD. It also houses the famous Vikramasila University, the main intellectual as well as learning center of Tantric Buddhism.Airfares train fare.
Any monastery entrance fees, Any Joy ride or rafting.
Medical expenses (apart from first aid) and insurance of any kind.
Tips, laundry, liquors, wines, mineral water, telephone charges, camera fee and items of personal nature.
Transportation is not on disposal basis. It is strictly as per the programme, any extra running will be charges extra.
Any other item not mentioned in the cost includes section.05-0430-09",
		      "name": "Buddhist Circuit Special Packages 4",
		      "telephone": "+91-9415285186"
		    }
		    </script>
			";i:5;N;}