a:6:{i:0;s:17650:"				<div class="h1"><h1>London Paris Zurich Italy Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.parlholidays.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.parlholidays.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>London Paris Zurich Italy 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">
						14 Nights / 15 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">London, Paris, Milan, Venice, Florence, Rome, Zurich</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.parlholidays.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="London Paris Zurich Italy 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="86830"/>
						</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_15/447323/151799.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/447323/151799.jpg"  width="150" height="150"    alt="London Paris Zurich Italy Tour" title="London Paris Zurich Italy 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> London - Arrival
								</p>
								<p class="aj">Upon you arrival at the airport, get welcomed by our representative and get transferred to the hotel. The remaining day is to be spent at leisure. You may take rest in your hotel room or enjoy small walks in close vicinity of the hotel. Dinner and an overnight stay at the 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 2:</b> London
								</p>
								<p class="aj">In the morning, post breakfast, get ready to visit two of London's top attractions, namely London Eye and a Thames River. Get combined tickets as the deal will save money and on the same allow you to enjoy the day exploring the world's greatest city, London.<br />
<br />
London Eye:World’s tallest observation wheel, London Eye, offers the panoramic view of the London City from a height of 442 ft (135 m). The location, being on the shores of River Thames, visitors get mesmerized with the vistas. Since establishment, the attraction has served as an iconic landmark along with Big Ben, Tower Bridge, and the Tower of London. The attraction has also been featured in various commercial films due to its breathtaking view.<br />
<br />
Thames River Sightseeing Cruise: The deck of a boat is perhaps the best way to witness the sights and attractions of London city. Onboard, the guests will experience the comforts and styling according to historic world-famous landmarks of London. The boats feature open upper decks which help in excellent sightseeing experience. There also are comfortable lower saloons. As the cruise departs from Waterloo Pier, the guests enjoy light refreshments and bar service as major attraction of London glide by. On the round tour of 40 minutes, a guide is also provided to help the guests get the best of the knowledge of the attractions.<br />
<br />
Thereafter, return to your hotel for dinner and an overnight stay.</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> London - Paris
								</p>
								<p class="aj">Early morning, have breakfast and get ready and transferred to Paris by Eurail. Upon arrival, get assisted and transferred to the hotel. Remaining hours of the day is free to be spent at leisure. You may rest in hotel or take small walks on the nearby streets. Dinner and an overnight stay at the 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 4:</b> Paris
								</p>
								<p class="aj">Post breakfast, get ready to see the main attractions of Paris. This will be a 5-hour city tour of Paris. The excursion includes city tour by coach, toweringpanoramas from the Eiffel Tower’s 2nd floor, and amazing views of Paris on cruise along the Seine River. There are four timings available, such as 9:00 am, Noon, 2:45 pm or 6:15 pm, to help the guests choose according to their convenience. This is a comprehensive tour package that allows the visitors to know the best of the city in the very first visit. Paris tour by coach includes Place de la Concorde Square, the Arc de Triomphe, the Champs-Elysees, the western districts of Paris, the Palais Bourbon (National Assembly), and the Palais de Chaillot. Return to the hotel for dinner and an overnight stay.</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> Paris - Zurich
								</p>
								<p class="aj">In the morning, post breakfast, get assisted and transferred to Zurich by Eurail. Rest of the day is free to be spent at leisure. You may spend the day taking rest in your hotel or enjoy small walks on the nearby streets. Dinner and an overnight stay in the 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 6:</b> Zurich
								</p>
								<p class="aj">After breakfast in the hotel, get ready to explore the best of Zurich onboard the unique Classic Trolley. The trolley is designed in styles of yesteryears, complemented with modern comforts to meet the satisfaction level of the elite travellers. There are state-of-the-art headsets provided for commentary, which is available in 8 different languages. The tour will be of two hours, which will feature excursion through the beautiful Zurich City and visit the financial and business centre, a section of the Old Town, Bahnhofstrasse, major museums, historical Limmatquai, Fraumunster Church & Chagall windows, residential areas, the University district, recreation areas, lovely hillside villas on the Zurichberg and amazing sights of the Alps from vantage point on the lake of Zurich. Return to your hotel for dinner and an overnight stay.</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> Zurich - Milan
								</p>
								<p class="aj">After breakfast in the hotel, get assisted and transferred to Milan by Eurail. The remaining hours of the day are to be spent at leisure. You may spend the remaining day taking rest in the hotel or enjoy walks in nearby area of the hotel. Dinner and an overnight stay at the 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 8:</b> Milan
								</p>
								<p class="aj">Post breakfast, get ready to explore the best of the Milan via 2 different tour routes. Onboard an open-top double-decker bus, see all the major attractions of the city. The bus has 12 stops in total, thus, guests could choose and hop-on and hop-off throughout the city. The validity of the ticket is for 48 hours from the first use. Milano is economic engine room of the country and also houses stock market and business centres of Italy. The city of Milan is also recognised as the design capital of the world and competitor of Paris as a fashion centre. Return to your hotel for dinner and an overnight stay.</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> Milan - Venice
								</p>
								<p class="aj">In the morning, after breakfast, get assisted and transferred to Venice by Eurail. The remaining day is free to be spent at leisure. Dinner and an overnight stay at the 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 10:</b> Venice
								</p>
								<p class="aj">The day is dedicated to explore the best of the Venice. After breakfast, get ready for half-day excursion to the famous islands of the Venice lagoon namely, Murano, Burano and Torcello. Start with glass-blowing display on Murano, continuing with shopping spree for lace on Burano and finally visiting the first church of Venice on the serene Torcello Island. This tour is probably the best way to introduce the magical charm of the Venetian lagoon. Speed through the Venetian lagoon to Murano on a comfortable motor boat. On the island you can visit shops and factories, along with witness the skilled glass-blowers as they create masterpieces. On your visit to the museum, you can also view the world-famous Murano glass featured there. Dinner and an overnight stay at the hotel.</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> Venice - Florence
									</p>
									<p class="aj">After breakfast at the hotel, get assisted and transferred to Florence by Eurail. As the remaining hours of the day is free to be spent at leisure, you may opt to take rest in the hotel or take small walks down the streets of Florence. Dinner and an overnight stay in the 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 12:</b> Florence
									</p>
									<p class="aj">After breakfast at the hotel, get ready to explore the best of the Florence city through hop-on and hop-off double-decker bus. The stopovers in the tour route feature the Cathedral, San Marco, Santa Croce, Piazzale Michelangelo and more. For the full day of sightseeing, guests can hop-on and off as many times as they want to. Florence is regarded as the ‘jewel city of the Renaissance’ and is bordered by the Appenine mountain range. The museums and art galleries are also popular world-wide and thus, attract tourists from different parts of the globe. David of Michaelangelo, the stunning Duomo & marble facade and the Venus of Botticelli are also some of the major attractions. Apart from rich culture, the city also features elegant boutique, tempting ice cream parlors and tiny craft shops. Dinner and overnight stay at the 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 13:</b> Florence - Rome
									</p>
									<p class="aj">Post breakfast, get assisted and transferred to Rome through Eurail. The rest of the day is free to be spent at leisure. Dinner and an overnight stay at the guests.</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> Rome
									</p>
									<p class="aj">After breakfast at the hotel, explore the more of Rome through a guided walking tour. Visit St Peter's Basilica and the Vatican Museums. On the first visit, the guests get overwhelmed. Allow the guide to help you explore the best and know about various aspects being the history, politics and architecture of the Vatican. The guided walking tour in the morning, afternoon and evening, the guests get to know the best of the smallest country of the world, including magnificent churches and impressive fine art collection. Famous Sistine Chapel and frescoes, started by Michelangelo in 1508, is also one of the major highlight of the tour. Thereafter, return to the hotel for dinner and an overnights stay.</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> Rome - Departure
									</p>
									<p class="aj">In the morning, after breakfast, check-out from the hotel and get assisted and transferred to the Airport. On reaching airport, onboard the flight towards your onward journey.</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>
															<li>Hotel</li>
																		<li>Sightseeing</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.parlholidays.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="London Paris Zurich Italy 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="86830"/>
						</form>
						</div>
						
						";i:1;s:71:"Book London Paris Zurich Italy Tour - 14 Nights / 15 Days Tour Packages";i:2;s:163:"book london paris zurich italy tour - 14 nights / 15 days tour packages, heritage tour packages, london, paris, milan, venice, florence, rome, zurich tour packages";i:3;s:193:"Parl Holidays offers London Paris Zurich Italy Tour - 14 Nights / 15 Days tour package, budget Heritage tour packages for London, Paris, Milan, Venice, Florence, Rome, Zurich at exciting price.";i:4;s:454:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "London, Paris, Milan, Venice, Florence, Rome, Zurich"        
		                 },
		      "description": "",
		      "name": "London Paris Zurich Italy Tour",
		      "telephone": "+91-9250975237"
		    }
		    </script>
			";i:5;N;}