a:7:{i:0;s:6726:"				<div class="h1"><h1>Delhi- Agra -Delhi 2 Nights and 3 Days Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="https://www.indiaonlinetourpackages.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="https://www.indiaonlinetourpackages.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Delhi- Agra -Delhi 2 Nights and 3 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">
						2 Nights / 3 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">New Delhi, Agra, Taj Mahal, Agra Fort, India Gate, Lotus Temple</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price </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="https://www.indiaonlinetourpackages.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delhi- Agra -Delhi 2 Nights and 3 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="103788"/>
						</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_10/278399/173342.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/278399/173342.jpg"  height="150"  width="150"    alt="Delhi- Agra -Delhi 2 Nights and 3 Days Tour" title="Delhi- Agra -Delhi 2 Nights and 3 Days Tour" loading="lazy"></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 Delhi
								</p>
								<p class="aj">Pick up from Airport. & transfer to prebooked hotel check in Overnight Delhi.</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> Delhi – Agra
								</p>
								<p class="aj">After breakfast, venture out for a full day sightseeing tour of Delhi. Visit the Red Fort, Jama Masjid, Qutub Minar, India Gate, Humayun's Tomb and Lotus Temple. And then Have drive to Agra Straight check-in at prebooked 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 3:</b> Agra- Delhi
								</p>
								<p class="aj">Early morning visit Master piece the world famous monument of Love Taj Mahal with sun rising. And Agra fort After that we drive back to hotel than Have a breakfast and later on check out from Hotel. Drive to you baby Taj I’timad-ud-Daulah and after this Tomb we drive you back to Delhi by Yamunna Expressway. 16:30 HRS PROCEED BACK TO DELHI Finally you will proceed back to Delhi along with an impression of Taj and a sheer magic that the Taj exudes making it an unforgettable and cherished image forever. 19:00 HRS REFRESHMENT ON THE WAY You will stop over midway to have refreshment and continue your drive to Delhi. 20:30 HRS ARRIVE DELHI PICK UP & DROP TO YOUR HOTEL/AIRPORT On arrival at Delhi you will be dropped at your hotel</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>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="https://www.indiaonlinetourpackages.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delhi- Agra -Delhi 2 Nights and 3 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="103788"/>
						</form>
						</div>
						
						";i:1;s:82:"Book Delhi- Agra -Delhi 2 Nights and 3 Days Tour - 2 Nights / 3 Days Tour Packages";i:2;s:185:"book delhi- agra -delhi 2 nights and 3 days tour - 2 nights / 3 days tour packages, heritage tour packages, new delhi, agra, taj mahal, agra fort, india gate, lotus temple tour packages";i:3;s:233:"Book Delhi- Agra -Delhi 2 Nights and 3 Days Tour - 2 Nights / 3 Days tour packages from Bharat Himalayas - Get attractive 2 Nights / 3 Days Heritage  tour packages for  New Delhi, Agra, Taj Mahal, Agra Fort, India Gate, Lotus Temple.";i:4;s:464:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Agra, Taj Mahal, Agra Fort, India Gate, Lotus Temple"        
		                 },
		      "description": "",
		      "name": "Delhi- Agra -Delhi 2 Nights and 3 Days Tour",
		      "telephone": "+91-9758626010"
		    }
		    </script>
			";i:5;N;i:6;N;}