a:6:{i:0;s:13532:"				<div class="h1"><h1>Auli Snow Skiing Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.rapidactionexpedition.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.rapidactionexpedition.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Auli Snow Skiing 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">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Haridwar, Chamoli</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.rapidactionexpedition.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Auli Snow Skiing 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="101012"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" id="detailslider1">
															<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_15/446641/169650.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/446641/169650.jpg"  width="150" height="150"    alt="Auli Snow Skiing Tour" title="Auli Snow Skiing Tour" /></a></p></div></li>
																		<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_15/446641/169651.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/446641/169651.jpg"  width="150" height="150"    alt="Auli Snow Skiing Tour" title="Auli Snow Skiing Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					The skiing destination: Auli<br />
<br />
Auli, in the Garhwal Himalayas, is a favourite skiing destination for many not just because of its beautiful glittering slopes but for the nice, clean environment as well. Located around 250 kms away from Rishikesh in Uttarakhand, Auli is a must visit destination if skiing is your passion. The slopes are located at an altitude of almost 2500 to 3000 metres, offering exciting skiing opportunities to both beginners as well as professional skiers<br />
The potential of snow dressed slopes of Auli, once the training grounds for the Paramilitary forces was adjudged by the French and Austrian experts who compared it with the best skiing grounds of the world, and rated it as one of the best. The sheer height and spread of the snow clad mountains, with the added advantage of powdered snow are tempting enough to magnetize the adventurous spirits of the avid skier, providing all the thrill and excitement attached to the game. From January to April, the Auli slopes are usually covered with a thick carpet of snow, about 3 metres deep. The stretch of 3-kms with a drop in elevation of 500m is considered to be a very good skiing ground by international standard.<br />
The region provides immense opportunities for adventure sports like skiing and thrilling water sports which make Auli an ideal venue for adventure seekers. It is a ski touring and cultural paradise, and whatever the weather, you can always get out skiing and riding. Being on this tour lets you enjoy skiing on the slopes of Auli which provide enough thrills to professional skier and novice as well.<br />
The region provides immense opportunities for adventure sports like skiing and thrilling water sports which make Auli an ideal venue for adventure seekers. It is a ski touring and cultural paradise, and whatever the weather, you can always get out skiing and riding. Being on this tour lets you enjoy skiing on the slopes of Auli which provide enough thrills to professional skier and novice as well.<br />
It is connected to Joshimath by a 3.5 km long cable car provides an excellent panoramic view of the mountain peaks like Nanda Devi, Kamet and Drona<br />
The 6-day Skiing Programme<br />
<br />
Slip your feet into heavy skiing boots, clamp them on to the skis and let gravity do the rest. Travel in cruise control down the meandering snow slopes leaving behind you a blazing trail white powder. How does it feel?<br />
The 6-day Skiing course is designed to let you experience the thrills of this sport in a safe environment. We have experienced instructors on board and world class skiing equipment to ensure that you have an amazing learning experience.<br />
During the program you will learn the basics of skiing and get to practise the skills you pick up on slopes of varying gradients. Keep in mind that as a beginner you will fall down a lot while practicing, but don't lose hope. Given proper training and instruction on this sport it is not that difficult to learn.<br />
Our skiing team would ensure that each time you come down, both your confidence and experience increases exponentially. Our team of qualified skiing instructors will ensure that you learn skiing and get hooked on to this marvellous sport.Ski Lift charges<br />
Hire charges for winter wear / clothing / extra equipment (Approx Rs 700 per day for jacket, trouser, ski goggles and gloves Please note that this is only indicative hire charges)<br />
Meals other than breakfast lunch and dinner as indicated in the itinerary<br />
Mineral water and other beverages<br />
Any kind of personal expenses<br />
Travel or any kind of insurance<br />
Tips<br />
Anything which is not mentioned above<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 Auli
								</p>
								<p class="aj">You will be picked up from Haridwar and after 280 kms drive through the scenic Garhwal Himalayas, you will reach your skiing destination Auli in 7-8 hours. You can relax at the clean and comfortable guest house.</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> Auli (skiing)
								</p>
								<p class="aj">After an early breakfast, you will be introduced to our experienced skiing instructors. They will ensure that you learn the basics of skiing during the course. You will slip, slide, fall and bang but have a lot of fun. You will learn ‘walking’ all over again, as doing it on snow with skis is a totally different experience. You will also pick up some key sliding techniques over the beautiful snow clad earth. At the end of an eventful session, the most important thing you will understand is learning from your falls.</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> Learn to stand
								</p>
								<p class="aj">Today is same as the previous day, you’ll just fall less, we guess. After a round of instructions, you begin to balance on the skies. You will now be able to stand on the skis and learn to apply breaks on your own. The first few rounds will all be about crash landing at the end of the slope. Mind you, these sessions will also be marked by many fall and recovery incidents.</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> Skiing lessons – runs and turns
								</p>
								<p class="aj">It’s the day to move ahead. You learn how to move forward on a gentle slope. You will perfect your parallel turns and snow plough turns. The snowplough turn is a braking and turning skiing technique, usually taught to beginners. The front tips of the skis are brought together and the tails pushed wide apart, with the knees rolled inwards slightly. By applying pressure against the snow with the edges of the skis, speed is reduced and the skier can stop completely.</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> Skiing lessons at advance slopes
								</p>
								<p class="aj">Here’s the final day of skiing and your chance to show-off your mastery with the skis. Your instructor will take you to an advance slope. This slope is much longer than the beginner slope, and you will definitely gain a lot of speed while sliding on it. Your instructor will be with you for the entire duration to help you perfect your ski runs. Once perfected, you’ll be honoured with a certificate of appreciation.</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> Return to Haridwar
								</p>
								<p class="aj">After an extensive learning programme, you plan your trip back. We’re sure your freshly carved ski lines will be a part of your most cherished memories. And you’ll return to experience ice cold winds running through your hair and powdery snow flakes caressing your face, once again.</p>
								</td>
								</tr>
								</table>					
								</div>						<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>
												</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Ski Lift charges</li><li>
Hire charges for winter wear / clothing / extra equipment (Approx Rs 700 per day for jacket, trouser, ski goggles and gloves Please note that this is only indicative hire charges)</li><li>
Meals other than breakfast lunch and dinner as indicated in the itinerary</li><li>
Mineral water and other beverages</li><li>
Any kind of personal expenses</li><li>
Travel or any kind of insurance</li><li>
Tips</li><li>
Anything which is not mentioned above</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.rapidactionexpedition.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Auli Snow Skiing 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="101012"/>
						</form>
						</div>
						
						";i:1;s:60:"Book Auli Snow Skiing Tour - 5 Nights / 6 Days Tour Packages";i:2;s:121:"book auli snow skiing tour - 5 nights / 6 days tour packages, hill station tour packages, haridwar, chamoli tour packages";i:3;s:176:"Book Auli Snow Skiing Tour - 5 Nights / 6 Days tour packages from Rapid Action Expedition - Get attractive 5 Nights / 6 Days Hill Station  tour packages for  Haridwar, Chamoli.";i:4;s:4013:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Haridwar, Chamoli"        
		                 },
		      "description": "The skiing destination: Auli

Auli, in the Garhwal Himalayas, is a favourite skiing destination for many not just because of its beautiful glittering slopes but for the nice, clean environment as well. Located around 250 kms away from Rishikesh in Uttarakhand, Auli is a must visit destination if skiing is your passion. The slopes are located at an altitude of almost 2500 to 3000 metres, offering exciting skiing opportunities to both beginners as well as professional skiers
The potential of snow dressed slopes of Auli, once the training grounds for the Paramilitary forces was adjudged by the French and Austrian experts who compared it with the best skiing grounds of the world, and rated it as one of the best. The sheer height and spread of the snow clad mountains, with the added advantage of powdered snow are tempting enough to magnetize the adventurous spirits of the avid skier, providing all the thrill and excitement attached to the game. From January to April, the Auli slopes are usually covered with a thick carpet of snow, about 3 metres deep. The stretch of 3-kms with a drop in elevation of 500m is considered to be a very good skiing ground by international standard.
The region provides immense opportunities for adventure sports like skiing and thrilling water sports which make Auli an ideal venue for adventure seekers. It is a ski touring and cultural paradise, and whatever the weather, you can always get out skiing and riding. Being on this tour lets you enjoy skiing on the slopes of Auli which provide enough thrills to professional skier and novice as well.
The region provides immense opportunities for adventure sports like skiing and thrilling water sports which make Auli an ideal venue for adventure seekers. It is a ski touring and cultural paradise, and whatever the weather, you can always get out skiing and riding. Being on this tour lets you enjoy skiing on the slopes of Auli which provide enough thrills to professional skier and novice as well.
It is connected to Joshimath by a 3.5 km long cable car provides an excellent panoramic view of the mountain peaks like Nanda Devi, Kamet and Drona
The 6-day Skiing Programme

Slip your feet into heavy skiing boots, clamp them on to the skis and let gravity do the rest. Travel in cruise control down the meandering snow slopes leaving behind you a blazing trail white powder. How does it feel?
The 6-day Skiing course is designed to let you experience the thrills of this sport in a safe environment. We have experienced instructors on board and world class skiing equipment to ensure that you have an amazing learning experience.
During the program you will learn the basics of skiing and get to practise the skills you pick up on slopes of varying gradients. Keep in mind that as a beginner you will fall down a lot while practicing, but don't lose hope. Given proper training and instruction on this sport it is not that difficult to learn.
Our skiing team would ensure that each time you come down, both your confidence and experience increases exponentially. Our team of qualified skiing instructors will ensure that you learn skiing and get hooked on to this marvellous sport.Ski Lift charges
Hire charges for winter wear / clothing / extra equipment (Approx Rs 700 per day for jacket, trouser, ski goggles and gloves Please note that this is only indicative hire charges)
Meals other than breakfast lunch and dinner as indicated in the itinerary
Mineral water and other beverages
Any kind of personal expenses
Travel or any kind of insurance
Tips
Anything which is not mentioned above",
		      "name": "Auli Snow Skiing Tour",
		      "telephone": "+91-9411191687"
		    }
		    </script>
			";i:5;N;}