a:6:{i:0;s:10102:"				<div class="h1"><h1>Day Tours Sariska</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.gomyjourney.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.gomyjourney.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Day Tours Sariska</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/17434/125041.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_1/17434/125041.jpg"  width="150" height="150"    alt="Day Tours Sariska" title="Day Tours Sariska" /></a></p></div></li>
															</ul>
						</div>
						</td>
											
					<td class="p10px">
											<p class="mb5px"><b>Tour Code :</b> GMJ-104</p>
												<p class="mb5px"><b>Duration :</b> 
						1 Day 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> New Delhi, Alwar</p>
												<p><b>Price (Starting From) :</b>						
						USD 125 Per Person						</p>
												<br />
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.gomyjourney.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Day Tours Sariska - 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="68714"/>
						</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: Delhi - Sariska - Delhi
									</p>
									<div class="data p10px">Sariska is probably one of the most visited parks in India. Unfortunately though, the main reason for this is not wildlife enthusiasm but only it's excellent proximity to some large towns like Delhi and Jaipur. The park was, as with many other parks, the hunting reserve of the royal family in the area. In this case, it was the Royal family of Alwar Rajasthan . The reserve was declared a wildlife sanctuary in 1958 and came under the "Project Tiger" as a Sariska tiger reserve in 1979. The park covers quite a large area of 800 square kilometers, 480 square kilometers of which form the core area of the national park. It is located among the Aravalli hill ranges in the Alwar district of Rajasthan. Due to the presence of monuments of religious importance located within the park boundaries, the park authorities are compelled to keep the park open throughout the year. The summer months are better for animal viewing but are extremely hot with temperatures going up to as high as 49 degrees centigrade. In the winter months, the temperature touches a low of 4 degrees.<br />
<br />
The Park Is Home To Numerous Carnivores Including Leopard, Wild Dog, Jungle Cat, Civets Hyena, Jackal, and Tiger. These feed on species such as Sambar, Chital, Nilgai, Chausingha, Wild Boar and Langur. Sariska is also well known for its large population of Rhesus Monkeys, which are found around Talvriksh. The avian world is also well represented with Peafowl, Grey Partridge, Bush Quail, Sand Grouse,Tree Pie, Golden backed Woodpecker, crested Serpent Eagle and The Great Indian horned Owl.<br />
<br />
Sariska History<br />
Once an ancient Rajput state, formerly known as Mewat, Alwar was nearest to the imperial Delhi. The people of the state did not accept any external interference's and daringly resisted against foreign invasions. In the 12th and 13th centuries, they formed a group and raided Delhi. But finally Sultan Bulban (1267 A.D. - 1287 A.D.) suppressed them, bringing the area under the Muslims rule. In 1771 A.D. Maharaja Pratap Singh, a Kuchhwaha Rajput belonging to the clan of Jaipur's rulers, won back Alwar and founded a principality of his own.<br />
<br />
Jeep Safari<br />
Jeep safaris in the Sariska Tiger Reserve will cost you around 300 Rs per head and these safaris will comprehensively cover almost all parts of the tiger reserve accessible by these heavy duty vehicles. Jeep safaris in Sariska Tiger Reserve are normally provided twice a day, and you can opt for these safaris in order to catch a glimpse of the wildlife. Safari rides are accompanied by the forest department guards and the vehicles are protected with grills.<br />
<br />
Elephant Ride<br />
You can also opt for an elephant safari while in Sariska. An elephant safari in Sariska will not cover all parts of the Sariska Tiger Reserve, but the ride will be a memorable one for kids as well as wildlife enthusiasts.<br />
<br />
Note: This is a suggested itinerary and we can customize it according to your preference.</div>					
										<p><b>Meals : </b> Lunch</p>					
									</li>
									<br />					
							</ul>						<!--DATA2 EMD--></div>
											
						<div class="ic bdr" id="data4"><!--DATA4 START-->
						<br />
						Sariska is probably one of the most visited parks in India. Unfortunately though, the main reason for this is not wildlife enthusiasm but only it's excellent proximity to some large towns like Delhi and Jaipur. The park was, as with many other parks, the hunting reserve of the royal family in the area. In this case, it was the Royal family of Alwar Rajasthan . The reserve was declared a wildlife sanctuary in 1958 and came under the "Project Tiger" as a Sariska tiger reserve in 1979. The park covers quite a large area of 800 square kilometers, 480 square kilometers of which form the core area of the national park. It is located among the Aravalli hill ranges in the Alwar district of Rajasthan. Due to the presence of monuments of religious importance located within the park boundaries, the park authorities are compelled to keep the park open throughout the year. The summer months are better for animal viewing but are extremely hot with temperatures going up to as high as 49 degrees centigrade. In the winter months, the temperature touches a low of 4 degrees.<br />
<br />
The Park Is Home To Numerous Carnivores Including Leopard, Wild Dog, Jungle Cat, Civets Hyena, Jackal, and Tiger. These feed on species such as Sambar, Chital, Nilgai, Chausingha, Wild Boar and Langur. Sariska is also well known for its large population of Rhesus Monkeys, which are found around Talvriksh. The avian world is also well represented with Peafowl, Grey Partridge, Bush Quail, Sand Grouse,Tree Pie, Golden backed Woodpecker, crested Serpent Eagle and The Great Indian horned Owl.<br />
<br />
Sariska History<br />
Once an ancient Rajput state, formerly known as Mewat, Alwar was nearest to the imperial Delhi. The people of the state did not accept any external interference's and daringly resisted against foreign invasions. In the 12th and 13th centuries, they formed a group and raided Delhi. But finally Sultan Bulban (1267 A.D. - 1287 A.D.) suppressed them, bringing the area under the Muslims rule. In 1771 A.D. Maharaja Pratap Singh, a Kuchhwaha Rajput belonging to the clan of Jaipur's rulers, won back Alwar and founded a principality of his own.<br />
<br />
Jeep Safari<br />
Jeep safaris in the Sariska Tiger Reserve will cost you around 300 Rs per head and these safaris will comprehensively cover almost all parts of the tiger reserve accessible by these heavy duty vehicles. Jeep safaris in Sariska Tiger Reserve are normally provided twice a day, and you can opt for these safaris in order to catch a glimpse of the wildlife. Safari rides are accompanied by the forest department guards and the vehicles are protected with grills.<br />
<br />
Elephant Ride<br />
You can also opt for an elephant safari while in Sariska. An elephant safari in Sariska will not cover all parts of the Sariska Tiger Reserve, but the ride will be a memorable one for kids as well as wildlife enthusiasts.<br />
<br />
Note: This is a suggested itinerary and we can customize it according to your preference.Monument fees06-0931-03							<p class="b mb5px dif">Inclusions :</p>
							<ul>
														</ul>
							<br />
														<p class="b mb5px dif">Exclusions :</p> <ul><li>Monument fees</li></ul><br />
														<p class="b mb5px dif">Specific Departure Dates :</p>Daily<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:45:"Book Day Tours Sariska - 1 Days Tour Packages";i:2;s:112:"book day tours sariska - 1 days tour packages, wildlife and nature tour packages, new delhi, alwar tour packages";i:3;s:154:"Book Day Tours Sariska - 1 Days tour packages from Go My Journey Pvt Ltd - Get attractive 1 Days Wildlife and Nature  tour packages for  New Delhi, Alwar.";i:4;s:3367:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Alwar"        
		                 },
		      "description": "Sariska is probably one of the most visited parks in India. Unfortunately though, the main reason for this is not wildlife enthusiasm but only it's excellent proximity to some large towns like Delhi and Jaipur. The park was, as with many other parks, the hunting reserve of the royal family in the area. In this case, it was the Royal family of Alwar Rajasthan . The reserve was declared a wildlife sanctuary in 1958 and came under the "Project Tiger" as a Sariska tiger reserve in 1979. The park covers quite a large area of 800 square kilometers, 480 square kilometers of which form the core area of the national park. It is located among the Aravalli hill ranges in the Alwar district of Rajasthan. Due to the presence of monuments of religious importance located within the park boundaries, the park authorities are compelled to keep the park open throughout the year. The summer months are better for animal viewing but are extremely hot with temperatures going up to as high as 49 degrees centigrade. In the winter months, the temperature touches a low of 4 degrees.

The Park Is Home To Numerous Carnivores Including Leopard, Wild Dog, Jungle Cat, Civets Hyena, Jackal, and Tiger. These feed on species such as Sambar, Chital, Nilgai, Chausingha, Wild Boar and Langur. Sariska is also well known for its large population of Rhesus Monkeys, which are found around Talvriksh. The avian world is also well represented with Peafowl, Grey Partridge, Bush Quail, Sand Grouse,Tree Pie, Golden backed Woodpecker, crested Serpent Eagle and The Great Indian horned Owl.

Sariska History
Once an ancient Rajput state, formerly known as Mewat, Alwar was nearest to the imperial Delhi. The people of the state did not accept any external interference's and daringly resisted against foreign invasions. In the 12th and 13th centuries, they formed a group and raided Delhi. But finally Sultan Bulban (1267 A.D. - 1287 A.D.) suppressed them, bringing the area under the Muslims rule. In 1771 A.D. Maharaja Pratap Singh, a Kuchhwaha Rajput belonging to the clan of Jaipur's rulers, won back Alwar and founded a principality of his own.

Jeep Safari
Jeep safaris in the Sariska Tiger Reserve will cost you around 300 Rs per head and these safaris will comprehensively cover almost all parts of the tiger reserve accessible by these heavy duty vehicles. Jeep safaris in Sariska Tiger Reserve are normally provided twice a day, and you can opt for these safaris in order to catch a glimpse of the wildlife. Safari rides are accompanied by the forest department guards and the vehicles are protected with grills.

Elephant Ride
You can also opt for an elephant safari while in Sariska. An elephant safari in Sariska will not cover all parts of the Sariska Tiger Reserve, but the ride will be a memorable one for kids as well as wildlife enthusiasts.

Note: This is a suggested itinerary and we can customize it according to your preference.Monument fees06-0931-03",
		      "name": "Day Tours Sariska",
		      "telephone": "+91-9711877344"
		    }
		    </script>
			";i:5;N;}