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
- For a full feed file or a zip file:
- 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 |
|
| part | YES | NO | For full feeds:
|
| islast | YES | NO | For full feeds:
|
| 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 |
|
| url | YES | YES |
|
| posteddate | NO | NO |
|
| 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 |
|
| |||
| salary | NO | NO | Optional field for specifying the salary for the job. The
Example how to specify salary: |
| joblocationtype | NO | NO | Optional field for specifying the type of location of the job. Values for the field are:
Example of how to specify: |
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.
- Based on the delivery method to be used, please provide the following:
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 |
| |
| format | YES |
| |
| apikey | YES |
| |
| See notes |
| ||
| vendortext | NO |
| |
| posturl | See notes |
| |
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
- 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
- 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> - 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
- 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
- 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" } } ] } } - 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" } ] } }
