XML feed reference
XML feed nodes, elements, and examples.
Indeed does not support HTML entities. For example, use <
instead of the HTML <
entity.
Indeed might reject or incorrectly format any HTML that violates the formatting guidelines.
HTML entities present anywhere in the XML can affect Indeed's ability to read the XML.
Basic feed nodes
Basic feed nodes define general details for an XML feed, including the XML version and encoding, and ATS information (for ATS developers.)
Element | Description | Example |
---|---|---|
<?xml ?> | Required XML declaration. | <?xml version="1.0" encoding="utf-8"?> |
<source> | Required Root node for the XML feed document. | — |
ATS developers only | Name of the ATS from which this job was published. | ATS Name |
ATS developers only | URL for the ATS from which this job was published. |
|
<job> | Required Job-specific metadata. Define one | — |
Job feed elements
Job feed elements define job-specific metadata for a node.
Element | Description | Example |
---|---|---|
<title> | Required Title of the job. Do not include other types of information, such as salary, employment type, job location, job descriptions, copies, or headlines. See also Policy - Job Title Variations. | <![CDATA[Sales Executive]]> |
<date> | Required Date when this job was first published. We recommend the ISO-8601 standard format for dates and times. note If your site shows the publish date, that date must match the date in the XML. | <![CDATA[2014-12-19T22:49:39Z]]> |
<referencenumber> | Required Unique identifying number for this instance of the job, which Indeed uses to identify each job. The same job posted in multiple locations must have a unique value for this element. Do not change the number after you set it. | <![CDATA[unique123131]]> |
<requisitionid> | Required Requisition ID for a job, which was formerly the Your system likely uses this value to track the original role and its applicants. Might be the identifier that appears on your public-facing career page. Must be the same for each posting of a job across different feeds and different locations. Might not be unique. | <![CDATA[ab1212]]> |
<apijobid> | Job ID. Provide a value for this element only when note Used by Indeed build integrations, such as Candidate sync, to send candidate information to your system. | <![CDATA[ab1212]]> |
<url> | Required URL for this job listing on your site. Use the URL for the job description page, not the application page. Include the |
|
<company> | Required Company name that appears in search results. For example, if subsidiaries or franchises have multiple branded locations in the same company, | <![CDATA[[ABC Hospital]]> |
ATS developers only | Required Parent organization hiring for the role. For example, if subsidiaries or franchises have multiple branded locations in the same company, the | <![CDATA[ABC Medical Group]]> |
<city> | Required City where this job is located. | <![CDATA[Phoenix]]> |
<state> | Required State where this job is located. Use the appropriate postal abbreviation. If your job is located outside the US, use the corresponding geographic designation such as province or region. | <![CDATA[AZ]]> |
<country> | Required Country where this job is located. | <![CDATA[US]]> |
<postalcode> | Required if on the career site Postal code where this job is located. | <![CDATA[85003]]> |
<streetaddress> | Required if on the career site Street address of the job's primary work location. Include the street name and number. Indeed might use the street address to improve the precision of location-based job search and to show to job seekers. | <![CDATA[1234 Sunny Lane Phoenix, AZ 85003]]> |
<email> | Required Email account associated with the Indeed account for this client. To verify the business entity that posts the job, the Indeed Search Quality team requires the client's contact email address. |
|
<description> | Required Description for this job listing that is the source of the raw text that appears to job seekers on Indeed. Ensure the information in this element matches the details on the Indeed might apply filters to this information to omit items such as buttons or link text that does not make sense in the context of Indeed. note You must include HTML formatting in your job descriptions. For a list of supported HTML elements, see Formatting guidelines. | <![CDATA[ <h2 id="job_description">Job Description:<ul><li> Do you have 1-3 years of sales experience?</li></ul>]]> |
<salary> | Required if on the career site Salary offered for this job. For best practices, see Indeed pay transparency & salary estimates. note If a job does not have a salary, leave the field blank in the XML for that job. Indeed removes salary ranges that are unreasonably wide. Indeed might also extract salary information directly from job descriptions in addition to, and instead of, the salary information you define in For best, most predictable results, provide salary information in this tag, as recommended by best practices. |
|
<education> | Required if on the career site Education level desired for this job. | <![CDATA[Bachelors]]> |
<jobtype> | Required if on the career site Type of job, full- or part-time. Indeed might also extract this information directly from other provided job content. | <![CDATA[fulltime, parttime]]> |
<category> | Optional but recommended Comma-delimited list of job categories that help job seekers when searching. Indeed highly recommends that you include this field for job management, to help clients sponsor jobs based on a category, or to reflect additional information from the job details page. For example, you might find it useful to include facility or department information in this field. | <![CDATA[Category1, Category2, CategoryN]]> |
<experience> | Required if on the career site Experience desired for this job. | <![CDATA[5+ years]]> |
<expirationdate> | Required if on the career site Date when active hiring for a role concludes. After this date, Indeed might remove the job from search results. By default, data is interpreted by using the CST time zone. | <![CDATA[2021-11-08]]> |
<tracking_url> | Unique URL for the job, which Indeed uses to track clicks on this job. Indeed creates a |
|
<remotetype> | Type of remote work. A valid value is:
For more information about remote jobs, see these sections in the How to post a remote job on Indeed article:
For additional text that you can include in the job, see XML feed FAQ. note Indeed does not use this element's data to determine location. For information about posting jobs remotely, see XML feed FAQ. | <![CDATA[COVID-19]]> |
<lastactivitydate> | Most recent timestamp of any action that your system made to this job. This action can include candidate review, job update, and so on. | <![CDATA[2014-12-19T22:49:39Z]]> |
XML feed example
This example XML feed defines one job:
<?xml version="1.0" encoding="utf-8"?><source> <!--publisher is applicable to ATS developers only--> <publisher>ATS Name</publisher> <!--publisherurl is applicable to ATS developers only--> <publisherurl>http://www.atssite.com</publisherurl> <job> <title> <![CDATA[Sales Executive]]> </title> <date> <![CDATA[2021-06-29T22:49:39Z]]> </date> <referencenumber> <![CDATA[unique123131]]> </referencenumber> <requisitionid> <![CDATA[ab1212]]> </requisitionid> <url> <![CDATA[http://www.examplesite.com/viewjob.cfm?jobid=unique123131&source=Indeed]]> </url> <company> <![CDATA[ABC Hospital]]> </company> <sourcename> <![CDATA[ABC Medical Group]]> </sourcename> <city> <![CDATA[Phoenix]]> </city> <state> <![CDATA[AZ]]> </state> <country> <![CDATA[US]]> </country> <postalcode> <![CDATA[85003]]> </postalcode> <streetaddress> <![CDATA[123 fake street Phoenix AZ, 85003]]> </streetaddress> <email> <![CDATA[example@abccorp.com]]> </email> <description> <![CDATA[Do you have 1-3 years of sales experience? Are you relentless at closing the deal? Are you ready for an exciting and high-speed career in sales? If so, we want to hear from you! [...] We provide competitive compensation, including stock options and a full benefit plan. As a fast-growing business, we offer excellent opportunities for exciting and challenging work. As our company continues to grow, you can expect unlimited career advancement! ]]> </description> <salary> <![CDATA[$50000 per year]]> </salary> <education> <![CDATA[Bachelors]]> </education> <jobtype> <![CDATA[fulltime, parttime]]> </jobtype> <category> <![CDATA[Category1, Category2, CategoryN]]> </category> <experience> <![CDATA[5+ years]]> </experience> <expirationdate> <![CDATA[2021-11-08]]> </expirationdate> <remotetype> <![CDATA[COVID-19]]> </remotetype> <indeed-apply-data>COVERED IN A LATER SECTION</indeed-apply-data> </job></source>
This XML feed renders this Indeed job listing:
Formatting guidelines
When you define job descriptions in the XML feed, include HTML formatting in CDATA
tags. Indeed expects the same HTML formatting in CDATA
tags that you use on your website.
Rather than strictly complying with HTML standards, Indeed normalizes and renders HTML content in a standardized format to job seekers.
Indeed does not support HTML entities. For example, use <
instead of the HTML <
entity.
Indeed might reject or incorrectly format any HTML that violates the formatting guidelines.
Indeed supports the following HTML tags:
Tag | Description |
---|---|
<b> | Bold. |
| Header. note Text in header tags appears in consistent sizes on Indeed pages. |
<br> | Single line break. |
<p> | Paragraph. Indeed automatically inserts an empty line between paragraph tags. |
<ul> | Unordered, or bulleted, list. |
<li> | List item. |
<strong> | Strong, or bolded, text. |
<em> | Emphasized, or italicized, text. |
| Simple table. Each cell appears on a new line on Indeed. |
Additionally, Indeed supports computed style nodes, such as:
Node | Description |
---|---|
<font style="font-weight:bold">Some bold text</font> | Bold. |
<div> <h2 style="display:inline">Label: </h2> Text </div> | Shows inline text. By default, |
A paragraph tag must have positive top and bottom margins and padding. By default, the <p>
tag has this behavior.
Formatting example
The following example formats a job description:
<description> <![CDATA[<h2 id="job_description">Job Description:<ul><li>Do you have 1-3 years of sales experience?</li><li> Are you relentless at closing the deal? </li><li>Are you ready for an exciting and high-speed career in sales? If so, we want to hear from you!</li></ul><font style="font-weight:bold">Benefits</font><p>We provide competitive compensation, including stock options and a full benefit plan. As a fast-growing business, we offer excellent opportunities for exciting and challenging work. As our company continues to grow, you can expect unlimited career advancement! </p>]]></description>
Publish the XML feed
To publish and update your XML feed for Indeed, use one of these methods:
- Provide an XML URL for Indeed to crawl.
- Provide a client-hosted FTP or SFTP site for Indeed to access the feed.
- Publish the file directly to an Indeed FTP server. Indeed recommends compressed files.
-
Include all jobs that your clients' career pages host in your XML feed.
If your XML file does not include all jobs, Indeed might reject or limit the exposure of jobs that the XML file defines.
-
Include all information available to job seekers from your clients’ websites in the XML file.
For example, if a career website lists salaries for jobs, your XML feed must also include the
<salary>
element. However, if a career website does not include salaries, Indeed does not require this information to index your feed. -
URLs in the XML feed must link to job detail pages from which job seekers can independently confirm all job details without being required to log in.
The XML feed must define only current, actively hiring roles.
Common issues
The following issues can cause Indeed to reject your XML feed or can cause jobs to not appear in Indeed search results.
Issue | Solution |
---|---|
Incomplete data | If you do not provide required data in your XML feed, Indeed might not approve the feed for launch. |
Incorrect special character encoding | Check the feed URL using the “view source” function in your browser and ensure special characters such as brackets ( <> ) show up correctly. Verify that the feed is using an XML Declaration like UTF-8 character encoding. Your file must have a header that declares encoding. You can use an encoding other than UTF-8, although UTF-8 is the most common. XMLs should use allowed character ranges from the XML standard. |
Jobs are missing from the feed or job counts differ between feed and career sites | Include every job in the feed for each client. Anything published and available on the web should be in the feed. |
Jobs do not have unique reference numbers and locations | Each job needs its own unique location and unique reference number, and represents a unique job. Otherwise, it loses visibility on Indeed. If you duplicate the reference number in the XML, only the first appearance of the job appears on Indeed. |
Job posting for multiple locations | If you have a job for multiple locations, provide the job in every location where there is an open position. |
Region‑wide postings do not reflect region‑wide jobs | Location specification requires at least three separate fields: If these elements are not provided, the job does not receive organic visibility by default. |
Job postings in multiple languages require a unique job for every language | If you want to post the same job in multiple languages, create a unique job in the XML for every language you currently have. |
Incomplete or empty job descriptions | Include all text related to the job. For example, required qualifications might be a separate category in your database, but for Indeed purposes, include it in the <description> field. |
Jobs that are scams or suspected scams | Indeed works to exclude suspected scams. Ensure that positions have well-written descriptions. Clients should be legitimate companies and the listed jobs should be actual open positions. |
Outdated jobs | Do not include outdated or inactive jobs in the XML feed. After a job is filled, remove the role from the XML feed. If Indeed notices outdated or inactive jobs, Indeed might ask you to correct that behavior to continue using your XML feed. |
Job quality issues | If clients do not adhere to the Job Posting Standards and jobs are missing required fields or do not meet Indeed quality rules, Indeed can exclude their jobs from Indeed search results. If clients have concerns about their postings, they can review Indeed Policies and reach out to the Employer Help Center. |
These common errors can occur with XML job elements:
Element | Common errors |
---|---|
<title> | Includes unnecessary text, such as location, job type, shift, or catch phrases.
|
<date> | Defines a date in the future. The job might not be visible if this element defines a future date. A date in the future. |
| The Example: For "1234 Sunny Lane, Phoenix, AZ 85003":
|
<description> | The content and the order of the The Indeed search results page shows the plain text version of the note The use of HTML formatting is highly recommended. |
<salary> | The salary. note Include salary breakdown, examples, and bonuses in the Example: If the salary differs depending on experience:
caution Indeed can extract the salary from other elements than the |
All elements | If you change the name of any element, such as updating |
XML feed FAQ
How often does Indeed index the feed?
For XML that is crawled on a URL or hosted on an FTP server you provide, Indeed refreshes the job data four times a day at six-hour intervals, starting from the time of the last request. For Indeed-hosted FTPs, Indeed refreshes the XML feed when it receives a new file, as often as every two hours. More frequent file uploads can delay updates to the job data. To correct a delay in feed indexing, scale back the frequency of uploads.
Which metadata can I include in a feed?
As long as you include the standard fields, you can include any fields, such as <branch_id>
. If specific information must appear on Indeed, use the <description>
field.
Do Indeed search results show all jobs in the feed?
Visibility in search results is based on Indeed’s visibility rules. Our Search Quality team prioritizes jobs that are legitimate, unique, have detailed descriptions and locations, and are easy to apply for.
If the data on the client site corresponds to a data target in Indeed and if the tags match one of the previously mentioned tags, then it appears in the search results page.
However, if the data tag does not match an Indeed tag, its visibility depends on a variety of factors, such as the market in which the job is in, whether search results page is being viewed on desktop and mobile, and other factors out of AggOps' immediate control.
If the tag contains information that must appear, have the client add the information inside the <description>
tag.
Jobs that do not meet these criteria might be hidden from search results. Make sure your clients follow our search quality team’s best practices for posting.
If clients have issues finding their jobs on Indeed they should reach out to Indeed for assistance.
If I use Indeed Apply, why do you require a job URL?
Indeed requires a URL to the job description, and not to the apply page, for these reasons:
- If Indeed Apply fails, Indeed directs the job seeker to the job URL.
- If a client opts out of Indeed Apply, Indeed needs a method for job seekers to apply.
- The Indeed aggregation engine needs an active URL to confirm job content and job activity.
Why does Indeed require an email for each job?
For companies that are new to Indeed, or for new job sources from companies already on Indeed, Indeed requires a contact email address to verify the account and enable organic syndication.
Although Indeed does not use the email address in some cases, Indeed requires it for all jobs.
How do I define the same job in multiple languages?
Provide the job in every language you currently have it in as a unique job in the XML feed. If you duplicate the reference number in the XML feed, only the first appearance of the job appears on Indeed.
How do I define the same job in multiple locations?
Provide the job in every location where an open position exists. Region-wide postings that are not region-wide jobs are rejected for organic visibility on Indeed. Each job needs its own unique location, unique reference number, and should represent a unique job. Otherwise, it loses visibility on Indeed.
How do I define a state- or country-wide job?
To post a state-wide job, send the state and country information using those elements and leave the <city>
and <postalcode>
elements blank.
Example: a statewide job in Texas:
<city> <![CDATA[]]></city><state> <![CDATA[TX]]></state><country> <![CDATA[US]]></country><postalcode> <![CDATA[]]></postalcode>
To post a country-wide job, send the country using the <country>
element, and send a blank value for <city>
, <state>
, and <postalcode>
.
Example: a US nationwide job:
<city> <![CDATA[]]></city><state> <![CDATA[]]></state><country> <![CDATA[US]]></country><postalcode> <![CDATA[]]></postalcode>
Jobs should be posted to the most specific and accurate location possible. All jobs should have all elements used in the feed, even if those elements are blank (e.g. in the examples above.)
How do I post a remote job?
You can use the <city>
or <state>
elements to indicate that a job is fully remote by sending the value “remote”. If you use this value, enter “remote” in both elements. Alternatively, enter "remote" in one element and leave the other blank. Do not enter "remote" in one element and a real location in the other element.
If you have a job that is fully remote but requires residency in a specific state, you can use the <remotetype>
element in conjunction with the statewide posting schema described above.
Example: A fully-remote job in Texas:
<city> <![CDATA[]]></city><state> <![CDATA[TX]]></state><country> <![CDATA[US]]></country><postalcode> <![CDATA[]]></postalcode><remotetype> <![CDATA[Fully remote]></remotetype>
Fully remote:
- The employee works remotely or from home.
Hybrid remote:
- The employee works both in-office and remotely on a consistent basis.
COVID-19:
- A job that’s fully remote due to COVID-19 related circumstances. Eventually, the employee returns to work in-office on either a part- or full-time basis.
Example: a fully remote job in the US:
<city> <![CDATA[Remote]]></city><state> <![CDATA[]]></state><country> <![CDATA[US]]></country><postalcode> <![CDATA[]]></postalcode><remotetype> <![CDATA[Fully remote]]></remotetype>
Example: a hybrid remote job in Austin, TX:
<city> <![CDATA[Austin]]></city><state> <![CDATA[TX]]></state><country> <![CDATA[US]]></country><postalcode> <![CDATA[78701]]></postalcode><remotetype> <![CDATA[Hybrid remote]]></remotetype>