a:6:{i:0;s:20796:"				<div class="h1"><h1>The Trans - Siberian Railway Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.sanskrutivacations.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.sanskrutivacations.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>The Trans - Siberian Railway 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">
						18 Nights / 19 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Beijing, Ulaanbaatar, Moscow, Irkutsk, Novosibirsk, Perm</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						USD 3199 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.sanskrutivacations.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="The Trans - Siberian Railway 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="51982"/>
						</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_14/393874/102229.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_14/393874/102229.jpg"  width="150" height="150"    alt="The Trans - Siberian Railway Tour" title="The Trans - Siberian Railway 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> Transfer to Moscow
								</p>
								<p class="aj">Transfer to our centrally located hotel in Moscow. The journey takes approximately 1 hour from Domodedovo Airport yet during peak season this can be longer due to traffic. The closest subway station to our hotel is Arbatskaya on the blue line (the only station where all four lines meet).</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> Moscow
								</p>
								<p class="aj">Today we explore central Moscow on foot and on the marvellously efficient and ornate metro system. We enjoy a guided walk across Red Square, past Lenin’s Mausoleum visiting the infamous leader’s tomb. We then head to the Kremlin, which is still the seat of much political power and contains many of Russia’s greatest treasures. We visit the magnificent Cathedrals of St. Michael the Archangel, the Annunciation and the Assumption, as well as the Tsar Bell and the golden domes of Ivan the Great Bell Tower. Also included is a visit to the famous Armoury, a museum of opulent treasures including the famous Faberge eggs. There should be some free time in the late afternoon for a visit to St Basil's Cathedral or the GUM Department Store.</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> Moscow - Beijing
								</p>
								<p class="aj">This morning we take the metro to the world famous Tretyakov Gallery. The museum houses an impressive collection of over 170,000 pieces from Russian artists spanning a period of over a thousand years. We then take to the water for a short cruise on the Moskva River, allowing us to enjoy the sites of the Russian capital from a different perspective. At lunchtime we board the Tran-Siberian train at Yaroslavsky Station for our epic journey to Beijing. We will arrive at the station with enough time for you to buy drinks and snacks for the journey. But don't worry too much there's plenty more opportunity along the way.</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> Perm
								</p>
								<p class="aj">Today is the first of three on board the train. In the morning we stop in the city of Perm, Europe’s most easterly city. There will be a short time on the platform to pick up snacks and drink. Noodles are a popular option as there is a constant supply of free boiling water from the samovar at the end of each carriage. Time on the train is spent enjoying the scenery, reading, sleeping, playing cards, drinking vodka (sometimes with breakfast) and trying to communicate with others. Unlike many parts of Russia travellers find their fellow passengers warm and friendly often inviting you to their cabin - there is a real sense of sharing an experience while on board.</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> Day Free.
								</p>
								<p class="aj">Day Free.</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> Novosibirsk
								</p>
								<p class="aj">Our second and third full day on board the train. We have now crossed the Ural Mountains and are on the Asian side of this huge country. The landscape on these days doesn't really change so if you haven't started War and Peace or Dr Zhivago now is the time to do so! By the evening of day 5 we have reached Novosibirsk, Russia's third largest city and informal capital of Siberia. We have an hour stop here, but we do not recommend straying too far from the station.</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> Irkutsk - Lake Baikal
								</p>
								<p class="aj">This morning we arrive early into Irkutsk for the start of a much needed four day break from our journey. We travel by bus for about 40 minutes to the pretty historic town of Listvyanka on the shores of Lake Baikal. We’ll have a walking tour, learning about the history of the region and the unique geography or the area around the world’s largest fresh water lake - Baikal. We stay overnight in a family run guesthouse in the town.</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> Pribaikalskiy National Park
								</p>
								<p class="aj">Today we take a leisurely ferry ride up the lake for about 18km to the town of Bolshiye Koty in the Pribaikalskiy National Park. The settlement dates back to the beginning of gold mining in the area which started in 1842. This is a real chance to see what rural Russian life is like. After lunch we transfer by ferry back down the shore of the lake and up the Angara river to Irkutsk, where we over night in a 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 9:</b> Slyudyanka to Port Baikal
								</p>
								<p class="aj">We return to the train station today, but only for a day trip on the Circum-Baikal Railway. The train runs along the northern shore at the southern end lake from the town of Slyudyanka to Port Baikal. Until the middle of the 20th century the Circum-Baikal railway was part of the main line of Trans-Siberian Railway; later on, however, a duplicate section of the railway was built. The train travels at a leisurely pace right along the shore, stopping at the most significant architectural sites and at popular viewpoints, where you can take some great photos. Instead of taking the long journey back to the city we return to Listvyanka, where there is the opportunity to enjoy a traditional Russian Banya for about 2 hours followed by dinner at the guesthouse.</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> Tal'cy and Decembrist Museums
								</p>
								<p class="aj">On arrival back in Irkutsk we enjoy a full day city tour including the Tal'cy and Decembrist Museums. In the early nineteenth century, many Russian artists, officers and nobles were sent into exile for their part in the Decembrist revolt against Tsar Nicholas I. Irkutsk became the major centre of intellectual and social life for these exiles, and much of the city's cultural heritage comes from them; also, many of their wooden houses, adorned with ornate, hand-carved decorations, survive today in stark contrast with the standard Soviet apartment blocks that surround them. All this led to Irkutsk being called the 'Paris of Siberia', although travellers are unlikely to have a difficult time distinguishing the two today. At 5PM we board the Tran-Mongolian Railway (the Tran Siberian train continues to Vladivostok) bound for Ulaan Baatar. Once again we are in similar second class four berth cabins.</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> Day Free.
									</p>
									<p class="aj">Day Free.</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> Ulaan Baatar
									</p>
									<p class="aj">On arrival in Ulaan Baatar we head straight out of the city to a Ger camp for a two night staying in traditional yurts. Urban living is still almost alien to many Mongolians. Here living off the land in a nomadic way, moving from pasture to pasture with the entire family and livestock is a way of life. We will learn how people here survive in this harsh landscape, having a go at horse riding, cooking and mucking in as much as we like! The camp is clean and comfortable, warm in winter and cool in summer. There is a shower block and toilets for those not wanting a totally 'traditional' experience!</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> Ulaan Baatar
									</p>
									<p class="aj">Today is a free day to enjoy the yurt camp and the surrounding countryside. There will be several optional excursions on offer include horse riding and herding. Or you may just choose to take a hike from the camp.</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> Ulaan Baatar 
									</p>
									<p class="aj">We return to Ulaan Baatar today, and enjoy a full day of sightseeing. The Mongolian capital certainly isn't the prettiest city in the world, having grown significantly during the communist period and with an average annual temperature of -1.3 it's also the coldest capital in the world. However Ulaan Baatar is steeped in history and culture and its people are some of the friendliest you'll ever meet. The city was founded in 1639 as a movable Buddhist monastic centre and did so 28 times before settling in its current location in 1778. The biggest and most important attraction is Gandan Lamasery a Tibetan-style monastery, first built in 1809 and full restored in 1990 after being stripped of its treasures by the communist government but now home to over five thousand monks. We over night at a hotel in the city.</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 15:</b> China
									</p>
									<p class="aj">We depart early from Ulaan Baatar at 07:15, settling into our now familiar 4 berth cabins to cross the Gobi Desert bound for China. Late in the evening we reach the boarder. Mongolian trains run on the Russian gauge, while China uses standard gauge. For this reason through carriages must have their bogies changed at the border. Each carriage has to be lifted in turn to have them changed, the whole operation combined with passport and customs control, can take several hours. You will have to disembark from the train, but you will be able to stay and watch the process if you so wish, or there are waiting rooms.</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 16:</b> China
									</p>
									<p class="aj">Two weeks after leaving Moscow we arrive in Beijing at lunchtime. We then transfer to the hotel, and then have some free time to enjoy the Chinese capital.</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 17:</b> Beijing
									</p>
									<p class="aj">After breakfast at our hotel we embark on a full day of sightseeing. Beijing is a huge city of over 20 million people; however most of the main sights are located within close proximity of each other. The three main sights we visit are the Temple of Heaven, Tiananmen Square and Forbidden City. The first is a complex of religious buildings constructed between 1406 and 1420. Tiananmen Square is one of the largest in the world and capable or holding over a million people. For over 500 year the Forbidden City was home to the Ming and Qing Dynasty and contains the largest collection of preserved wooden structures in the world.</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 18:</b> Beijing
									</p>
									<p class="aj">Today we leave the Chinese capital and head into the countryside to the Great Wall, an approximate 2 hour journey to the north of the city. We go to one of the best-preserved parts of the wall at Mutianyu which is an impressive sight, snaking off across mountains and valleys into the distance. This section of Great Wall used to serve as the northern barrier defending the capital and the imperial tombs. The wall here is up to 8.5 metres high and 5 metres wide, and has 22 watchtowers on its 2,250-metre-long stretch. There are some steep steps to navigate and clients who suffer from vertigo may find it difficult, (there is an optional cable car that takes you from the bottom to the wall itself).</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 19:</b> Departure
									</p>
									<p class="aj">Today we leave the Chinese capital and head into the countryside to the Great Wall, an approximate 2 hour journey to the north of the city. We go to one of the best-preserved parts of the wall at Mutianyu which is an impressive sight, snaking off across mountains and valleys into the distance. This section of Great Wall used to serve as the northern barrier defending the capital and the imperial tombs. The wall here is up to 8.5 metres high and 5 metres wide, and has 22 watchtowers on its 2,250-metre-long stretch. There are some steep steps to navigate and clients who suffer from vertigo may find it difficult, (there is an optional cable car that takes you from the bottom to the wall itself).</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>
												</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.sanskrutivacations.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="The Trans - Siberian Railway 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="51982"/>
						</form>
						</div>
						
						";i:1;s:74:"Book The Trans - Siberian Railway Tour - 18 Nights / 19 Days Tour Packages";i:2;s:179:"book the trans - siberian railway tour - 18 nights / 19 days tour packages, forts and palaces tour packages, beijing, ulaanbaatar, moscow, irkutsk, novosibirsk, perm tour packages";i:3;s:232:"Book The Trans - Siberian Railway Tour - 18 Nights / 19 Days tour packages from Sanskruti Vacations - Get attractive 18 Nights / 19 Days Forts and Palaces  tour packages for  Beijing, Ulaanbaatar, Moscow, Irkutsk, Novosibirsk, Perm.";i:4;s:461:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Beijing, Ulaanbaatar, Moscow, Irkutsk, Novosibirsk, Perm"        
		                 },
		      "description": "",
		      "name": "The Trans - Siberian Railway Tour",
		      "telephone": "+91-9769880881"
		    }
		    </script>
			";i:5;N;}