a:6:{i:0;s:5667:"				<section id="middle">
				<div class="wrap" id="bodyFormatNT">
				<div class="row1 dt columns23"><!--MIDDLE ROW1 STARTS-->
				<div class="col-2 wideColumn ip ls detail_pm_15"><!--MIDDLE ROW1 COL-2 STARTS-->
				
									<div class="h1"><h1>Job openings for travel agent in delhi ncr ghaziabad</h1></div>
					<p class="breadcrumb ar uu small"> <a href="http://www.dctvacations.in/">Home</a>
					
											<b class="ffv p2px">&rsaquo;</b><a href="http://www.dctvacations.in/current-jobs.htm" title="Current Jobs">Current Jobs</a>  			
											
					<b class="ffv p2px">&rsaquo;</b> Job openings for travel agent in delhi ncr ghaziabad</p>
									<div class="pt10px">
				<div class="xxxlarge fw6 dif">Online Travel Agent</div>
									<p class="mt7px fw6">Ghaziabad</p>
									
				<br>
				<p class="aj mt7px">Home Based Job:<br />
<br />
Sales & Operation Skills- <br />
* Knowing the travel-requirement from the clients<br />
* Providing - The Package - Hotel + Transport Booking<br />
* Providing - Any special requirement like guides etc - for Honeymooners, Foreigners & other travelers.<br />
* Handling - Sales (advise the best to the client)<br />
* Handling - Operations (taking care from arrival till departures)<br />
<br />
Eligibility Criteria - <br />
* Graduate in any field<br />
* Travel Experience in Sales / Operations<br />
* Personal Laptop with Internet to reply <br />
* Personal Mobile to contact the guest by company number<br />
* Should have Aadhaar Card & Bank Account for legal documentation<br />
* English and Hindi Spoken with Email writing skills</p>
				
				<table class="w100 formTable bdr0 mt20px">	
				<tr>
				<td class="w195 alpha75 p5px">Experience</td>
				<td class="p5px">2 - 5 Years</td>
				</tr>			
									<tr>
					<td class="alpha75 p5px">Salary</td>
					<td class="p5px">Not Disclosed</td>
					</tr>
									
					<tr>
					<td class="alpha75 p5px">Industry</td>
					<td class="p5px">Hotel / Restaurants /Travel / Airlines</td>
					</tr>
									
									<tr>
					<td class="alpha75 p5px">Qualification</td>
					<td class="p5px">Higher Secondary, Secondary School, Vocational Course, Diploma, Advanced/Higher Diploma, Professional Degree, Other Bachelor Degree</td>
					</tr>					
										<tr>
					<td class="alpha75 p5px">Key Skills</td>
					<td class="p5px">
											<span class="bdr dib p2px10px mr5px mt2px">Travel Agent</span>
											</td>
					</tr>
									
				</table>
				</div>
				<br>
				<div class="pt20px">
				<p class="large fw6">About Company</p>
				<div class="mt10px">
				
									<table class="w100 formTable bdr0 mt5px">
											<tr>
						<td class="w195 alpha75 p5px">Contact Person</td>
						<td class="p5px">Operations Head</td>
						</tr>					
												<tr>
						<td class="w195 alpha75 p5px">Mobile </td>
						<td class="p5px">9999379477 </td>
						</tr>
										
					</table>
									
				<br />
				
									
					<div class="bdrT pt20px">
					<form name="frmvacdetail" method="post" action="post-resume-form1.html">
					<input style="padding:7px 15px;" class="button b ffos" type="submit" value="Post Your Resume" />
					<input type="hidden" name="catalog_mi" value="760709">
					<input type="hidden" name="enq_type" value="2"><input type="hidden" name="vacancy_id" value="715387"><input type="hidden" name="subject" value="Applied for Online Travel Agent">
					</form>
					</div>
			
									</div>
				</div>			
				
				<!--MIDDLE ROW1 COL-2 ENDS--> 
				</div>
				<div class="col-3 thinColumn"><!--MIDDLE ROW1 COL-1 STARTS-->
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="large fw6 alpha75 p12px bdrB">
				<h2>Jobs by Location</h2>
				</div>
				<div class="ic">
				<div class="mt10px">
									<span class="dib p5px10px c2px bdr mr7px mb7px "><a class="dif" href="jobs-in-ghaziabad.htm" title="Jobs in Ghaziabad">Ghaziabad</a> <b class="alpha50 bn small">(1)</b></span>
									</div>
				</div>
				</div>
				</div>
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="large fw6 alpha75 p12px bdrB">
				<h2>Jobs by Functional Area</h2>
				</div>
				<div style="padding:10px 18px;" class="ic">
									<p class="mb5px "><span class="fr">(1)</span><a href="jobs-in-hotel-restaurants-travel-airlines-fid.htm" title="Hotel / Restaurants /Travel / Airlines Jobs">Hotel / Restaurants /Travel / ...</a></p>
									
				</div>
				</div>
				</div>
				
				</div>
				<!--MIDDLE ROW1 COL-1 ENDS-->
				
				<!--MIDDLE ROW1 ENDS--> 
				</div>
				<br><br>
				</div>
				</section>
				<script>
					window.addEventListener("DOMContentLoaded", function(){
						jQuery(document).on("click", ".showallspan", function(){
							if(jQuery(this).attr("data-target") === 'show'){
								jQuery(this).text("View Less");
								jQuery(this).attr("data-target", "hide");
								jQuery(this).closest("div").find(".spanlist").removeClass("dn");
							}else{
								jQuery(this).text("View More");
								jQuery(this).attr("data-target", "show");
								jQuery(this).closest("div").find(".spanlist").addClass("dn");
							}
						});
					});
				</script>
					<script>
	$.ajax({
	  url: "https://www.placementindia.com/job_posting_view.php",
	  type: "POST",
	  dataType: 'html',
	  data: {job_view_id: 'Y3NoSjZNZjNUbFpjb2wrejlqTVVLZz09',data_type: 'RExzRmw1cmRsdlh6YkJlVUZBNnA4UT09'},
	  cache : false,
	  async: true
	  
	}).done(function(resp) {
	  //alert(resp)
	});
	</script>
	";i:1;s:72:"Job openings for travel agent in delhi ncr ghaziabad | DCT Vacations Ltd";i:2;s:194:"Online Travel Agent Jobs,Online Travel Agent Jobs in Ghaziabad,Online Travel Agent Vacancy in Ghaziabad,Online Travel Agent jobs in India,Hotel / Restaurants /Travel / Airlines jobs in Ghaziabad";i:3;s:260:"Apply for Online Travel Agent Jobs in Ghaziabad India - Online Travel Agent Vacancy  in Hotel / Restaurants /Travel / Airlines field with 2 to 5 years Work Experience, Key Skills are Travel Agent, Hotel / Restaurants /Travel / Airlines jobs in Ghaziabad  India";i:4;s:1569:"
		<script type="application/ld+json">
		{
		  "@context": "http://schema.org",
		  "@type": "JobPosting",
		  "title": "Online Travel Agent",
		  "baseSalary": "",
		  "description": "Home Based Job:

Sales & Operation Skills- 
* Knowing the travel-requirement from the clients
* Providing - The Package - Hotel + Transport Booking
* Providing - Any special requirement like guides etc - for Honeymooners, Foreigners & other travelers.
* Handling - Sales (advise the best to the client)
* Handling - Operations (taking care from arrival till departures)

Eligibility Criteria - 
* Graduate in any field
* Travel Experience in Sales / Operations
* Personal Laptop with Internet to reply 
* Personal Mobile to contact the guest by company number
* Should have Aadhaar Card & Bank Account for legal documentation
* English and Hindi Spoken with Email writing skills",
		  "educationRequirements": "Higher Secondary, Secondary School, Vocational Course, Diploma, Advanced/Higher Diploma, Professional Degree, Other Bachelor Degree",
		  "experienceRequirements": "2 - 5 Years",
		  "industry": "Hotel / Restaurants /Travel / Airlines",
		  "jobLocation": {
		    "@type": "Place",
		    "address": {
		      "@type": "PostalAddress",
		      "addressLocality": "Delhi/NCR, Uttar Pradesh",
		      "addressRegion": "Ghaziabad"
		    }
		  },
		 "qualifications": "Higher Secondary, Secondary School, Vocational Course, Diploma, Advanced/Higher Diploma, Professional Degree, Other Bachelor Degree",
		     "skills": "Travel Agent"
		  }
		</script>
		";i:5;N;}