a:6:{i:0;s:30873:"				<div class="h1"><h1>Best of Europe Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.justravels.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.justravels.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Best of Europe 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, Venice, Amsterdam, Innsbruck, Pattaya</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.justravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Best of Europe 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="111788"/>
						</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/436011/183653.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/436011/183653.jpg"  width="150" height="150"    alt="Best of Europe Tour" title="Best of Europe Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Total Tour Cost INR 2, 40,000/- Per Person on Double Sharing Basis<br />
Above Price Including Airfare, Visa, Travel Insurance, All Meals & Sightseeing as per the Itinerary, Driver Tips worth 45 Euros also Included. Services of a professional & caring tour Manager  <br />
<br />
LONDON:-<br />
Guided City Tour of London.<br />
Visit to London Eye.<br />
Visit to Madame Tussauds.<br />
Le Shuttle / Ferry from Folkstone / Dover to Calais.<br />
<br />
PARIS:-<br />
Visit to Eiffel Tower. (3rd floor)<br />
Paris River Seine Cruise.<br />
Guided city Tour of Paris.<br />
Entrance to Euro Disney. (Disney Studio or Disney Park)<br />
Guided tour of Versailles Palace.<br />
Entrance to Louvre Museum.<br />
<br />
BRUSSELS:-<br />
Orientation Tour including the Grand Place, Mannekin Pis.<br />
Photostop at Atomium.<br />
<br />
THE NETHERLANDS:-<br />
Amsterdam Canal Cruise.<br />
Visit to Kuekenhof Gardens (Till 12th May)<br />
Visit to Madurodam Model Village. (From 13th May)<br />
<br />
GERMANY:-<br />
COLOGNE: Visit the Gothic Cathedral – “Dom”<br />
BLACK FOREST: Visit Drubba Cuckoo Clock outlet; Enjoy the scenic drive.<br />
<br />
SWITZERLAND:-<br />
Cable car ride to Mount Titlis.<br />
Orientation tour of Lucerne.<br />
Train Journey to Jungfraujoch - Top of Europe excursion.<br />
Orientation tour of Interlaken.<br />
Visit to Rhine Falls at Schaffhausen.<br />
<br />
AUSTRIA:-<br />
INNSBRUCK: Orientation Tour including the Hofburg and Golden Dachl.<br />
WATTENS: Visit to Swarovski Crystal Worlds and Museum.<br />
<br />
ITALY:-<br />
VENICE: Private Boat ride to St. Mark’s Square, visit St. Mark’s Square - see the Bridge of Sighs, Doges Palace and the Basilica di San Marco, Gondola Ride, demonstration at Murano Glass Showroom.<br />
PISA: Visit Field of Miracles – see Cathedral, Baptistry and Leaning Tower.<br />
FLORENCE: View of the city from Piazzale Michelangelo; Guided Walking city tour.<br />
ROME: Guided City Tour including a visit to the Vatican Museums and St. Peter’s Basilica.<br />
<br />
MEALS<br />
Daily Continental Buffet Breakfast.<br />
13 Indian Jain/Vegetarian/Lunches.<br />
14 Indian Jain/Vegetarian/Non-Vegetarian Dinners.<br />
Choice of Local Meals in 05 different places.<br />
<br />
ACCOMMODATION:<br />
02 nights at Hotel Crown Plaza / Heston Hyde / Radisson Blu or similar in London.<br />
03 nights at Hotel Novotel / Residhome / IBIS Styles or similar in Paris.<br />
01 nights at Hotel NH / Carlton De Burg or similar in Belgium / Netherland or similar.<br />
01 night at Hotel Micheal / NH / Achat Plaza or similar in Heppenheim / Mannheim.<br />
03 night at Hotel Seedamm Plaza / Thessoni / Amaris / Apart hotel by Hilton or similar in Central Switzerland.<br />
01 night at Hotel Alp / Bon Alpina / Kronen or similar in Seefeld / Innsbruck.<br />
01 night at Hotel Europa / Unaway / NH or similar in Occhiobello / Rovigo or similar.<br />
01 night at Hotel A Point / Meditur / Da Vinci or similar in Tuscany or similar.<br />
01 night at Hotel Best Western / Antonella / Melia or similar in Rome.<br />
<br />
WHAT YOUR TOUR PRICE INCLUDES<br />
AIRFARE<br />
Return Economy Class group airfare as per itinerary (Presently calculated as prevailing on 15th November 2017).<br />
<br />
TICKET TAXES<br />
Cost of your ticket taxes (Presently calculated as prevailing on 15th November 2017).<br />
<br />
MEDICAL INSURANCE<br />
Normal insurance charges for the duration of the tour are included in the tour price. However, any passenger above the age of 60 years and those passengers who wish to extend their stay will be required to pay additional charges.<br />
<br />
VISA REQUIREMENTS<br />
Multiple entry UK visa.<br />
Multiple entry Schengen visa. The costs of UK and Schengen visas are included in your tour price.<br />
This cost includes documentation, processing and consulate fees.<br />
The Schengen Visa on your tour is valid for travel to Italy, Austria, Switzerland, Germany, Belgium, Netherlands, and France (In case of any change in the European Community visa policy, additional charges will be applicable.)<br />
<br />
DRIVER TIPS INCLUDED<br />
Tips to coach drivers for the duration of the tour is included.The cost of the Passport, POE charges, etc.<br />
Any expenses of personal nature such as porterage, laundry, wines, mineral/bottled water, food & drink not in the regular menus provided by us, mini bar and telephone calls.<br />
Any extra meals not included in the itinerary, meals are pre-set and a choice of menu is not available.<br />
Cost of excursions, city sightseeing, entrance fees and local guides availed of by the passengers, other than that mentioned in the ‘What your tour price includes’.<br />
Government Service Taxes and other taxes as applicable.<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> Fly into London, the financial, political and cultural heart of Britain. Ride the London Eye.
								</p>
								<p class="aj">Welcome to one of the world's most visited cities - London. Meet your friendly Travel Professional outside the baggage hall and proceed to our hotel. Check in and relax for a short while. Later we will proceed to London Eye, which stands at 135 meters tall overlooking the river Thames. Get splendid views of the city while you take a 30 minute ride and get a different glimpse of London.<br />
<br />
Overnight in London.</p>					
									<p><b>Meals : </b> Dinner</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> Guided city tour of London with Changing of Guards. Visit to the famous Madame Tussauds wax museum.
								</p>
								<p class="aj">This morning we proceed on a city tour with our expert local guide. We will visit important landmarks like Hyde Park, Big Ben, Houses of Parliament, Westminster Abbey, Trafalgar Square, Piccadilly Circus, Buckingham Palace, Tower Bridge, River Thames, and many more. We will witness the Changing of the Guards at Buckingham Palace (subject to operational). Next we proceed to Madame Tussauds wax museum. Be enthralled by world’s largest wax collection and don’t forget to take a photograph with one of the famous personalities present.<br />
<br />
Overnight in London.</p>					
									<p><b>Meals : </b> Breakfast, Lunch, Dinner</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> Onwards to Paris, the City of Lights and Glamour
								</p>
								<p class="aj">Check out of your hotel. We travel by Le shuttle / Ferry to Paris- The fashionable and elegant city known for its haute couture, renowned museums, breath-taking beautiful monuments and sensational cabarets. On arrival in Paris, proceed on a fascinating city tour. Marvel at the finest Parisian sights – the Champs Elysees, Alexander Bridge, Invalides, Arc de Triomphe, Concorde Square, Opera House, and several others.<br />
<br />
Overnight in Paris.</p>					
									<p><b>Meals : </b> Breakfast, Lunch, Dinner</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> An exciting and adventurous Trip to Euro Disney, (choice of Disney Park or Disney Studios). Enjoy th
								</p>
								<p class="aj">Today, experience a n exciting day at the amusement park. You may choose between Disney Park and enjoy the several rides OR visit the Disney Studios and be astounded by the outstanding stunt shows, watch a film being made and see real-life sets used for creating blockbuster movies. Highlight of the evening will be a romantic cruise down the River Seine.<br />
<br />
Overnight in Paris.</p>					
									<p><b>Meals : </b> Breakfast, Lunch, Dinner</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> Visit to the World Renowned Louvre Museum, the Eiffel Tower 3rd Level, and a visit to the Versailles
								</p>
								<p class="aj">After breakfast, we visit the world renowned Louvre Museum known for its collection of Artefacts and Paintings and see the enigmatic smile of ‘Mona Lisa’, Leonardo da Vinci’s masterpiece. We proceed to the Versailles Palace of Louis XIV. The opulent Palace served as the royal residence for France's kings and queens for more than a century. Our guided tour will include the Chateau, the Grande Apartments, the Chapel, the Hall of Mirrors and many more. We return to Paris, to the iconic Eiffel Tower, get a stunning view of the city from the 3rd level.<br />
<br />
Overnight in Paris.</p>					
									<p><b>Meals : </b> Breakfast, Lunch, Dinner</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> Onto Brussels for an orientation tour. Visit Keukenhof Gardens (till 12th May). Visit the miniature
								</p>
								<p class="aj">Today after breakfast we proceed to Brussels, Headquarter of theEuropean Union and capital of Belgium. On arrival in Brussels we visit one of Europe's most beautiful squares, the Grand Place, the medieval Town Hall and the fabled Mannekin Pis statue. Drive past St. Michael’s Church and stop for a photograph at the Atomium. Relax in your coach as<br />
<br />
we proceed to the city of Lisse to tour the legendary Kuekenhof Gardens (till the 12th May), tulips, daffodils and hyacinths create dazzling patches of colour. The park is said to be the greatest flower show on earth (from 13th May) proceed to Den Hague to visit Madurodam, a miniature park to see a range of perfect 1:25 scale model replicas of famous Dutch monuments and projects.<br />
<br />
Overnight in Netherland.</p>					
									<p><b>Meals : </b> Breakfast, Lunch, Dinner</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> Amsterdam with Canal Cruise. Proceed to Cologne - the largest Cologne Cathedral.
								</p>
								<p class="aj">Check out and proceed on a cruise of the city of Amsterdam in your glass-topped boat, drifting through the canals. Thrive on the city’s vibrant past with its 1,000 bridges and quaint old houses. Next we proceed to Cologne, famous for its Eau de Cologne. Here you will visit the imposing Cologne Cathedral, a Gothic masterpiece with its 515 feet twin towers, a World Heritage site and the largest cathedral in NorthernEurope.<br />
<br />
Overnight in Germany.</p>					
									<p><b>Meals : </b> Breakfast, Lunch, Dinner</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> Travel to the Heart of the Black Forest. Be awestruck atEurope’s most stunning site - The Rhine Fa
								</p>
								<p class="aj">After check out, relax in your coach as we drive to the heart of the Black Forest, known for its picturesque woods, consisting of pines and firs. You will be enthralled at the scenic beauty of the quaint villages in the heart of Black Forest region. Witness a demonstration of how cuckoo clocks are made. Sit back and enjoy the scenic beauty as we drive towards Switzerland. We halt at Schaffhausen, where you see the magnificent Rhine Falls - Europe’s biggest and most spectacular falls.<br />
<br />
Overnight in Switzerland.</p>					
									<p><b>Meals : </b> Breakfast, Lunch, Dinner</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> Highlight of the tour, a magical Alpine excursion of amazing Jungfraujoch –and a visit to scenic I
								</p>
								<p class="aj">Today’s magical Alpine excursion is to Jungfraujoch -the Top of Europe. Board a cogwheel train to reach the highest railway station in Europe at 11,333 feet, to an Alpine wonderland of ice and snow. Visit the Ice Palace and experience a breath-taking panoramic view from the Sphinx Observation Terrace and view the longest glacier in the Alps - the Altesch Glacier. Later we drive to Interlaken, a unique and fascinating city situated between two lakes of Thun and Brienz.<br />
<br />
Overnight in Switzerland.</p>					
									<p><b>Meals : </b> Breakfast, Lunch, Dinner</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> Visit Mt. Titlis- Stunning scenery and an exciting ride up the snow-clad Swiss Alps in Rotair – th
								</p>
								<p class="aj">Today, we get a view of magnificent mountain peaks and glacier crevasses on your trip to Mt. Titlis in the world’s first revolving cable car, Rotair. Mt. Titlis is central Switzerland’s loftiest peak, covered with snow and ice and a visual treat. At 10,000 feet get an unrestricted 360 degree view of the Alpine landscape. Experience the TITLIS Cliff Walk – the highest suspension bridge in Europe. Later we drive on to one of the most beautiful cities of Switzerland - Lucerne. Visit the Lion Monument and the Kapell Brucke (wooden bridge). You have some free time to shop for famous Swiss watches, knives,<br />
<br />
souvenirs and chocolates.<br />
<br />
Overnight in Switzerland.</p>					
									<p><b>Meals : </b> Breakfast, Lunch, Dinner</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> Drive to Innsbruck and Visit Swarovski Crystal Museum – the dazzling world of crystals
									</p>
									<p class="aj">This morning, we drive to Innsbruck. On an orientation tour of this beautiful city, see the Golden Roof with its gold plated copper tiles, a characteristic landmark of Innsbruck, walk down cobblestone pathways of Maria Theresien Strasse and re live medieval European culture. The splendid Alps in the background provide a perfect picture-postcard setting. Later we will proceed to Wattens, to visit the Swarovski World of Crystals and marvel at the crystalline works of art. A great opportunity to buy a souvenir for your family.<br />
<br />
Overnight in Austria.</p>					
										<p><b>Meals : </b> Breakfast, Lunch, Dinner</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> Romantic Venice – Sprawling squares, beautiful monuments, serpentine canals and mysterious alleywa
									</p>
									<p class="aj">Check out of your hotel and we proceed towards Italy. Arrive at the pier in Venice, where we board a private boat. Enjoy your Indian lunch on board while you sail over the Guidecca Canal, past the Adriatic Sea to arrive at St. Mark’s Square – the main square of Venice, where the only traffic is that of humans and pigeons! St. Mark's Basilica, is one of the best examples of Byzantine architecture anywhere in the world. The famed Bell Tower and the Clock Tower, display not only the time of day, but also the dominant sign of the Zodiac and the current phase of the moon. Continueon to the Bridge of Sighs, made of white limestone, that passes over the Rio di Palazzo, connecting the old prisons with interrogations rooms at the Doge's Palace. Treasure a romantic gondola ride, in a flat bottomed Venetian rowing boat, amidst the stunning backdrop of baroque buildings. This truly is one of the best ways to enjoy this enchanting city. Also witness a Murano Glass demonstration and marvel at the intricate and colourful glass artefacts, hand-crafted by master craftsmen. We return to the pier and later proceed for dinner.<br />
<br />
Overnight in Padova.</p>					
										<p><b>Meals : </b> Breakfast, Lunch, Dinner</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> Guided city tour of Florence. A visit to the remarkable and famous Leaning Tower of Pisa.
									</p>
									<p class="aj">After a morning check out we drive to Florence – cradle of the Renaissance. Along with your English speaking local guide, take in the culture with a tour of the historic city. Visit the Duomo, the city’s most iconic landmark, the Campanile, the Baptistery with its Gates to Paradise, Piazza Della Signoria – an open air museum crammed with Renaissance sculptures, edged by historic cafes and presided over by the magnificent Palazzo Vecchio, the famed Ponte Vecchio bridge across the river Arno and Santa Croce where some of the famous Italian personalities like Michelangelo, Galileo, Dante Alighieri,<br />
<br />
father of the Italian language, are buried. Next, drive to Piazzale Michelangelo to get a spectacular city panorama, later we proceed onwards to Pisa –the Square of Miracles and see the remarkable Leaning Tower of Pisa. Don’t forget to take a photograph of yourself with backdrop of Leaning Tower and the square.<br />
<br />
Overnight in Tuscany Region.</p>					
										<p><b>Meals : </b> Breakfast, Lunch, Dinner</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> All roads lead to Rome – the eternal city. Visit the world’s smallest country – the Vatican Ci
									</p>
									<p class="aj">Relax in your coach as we go towards the eternal city of Rome. On arrival we have a guided city tour of Rome with an expert English-speaking local guide. Next the Vatican City – the smallest country in the world (note: shorts or sleeveless vests not allowed). Enter the Vatican Museum, where you see the renowned classical sculptures and masterpieces of the Renaissance Art. Visit the famed Sistine Chapel - a source of inspiration for art lovers and tourists alike and known for its masterpiece - the Last Judgement. This is also where the Pope gets elected. Later visit the divinely beautiful basilica of St. Peter’s. Get mesmerized by the works of Michelangelo and Bernini. We then move to see the magnificent Colosseum., a vast amphitheatre that is still well preserved. Later visit the beautiful Trevi Fountains. Legend goes that tossing a coin over<br />
<br />
your shoulder gets you back to Rome. We continue and drive past the Victor Emmanuel Monument, the Roman Forum, and several more sights of this remarkable city.<br />
<br />
Overnight in Rome.</p>					
										<p><b>Meals : </b> Breakfast, Lunch, Dinner</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> Fly back home.
									</p>
									<p class="aj">Your Holiday ends. Today it’s time to fly back home. Check out and depart for the Airport for the flight home.</p>					
										<p><b>Meals : </b> Breakfast</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>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>The cost of the Passport, POE charges, etc.</li><li>
Any expenses of personal nature such as porterage, laundry, wines, mineral/bottled water, food & drink not in the regular menus provided by us, mini bar and telephone calls.</li><li>
Any extra meals not included in the itinerary, meals are pre-set and a choice of menu is not available.</li><li>
Cost of excursions, city sightseeing, entrance fees and local guides availed of by the passengers, other than that mentioned in the ‘What your tour price includes’.</li><li>
Government Service Taxes and other taxes as applicable.</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<p><strong>IMPORTANT</strong>

<ul>
	<li>The tour will be operated subject to a minimum of 25 full paying passengers travelling together In the event that the group size is less than 25 passengers you will be given an option of travelling on another departure date.</li>
</ul>

<p><strong>NOTE</strong>

<ul>
	<li>All local taxes and services (Presently calculated as prevailing on 15th November 2017).</li>
	<li>A person below 12 years of age on date of return flight will be considered a child.</li>
	<li>A baby below 24 months of age on date of return flight will be considered an infant.</li>
	<li>Third person in a Triple room will not be provided by extra bed or cot.</li>
	<li>All transfers and extensive sightseeing with entrance fees (as specified in the itinerary) by a deluxe air-conditioned coach.</li>
	<li>Services of our Tour Manager or local representatives, while on tour.</li>
	<li>On some occasions, you may have to join another group in case your group does not have adequate members.</li>
	<li>A local representative or your coach driver may only be there to assist you during your initial part of the tour.</li>
	<li>Land surcharges applicable on certain departure dates.</li>
	<li>Certain sightseeing and excursions may not operate on public holidays.</li>
	<li>Kindly note that on certain departure dates the tour routing could change. In some tours, there is also a possibility that the tour could operate in reverse itinerary. However you will not miss any sightseeing or excursions that are mentioned in the itinerary. Please check with your Sales representative for final details.</li>
</ul>

<p><strong>POINTS TO BE NOTED</strong>

<ul>
	<li>&nbsp;It is advisable to book more than 45 days prior to the tour departure date as the internal ticket rate might increase closer to the departure date, resulting in an increase in the Tour cost&nbsp; The airfare is based on the existing fare structure (Presently calculated as prevailing on 15th November 2017). Any further increase in the airfare due to an increase in fuel price, change in government regulations, ticket taxes etc. charged by the airline will have to be borne by the passenger. We will not be held responsible for the same&nbsp; Any damage caused to the hotel rooms or coach during your stay shall be Pay able by the passengers. We will not be liable for the same&nbsp; The management reserves the right to claim from the passengers, any additional expenses incurred due to delay or changes in the schedule of trains, flights, coach, cruise or other services&nbsp; We reserve the right to amend, alter, vary or withdraw any particular departure, excursions advertised or substitute a hotel of similar class if deemed necessary&nbsp; The images used in this brochure are for representation purposes only&nbsp; A date change fee, as applicable, will be levied on passengers who change their date of travel&nbsp; For the convenience of our passengers, we may sometimes will have to amend the itinerary. However all services will remain the same&nbsp; The company reserves the right to alter the order of the itinerary. The same will be informed to the client before departure&nbsp; Due to Trade Fairs and conventions in the cities, it is possible that the hotel accommodation provided would be outside the city. The same will be informed in advance&nbsp; Passengers can board the tour from the hub city. Those boarding from any other city can do so, however all expenses to/from the hub city is to be borne by the passengers&nbsp; Attractions in the theme parks may not operate/may change/entry restricted/closed without notice&nbsp; Other applicable taxes will be extra&nbsp; The company shall not accept any liability or responsibility for any damages, loss, injury, accident, death, delay, breakdown or irregularity, which may occur in carrying out of the tour arrangement due to weather conditions, strikes, war, quarantine and any other cause whatsoever and all such loss or expenses must be borne by the passenger&nbsp; For all Joining Direct/deviating clients (except when deviating clients are on same flight as that of group) , there would be no airport transfers. Tours operated subject to RBI/GOI regulations&nbsp; Part of the tour cost is payable in EURO out of your BTQ. The foreign exchange component will be payable as per the prevailing day rate of exchange on the date of payment of foreign exchange&nbsp; When the outbound sector of an Ex-India ticket is not utilized, the return segment cannot be utilized for one-way travel and there will be no refund for non-utilisation&nbsp; Please refer to the booking form for detailed &ldquo;Terms &amp; Conditions&rdquo;.</li>
</ul>												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.justravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Best of Europe 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="111788"/>
						</form>
						</div>
						
						";i:1;s:60:"Book Best of Europe Tour - 14 Nights / 15 Days Tour Packages";i:2;s:152:"book best of europe tour - 14 nights / 15 days tour packages, heritage tour packages, london, paris, venice, amsterdam, innsbruck, pattaya tour packages";i:3;s:197:"Book Best of Europe Tour - 14 Nights / 15 Days tour packages from Just Travel - Get attractive 14 Nights / 15 Days Heritage  tour packages for  London, Paris, Venice, Amsterdam, Innsbruck, Pattaya.";i:4;s:4807:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "London, Paris, Venice, Amsterdam, Innsbruck, Pattaya"        
		                 },
		      "description": "Total Tour Cost INR 2, 40,000/- Per Person on Double Sharing Basis
Above Price Including Airfare, Visa, Travel Insurance, All Meals & Sightseeing as per the Itinerary, Driver Tips worth 45 Euros also Included. Services of a professional & caring tour Manager  

LONDON:-
Guided City Tour of London.
Visit to London Eye.
Visit to Madame Tussauds.
Le Shuttle / Ferry from Folkstone / Dover to Calais.

PARIS:-
Visit to Eiffel Tower. (3rd floor)
Paris River Seine Cruise.
Guided city Tour of Paris.
Entrance to Euro Disney. (Disney Studio or Disney Park)
Guided tour of Versailles Palace.
Entrance to Louvre Museum.

BRUSSELS:-
Orientation Tour including the Grand Place, Mannekin Pis.
Photostop at Atomium.

THE NETHERLANDS:-
Amsterdam Canal Cruise.
Visit to Kuekenhof Gardens (Till 12th May)
Visit to Madurodam Model Village. (From 13th May)

GERMANY:-
COLOGNE: Visit the Gothic Cathedral – “Dom”
BLACK FOREST: Visit Drubba Cuckoo Clock outlet; Enjoy the scenic drive.

SWITZERLAND:-
Cable car ride to Mount Titlis.
Orientation tour of Lucerne.
Train Journey to Jungfraujoch - Top of Europe excursion.
Orientation tour of Interlaken.
Visit to Rhine Falls at Schaffhausen.

AUSTRIA:-
INNSBRUCK: Orientation Tour including the Hofburg and Golden Dachl.
WATTENS: Visit to Swarovski Crystal Worlds and Museum.

ITALY:-
VENICE: Private Boat ride to St. Mark’s Square, visit St. Mark’s Square - see the Bridge of Sighs, Doges Palace and the Basilica di San Marco, Gondola Ride, demonstration at Murano Glass Showroom.
PISA: Visit Field of Miracles – see Cathedral, Baptistry and Leaning Tower.
FLORENCE: View of the city from Piazzale Michelangelo; Guided Walking city tour.
ROME: Guided City Tour including a visit to the Vatican Museums and St. Peter’s Basilica.

MEALS
Daily Continental Buffet Breakfast.
13 Indian Jain/Vegetarian/Lunches.
14 Indian Jain/Vegetarian/Non-Vegetarian Dinners.
Choice of Local Meals in 05 different places.

ACCOMMODATION:
02 nights at Hotel Crown Plaza / Heston Hyde / Radisson Blu or similar in London.
03 nights at Hotel Novotel / Residhome / IBIS Styles or similar in Paris.
01 nights at Hotel NH / Carlton De Burg or similar in Belgium / Netherland or similar.
01 night at Hotel Micheal / NH / Achat Plaza or similar in Heppenheim / Mannheim.
03 night at Hotel Seedamm Plaza / Thessoni / Amaris / Apart hotel by Hilton or similar in Central Switzerland.
01 night at Hotel Alp / Bon Alpina / Kronen or similar in Seefeld / Innsbruck.
01 night at Hotel Europa / Unaway / NH or similar in Occhiobello / Rovigo or similar.
01 night at Hotel A Point / Meditur / Da Vinci or similar in Tuscany or similar.
01 night at Hotel Best Western / Antonella / Melia or similar in Rome.

WHAT YOUR TOUR PRICE INCLUDES
AIRFARE
Return Economy Class group airfare as per itinerary (Presently calculated as prevailing on 15th November 2017).

TICKET TAXES
Cost of your ticket taxes (Presently calculated as prevailing on 15th November 2017).

MEDICAL INSURANCE
Normal insurance charges for the duration of the tour are included in the tour price. However, any passenger above the age of 60 years and those passengers who wish to extend their stay will be required to pay additional charges.

VISA REQUIREMENTS
Multiple entry UK visa.
Multiple entry Schengen visa. The costs of UK and Schengen visas are included in your tour price.
This cost includes documentation, processing and consulate fees.
The Schengen Visa on your tour is valid for travel to Italy, Austria, Switzerland, Germany, Belgium, Netherlands, and France (In case of any change in the European Community visa policy, additional charges will be applicable.)

DRIVER TIPS INCLUDED
Tips to coach drivers for the duration of the tour is included.The cost of the Passport, POE charges, etc.
Any expenses of personal nature such as porterage, laundry, wines, mineral/bottled water, food & drink not in the regular menus provided by us, mini bar and telephone calls.
Any extra meals not included in the itinerary, meals are pre-set and a choice of menu is not available.
Cost of excursions, city sightseeing, entrance fees and local guides availed of by the passengers, other than that mentioned in the ‘What your tour price includes’.
Government Service Taxes and other taxes as applicable.",
		      "name": "Best of Europe Tour",
		      "telephone": "+91-8878382228"
		    }
		    </script>
			";i:5;N;}