- Overview
- Requirements
- Estimated time to develop and deploy
- Roadmap
- Get an Indeed Apply token
- Japan only
- Outside of Japan
- Create an XML feed
- Configure Indeed Apply for your jobs
- Add Indeed Apply screener questions
- Schema versions
- Considerations
- JSON for screener questions
- Receive application data from Indeed
- Application delivery
- Application data
- Authentication of the POST request
- Supported SSL certificates
- Test your Indeed Apply configuration
- Test Indeed Apply application flow and applicant delivery
- Test your Indeed Apply XML metadata
- Test your Indeed Apply screener questions
- Monitor integration health
- Submit your XML feed for review
- Pre-submission checklists
- Send disposition data to Indeed
Direct employer integration with Indeed Apply
Integrate with Indeed Apply, for direct employers and third parties acting on their behalf.
- By using this API and its documentation and building an integration, you agree to the Additional API Terms and Guidelines.
Overview
This page covers integration instructions for direct employers. Any direct client providing an XML feed—with or without Indeed Apply—should follow these guidelines.
Sending an XML feed to Indeed gives you better control over how your jobs appear on Indeed. Adding Indeed Apply lets jobseekers apply to your jobs easily, improving their experience and helping you make the right hires faster.
If you have questions, reach out to your Client Success representative. If you don't have one, contact us through this web form.
Requirements
To integrate with Indeed Apply, you need:
- A signed Developer Agreement between your company and Indeed.
- A software developer familiar with your systems and with HTTP, XML, and JSON.
- A way to publish and refresh your XML feed (for example, FTP access).
- A way to publish job screener questions from your system to an HTTPS URL.
- Single Requester Rule: Only the party actively building the integration may request and hold the API key or SFTP credentials. Indeed does not allow proxy requests where an employer requests a key on behalf of a third-party integrator.
Estimated time to develop and deploy
Based on experience with hundreds of integrated partners, the full process—configuring, testing, reviewing with Indeed, and deploying for client adoption—typically takes about six weeks.
An XML integration requires you to publish an XML feed to Indeed on a regular schedule. The feed lets you control how your jobs appear on Indeed. By adding metadata to each job, you activate Indeed Apply on Indeed.com, which surfaces your screener questions in the application flow and tells Indeed where to send candidate information.
Once you've configured the feed with Indeed Apply metadata (and any optional screener questions), Indeed reviews it for technical quality and policy compliance.
Work with your Client Success representative to set up feed publishing and updates, and to review the results of Indeed's review and any required fixes.
Roadmap
Complete these XML feed-based integration steps:
- Get an Indeed Apply token
- Create an XML feed
- Configure Indeed Apply for your jobs
- Add Indeed Apply screener questions
- Receive application data from Indeed
- Test your Indeed Apply configuration
- Monitor integration health
- Submit your XML feed for review
- Send disposition data to Indeed
Get an Indeed Apply token
Japan only
-
Sign in to your Indeed account on the Manage app credentials page, then select Register new application.
-
Enter your app name and description, select Indeed Apply as the credential type, and then select Save and continue.
-
Select Complete registration.
To get your Indeed Apply token, return to the Manage app credentials page. The client ID is your Indeed Apply token.
Outside of Japan
To build an Indeed Apply XML integration, contact the Indeed Client Success team. After you sign the Developer Agreement, Indeed sets up an app that integrates the Indeed APIs and services into your product.
To view your app and its Indeed Apply API token credentials, sign in to the Partner Console:
- The API token credentials are a client ID and a client secret.
- Include this API token in each job you post to Indeed.
Create an XML feed
To configure Indeed Apply, create and maintain an XML feed—an XML document that defines your jobs and how they appear on Indeed.
When you create job listings in your system, they flow from your XML feed directly into the Indeed XML feed.
An XML feed includes:
- Basic feed nodes — Define general details for the feed, such as the XML version and encoding.
- Job feed elements — Define job-specific details. Include one set of these elements for each job you want to appear on Indeed.
If you create a job through either the createSourcedJobPostings mutation or an XML job feed, expiration of the job requires an action on your part. You must explicitly expire that job.
Even if someone calls the updateSourcedJobPostings mutation or clicks Edit on the Indeed job details page for this job, you must explicitly expire that job.
See also:
See the Job Sync XML feed reference.
Configure Indeed Apply for your jobs
To let jobseekers quickly apply from Indeed, use the Easily apply feature through Indeed Apply.
Jobs with Easily apply receive 12% more clicks. Indeed Apply also lets jobseekers apply with their Indeed Resume, further streamlining the process.
To configure Indeed Apply for your jobs:
- Add Indeed Apply configuration parameters to an
<indeed-apply-data>element for each job in your XML feed. - Set a
postUrlvalue in the<indeed-apply-postUrl>parameter to accept applications from Indeed. - Make sure your system can parse and handle the incoming application data.
For configuration parameters, see Indeed Apply configuration reference.
For the <indeed-apply-data> element, see Indeed Apply XML feed with <indeed-apply-data> element example.
For more on Easily apply, see Indeed Apply Policy and Indeed Apply: Build a pipeline of quality candidates fast.
Add Indeed Apply screener questions
Screener questions help employers quickly determine whether an applicant meets their criteria, so they can focus on connecting with candidates instead of vetting them.
Indeed doesn't host screener questions on your behalf. If your system supports screener questions, you must implement them in Indeed Apply for your integration to be approved.
To surface screener questions in the Indeed Apply application flow:
- Format your questions in JSON.
- Host them at an HTTPS URL.
- Include that URL in each
<job>element using the<indeed-apply-questions>parameter under<indeed-apply-data>.
See the XML feed with <indeed-apply-data> element example and the Indeed Apply configuration reference.
Schema versions
In January 2024, Indeed introduced schema versions for screener question configuration. We make minor updates to the version as we add features, denoted as 1.X in the application payload (for example, 1.1, 1.2). To avoid breaking your integration during major or minor upgrades, keep this value flexible—you don't need to match the minor schemaVersion in your screener question JSON.
Considerations
-
Maximum of 500 questions.
Data shows a sharp drop in conversion when more than 20 questions are asked.
-
1 MB maximum file size for the questions file.
-
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.
-
When you implement resume standardization support and modify the Question URL contents (JSON data), change to a new URL to clear the cache.
-
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 Maintaining User Safety (Japanese) Indeed でのユーザーの安全性確 保.
-
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.comMake 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.
Employers 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. If there are any HTTP failures related to employer validation of job seeker data, Indeed Apply might be disabled for the company where the application was submitted or for the entire feed.
See the Application delivery reference.
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.
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 the contentType, data, and fileName fields.
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.
If the third party already has a version of the provided resume saved in their system, they must still store and use the updated version provided in the application JSON.
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.
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 your Client Success representative.
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, enabling you to quickly identify any issues.
If no errors are detected, the tool shows the Start testing button. To see what the application process looks like to a prospective job seeker and to submit a test application to ensure the process works correctly, select Start testing. 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 is showing in your system as you would 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

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: 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.

Configuration testing tool - Configurable parameters tab
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 the URL specified in the tools sample data.
Test your Indeed Apply screener questions
You can also use the Indeed Apply Questions tool to verify the syntax of your Screener Questions JSON file. This tool shows how screener questions appear in the Indeed Apply application flow.
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

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

For more advanced commands, such as those in VS code, select the "Command Palette" or press F1.
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 via integrations, 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.
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 your Client Success representative.
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 avoid delays, review and complete the following checklist before submitting the XML feed to your Client Success representative.
Pre-submission checklists
XML file
| Checklist | Confirm (Yes/No) |
|---|---|
Verify that the XML file defines all basic feed nodes, including the XML version and encoding: | |
Verify that the XML file includes a | |
Verify that the XML file includes all companies associated with jobs. | |
Verify that the XML file does not include any TEST jobs. | |
All URLs that the XML file includes as metadata are URL-encoded. URL elements include the | |
No HTML escape characters ANYWHERE : (&, <, >, and so on) | |
Salary tags are provided for all jobs. | |
External ID matches the career website content. | |
All jobs have an |
Indeed Apply - Screener questions
| Checklist | Details | Confirm (Yes/No) |
|---|---|---|
XML content | Verify that the | |
All URLs within the Indeed Apply parameter are URL-encoded.URL elements include the | ||
The | ||
HTTP codes / Security for post requests | HTTP 200 response for successful applications | |
HTTP 409 for duplicate applications | ||
HTTP 410 for applications on expired jobs | ||
HTTP 400 if the structure of the JSON payload is missing a required key | ||
HTTP 401 for an invalid or missing X-Indeed-Signature header value | ||
HTTP 404 for an invalid job (job does not exist) | ||
HTTP 413 for payload too large | ||
HTTP 422 for missing required answer to screener questions | ||
The X-Indeed-Signature header is being verified (Authentication of the POST requests.) | ||
Indeed Apply POST URL, screener questions URL are secure HTTPS. | ||
Alerts and logging | Enable alerting for Post requests delivery logs should include:
Provide an example of these logs (screenshot or text file.) | |
Enable alerting for Screener question logs include:
Provide an example of logs (screenshot or text file.) | ||
Job seeker application data delivery | The candidate’s first and last name are obtained from the JSON applicant.firstName and applicant.lastName fields. | |
Uploaded CV file is captured and stored correctly on your platform (Example.) | ||
Indeed Resume CV file is captured and stored correctly on your platform (Example.) | ||
Confirm there are no application payload size restrictions. | ||
Screener questions | Screener questions are constructed by following the best practices. | |
Additional cover letters and other docs included as part of the application are captured and stored (Applicant fields.) | ||
See Policy - Personally Identifiable Information (PII) (Japanese) for PII restrictions. PII, such as the full Social Security Number (SSN), cannot be asked as a screener question. | ||
General requirements | Ensure you identify the job seeker applications received through Indeed Apply with source as “Indeed” on your platform. | |
Verify that your analytics field can categorize applications as organic, sponsored, or Indeed Targeted Ad. | ||
Check that your SSL certificate is valid and up-to-date. |
Send disposition data to Indeed
Disposition data is information about updates to an application in your system.
An update is any change in your workflow or any action you take after a candidate applies—for example, hiring the candidate.
Sending disposition data to Indeed helps you receive higher quality applications over time.
See the Disposition Sync API Guide.