Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

Indeed Apply (by email) Third-Party Documentation

This is a simplified version of the documentation for third parties that only want the apply-by-email functionality (without screener questions).

Including the "Apply with Indeed" button on your page

<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-email="b18d0be4c173dfa2b7cb7856e7c7b6f02a563867a9df67ca208c8b9654966
299"
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>

Configuration Parameters
All of these parameters can added to the Indeed Apply button as HTML5 data attributes. The data attributes should be prefixed with data-indeed-
apply-

Name Required Example Description

jobUrl no http://www.yourcompany.com/careers/yourjob123.html The canonical url to the complete job


description.

jobId no 7775e2bc62b7f77e The id of the job, useful for your own internal
tracking.

jobTitle yes Test Engineer The title of the job to display.

jobCompanyName no Your Company The name of the company

jobLocation no New York, NY 10110 The location of the job

jobMeta no right-rail-apply-button Arbitrary information that you'd like to


provide. This will not be displayed but will be
sent when using the apply via post url.

apiToken yes your-api-token The public apiToken provided by Indeed.

email yes b18d0be4c173dfa2b7cb7856e7c7b6f02a563867a9df67ca208c8b9654966299 The employer email used to send the


applications. This is an encrypted value. See
the encrypting email section.

If postUrl is not provided, email is required.


locale no es If email is provided, the locale will be used to
determine the language used when sending
the email to the employer. This field will not
affect the confirmation email sent to the
applicant. The default language is English
(en).

phone no optional A string value indicating if the phone number


field should be displayed.

Allowable values are "optional","hidden", or


"required". Defaults to 'optional'.

coverletter no required A string value indicating if the message or


coverletter field is required.

Allowable values are "optional","hidden", or


"required". Defaults to 'optional'.

onapplied no on_applied_callback 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.

onclick on on_click_callback 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


will be the HTMLElement element of this
button.

advNum no 1432700306306892 The advertiser number to use when


attributing a application conversion.

allow-apply-on-ind no 0 A binary value indicating if users from Indeed


eed job search on desktop can apply to this job
on Indeed. Acceptable values are 0 (false:
clicks go directly to third-party site) or 1 (true:
clicks go to an Indeed job page and
applications happen on Indeed).

continueUrl no http://www.apply.com/after-the-apply A url that the jobseeker will be prompted to


go to (via a "Continue" button on the
application confirmation page) after applying.

If you choose to receive applications via email, you will need to set the email configuration html attribute in your button's configuration. When a
user completes her application, Indeed will send an email containing the user's resume as an attachment as well as the user's contact information
(full name, email, cover letter). If the user applies with her Indeed Resume, we will include the html version of the resume directly in the email and
attach the pdf. This email address is encrypted; see the Email Encryption section below.

<span class="indeed-apply-widget"
data-indeed-apply-apiToken="8f57d522dc544a737f70ad5828d5ace1"
data-indeed-apply-jobLocation="New York, NY 10110"
data-indeed-apply-jobCompanyName="Your Company"
data-indeed-apply-jobTitle="Test Engineer"

data-indeed-apply-email="b18d0be4c173dfa2b7cb7856e7c7b6f02a563867a9df67ca208c8b9654966
299"></span>

Email Security (encrypting the email address)


When using Indeed Apply via email, you must encrypt the email to which we'll be sending the applications. Indeed expects the email to be
encrypted using the AES algorithm with your 128 bit secret key. The cipher mode is CBC with PKCS5 padding. The initialization vector is 16 bytes
of 00.

1. Using your secret key, generate a 128-bit secret key using the first 16 bytes.
2. Read the bytes of the plain-text email encoded in "UTF-8".
3. Encrypt the email using the AES algorithm and your 128 bit key. Be sure to use CBC mode and PKCS5 padding.
4.
4. Convert the encrypted bytes to hex string.
5. Use this hex string as your data-indeed-apply-email attribute.

String email = "jobs@example.com";


String api_secret = "your api secret key".getBytes(new Charset("UTF-8"));
byte[] keydata = new byte[16];
// get the first 16 bytes of the api secret
System.arraycopy(api_secret, 0, keydata, 0, keydata.length);

byte[] email_bytes = email.getBytes(Charsets.UTF_8);


// Create a SecretKeySpec using the shared api secret
SecretKeySpec key = SecretKeySpec(keydata, "AES");
// Encrypt the email
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec ivspec = new IvParameterSpec(new byte[]{ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 });
cipher.init(Cipher.ENCRYPT_MODE, key, ivspec);
byte[] email_encrypted = cipher.doFinal(email_bytes);

// convert encrypted email to hex


StringBuilder buf = new StringBuilder(email_encrypted.length * 2);
for (byte b : email_encrypted) {
String hexDigits = Integer.toHexString((int) b & 0x00ff);
if (hexDigits.length() == 1)
buf.append('0');
buf.append(hexDigits);
}
String encrypted_email = buf.toString();

You then use the encrypted email in place of the plain-text email. Indeed Apply will recognize you are using an encrypted email.

<span class="indeed-apply-widget"
data-indeed-apply-apiToken="8e94c9959e5021fc7f70ad5828d5ace1"
data-indeed-apply-jobLocation="Austin TX"
data-indeed-apply-jobCompanyName="Your Company"
data-indeed-apply-jobTitle="Engineer"
data-indeed-apply-email="b18d0be4c173dfa2b7cb7856e7c7b6f02a563867a9df67ca208c8b965496
6299"
></span>

Example encryption and decryption using python.


# pycrypto library - http://www.pycrypto.org/
from Crypto.Cipher import AES
# Padding libary - http://pypi.python.org/pypi/Padding
import Padding

secret = 'your api secret key'.encode('utf-8')


key_bytes = secret[0:16] # grab the first 16 bytes
# initialize vector with zeros
iv = '\0' * 16
cipher = AES.new(key_bytes, AES.MODE_CBC, iv)

email_encrypted =
cipher.encrypt(Padding.appendPadding("john.doe@example.com".encode('utf-8'),
blocksize=Padding.AES_blocksize, mode='CMS'))
encoded_email = email_encrypted.encode('hex')

dcipher = AES.new(key_bytes, AES.MODE_CBC, iv)


email_decrypted = Padding.removePadding(dcipher.decrypt(email_encrypted),
blocksize=Padding.AES_blocksize, mode='CMS')

print 'Encrypted E-mail Hex', encoded_email


print email_decrypted

Example encryption and decryption using perl.

use Crypt::CBC;
use Encode;

my $secret = encode('UTF-8', 'your api secret key');


my $key = substr($secret, 0, 16);
# $key is now 'your api secret '

# Create an initialization vector of 16 nulls


my $iv = "\0" x 16;
# Because the encrypted result will be read by other libraries, we are going to be
very specific:
# We want to use the literal key, not a hashed version of the key,
# we want no header, because we aren't using a salt and are specifing an IV,
# we want a 16 byte keysize as opposed to the standard 32, and we want to use
# Crypt::OpenSSL::AES to encrypt the data. By default, Crypt::CBC will take care of
padding.
my $cipher = Crypt::CBC->new( -literal_key => 1,
-header => 'none',
-key => $key,
-keysize => 16,
-iv => $iv,
-cipher => "Crypt::OpenSSL::AES"
);
# Encrypt the UTF-8 encoded string into a hex version of the data
my $email_encrypted = $cipher->encrypt_hex(encode('UTF-8', 'john.doe@example.com'));
print "$email_encrypted\n";
# Decrypt the hex string to see if it's still intact
my $email_decrypted = $cipher->decrypt_hex($email_encrypted);
print "$email_decrypted\n";
XML Feed Information
To get your jobs marked as indeed apply-able on Indeed, you must include the Indeed Apply attributes in your XML Feed under the node
<indeed-apply-data>. Most of the configuration attributes from the "Table of Configuration Parameters for the Indeed Apply button" at the
beginning of the document (except onapplied, onclick, and continueUrl) can be passed via the XML and will work the same way when applications
happen on Indeed.

The attributes must be URL encoded.


If you include a field in the XML feed it must not be blank.
The data attributes should be prefixed with indeed-apply- rather than data-indeed-apply-

The following is an example of the XML node:

<indeed-apply-data><![CDATA[indeed-apply-jobcompanyname=FindTheBest&indeed-apply-jobid
=12345&indeed-apply-
joburl=http%3A%2F%2Fwww.indeed.com%2Fjob%2FBusiness-Development-Paid-Internship%2F61b
51401%2F&indeed-apply-
joblocation=Santa+Barbara+CA&indeed-apply-apitoken=8f57d522dc544a737f70ad5828d5ace1&i
ndeed-apply-
jobtitle=Business+Development+Paid+Internship&indeed-apply-posturl=http%3A%2F%2Fwww.i
ndeed.com%2Fapply%2F
indeed-receive-json]]></indeed-apply-data>

Application email example (with Indeed resume)


Application email example (without Indeed resume)

You might also like