- 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 explains how direct employers integrate with Indeed. If you send an XML feed, with or without Indeed Apply, follow these guidelines.
When you send an XML feed to Indeed, you control how your jobs appear on Indeed. When you add Indeed Apply, job seekers can apply more easily, which improves their experience and helps you hire faster.
If you have questions, contact your Client Success representative. If you do not 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 who knows your systems and understands HTTP, XML, and JSON.
- A way to publish and refresh your XML feed, such as FTP access.
- A way to publish job screener questions from your system to an HTTPS URL.
- Single Requester Rule: Only the party that is 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 for a third-party integrator.
Estimated time to develop and deploy
Based on work with hundreds of integrated partners, the full process usually takes about six weeks. This includes configuration, testing, review with Indeed, and deployment for client adoption.
With an XML integration, you publish an XML feed to Indeed on a regular schedule. The feed lets you control how your jobs appear on Indeed. When you add metadata to each job, you enable Indeed Apply on Indeed.com. This shows your screener questions in the application flow and tells Indeed where to send candidate information.
After you configure 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 Indeed's feedback 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. This XML document defines your jobs and how they appear on Indeed.
When you create job listings in your system, your XML feed sends them to Indeed.
An XML feed includes:
- Basic feed nodes — Define general feed details, such as the XML version and encoding.
- Job feed elements — Define job-specific details. Include one set of these elements for each job that 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 job seekers apply quickly on Indeed, enable the Easily apply feature through Indeed Apply.
Jobs with Easily apply receive 12% more clicks. Indeed Apply also lets job seekers apply with their Indeed Resume, which makes the process easier.
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 so your system can accept applications from Indeed. - Verify that your system can parse and process the incoming application data.
For configuration parameters, see Indeed Apply configuration reference.
For the <indeed-apply-data> element, see the Indeed Apply XML feed with <indeed-apply-data> example.
For more information about 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 decide whether applicants meet their criteria. This lets employers spend more time connecting with candidates.
Indeed does not host screener questions for you. If your system supports screener questions, you must implement them in Indeed Apply for Indeed to approve your integration.
To show screener questions in the Indeed Apply flow:
- Format your questions in JSON.
- Host them at an HTTPS URL.
- Include that URL in each
<job>element with the<indeed-apply-questions>parameter under<indeed-apply-data>.
See the XML feed with <indeed-apply-data> example and the Indeed Apply configuration reference.
Schema versions
In January 2024, Indeed introduced schema versions for screener question configuration. Indeed makes minor updates as features are added. The application payload shows these versions as 1.X, such as 1.1 or 1.2.
To avoid breaking your integration during major or minor upgrades, keep this value flexible. Your screener question JSON does not need to match the minor schemaVersion.
Considerations
-
Use no more than 500 questions.
Data shows a sharp drop in conversion when you ask more than 20 questions.
-
Keep the questions file under 1 MB.
-
Use unique question URLs. Indeed caches question files on the server and refreshes them every 24 hours, or sooner if a new request arrives after the cache is more than one hour old.
-
When you add resume standardization support and change the Question URL contents, which are the JSON data, switch to a new URL to clear the cache.
-
Do not request unnecessary personally identifiable information (PII) in a job description or during the application process. For more information, see Maintaining User Safety and (Japanese) Indeed でのユーザーの安全性確保.
-
When a job seeker starts the Indeed Apply process and Indeed requests questions, Indeed caches the questions.
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.
Indeed sends candidate information for that job to this URL as JSON documents.
Application delivery
To process applications programmatically, specify a URL that accepts POST requests from Indeed Apply. The <indeed-apply-postUrl> parameter is a string that defines the URL where Indeed posts application data. This URL must use HTTPS.
postUrl example
indeed-apply-postUrl=https%3A%2F%2Fyourposturl.comVerify that your system returns an HTTP 2XX status code for every application that it receives successfully. Indeed Apply treats any other HTTP status code, POST timeout, or connection timeout as a failure.
If Indeed does not receive an HTTP 2XX status code because of a connection timeout, POST timeout, or invalid HTTP response, Indeed tries to resend the application. Indeed uses exponential backoff for automatic retries. If delivery still fails after the last automatic retry, Indeed marks the application as a terminal failure.
Do not validate job application content during the POST. If you need to validate the application content and disqualify the applicant, do that after the POST. If employer-side validation causes HTTP failures for job seeker data, Indeed might disable Indeed Apply for that company or for the entire feed.
See the Application delivery reference.
Do not redirect the POST request to another URL, such as with a 301 or 302 response. Indeed Apply does not support redirects.
Duplicate applications
When you respond to the POST, treat an application as a duplicate only if it meets both of these conditions:
- It uses the same job ID.
- It uses the same job seeker email address as an Indeed application from the last 120 days.
Do not treat applications from other sources as duplicates when you respond to the POST. Do not treat an application as a duplicate if the same job seeker email applies to a different job ID at the same employer.
Application data
Indeed sends application data in the raw body of the HTTP POST request, so you cannot process the request like a typical form. The request body contains a JSON document that you must read and parse. Indeed does not send every JSON field in every request, 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 uses UTF-8 encoding and includes an authenticity header that helps you verify that Indeed sent the application.
The file section of the Applicant field contains contentType, data, and fileName.
Indeed determines contentType from fileName.
The data field contains the raw resume file in Base64 encoding.
Your system must support these file types: .txt, .pdf, .doc, .docx, and .rtf.
If your system already stores a version of the resume, you must still store and use the updated version from 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 with an HTTP header that you can use to verify that the POST is authentic.
Indeed uses the shared API secret for the Indeed Apply credential type and computes a message signature with the HMAC-SHA1 algorithm. Indeed sends this signature in the HTTP X-Indeed-Signature header.
To generate signatures, Indeed Apply uses the full unaltered JSON payload, including the curly braces ({}), and the shared secret.
For code examples that show how Indeed generates the message signature, 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 tools that help you test the components of your Indeed Apply integration.
Review these topics to find available testing tools and resources and to identify integration issues early.
Test Indeed Apply application flow and applicant delivery
To test your integration setup and verify that everything works before you launch a job or integration, use the Apply XML Configuration Testing Tool.
You can enter your Indeed Apply XML metadata for a job into the tool, or the tool can generate XML metadata for you based on configurable parameters. The tool identifies formatting and content errors so that you can quickly find issues.
If the tool finds no errors, it shows the Start testing button. To review the application experience and submit a test application, select Start testing. If your postUrl is valid, the tool sends a test application with the application data payload to your postUrl. You can use that test application to verify that your system parses the JSON document correctly and shows applicant information as expected.
Test your Indeed Apply XML metadata
The first tab of the Indeed Apply XML Configuration Testing Tool lets you enter Indeed Apply metadata from XML and review it in the Indeed Apply application flow. The Configuration section in this tab also lists all parameters included in the XML so that you can review the detected job elements.
For more information about supported parameters, see the Indeed Apply configuration reference.
Indeed Apply XML configuration testing tool - XML tab

The tool also automatically detects metadata errors that can cause Indeed Apply to fail. For example, it detects missing required parameters and formatting issues. If it finds an issue, the tool shows an alert.
Example: Incorrect parameter format error

Example: Missing parameter error

The second tab of the Apply XML Configuration Testing Tool lets you enter configurable parameters and automatically generates the matching Indeed Apply XML metadata. You can also preview how the job appears in the application flow with that information.
After the tool generates the metadata, add it to your existing XML feed. For an example, see Create an XML feed.

Configuration testing tool - Configurable parameters tab
Beyond the default parameters, you can add more parameters from a list of options. After you select and fill in those parameters, the tool automatically adds them to the generated XML.
This tool lets you mock up your Indeed Apply configuration. When you provide your postUrl in the Indeed Apply tags, the tool also lets you walk through the application flow and POST the application to the URL in the 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 full JSON file into the main field of this interactive tool to find formatting errors.
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, open the Command Palette or press F1.
More advanced commands

The tool also includes a link to this documentation so that you can check the relevant JSON parameters when needed.
After your JSON is formatted correctly, select Start testing to preview how your screener questions appear to job seekers.
Monitor integration health
When you integrate with Indeed Apply, set up monitoring to verify that:
- Your integration delivers job applications successfully.
- Your questions files are valid and always available.
Indeed also monitors whether integrations deliver applications successfully and checks other integration health indicators. If problems occur, Indeed might contact you. In some cases, Indeed can disable Indeed Apply for some or all jobs in your feed until you fix the issues.
Undelivered applications are not lost. If delivery fails, Indeed automatically retries delivery at regular intervals after the original submission. If delivery still is not possible, Indeed keeps applications for 60 days and can retry delivery on request through your Client Success representative.
If your integration supports screener questions, verify that the pages hosting those files stay available, do not redirect, and use the correct format.
Submit your XML feed for review
Before you submit your XML feed to your Client Success representative, complete this checklist to avoid delays.
Pre-submission checklists
XML file
| Checklist | Confirm (Yes/No) |
|---|---|
Verify that the XML file includes all basic feed nodes, including the XML version and encoding: | |
Verify that the XML file includes a | |
Verify that the XML file includes every company associated with the jobs. | |
Verify that the XML file does not include any test jobs. | |
Verify that all metadata URLs in the XML file are URL-encoded. These URL elements include | |
Verify that the XML file does not contain HTML escape characters anywhere, such as | |
Verify that all jobs include salary tags. | |
Verify that the external ID matches the content on the career site. | |
Verify that all jobs include an |
Indeed Apply - Screener questions
| Checklist | Details | Confirm (Yes/No) |
|---|---|---|
XML content | Verify that the | |
Verify that all URLs in the Indeed Apply parameters are URL-encoded. These URL elements include | ||
Send the | ||
HTTP codes / Security for post requests | Return HTTP | |
Return HTTP | ||
Return HTTP | ||
Return HTTP | ||
Return HTTP | ||
Return HTTP | ||
Return HTTP | ||
Return HTTP | ||
Verify the | ||
Verify that the Indeed Apply | ||
Alerts and logging | Enable alerts for
Provide an example of these logs as a screenshot or text file. | |
Enable alerts for Screener question logs should include:
Provide an example of these logs as a screenshot or text file. | ||
Job seeker application data delivery | Verify that your platform gets the candidate's first and last name from the JSON | |
Verify that your platform captures and stores uploaded CV files correctly. See the example. | ||
Verify that your platform captures and stores Indeed Resume CV files correctly. See the example. | ||
Confirm that your system has no application payload size restrictions. | ||
Screener questions | Build screener questions by following the best practices. | |
Verify that your platform captures and stores additional cover letters and other documents included in the application. See Applicant fields. | ||
See Maintaining User Safety (Japanese: Indeed でのユーザーの安全性確保) for PII restrictions. Do not ask for PII, such as a full Social Security number (SSN), in screener questions. | ||
General requirements | Verify that your platform identifies job seeker applications from Indeed Apply with the source set to “Indeed.” | |
Verify that your analytics field can categorize applications as organic, sponsored, or Indeed Targeted Ad. | ||
Verify that your SSL certificate is valid and current. |
Send disposition data to Indeed
Disposition data describes updates to an application in your system.
An update is any change in your workflow or any action that you take after a candidate applies, such as hiring the candidate.
When you send disposition data to Indeed, you help improve application quality over time.
See the Disposition Sync API Guide.