Skip to main content

Enterprise ATS integration with Indeed Apply

Integrate with Indeed Apply for Enterprise applicant tracking system (ATS) partners.

Notes
  • By using this API and its documentation and building an integration, you agree to the Additional API Terms and Guidelines.
  • All Indeed Apply integrations must include Screener Question capabilities (including EEO for US employers) and Disposition Data by April 2025.

Overview

These integration instructions are for Indeed Enterprise applicant tracking system (ATS) partners:

By integrating your ATS with Indeed, your clients can enable Easily Apply on their job posts and deliver applicant information to their ATS. Indeed Apply improves the job seeker experience, and helps your clients make the right hires faster.

note

Before you can integrate your ATS with Indeed Apply, you must sign a master services agreement with Indeed.

Requirements

To successfully integrate your ATS with Indeed Apply, you need:

  • A signed Master Services Agreement between your company and Indeed. All integration builds must be vetted and approved through our formal integration request channel on Become an integration partner with Indeed.
  • A software developer who is familiar with your systems and HTTP, XML, and JSON.
  • The capability, such as through FTP access, to publish and refresh the XML feed you build.
  • The capability to publish screener questions associated with jobs from your system to an HTTPS URL.
  • An Indeed Apply API token. See Generate an API token.

Estimated time to develop and deploy

Experience with hundreds of integrated partners shows that it generally takes six weeks to configure, test, work with Indeed team members to review your Indeed Apply integration, and deploy it for client adoption.

An XML integration requires that you configure and publish an XML feed to Indeed on a regular schedule. This lets you control how key details about your clients’ jobs appear on Indeed. To activate the Indeed Apply functionality on Indeed.com, you append metadata to each job in this feed, which enables you to surface screener questions in the Indeed Apply application flow and designate where candidate information is delivered to your system.

After you initially configure the XML feed with the Indeed Apply metadata and optional screener questions, Indeed reviews the feed for technical quality assurance and policy compliance.

To designate a method for publishing and updating the feed, and to understand the results of Indeed’s review and any required remediation, work with the Indeed Integrations Delivery team.

Roadmap

Complete these XML feed-based integration steps:

  1. Generate an API token
  2. Create an XML feed
  3. Configure Indeed Apply for your jobs
  4. Add Indeed Apply screener questions
  5. Receive application data from Indeed
  6. Test your Indeed Apply configuration
  7. Monitor integration health
  8. Submit your XML feed for review
  9. Send disposition data to Indeed

Generate an API token

Before you can implement an Indeed Apply integration, complete these steps:

  1. On the Manage app credentials page, sign in to your Indeed account.

    Select Register new application.

  2. Enter your app name and description, and select the Indeed Apply credential type.

    Select Save and continue.

  3. Select Complete registration.

    note

    If you integrate Indeed Apply, get an Indeed Apply API Token on the Manage app credentials page. The client ID is your Indeed Apply API token.

Create an XML feed

To configure Indeed Apply, create and maintain an XML feed, which is an XML document that defines your jobs and how they appear on the Indeed site.

When you create job listings in your system, those listings go from your XML feed directly to the Indeed XML feed.

An XML feed includes:

  • Basic feed nodes. Define general details for an XML feed, including the XML version and encoding.
  • Job feed elements. Define job-specific details. Include one set of these elements for each job that appears on Indeed.

See the XML feed reference.

Configure Indeed Apply for your jobs

To enable job seekers to quickly apply from Indeed, use the Easily apply feature through Indeed Apply.

Jobs with the Easily apply feature receive 12% more clicks. Indeed Apply also gives job seekers the option to use their Indeed Resume, further simplifying the application process.

To configure Indeed Apply for your jobs:

  1. Add Indeed Apply configuration parameters to an <indeed-apply-data> element for jobs in your XML feed.
  2. Set up a postUrl value in the <indeed-apply-postUrl> parameter to accept applications from Indeed.
  3. Ensure your system can parse and handle the application data, as necessary.

For configuration parameters, see Indeed Apply configuration parameters.

For the <indeed-apply-data> element, see Indeed Apply XML feed with <indeed-apply-data> element example.

For more information about the Easily apply feature, see Policy - Indeed Apply and What does easily apply mean?

Add Indeed Apply screener questions

Screener questions enable employers to quickly determine whether an applicant meets their criteria. Adding screener questions to jobs enables employers to focus on connecting with rather than vetting candidates.

Indeed does not host screener questions on your behalf. If your system supports screener questions, you must implement them on Indeed Apply to have your integration approved.

To surface screener questions in the Indeed Apply application flow, format them in JSON and host them at an HTTPS URL that you include in each <job> in the <indeed-apply-questions> parameter under the <indeed-apply-data> element.

See Indeed Apply XML feed with <indeed-apply-data> element example.

See Indeed Apply configuration reference.

Considerations

  • You can ask a maximum of 500 questions.

    Data indicates that a sharp drop-off in conversion occurs when you ask more than 20 questions.

  • Questions files have a maximum size of 1 MB.

  • Unique question URLs cache questions files server-side. They refresh every 24 hours, or sooner if new requests come in after the cache age exceeds one hour.

  • Indeed does not allow employer requests for unnecessary personally identifiable information (PII) in a job description or during the application process. For more information, see Policy - Personally Identifiable Information (PII).

note

When a job seeker starts the Indeed Apply process and Indeed requests questions, questions are cached.

JSON for screener questions

For a list of parameters and examples of specific question types, see Screener questions.

Receive application data from Indeed

To receive application data from Indeed, specify a URL in the feed for each job.

This URL receives candidate information in the form of JSON documents for that job.

Application delivery

To process applications programmatically, specify a URL where Indeed Apply sends a POST request. The <indeed-apply-postUrl> parameter is a string that defines the URL where Indeed posts the application data. This URL must be HTTPS.

postUrl example

indeed-apply-postUrl=https%3A%2F%2Fyourposturl.com

Make sure your system returns an HTTP 2XX status code for all applications that it successfully receives. Indeed Apply considers any other HTTP status codes, post timeouts, or connection timeouts as failures.

If Indeed does not receive an HTTP 2XX status code either through a connect timeout, post timeout, or invalid HTTP response, Indeed tries to resend the application. Indeed uses an exponential backoff method for automatic resends. After the last automatic retry, if delivery is still unsuccessful, Indeed terminally fails the application.

Partners should NOT perform any validation on the content of the job application during the POST. If you wish to validate the job content and disqualify the applicant, that should occur downstream of the POST. Any failures that are related to partner validation of job seeker data can lead to the integration being disabled.

See the Application delivery reference.

note

Do not redirect the POST request to another URL, such as through a 301 or 302 redirect. Indeed Apply does not support redirects.

Duplicate applications

For the purposes of responding to the POST, an application should only be considered a duplicate if it is for the same Job ID and from the same Job Seeker email as an Indeed application within the last 120 days.

Applications originally submitted from a source other than Indeed should not be used in determining whether an application is a duplicate when responding to the POST. Applications from the same Job Seeker email to a different Job ID at the same company should similarly NOT be considered a duplicate.

Application data

Because Indeed sends the application data as the raw body of the HTTP POST request, the request cannot be processed like a typical form. The body of the request contains a JSON document that must be read and parsed. Not all JSON fields are provided, so use a robust JSON parser that treats missing fields as empty and ignores unrecognized fields.

note

A JSON data payload has no maximum size.

The POST body is encoded as UTF-8 and contains an authenticity header that is used to verify that Indeed is sending you the application.

A file portion of the Applicant field contains these fields: contentType, data, and fileName.

contentType is determined based on the fileName.

The data field contains the raw resume file, which is Base64-encoded.

The third party must support the following file types: .txt, .pdf, .doc, .docx, and .rtf.

For application data details, see the Application data reference.

Authentication of the POST request

Indeed Apply sends a POST request to your postUrl that contains an HTTP header that you can use to verify the authenticity of the POST.

Using the shared API secret, which has the Indeed Apply credential type, Indeed uses the HMAC-SHA1 algorithm to compute a message signature. This signature is sent as an HTTP X-Indeed-Signature header.

note

To generate signatures, Indeed Apply uses the full unaltered JSON payload, including the curly brackets ({}) and the shared secret.

For code examples that show how the message signature is generated, see the Message signature generation reference.

Supported SSL certificates

For supported certificates, see the Trusted root SSL certificates.

If your certificate is not listed, contact the Integrations Delivery Team.

Test your Indeed Apply configuration

Indeed provides a number of tools that enable you to test the components of your Indeed Apply integration.

To identify and proactively correct integration issues, review these topics to learn about the available testing tools and resources.

Test Indeed Apply application flow and applicant delivery

To test your integration setup and make sure that everything is running smoothly prior to pushing a job or integration live, Indeed provides the Apply XML configuration testing tool.

You can input your Indeed Apply XML metadata for a job into the tool or the tool can generate XML metadata for you based on a number of configurable parameters. The tool identifies errors in formatting and content, which enables you to quickly identify any issues.

If no errors are detected, the tool shows the Start testing button, which you select to see what the application process looks like to a prospective job seeker and to submit a test application to ensure the process is working correctly. Assuming your postUrl is valid, the test application sent to the postUrl with the application data payload can help you validate that your system is correctly parsing the JSON document and that the applicant info appears in your system as you expect.

Test your Indeed Apply XML metadata

The first tab of the Indeed Apply XML configuration testing tool enables you to input the Indeed Apply metadata from XML and review it in the Indeed Apply application flow. So that you can see your detected job elements, the Configuration section in this tab also lists all parameters that are included in the XML.

For more information about the supported parameters, see the Indeed Apply configuration reference.

Indeed Apply XML configuration testing tool - XML tab

Apply XML configuration testing tool - XML Tab

Additionally, the tool automatically identifies any errors within your metadata that might cause Indeed Apply to malfunction. For example, the tool detects whether a required parameter is missing or the file is not formatted correctly. In either case, the tool shows an alert.

Example: Incorrect parameter format error

Example: Incorrect parameter format error

Example: Missing parameter error

Example: Missing parameter error

The second tab of the Apply XML configuration testing tool enables you to fill in a variety of configurable parameters and generates corresponding XML metadata for Indeed Apply automatically. You can also see how the job appears in the application flow with the provided information.

Once generated, you can add the metadata into your existing XML feed. For an example, see the Create an XML feed.

Apply XML configuration testing tool - Configurable parameters tab

Indeed Apply XML configuration testing tool

Beyond the default parameters provided, you can also add additional parameters from a list of options. Once selected and filled in, these parameters are automatically added to the generated XML.

This tool enables you to mock up your Indeed Apply and by providing your postUrl within the Indeed Apply tags, the tool enables you walk through the application experience and post the application to your URL specified in the tools sample data.

Test your Indeed Apply screener questions

You can also verify the syntax of your Screener Questions JSON file by using the Indeed Apply Questions tool. This tool displays how screener questions appear in the Indeed Apply application flow. This tool displays how screener questions appear in the Indeed Apply application flow.

Indeed Apply Questions tool

Indeed Apply Questions tool

You can paste your entire JSON file into the main field of this interactive tool to highlight errors in formatting.

Error message examples

Error message examples

Right-click on the editor to run basic text commands.

Basic text commands

Basic text commands

For more advanced commands, such as those in VS code, select Command Palette or press F1.

More advanced commands

More advanced commands

The tool also includes a link back to this documentation so that you can reference the relevant JSON parameters as needed.

After your JSON appears to be formatted correctly, select Start testing to see a preview of how your screener questions appear to job seekers.

Monitor integration health

When you integrate with Indeed Apply, set up monitoring to ensure that:

  • The integration successfully delivers job applications.
  • Questions files are valid and consistently available.

Indeed also monitors whether applications are delivered successfully to our ATS partners, along with other integration health indicators. If any problems arise, Indeed might contact you. In some cases, Indeed can disable the Indeed Apply feature for some or all of your feed’s jobs until you correct any issues.

note

Undelivered applications are not lost. In case of failure, retry attempts are made automatically at periodic intervals after the original application is submitted. If delivery is not possible, applications are retained for 60 days and retry attempts can be made on request by contacting the Integrations Delivery Team.

If your integration supports screener questions, verify that the pages that host those files are consistently available, do not redirect, and are properly formatted.

Submit your XML feed for review

To prepare and submit your XML feed for review, use the Integration review questionnaire and checklist.

Send disposition data to Indeed

Disposition data is information about an update to an application in your ATS.

An update can be a change in a recruiter's workflow or an action that a recruiter or candidate takes after the candidate applies. An example of disposition data is, a candidate is hired.

By sending disposition data to Indeed, your clients receive higher quality applications over time.

See the Disposition Sync API Guide.