Adding Indeed Apply

Use the Indeed Apply (IA) API to mark your jobs with the Easily Apply label and allow job seekers to apply without leaving Indeed.

The Indeed Apply API takes approximately two to three weeks to implement from start to deployment.

Indeed Apply can be implemented in one of two ways:

  • If you maintain an Indeed XML feed, you must add an Indeed Apply element to your feed. See Adding IA using the XML feed for instructions.
  • If you do not maintain an Indeed XML feed, you can add the Indeed Apply HTML button to the job description pages on your website. See Adding IA using the HTML button for instructions.

Generating an API token

Before implementing the Indeed Apply API, generate an API token by logging in to your Indeed Advertiser account or creating a new account.

While the integration is the default setting, you must provide your clients with a way to opt-out of Indeed Apply. This opt-out MUST be on a client-level basis, not a job-by-job basis.

Adding IA using the XML feed

If you maintain an Indeed XML feed, add Indeed Apply configuration attributes to an <indeed-apply-data> element in your existing feed.

Indeed Apply configuration attributes are outlined in the IA Configuration parameters table.

IA XML element example

The following example shows a basic XML feed containing one job and the Indeed Apply element.

Note: The basic job elements are omitted for clarity, but must be present in your feed.

Basic XML feed example

<?xml version="1.0" encoding="utf-8"?>
<source>
    <publisher/>     
    <publisherurl/>
    <lastBuildDate/>
    <job>
        <title/>
        <date/> 
        <referencenumber/>
        <url/>
        <company/>
        <sourcename/>
        <city/>
        <state/>
        <country/>
        <email/>
        <postalcode/>
        <description/>
        <salary/>
        <education/>
        <jobtype/>
        <category/>
        <experience/>
        <indeed-apply-data>
            <![CDATA[indeed-apply-apiToken=1234ABCDE&indeed-apply-jobTitle=Professional+Basket+Weaver+%28apply+by+email%29&indeed-apply-jobId=Sample+ID&indeed-apply-jobCompanyName=My+Favorite+Company&indeed-apply-jobLocation=Austin+TX&indeed-apply-jobUrl=http%3A%2F%2Fwww.indeed.com&indeed-apply-postUrl=https%3A%2F%2Fhookb.in%2FPxOjJqJELNH8lZLZDkpz&indeed-apply-questions=https%3A%2F%2Fpastebin.com%2Fraw%2F0vXq9q9b%23]]>
        </indeed-apply-data>
    </job>
</source>

IA XML element restrictions

The following restrictions apply when configuring Indeed Apply using the XML feed:

  • Attributes must be URL encoded.
  • If a field is included in the XML feed, it must not be blank.
  • Data attributes must include the prefix indeed-apply-. Do not use data-indeed-apply- as a prefix.
  • All standard configuration attributes can be passed using the XML feed with the following exceptions. These attributes only work when using the HTML button:
    • onapplied
    • onclick
    • continueUrl

Adding IA using the HTML button

If you do not maintain an Indeed XML feed, you can implement Indeed Apply by adding an HTML button to job description pages on your site. Add Indeed Apply configuration attributes to a span element with the class indeed-apply-widget and include JavaScript to enable it.

The Indeed Apply button is not optimized for single-page applications (SPAs) or a webpage that hosts a button that loads the bootstrap.js script multiple times without reloading the entire page.

Note: If you maintain an XML feed, please use the XML element instructions to enable Indeed Apply for your jobs on Indeed. Using this HTML method will only apply to jobs on your site.

Indeed Apply configuration attributes are outlined in the IA Configuration parameters table.

IA HTML button example

The following example shows the markup required for the Indeed Apply HTML button, including the JavaScript to enable the feature.

HTML button example

<span class="indeed-apply-widget"
    data-indeed-apply-apitoken="INSERT YOUR APITOKEN HERE"
    data-indeed-apply-jobid="7775e2bc62b7f77e"
    data-indeed-apply-joblocation="New York, NY 10110"
    data-indeed-apply-jobcompanyName="Your Company"
    data-indeed-apply-jobtitle="Test Engineer"
    data-indeed-apply-joburl="http://www.yourcompany.com/careers/yourjob123.html"
    data-indeed-apply-posturl="http://www.yourcompany.com/process-applications"
    data-indeed-apply-jobmeta="right-rail-apply-button"></span>

<script>(function(d, s, id) {
var js, iajs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)){return;}
js = d.createElement(s); js.id = id;js.async = true;
js.src = "https://apply.indeed.com/indeedapply/static/scripts/app/bootstrap.js";
iajs.parentNode.insertBefore(js, iajs);
}(document, 'script', 'indeed-apply-js'));
</script>

IA configuration parameters

Whether using the XML feed or the HTML button, set up the Indeed Apply API using the following configuration parameters.

Note: You can add all of these parameters to the Indeed Apply button as HTML5 data attributes. You must include the prefix data-indeed-apply- to the data attributes.

List of parameters

IA configuration parameters table
Parameter name Required Description Example
joburl No The canonical URL to the complete job description. Encode this URL in XML files.
Note: For applications on Indeed, the joburl will be set in the apply button to the specific URL on Indeed where the apply is taking place.
http%3A%2F%2Fwww.yourcompany.com
%2F%0Acareers%2Fyourjob123.html
jobid No The ID of the job, used for your own internal tracking.

Note: This field can contain a maximum of 256 ASCII characters.

7775e2bc62b7f77e
jobtitle Yes The title of the job to display externally. Test Engineer
jobcompanyname No The name of the company. Your Company
joblocation No The location of the job. New York, NY 10110
jobmeta No Any arbitrary information you want to provide. This information is not displayed externally, but it will be sent when using the apply via post URL. right-rail-apply-button
apitoken Yes The public API token provided by Indeed. your-api-token
email No The employer email used to send the applications.
This is an encrypted value. See the Encryption and decryption section for more information.
This field is required if postUrl is not provided.
Note: This field is NOT permitted for ATS integrations. This field may only be used by direct employer integrations.
b18d0be4c173dfa2b7c
b7856e7c7b6f02a5638
67a9df67ca208c8b9
654966299
locale No If email is provided, the locale will be used to determine the language used when sending the email to the employer. The default language is English (en).
Note: This field will not affect the confirmation email sent to the applicant.
es
posturl No The URL to which Indeed will post the application data. Encode this URL in XML files.
Note: If email is not provided, postUrl is required.
http%3A%2F%2Fwww.yourcompany.com
%2Fprocess-applications
phone No A string value indicating whether the phone number field should be displayed on the job.
Acceptable values are optional, hidden, or required. The default value is optional.
optional
coverletter No A string value indicating if the message or coverletter field is required.
Acceptable values are optional, hidden, or required. The default value is optional.
required
resume No Specifies whether to require a resume, make a resume optional, or to hide the resume upload option from the user.
Acceptable values are optional, hidden, or required. The default value is required.
If you select optional or hidden you must include screener questions.
You must support .pdf, .doc, .docx, .rtf, and .txt formats for resumes.
required
name No A string value indicating if the name field in the apply form should be split into first and last name (name="firstlastname") or if a single field for the full name is sufficient (name="fullname").
The default value renders a single field for the full name.
firstlastname
onapplied No A comma delimited list of global JavaScript functions to call when the user has applied to the job.
The first and only argument to this function will be the HTMLElement element of this button.
Note: This attribute only works when implementing Indeed Apply using the HTML button.
on_applied_callback
onclick No A comma delimited list of global JavaScript functions to call when the user clicks on the button.
The first and only argument to this function is the HTMLElement element of this button.
Note: This attribute only works when implementing Indeed Apply using the HTML button.
on_click_callback
advnum No The advertiser number to use when attributing an application conversion. 1432700306306892
questions No A URL which returns a JSON-formatted string of questions to be asked during the Indeed Apply application process. Refer to Including screener questions for more information about creating questions.
continueurl No A URL which the jobseeker will be prompted to visit after applying by clicking a Continue button on the application confirmation page.
Note: This attribute only works when implementing Indeed Apply using the HTML button.
http%3A%2F%2Fwww.apply.com
%2Fafter-the-apply
noButtonUI No A boolean flag. When set to true, it disables the standard rendering styles of the Indeed Apply button (typically an orange rectangle). Instead, an unstyled button element will be added to the page. This allows the Indeed Apply button’s appearance to be customized to align with the look-and-feel of the context in which it appears.

Note: This attribute only works when implementing Indeed Apply using the HTML button.

true|false
onappliedstatus No A comma-delimited list of global JavaScript functions to call when the Indeed Apply button is rendered for a job.

The first argument to this function is the HTMLElement element of this button. The second argument to this function is a status flag that is set to 1 if the job seeker currently viewing the job has already applied to the job for which the Indeed Apply button is configured.

Note: This attribute only works when implementing Indeed Apply using the HTML button.

<span class="indeed-apply-
widget"...data-indeed-apply-
onAppliedStatus="cb"...</span>

var cb = function(buttonElement,
payload) { var applied = payload &&
payload.applied === 1;
if (applied) { ... }};

closeHandler No A comma-delimited list of global JavaScript functions to call when a user clicks the ‘close’ link that appears after a job seeker completes the Indeed Apply workflow and has submitted an application for the job the HTML button is configured for.

The first and only argument to this function is the HTMLElement element of this button.

Note: This attribute only works when implementing Indeed Apply using the HTML button.

skipContinue No A boolean flag. When set to ‘true’ this will disable the default screen that appears after a job seeker has submitted an application to the job for which the button is configured.

When used in tandem with the “continueUrl” parameter, this will effectively redirect the job seeker’s entire browser window to the provided continueUrl after an application has been submitted (instead of just keeping the job seeker on the page the button appears on).

Note: This attribute only works when implementing Indeed Apply using the HTML button.

data-indeed-apply-
skipcontinue="true"
data-indeed-apply-
continueurl="https://www.google.com"

Setting up your IA integration

To complete your integration, review the following topics and follow the instructions appropriate for your configuration.

Setting up your IA integration table
Topic Description
Application data delivery Choose whether to receive applications from job seekers through email or posturl. If you choose posturl, learn more about the JSON that must be read and parsed.
Encryption and decryption If using Indeed Apply through email, you must encrypt the email to which Indeed sends applications.
Testing and monitoring your IA integration Use the Indeed Apply test tool to test your configuration, review the integration checklist before submitting your XML feed, and learn how to monitor your integration to avoid common issues.
Disposition data integration Set up a disposition data integration to provide updates about applications status.

Indeed Apply options

Consider the following options for your configuration:

Indeed Apply options table
Topic Description
Including screener questions Learn about adding screener questions to the Indeed apply application process.
Sponsored Jobs ATS Integration If you are developing an applicant tracking system (ATS), you can allow clients to sponsor jobs on a pay-per-click basis. Read this topic to learn more about sponsoring jobs in your XML feed.

Next steps