a:6:{i:0;s:20052:"				<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"><span class="dif">On Request</span></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="52370"/>
						</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/102684.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_14/393874/102684.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> Arrive 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> central 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> Tretyakov Gallery
								</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> Perm
								</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> Perm
								</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> Perm
								</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> Circum-Baikal Railway
								</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> Irkutsk
								</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> Irkutsk
									</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> Ulaan Baatar
									</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> Beijing
									</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">Depart.</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="52370"/>
						</form>
						</div>
						
						";i:1;s:72:"Book The Trans-Siberian Railway Tour - 18 Nights / 19 Days Tour Packages";i:2;s:168:"book the trans-siberian railway tour - 18 nights / 19 days tour packages, heritage tour packages, beijing, ulaanbaatar, moscow, irkutsk, novosibirsk, perm tour packages";i:3;s:221:"Book The Trans-Siberian Railway Tour - 18 Nights / 19 Days tour packages from Sanskruti Vacations - Get attractive 18 Nights / 19 Days Heritage  tour packages for  Beijing, Ulaanbaatar, Moscow, Irkutsk, Novosibirsk, Perm.";i:4;s:459:"
			<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;}