Purpose and Objective

Design Considerations

Feed Frequency

Implementation Process

Creating the Job Feed

Automated Campaigning

Custom Campaigning Fields

Appendix A – Job Feed XSD

Appendix B – XML Job Feed Samples

Appendix C – JSON Job Feed Samples

Job Ad Feed for PPC jobs

 

Purpose and Objective

The purpose of this guide is to help you create a job feed for PPC.

 

Design Considerations

There are required and optional fields within the job feed. Refer to the Creating the Job Feed section of this document for specific details. Please consider the following as part of your design.

  • Feed format – XML or JSON?
 

Feed Frequency

Monster requires that job feeds be limited to one update per 24 hour period.

In order to take full advantage of Monster's distribution network and receive maximum performance, it is highly recommended that jobs remain active in our system for a minimum of 3-4 days (unless the position has been filled). This will allow you to take full advantage of all distribution channels, including email, without the end user landing on an expired job.

Excessive job turnover will result in your jobs being removed from certain distribution channels in order to maintain an optimal user experience as well as maintain both your brand and the Monster brand in the eyes of job seekers.

   

Creating the Job Feed

  • The full feed xsd's can be found in Appendix A.
  • XML and json files are the only accepted formats.
  • XML feed samples can be found in Appendix B and json samples in Appendix C. Feed samples should be used as a reference to guide development.
  • XML element content
    • Should only contain text that can be parsed successfully.
    • Pre-defined XML entity references such as < and & are illegal in XML elements and will cause job failures. See https://www.w3schools.com/xml/xml_syntax.asp in the "Entity References" section for a complete list of predefined entity references in XML.
    • Pre-defined XML entity references should 1) be removed or 2) use the equivalent XML/HTML entities (example: < & ) or 3) be contained within a CDATA wrapper (A CDATA section starts with "<![CDATA[" and ends with "]]>").
    • Monster XML elements where this is more common are: title, description, company, url.
  • There's a 50MB file size limit.
  • Files greater than 50MB must be split into multiple files and provided within a zip file. The 'part' and 'islast' elements of the job ad must be set appropriately.
  • File naming convention (recommendation).
    • For a full feed file or a zip file:
      • providername_datetime.xxx where xxx = the file name extension.
      • For example: partnername_20210710135300.zip
    • For individual files within a zip file. Each file within the zip file must have a unique name and must contain a file extension.
      • providername_datetime_part1.xxx, providername_datetime_part2.xxx, etc. where xxx = the file name extension.
      • For example = partnername_20210710135300_part1.xml
  • Files within a zip file must not contain folders or zip files.
  • Supported file types: .xml, .json, .zip, .tar, .gz
  Required in Feed?  
Field Name Full Incremental - deprecated Notes
jobfeed YES YES First level field that encapsulates provider meta and job data.
provider YES YES Display field to indicate the name of the organization providing the jobs. In many cases, provider = company.
providerurl NO NO Link to the organization providing the jobs.
isfullfeed YES NO
  • Full feed = Set to true.
part YES NO For full feeds:
  • Single file (less than 50MB). Example below:
    <part>1</part>
    <islast>true</islast>
    
  • When file size is greater than 50MB, the file must be split into multiple files. Example below shows a 90MB file split in two files:

    File #1 .....
    <part>1</part>
    <islast>false</islast>
    

    File #2 .....
    <part>2</part>
    <islast>true</islast>
    
    .....
islast YES NO For full feeds:
  • All ads in one file – <islast>true</islast> must be in the file.
  • Multiple files (contained within a zip file)
    • All files must contain <islast>.
    • One of the files within the zip file must contain <islast>true</islast>. This is a signal to ensure all files from a particular set are processed. See 'part' element for additional information.
    • The remaining files should have <islast> set to false.
jobs YES YES Encapsulates jobs in the jobfeed
job NO YES Element nested within jobs to indicate individual job details.
action No YES

title YES YES Title of job.
description YES YES Indicate job details. Minimum of 200 characters.
company YES YES Indicates hiring company. If anonymity/confidentiality required, populate with Company Confidential.
refcode YES YES Company's unique job identifier. Used to track status of job and must not be changed during lifespan of job.
country YES YES Indicate country abbreviation where job is located. A list of country abbreviations can be found here.
state YES YES
  • Allows for searches at the state level.
  • Indicate state where job is located. A list of valid state abbreviations and names here.
  • This is not required if job is set to joblocationtype of remote
url YES YES
  • Indicate the "apply start" page on the company's career site or Applicant Tracking System (ATS).
  • The url must contain appropriate attribution of the applicant source to Monster.
posteddate NO NO
  • Indicates date job first posted on your system.
  • Format must be as follows: YYYY-MM-DDThh:mm:ss For example <posteddate>2014-05-11T09:00:00</posteddate>. Where
    • YYYY = year
    • MM = month
    • DD = day
    • hh = hour
    • mm = minute
    • ss = second
  • Specifying a time zone within the posteddate is optional. To do this, UTC (Universal Time Coordinated) must be used. The offsets can be zero, positive or negative. See examples below.

    Zero offset (add Z at end)
    UTC: <posteddate>2014-05-11T09:00:00Z</posteddate>

    Positive offset
    <posteddate>2014-05-11T09:00:00+08:00</posteddate>

    Negative offset
    <posteddate>2014-05-11T09:00:00-06:00</posteddate>
streetaddress NO NO Indicate street address where job is located.
city YES YES Indicate physical city where job is located. This is not required if job is set to joblocationtype of remote
postalcode NO NO
  • Indicate postal code where job is located.
  • Recommend provide where possible.
  • NOT required if refcodes are unique across all jobs from a single provider.
salary NO NO

Optional field for specifying the salary for the job. The tags contains the following fields:

  • min = The amount of minimum salary
  • max = The amount of maximum salary
  • type = Period of salary given (Per Hour, Per Week, Per Month, Per Year)
  • currency = Currency of salary, e.g. USD, EUR, GBP

Example how to specify salary:
<salary>
<min>2000</min>
<max>5000</max>
<type>Per Month</type>
<currency>EUR</currency>
</salary>

joblocationtype NO NO

Optional field for specifying the type of location of the job. Values for the field are:

  • REMOTE
  • ONSITE
  • ONSITE_AND_REMOTE
  • ON_THE_ROAD

Example of how to specify:
"joblocationtype": "REMOTE"




 

Automated Campaigning

Automated campaigning allows a provider to manage CPCs on the job or campaign level without the intervention of the Monster Campaign Management team.

Job-level Bids

Field Name Notes
name Provider's identification for the campaign – should be CPC bid value (format: 0.00)
refcode Mechanism to group jobs together for reporting – should be CPC bid value (format: 0.00)
cpc CPC bid (format: 0.00)

Sample:

Job 1:
<campaign>
<name>0.40</name>
<refcode>0.40</refcode>
<cpc>0.40</cpc>
</campaign>

Job 2:
<campaign>
<name>0.80</name>
<refcode>0.80</refcode>
<cpc>0.80</cpc>
</campaign>

Job 3:
<campaign>
<name>0.60</name>
<refcode>0.60</refcode>
<cpc>0.60</cpc>
</campaign>

Job 4:
<campaign>
<name>0.60</name>
<refcode>0.60</refcode>
<cpc>0.60</cpc>
</campaign>

Campaign-level Bids

Field Name Notes
name Provider's identification for the unique campaign name (200 max per feed)
refcode Provider's identification for the unique campaign refcode (200 max per feed)
cpc CPC Value - only one value per unique campaign allowed within a feed (format: 0.00)

Sample:

Job 1:
<campaign>
<name>New England</name>
<refcode>9909abc</refcode>
<cpc>0.40</cpc>
</campaign>

Job 2:
<campaign>
<name>New England</name>
<refcode>9909abc</refcode>
<cpc>0.40</cpc>
</campaign>

Job 3:
<campaign>
<name>Midwest</name>
<refcode>9910def</refcode>
<cpc>0.60</cpc>
</campaign>

Job 4:
<campaign>
<name> Midwest </name>
<refcode>9910def</refcode>
<cpc>0.60</cpc>
</campaign>
 

Custom Campaigning Fields

Custom campaigning fields should be used for listing additional job-level attributes, used by Monster's Campaign Management team for grouping jobs into sponsored PPC campaigns. This is not automated. Up to 5 custom fields can be used within a single feed.

Field Name Notes
campaign  
     customfields  
          customfield  
          name The name of the job-level attribute (e.g. Job Priority)
          value The individual value(s) associated with the job attribute name (e.g. High Priority)

Sample:

<campaign>
...
<customfields>
<customfield>
<name>priority</name>
<value>high</value>
</customfield>
<customfield>
<name>campaigncode</name>
<value>xt1</value>
</customfield>
</customfields>
...
</campaign>


 

Including Apply With Monster

Apply With Monster (AWM) – Want to simplify the job seekers apply experience? Leveraging an AWM integration can provide a significant uplift in the number of applicants. Learn more about AWM at https://partner.monster.com/apply-with-monster

  • Will configuration parameters be the same for all or most jobs? If so, Monster can define default configuration settings for all jobs, such that AWM parameters do not need to be specified in the job feed.
    • Based on the delivery method to be used, please provide the following:
      • Post2: POST2 URL + format (xml or json).
      • Email: Email address + format (xml or json).

    • Will configuration parameters be different for each job? If so, refer to the Creating the Job Feed section of this document.

The following table includes AWM information and how to include that in the job feed. If the same information will be used for all or most jobs, Monster can define default configuration settings such that AWM parameters do not need to be specified in the job feed. Based on the delivery method to be used, please provide the following:

  • Post: POST2 URL + format (xml or json).
  • Email: Email address + format (xml or json).

AWM information provided in the job feed will override default configuration settings.

  Required for AWM?  
Field Name Full   Notes
method YES  
  • Method for obtaining AWM applicant information
  • Possible entries are Post2 or Email
format YES  
  • AWM Data document format.
  • Possible entries are Xml or Json
apikey YES  
  • AWM API Key. Provided by Monster
email See notes  
  • Required if AWM method = "Email"; otherwise ignored
  • Email destination for applicant information.
vendortext NO  
  • General purpose field for AWM vendor data. Not consumed by Apply with Monster; if specified, the vendor field is simply returned with the applicant data record. Useful for specifying metadata.
posturl See notes  
  • Required if AWM method = "Post2"; otherwise ignored
  • REST service where applicant information is to be POSTed
       

 



Appendix A – Job Feed XSD

Full Job Feed (JobFeed_Full.xsd)

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="https://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<xs:complexType name="jobfeed">
		<xs:all>
			<xs:element name="provider" type="xs:string"/>
			<xs:element name="providerurl" type="xs:string" minOccurs="0"/>
			<xs:element name="isfullfeed" type="xs:boolean"/>
			<xs:element name="part" type="xs:string"/>
			<xs:element name="islast" type="xs:boolean" minOccurs="0"/>
			<xs:element name="jobs" type="jobs" minOccurs="0"/>
		</xs:all>
	</xs:complexType>
	<xs:element name="jobfeed" type="jobfeed"/>
	<xs:complexType name="job">
		<xs:all>
			<xs:element name="title" type="xs:string"/>
			<xs:element name="description" type="xs:string"/>
			<xs:element name="company" type="xs:string"/>
			<xs:element name="refcode" type="xs:string"/>
			<xs:element name="country" type="xs:string"/>
			<xs:element name="state" type="xs:string"/>
			<xs:element name="url" type="xs:string"/>
			<xs:element name="group" type="xs:string" minOccurs="0"/>
			<xs:element name="posteddate" type="xs:dateTime" minOccurs="0"/>
			<xs:element name="streetaddress" type="xs:string" minOccurs="0"/>
			<xs:element name="city" type="xs:string"/>
			<xs:element name="postalcode" type="xs:string" minOccurs="0"/>
			<xs:element name="tweetid" type="xs:string" minOccurs="0"/>
			<xs:element name="companycode" type="xs:string" minOccurs="0"/>
			<xs:element name="awm" type="awm" minOccurs="0"/>
			<xs:element name="campaign" type="campaign" minOccurs="0"/>
			<xs:element name="salary" type="salary" minOccurs="0"/>
			<xs:element name="joblocationtype" type="xs:string" minOccurs="0"/>

		</xs:all>
	</xs:complexType>
	<xs:element name="job" type="job"/>
	<xs:complexType name="jobs">
		<xs:sequence>
			<xs:element name="job" type="job" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="jobs" type="jobs"/>
	<xs:complexType name="salary">
		<xs:all>
			<xs:element name="min" type="xs:string"/>
			<xs:element name="max" type="xs:string"/>
			<xs:element name="currency" type="xs:string"/>
			<xs:element name="type" type="xs:string"/>
		</xs:all>
	</xs:complexType>
	<xs:element name="salary" type="salary"/>
	<xs:element name="awm" type="awm"/>
	<xs:complexType name="awm">
		<xs:all>
			<xs:element name="method" type="xs:string" minOccurs="0"/>
			<xs:element name="format" type="xs:string" minOccurs="0"/>
			<xs:element name="apikey" type="xs:string" minOccurs="0"/>
			<xs:element name="email" type="xs:string" minOccurs="0"/>
			<xs:element name="vendortext" type="xs:string" minOccurs="0"/>
			<xs:element name="posturl" type="xs:string" minOccurs="0"/>
			<xs:element name="oncontinueurl" type="xs:string" minOccurs="0"/>
		</xs:all>
	</xs:complexType>
</xs:schema>
 

Appendix B – XML Job Feed Samples

 

Minimum requirements

  1. Full Feed
    <?xml version="1.0" encoding="utf-8"?> 
    <jobfeed>
     <provider>Testcingo</provider>
     <isfullfeed>true</isfullfeed>
     <part>1</part>
     <islast>true</islast> 
    <jobs>
    <job>
       <title>Testing ONLY DO NOT APPLY</title>
       <description><![CDATA[This is a test only. DO NOT APPLY. This is a test only. DO NOT APPLY. 
    This is a test only. DO NOT APPLY. This is a test only. DO NOT APPLY.]]></description> <company>Testcingo</company> <refcode>000277ef0302c2318b759e99c2446bae</refcode> <city>Boston</city> <state>Massachusetts</state> <country>US</country> <url>https://www.testcingo.com/jobs/testingonly.aspx?src=Monster</url> </job> </jobs> </jobfeed>
 

All Fields

  1. Full Feed (AWM Post2 method)
    <?xml version="1.0" encoding="utf-8"?>
    <jobfeed>
    	<provider>Testcingo Inc.</provider>
    	<providerurl>www.testcingo.com</providerurl>
    	<isfullfeed>true</isfullfeed>
    	<part>1</part>
    	<islast>true</islast>
    	<jobs>
    	<job>
    		<title>Pitcher</title>
    		<description><![CDATA[This is a test only. DO NOT APPLY. This is a test only. DO NOT APPLY. 
    This is a test only. DO NOT APPLY. This is a test only. DO NOT APPLY.]]></description> <company>Test Company</company> <companycode>testcingo</companycode> <refcode>000277ef0302c2318e99c2446bae</refcode> <country>US</country> <state>Massachusetts</state> <url>https://www.testcingo.com/jobs/testingonly.aspx?src=Monster</url> <posteddate>2021-11-07T16:05:00-05:00</posteddate> <streetaddress>1 Main Street</streetaddress> <city>Boston</city> <postalcode>02115</postalcode> <awm> <method>Post2</method> <format>Json</format> <apikey>EXAMPLEONLYAAQwQeZBhB3MyyOhCNzymbYoA--</apikey> <vendortext>optional field for text to pass along with apply</vendortext> <posturl>enter_your_REST_service_URL_here</posturl> </awm> </job> </jobs> </jobfeed>
  2. Full Feed - Salary and Job Location Type Example
    <?xml version="1.0" encoding="utf-8"?> 
    <jobfeed>
    	<provider>Testcingo</provider>
    	<isfullfeed>true</isfullfeed>
    	<part>1</part>
    	<islast>true</islast> 
    	<jobs>
    	<job>
    		<title>Testing ONLY DO NOT APPLY</title>
    		<description><![CDATA[This is a test only. DO NOT APPLY. This is a test only. DO NOT APPLY. 
    This is a test only. DO NOT APPLY. This is a test only. DO NOT APPLY.]]></description> <company>Testcingo</company> <refcode>000277ef0302c2318b759e99c2446bae</refcode> <city>Boston</city> <state>Massachusetts</state> <country>US</country> <url>https://www.testcingo.com/jobs/testingonly.aspx?src=Monster</url> <salary> <min>66000</min> <max>99000</max> <type>Per Year</type> <currency>USD</currency> </salary> <joblocationtype>REMOTE</joblocationtype> </job> </jobs> </jobfeed>
 

Appendix C – JSON Job Feed Samples

 

Minimum requirements

  1. Full Feed – 2 jobs
    {
      "jobfeed": {
        "provider": "testcingo Inc.",
        "isfullfeed": true,
        "part": 1,
        "islast": true,
        "jobs": [
          {
         "title": "Testing job only. DO NOT APPLY",
    "description": "This is a test only. DO NOT APPLY. This is a test only. DO NOT APPLY.
    This is a test only. DO NOT APPLY. This is a test only. DO NOT APPLY.",
    "company": "testcingo company",
    "refcode": "000277ef0302c2318b759e99c2446bae",
    "country": "US",
    "state": "Massachusetts",
    "url": "https://www.testco.com/jobs/testingonly.aspx?src=Monster" }, { "title": "Testing job only two. DO NOT APPLY",
    "description": "This is a test only. DO NOT APPLY. This is a test only. DO NOT APPLY.
    This is a test only. DO NOT APPLY. This is a test only. DO NOT APPLY.",
    "company": "testcingo company",
    "refcode": "000277ef0302c2319c2446bae2",
    "country": "US",
    "state": "Massachusetts",
    "url": "https://www.testcingo.com/jobs/testingonlytwo.aspx?src=Monster" } ] } }
 

All Fields

  1. Full Feed (AWM Post2 method)
    {
      "jobfeed": {
        "provider": "Testcingo Inc.",
        "providerurl": "www.testcingo.com",
        "isfullfeed": true,
        "part": 1,
        "islast": true,
        "jobs": [
          {
            "title": "Testing job only. DO NOT APPLY",
            "description": "This is a test only. DO NOT APPLY. This is a test only. DO NOT APPLY. 
             This is a test only. DO NOT APPLY. This is a test only. DO NOT APPLY.",
            "company": "testcingo company",
            "companycode": "testco",
            "refcode": "000277ef0302c2318b759e99c2446bae",
            "country": "US",
            "state": "Massachusetts",
            "url": "https://www.testco.com/jobs/testingonly.aspx?src=Monster",
            "group": "1",
            "posteddate": "2021-11-08T09:05:00-05:00",
            "streetaddress": "1 Main Street",
            "city": "Boston",
            "postalcode": "02115",
            "awm": {
              "method": "Post2",
              "format": "Json",
              "apikey": "EXAMPLEONLY3MymbYoA--",
              "vendortext": "optional field for text to pass along with apply",
              "posturl": "enter_your_REST_service_URL_here"
            }
          }
        ]
      }
    }
    
    
  2. Full Feed - Salary and Job Location Type Example
    {
      "jobfeed": {
        "provider": "testcingo Inc.",
        "isfullfeed": true,
        "part": 1,
        "islast": true,
        "jobs": [
          {
            "title": "Testing job only. DO NOT APPLY",
    "description": "This is a test only. DO NOT APPLY. This is a test only. DO NOT APPLY.
    This is a test only. DO NOT APPLY. This is a test only. DO NOT APPLY.",
    "company": "testcingo company",
    "refcode": "000277ef0302c2318b759e99c2446bae",
    "country": "US",
    "state": "Massachusetts",
    "url": "https://www.testco.com/jobs/testingonly.aspx?src=Monster"
    "salary": {
    "min": "66000",
    "max": "99000",
    "type": "Per Year"
    "currency": "USD" }, "joblocationtype": "REMOTE" }, { "title": "Testing job only two. DO NOT APPLY",
    "description": "This is a test only. DO NOT APPLY. This is a test only. DO NOT APPLY.
    This is a test only. DO NOT APPLY. This is a test only. DO NOT APPLY.",
    "company": "testcingo company",
    "refcode": "000277ef0302c2319c2446bae2",
    "country": "US",
    "state": "Massachusetts",
    "url": "https://www.testcingo.com/jobs/testingonlytwo.aspx?src=Monster" "salary": {
    "min": "60",
    "max": "90",
    "type": "Per Hour"
    "currency": "USD" }, "joblocationtype": "ONSITE" } ] } }