a:6:{i:0;s:13701:"				<div class="h1"><h1>Beautiful France – 09 Nights & 10 Days Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.oppexholidays.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.oppexholidays.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Beautiful France – 09 Nights & 10 Days 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">
						9 Nights / 10 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Paris, Marseille</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 112000 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.oppexholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Beautiful France – 09 Nights & 10 Days 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="111909"/>
						</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_2/37817/183796.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_2/37817/183796.jpg"  width="150" height="150"    alt="Beautiful France – 09 Nights & 10 Days Tour" title="Beautiful France – 09 Nights & 10 Days Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					HIGHLIGHT:<br />
Eiffel Tower, Cruise and Illuminations of Paris ( Transfer by Coach) (Skip The Line)<br />
Disneyland® Paris Express by Shuttle 1 day ( Transfer by Coach)<br />
French Riviera Full-Day Tour ( Transfer by Coach)<br />
Marseille & Cassis Calanques Cruise ( Transfer by Coach)<br />
TRANSFER:<br />
France Rail Pass ( for inter cities Transfers, Eurails )<br />
Paris Pass ( for Paris Metro & buses ) – Zone 1-3 Pass<br />
<br />
GST & all taxes<br />
Transfers<br />
Hotels<br />
Activities<br />
** Hotels not booked yet.<br />
**Rates Subject to change without prior notice.<br />
<br />
HOTEL DETAILS:<br />
PARIS Novotel Paris Centre Tour Eiffel OR IBIS Paris OR Similar<br />
NICE Mercure Nice Promenade Des Anglais OR Similar<br />
Marseille Suite Novotel Marseille Centre Euromed OR Similar<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> Paris
								</p>
								<p class="aj">Upon arriving at airport get transferred to hotel. Evening at Leisure.<br />
Spend a comfortable overnight stay at hotel in Paris.</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> Paris
								</p>
								<p class="aj">Enjoy a buffet breakfast at the hotel and have a early start to Disneyland Paris with 1 Day 1 Park pass. <br />
Spend a comfortable overnight stay at hotel in Paris.</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> Paris
								</p>
								<p class="aj">Enjoy a buffet breakfast at the hotel.<br />
SKIP THE LINE TOUR<br />
Day free at your own and enjoy Eiffel Tower, Evening Cruise and Illuminations of Paris.You will start your evening with a cruise on the River Seine which will introduce you to the main monuments of Paris. This will be followed by a magical and magnificent drive through Paris by night with its beautiful illuminated buildings where you will be delighted by the views of the Champs-Elysees, Arch of triumph, Eiffel Tower, Louvre Pyramid and many more Spend a comfortable overnight stay at hotel in Paris.</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 -Nice
								</p>
								<p class="aj">Enjoy a buffet breakfast at the hotel and later on take Eurail for Nice.<br />
Check-in to hotel in NICE & relax. Later in the evening you can take stroll in near by places. Spend a comfortable overnight stay at 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 5:</b> Nice
								</p>
								<p class="aj">Enjoy a buffet breakfast at the hotel and Enjoy French Riviera Full Day Tour.<br />
French Riviera Full Day Tour<br />
During this beautiful day, you'll have the chance to visit all the following places; The incredible medieval village of Eze with paved streets overlooking the French Riviera, and learn how to make perfume in an old factory. La Turbie where you'll have the chance to see the nicest Panorama of Monaco and the Trophy of the Alps (Roman monument from 6 and 7 BC). Then reach the luxurious principality of Monaco where we'll be pleased to be the only one to drop you by the Prince palace. Visit the Cathedral, the Monte Carlo Casino, the gardens, and the Formula 1 grand prix circuit. St Paul de Vence made famous by actors and artists living there, Its cabled stone streets, many galleries and nice view overlooking the sea make it a unique place. Antibes with a stop on the 13th century remparts by the sea, and Cannes with the Croisette boulevard and the Film Festival palace to feel as a star walking up the famous steps. Spend a comfortable overnight stay at hotel in Nice.</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> Nice
								</p>
								<p class="aj">Enjoy a buffet breakfast at the hotel and later on take Eurail for Marseille.<br />
Check-in to hotel in Marseille & relax.</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> Marseille
								</p>
								<p class="aj">Enjoy Breakfast at Hotel and Enjoy<br />
“Marseille and Cassis Calanques Cruise”<br />
<br />
Marseille & Cassis Calanques Cruise :<br />
The Gineste and the Crests roads will lead you to the outstanding site of Cape Canaille from where you will appreciate the exceptional view on the bay of Cassis... Cassis is a very ancient fishing port. You will board on a 45-minute boat trip to discover 3 Calanques, steep-walled coves with tiny harbours or beaches at the end. Panoramic tour of the city of Marseille on the way back, including a photo stop at Notre-Dame de la Garde basilica. From this hill, enjoy an breathtaking view on the Phocaean city, the Frioul islands and If Castle. Drive on the Corniche Road, a symbol of holiday and outward sign of wealth for merchants and bourgeois from the 19th century who built their magnificent houses. You will then reach Saint-Victor abbey that guards the entry of the Vieux-Port (Old Port).</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> Paris
								</p>
								<p class="aj">Enjoy Breakfast at Hotel and later on Board train from Marseille to Paris.<br />
Check-in to hotel in PARIS & relax. Later in the evening you can take stroll in near by places. Spend a comfortable overnight stay at 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> Paris
								</p>
								<p class="aj">Enjoy Breakfast at Hotel. Day at leisure</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> Departure Day
								</p>
								<p class="aj">Enjoy a buffet breakfast at the hotel. This is the last day of your FRANCE vacation.<br />
Have your breakfast in morning and evening return flight back home</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>Meals</li>
																		<li>Sightseeing</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<ul>
	<li>The above is only an offer. In the event of Non availability of the specified hotel, alternate or similar hotels would be offered.</li>
	<li>Rates valid strictly for the requested period.</li>
	<li>RATES FOR PRIVATE SERVICES ARE BASED ON MINIMUM PAX TRAVELING. ANY</li>
	<li>CHANGE IN THRE NUMBER OF PAX WOULD LEAD TO CHANGE IN COST</li>
	<li>Any increase in the Airlines taxes /Hotel Surcharges from the time of Booking till the departure date must be borne by pax.</li>
	<li>No refund for unutilized service</li>
	<li>All Hotels, Itinerary, restaurants subject to change without notice.</li>
	<li>Rates valid only for the dates and period requested. Change in date would lead to change of Cost</li>
	<li>Rates are based on as on date&rsquo;s exchange rate. Should there be any major fluctuation OPPEX TRAVELS AND TOURS reserve the right to furnish a fresh quote.</li>
	<li>Rates do not include Event/ Peak Season surcharges. Would be advised at the time of booking.</li>
	<li>Any damage caused to hotel rooms/ Coach during your stay, shall be payable by the passengers. OPPEX TRAVELS AND TOURS will not be liable for the same.</li>
	<li>The Company shall not accept any liability or responsibility for any damages, loss, injury, accident, death, Flight Cancelation by Airline , breakdown, or irregularity, which may occur in carrying out the tour arrangement, weather conditions, strikes, wars, quarantine or any other cause whatsoever and all such loss or expense must be borne by pax.</li>
	<li>All Tours subject to OPPEX TRAVELS AND TOURS Tour conditions</li>
</ul>												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.oppexholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Beautiful France – 09 Nights & 10 Days 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="111909"/>
						</form>
						</div>
						
						";i:1;s:85:"Book Beautiful France – 09 Nights & 10 Days Tour - 9 Nights / 10 Days Tour Packages";i:2;s:141:"book beautiful france – 09 nights & 10 days tour - 9 nights / 10 days tour packages, heritage tour packages, paris, marseille tour packages";i:3;s:233:"Book Beautiful France – 09 Nights & 10 Days Tour - 9 Nights / 10 Days tour packages from Oppex Travels & Tours ( a Division of Oppex Freight Systems - Get attractive 9 Nights / 10 Days Heritage  tour packages for  Paris, Marseille.";i:4;s:1153:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Paris, Marseille"        
		                 },
		      "description": "HIGHLIGHT:
Eiffel Tower, Cruise and Illuminations of Paris ( Transfer by Coach) (Skip The Line)
Disneyland® Paris Express by Shuttle 1 day ( Transfer by Coach)
French Riviera Full-Day Tour ( Transfer by Coach)
Marseille & Cassis Calanques Cruise ( Transfer by Coach)
TRANSFER:
France Rail Pass ( for inter cities Transfers, Eurails )
Paris Pass ( for Paris Metro & buses ) – Zone 1-3 Pass

GST & all taxes
Transfers
Hotels
Activities
** Hotels not booked yet.
**Rates Subject to change without prior notice.

HOTEL DETAILS:
PARIS Novotel Paris Centre Tour Eiffel OR IBIS Paris OR Similar
NICE Mercure Nice Promenade Des Anglais OR Similar
Marseille Suite Novotel Marseille Centre Euromed OR Similar",
		      "name": "Beautiful France – 09 Nights & 10 Days Tour",
		      "telephone": "+91-9821321975"
		    }
		    </script>
			";i:5;N;}