- Generating an API token
- Adding IA by using HTML elements
- IA HTML metadata example
- IA configuration parameters
- Before you begin
- Considerations
- Best practices
- JSON for screener questions
- JSON screener question parameters
- Screener question types
- JSON post example
- Testing your screener questions?
- PostUrl
- JSON application data
- JSON Resume upload example
- IA JSON fields
- POST authenticity
- Using C# (version 6.0)
- Using Java (openjdk version 17.0.4.1)
- Using Perl (version 5.0)
- Using Python (version 3.10)
- Using Node JS (LTS 16)
- Testing IA
- Monitor integration health
- Common integration issues
- Integration checklist
Integrating with Indeed through IA HTML metadata
Integrate with Indeed Apply by using Indeed Apply HTML metadata.
- この API とそのドキュメントを使用し、連携を構築することで、追加の API 利用規約およびガイドラインに同意したものとみなされます。
This document is intended for those completing integrations using a non-standard method outside of Indeed's traditional, multi-source feeds.
Job delivery
Indeed handles the acquisition of your clients jobs through web crawling. Make sure your client’s job pages are available to be scraped by third-party sites, and grant the Indeed bot (user agent “IndeedBot 1.1”) access to your domains. Our services regularly check job content for updates to maintain the most accurate list of jobs still available.
In the event that a client no longer wants Indeed to crawl their jobs, they should submit a request using this page (新しいウィンドウで開きます).
To facilitate the best possible launch, provide Indeed with a full list of job list URLs for your clients before the integration goes live.
Adding Indeed Apply
Use the Indeed Apply (IA) API to mark your jobs with the Easily Apply label on Indeed and allow job seekers to apply without leaving Indeed.
The IA API takes approximately two to three weeks to implement from start to deployment.
Generating an API token
Before you can implement an Indeed Apply integration, complete these steps:
日本のみ
- Manage app credentials (新しいウィンドウで開きます)でIndeedアカウントにサインインし、Register new applicationを選択します。
- アプリ名と説明を入力し、認証情報タイプとしてIndeed Applyを選択して、Save and continueを選択します。
- Complete registrationを選択します。
Indeed エントリーのトークンを取得するには、Manage app credentialsに戻ります。クライアントIDをトークンとして使用します。
日本以外
Indeed エントリーのXML連携を構築するには、Indeed Client Success team (新しいウィンドウで開きます)にお問い合わせください。Developer Agreementを締結すると、IndeedはIndeed APIとサービスを貴社製品に接続するアプリを作成します。
アプリとIndeed エントリーのAPIトークンを表示するには、Partner Console (新しいウィンドウで開きます)にサインインします。
- クライアントIDとクライアントシークレットをAPIトークンの認証情報として使用します。
- Indeedに投稿する各求人に、このAPIトークンを含めます。
Adding IA by using HTML elements
Add Indeed Apply configuration attributes to a span> element with the class indeed-apply-widget.
IA HTML metadata example
This example shows the markup required for Indeed Apply through HTML.
<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>IA configuration parameters
Set up the Indeed Apply API using these configuration parameters.
All parameters should use this format in the span class: data-indeed-apply-”parameter”.
If you use HTTP Post URLs, migrate them to HTTPS immediately. See How to Convert HTTP to HTTPS: A Quick Guide (Infographic) (新しいウィンドウで開きます).
| Parameter name | Required | Description | Example |
|---|---|---|---|
jobUrl | No | The canonical URL to the complete job description. Encode this URL in XML files. For applications on Indeed, the | http%3A%2F%2Fwww.yourcompany.com%2F%0Acareers%2Fyourjob123.html |
jobId | No | The ID of the job, used for your own internal tracking. This field can contain a maximum of 256 ASCII characters. | 7775e2bc62b7f77e |
jobTitle | Yes | The title of the job to display externally. This value should match the | Test Engineer |
jobCompanyName | Yes | The name of the company. This should match the value provided in the <company> field in the xml. | Your Company |
jobLocation | Yes | The location of the job. | New York, NY 10110 |
jobMeta | No | Arbitrary information. This information does not appear externally, but is sent when using the apply through the post URL. | right-rail-apply-button |
apiToken | Yes | The "Client ID" value generated with your Indeed Apply credentials. See Generating an API Token. | your-api-token |
postUrl | Yes | The URL to which Indeed posts the application data. Encode this URL in XML files. Must be HTTPS. | https%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 This field is a freeform text field. If an attachment is expected consider using a screener question to request a file upload. | 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 You must support .pdf, .doc, .docx, .rtf, and .txt formats for resumes. Acceptable values are | 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. We recommend using name="firstlastname". | firstlastname |
questions | No | A URL which returns a JSON-formatted string of questions to be asked during the Indeed Apply application process. For more information about creating questions, see Screener questions. Encode this URL in XML files. Must be HTTPS. | https%3A%2F%2Fwww.yourcompany.com%2Fjob1234%2Fquestions.json |
Screener questions
Format screener questions in JSON and post them to a URL (HTTPS) that is included in the data-indeed-apply-questions parameter. 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.
Before you begin
Considerations
- You can provide a maximum of 500 questions. However, our data indicates that a sharp drop-off in conversion occurs when more than 20 questions are asked.
- Questions files should be no larger than 1 MB.
Questions files are cached server-side by unique question URLs and refreshed every 20 minutes.
Questions are ONLY cached when they are requested by Indeed when a jobseeker starts the Indeed Apply process.
- The format of
type=dateimpacts how the application is passed to the third party as well as the parsing of min and max. The job seeker still enters the date based on their locale, not the specified format, and validation error messages are in their locale’s format. - For
type=date, useyyyyinstead ofyyin the format to prevent confusion.
Verify the syntax of your JSON file and preview the look of your screener questions using the Indeed Apply Questions tool (新しいウィンドウで開きます).
Best practices
- Only include questions that are relevant to the job.
- Include as few screener questions as possible. Remember that some job seekers answer these questions on mobile devices.
- Use the “pagebreak” question type to split your application into logical sections. Indeed inserts pagebreaks by default if none are included in your JSON, but this can split your application up in unintended ways. Indeed displays up to ten questions on each page for both mobile and desktop.
- Do not repeat questions that can be answered from a job seeker’s resume, or have already been collected during the Indeed Apply application process, e.g., basic contact details.
- Follow local laws when determining which questions to ask. Consult your legal department about questions your local laws may prohibit.
- Provide guidance to job seekers when answers require a specific format.
- Indeed uses the SimpleDateFormat (新しいウィンドウで開きます), so month must be formatted as
MM. Usingmmcauses misconfiguration.
JSON for screener questions
This topic describes the parameters that you use to build all question types. For examples of specific question types, see Screener question types.
JSON screener question parameters
| Name | Required? | Description | Allowed values | Example |
|---|---|---|---|---|
id | Yes | Unique ID for this question. | any string | strengths |
type | Yes | Describes the type of question. | textarea text select hierarchical multiselect date file information pagebreak | textarea |
question | No for | The question text that applicants see. | any string | Veteran status? |
text | Yes for | Text that applicants see. | any string | These questions are optional. |
options | Yes for | The list of options available in the drop-down menu. | JSON | |
value | Yes for | The value corresponding to each option that is returned for questions with drop-down menus. | any string | 1 |
label | Yes for | The text for options in any drop-down menus. | any string | Female |
required | No | Allows you to set a question as required. When required:true is present, Indeed Apply forces a non-empty text field or a non-empty selection. When the required parameter is not present, questions are optional. If a question is optional, a possible answer value is "". | true | "required":true |
format | Yes for | The accepted format of the input. If used with type:text, the question accepts only integer, decimal, or numeric_text validation answers. If used with type:date, the question only accepts SimpleDateFormat (新しいウィンドウで開きます) with MM. | Text formats:
| integer, dd/MM/yyyy |
limit | No | For type=text and type=textarea, the character limit for the answer. | any integer | 100 |
min | No | For format=integer or format=decimal, the minimum value for the answer. For type=date, the date that the answer must be on or after. | any integer for | 0 |
max | No | For format=integer or format=decimal the maximum value for the answer. For type=date, the date the answer must be on or before. | any integer for | 100 |
condition | No | Marks a question as conditional, depending on the answer to a previous select question. Specify the id of the previous question as well as the option value that activates this question. For example, you might ask the applicant if they served in the military. If they answer yes, you display a conditional question that asks what branch they served in. | JSON | |
Screener question types
textarea
A question that displays a multi-line text entry field. Used for questions with long-form answers.
textarea example
{ "id": "envirotext", "type": "textarea", "question": "Describe your ideal work environment:"}text
A question that displays a single-line text entry field. Used for questions with shorter answers.
See these examples and the previous table for more information on the different formats available for text questions: integer, decimal, and numeric_text.
text examples
No format specification:
{ "id": "city", "type": "text", "question": "What city are you located in?", "required": true}Integer: Displays whole numbers; does not allow for decimals or leading zeroes
{ "id": "age", "type": "text", "question": "Age?", "format": "integer", "min": "16", "max": "75"}Numeric text: Allows for numbers with leading zeroes; does not allow for decimals
{ "id": "experience", "type": "text", "format": "numeric_text", "question": "How many years of experience do you have in this field?", "required": false}Decimal: Displays numbers with decimals; allows for leading zeroes
{ "id": "gpa", "type": "text", "format": "decimal", "question": "What was your GPA?", "required": true}select
A question that displays a drop-down menu that allows the applicant to select a single answer. Used for questions with multiple choice answers.
If you include five or fewer answer options, those options appear as radio buttons. If you include more than five options, those options appear in a drop-down menu.
select example
{ "id": "gender", "type": "select", "question": "Gender?", "options": [{ "value": "0", "label": "Decline to answer" }, { "value": "1", "label": "Male" }, { "value": "2", "label": "Female" } ]}multiselect
A question that displays a list of checkboxes that allows the applicant to select multiple answers. Used for questions with multiple answers.
multiselect example
{ "id": "favoritecolors", "type": "multiselect", "question": "Select your two favorite colors:", "options": [{ "value": "0", "label": "Maize" }, { "value": "1", "label": "Blue" }, { "value": "2", "label": "Green" } ]}conditional
A question that is or is not displayed based on responses to previous questions. For example, you might ask an applicant if they are at least 18 years of age. If they answer no, you ask if they can provide required work documentation.
conditional example
[{ "id": "profile-atLeast18", "question": "Are you at least 18 years of age?", "required": true, "options": [{ "value": "1", "label": "Yes" }, { "value": "0", "label": "No" } ], "type": "select" }, { "id": "profile-permit", "question": "Can you provide a work permit?", "required": true, "condition": { "id": "profile-atLeast18", "value": "0" }, "options": [{ "value": "1", "label": "Yes" }, { "value": "0", "label": "No" } ], "type": "select" }]hierarchical
A question that displays additional questions and responses based on previously selected answers. For example, you might ask an applicant to choose a state. Then, depending on what they select, you could offer them a drop-down list of cities within that state. Each hierarchical question is limited to 3 levels, for example: state/city/county.
Hierarchical questions are similar to conditional questions. However, hierarchical questions may be better suited to certain question types where an initial selection defines potential answers for subsequent questions. Using the hierarchical functionality reduces the total number of questions needed to obtain related information.
hierarchical example
[{ "id": "hierarchical", "type": "hierarchical", "question": "State", "required": true, "options": [{ "value": "0", "label": "California" }, { "value": "1", "label": "Texas" }, { "value": "2", "label": "New York" }], "hierarchicalOptions": [{ "id": "cali_cities", "options": [{ "value": "0", "label": "San Francisco" }, { "value": "1", "label": "Los Angeles" }], "condition": { "id": "hierarchical", "value": "0" } }, { "id": "texas_cities", "options": [{ "value": "0", "label": "San Antonio" }, { "value": "1", "label": "Austin" }], "condition": { "id": "hierarchical", "value": "1" } }, { "id": "sa_zipcodes", "options": [{ "value": "0", "label": "78212" }, { "value": "1", "label": "78209" }], "condition": { "id": "texas_cities", "value": "0" } } ]}]date
A question that displays a text field that only accepts date entry. Used for questions that must be answered with a date.
format is required when using this screener question type. The format must be dd/MM/yyyy or another locale-specific format that meets Unicode CLDR formatting.
Indeed uses the SimpleDateFormat (新しいウィンドウで開きます), so month must be formatted as MM. Using mm causes misconfiguration.
date example
{ "id": "startdate", "required": true, "type": "date", "question": "Start date?", "format": "dd/MM/yyyy", "min": "01/02/2014", "max": "03/04/2014"}file
A question that shows a file upload interface. Use for questions that require a file upload as an answer, such as certifications, portfolios, or example work. As Application data delivery options describes, the answer data in the JSON POST request contains the contentType, data, and fileName fields.
Accepted file types: doc, docx, gif, jfif, jif, jpe, jpeg, jpg, pdf, png, rtf, tif, tiff, txt
File size limit: 5 MB. The maximum combined limit per application is 15MB, including resume file.
Do not use this question type to acquire resumes. Instead, use the “Resume” IA configuration parameter.
file example
{ "id": "file2", "type": "file", "question": "Please attach a recent example of your work.", "required": true, "min": "1", "max": "3"}information
A text display that does not require a response. Used to include explanatory text or provide section headings. You can include these HTML elements in the text: <b>, <p>, <br>, <li>, <ul>, <ol>, <a href=" ">. Only HTTP and HTTPS protocols are allowed in URLs. Links open in a new tab.
Do not use <br> to force line breaks after paragraphs. Indeed automatically inserts line breaks between paragraphs.
information example
[{ "id": "first_header", "type": "information", "text": "The next set of questions are <b>optional</b> and are for recording purposes only. Make sure to view the < a href = 'http://www.eeoc.gov/employers/upload/poster_screen_reader_optimized.pdf' > EEO is the Law < /a> poster.", "fontsize": 8}]pagebreak
Used to group questions on a page. All questions included between two pagebreak types appear on the same page. You can group up to 20 questions on the same page. Indeed defaults to 3 questions per page on desktop and groups all questions onto a single page for mobile.
pagebreak example
[{ "id": "page1_open", "type": "pagebreak" }, { "id": "question_sample", "type": "text", "question": "Age?" }, { "id": "page1_close", "type": "pagebreak" }]JSON post example
Screener questions and their answers are a part of the questionsAndAnswers section in the JSON file.
- questionsAndAnswers: (Improved format)
- questionsAndAnswers: A list of
- question: question as described in the previous section
- answer: the answer given to the above question
- url: the URL from which the questions were retrieved
- retrievedOnMillis: the datetime in milliseconds at which the questions were retrieved
Click this link to view or download a full example JSON post file. (Contains both the Legacy and Current formats.)
Testing your screener questions?
Verify the syntax of your JSON file and preview the look of your screener questions using the Indeed Apply Questions tool (新しいウィンドウで開きます).
Test the entire Indeed Apply application flow by using our external testing tool (新しいウィンドウで開きます). This can include the full screener question process.
Application data delivery
PostUrl
If you process applications programmatically, specify a URL where Indeed Apply sends a POST request. The data-indeed-apply-postUrl data attribute must be a string containing the URL where Indeed posts the application data. The URL must be HTTPS.
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 you should use a robust JSON parser that treats missing fields as empty and ignores unrecognized fields.
The 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 three fields: contentType, data, and fileName.
ContentTypeis determined based on thefileName.- The data field contains the raw Base64-encoded resume file.
- These
filetypesmust be supported by the third party: txt, pdf, doc, docx, rtf.
Do not redirect the POST to another URL, that is, through a 301 or 302 redirect. Indeed Apply does not handle redirects.
JSON application data
JSON Resume upload example
{ "id": "2b806761c722b0bf431e67168a74bfaf4d67e6070d6ac0160cace3277f6b99df", "job": { "jobId": "123456", "jobKey": "8q2w4e4r5t6y7u8i", "jobTitle": "Test Engineer", "jobCompany": "Your Company", "jobLocation": "Austin TX", "jobUrl": "http://www.yourcompany.com/careers/yourjob123", "jobMeta": "job-meta" }, "applicant": { "fullName": "Indeed Tester", "coverletter": "Cover Letter of Indeed Tester for Your Company", "email": "Indeed.Tester@indeed.com", "phoneNumber": "+123321-1111111", "resume": { "file": { "id": "13ffsffc30b0737c5b2927c0sfqq24rr8a214ef4ca6cacded5dcaa3032e8fcd3", "fileName": "Indeed_Tester-Upload-Resume.pdf", "contentType": "application/pdf", "data": "VBeead131ERi0x" } }, "verified": true }, "questions": { "url": "https://apply.qa.indeed.net/indeedapply/static/questions/basic.json", "retrievedOnMillis": 0, "questions": [{ "id": "automation_exp", "question": "How many years of Automation experience do you have?", "type": "text", "required": true, "format": "integer", "min": "0", "max": "99", "limit": "300", "options": [], "hierarchicalOptions": [] }, { "id": "japanese", "question": "Do you speak Japanese?", "type": "select", "required": true, "options": [{ "label": "Yes", "value": "0" }, { "label": "No", "value": "1" } ], "hierarchicalOptions": [] }, { "id": "experience", "question": "Describe your most favourite ice cream flavor", "type": "textarea", "required": false, "options": [], "hierarchicalOptions": [] }, { "id": "extra", "question": "Website Url", "type": "text", "required": false, "options": [], "hierarchicalOptions": [] }, { "id": "multi", "question": "Which countries would you relocate to? (you can select multiple)", "type": "multiselect", "required": false, "options": [{ "label": "United States", "value": "0" }, { "label": "Canada", "value": "1" }, { "label": "Mexico", "value": "2" }, { "label": "Belize", "value": "3" }, { "label": "Other", "value": "4" } ], "hierarchicalOptions": [] } ], "answers": [{ "id": "automation_exp", "value": "12" }, { "id": "japanese", "value": "0" }, { "id": "experience", "value": "Ice Cream" }, { "id": "extra", "value": "www.testurl.com" }, { "id": "multi", "values": [ "1", "2", "3" ] } ] }, "questionsAndAnswers": { "url": "https://apply.qa.indeed.net/indeedapply/static/questions/basic.json", "retrievedOnMillis": 0, "questionsAndAnswers": [{ "question": { "id": "automation_exp", "question": "How many years of Automation experience do you have?", "type": "text", "required": true, "format": "integer", "min": "0", "max": "99", "limit": "300", "options": [], "hierarchicalOptions": [] }, "answer": "12" }, { "question": { "id": "japanese", "question": "Do you speak Japanese?", "type": "select", "required": true, "options": [{ "label": "Yes", "value": "0" }, { "label": "No", "value": "1" } ], "hierarchicalOptions": [] }, "answer": { "label": "Yes", "value": "0" } }, { "question": { "id": "experience", "question": "Describe your most favourite ice cream flavor", "type": "textarea", "required": false, "options": [], "hierarchicalOptions": [] }, "answer": "Ice Cream" }, { "question": { "id": "extra", "question": "Website Url", "type": "text", "required": false, "options": [], "hierarchicalOptions": [] }, "answer": "www.testurl.com" }, { "question": { "id": "multi", "question": "Which countries would you relocate to? (you can select multiple)", "type": "multiselect", "required": false, "options": [{ "label": "United States", "value": "0" }, { "label": "Canada", "value": "1" }, { "label": "Mexico", "value": "2" }, { "label": "Belize", "value": "3" }, { "label": "Other", "value": "4" } ], "hierarchicalOptions": [] }, "answer": [{ "label": "Canada", "value": "1" }, { "label": "Mexico", "value": "2" }, { "label": "Belize", "value": "3" } ] } ] }, "analytics": { "ip": "0.0.0.0", "advNum": "1212121212121", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36", "device": "desktop", "sponsored": false }, "appliedOnMillis": 1629153774243, "locale": "nl"}JSON Indeed Resume example
{ "id": "2b806761c722b0bf431e67168a74bfaf4d67e6070d6ac0160cace3277f6b99df", "job": { "jobId": "123456", "jobKey": "8q2w4e4r5t6y7u8i", "jobTitle": "Test Engineer", "jobCompany": "Your Company", "jobLocation": "Austin TX", "jobUrl": "http://www.yourcompany.com/careers/yourjob123", "jobMeta": "job-meta" }, "applicant": { "fullName": "Indeed Tester", "firstName": "Indeed", "lastName": "Tester", "coverletter": "Cover Letter of Indeed Tester for Your Company", "email": "Indeed.Tester@indeed.com", "phoneNumber": "+123321-1111111", "resume": { "file": { "fileName": "Indeed_Tester.pdf", "contentType": "application/pdf", "data": "JVBERi0xL==" }, "html": "<html><head></head><body>Resume Content</body></html>", "json": { "firstName": "Indeed", "lastName": "Tester", "email": "Indeed.Tester@indeed.com", "headline": "headline", "summary": "summary", "additionalInfo": "additionalinfo", "phoneNumber": "555-555-4321", "location": { "country": "US", "city": "Austin, TX", "postalcode": "12345" }, "personalDetails": {}, "skills": "Skill 1, Skill 2, Skill 3", "positions": { "_total": 2, "values": [{ "startDateMonth": "01", "startDateYear": "2015", "endCurrent": true, "title": "Product Manager", "company": "Indeed", "location": "Austin, TX", "description": "This is a job I had. This is a description of what I did there. Resume used for testing purposes only." }, { "startDateMonth": "04", "startDateYear": "2010", "endDateMonth": "01", "endDateYear": "2015", "endCurrent": false, "title": "Software Engineer", "company": "Indeed", "location": "Austin, TX", "description": "This is a job I had. This is the description of what I did. Used for testing purposes only." } ] }, "educations": { "_total": 1, "values": [{ "degree": "Bachelor of Arts", "field": "Graphic Design", "school": "University of Texas", "location": "Austin, TX", "startDate": "2014", "endDate": "2019", "startDateYear": "2014", "endDateYear": "2019", "startDateMonth": "01", "endDateMonth": "02", "endCurrent": false }] }, "languages": { "_total": 1, "values": [{ "language": "French", "proficiency": "Fluent" }] }, "links": { "_total": 1, "values": [{ "url": "http://www.indeed.com" }] }, "awards": { "_total": 1, "values": [{ "dateMonth": "04", "dateYear": "2020", "title": "Award Title", "description": "award description" }] }, "certifications": { "_total": 0, "values": [] }, "associations": { "_total": 1, "values": [{ "startDateMonth": "01", "startDateYear": "2014", "endDateMonth": "06", "endDateYear": "2018", "endCurrent": false, "title": "Group Title", "description": "group description" }] }, "patents": { "_total": 1, "values": [{ "dateMonth": "04", "dateYear": "2012", "title": "Patent Title", "description": "patent description", "patentNumber": "12345", "url": "http://www.indeed.com" }] }, "publications": { "_total": 1, "values": [{ "dateMonth": "08", "dateYear": "2019", "title": "Publication Title", "description": "publication description", "url": "http://www.indeed.com" }] }, "militaryServices": { "_total": 1, "values": [{ "startDateMonth": "02", "startDateYear": "2003", "endDateMonth": "05", "endDateYear": "2009", "endCurrent": false, "serviceCountry": "US", "branch": "military branch", "rank": "rank", "commendations": "military commendations", "description": "military service description" }] } }, "text": "resume in text format" }, "verified": true }, "questions": { "url": "https://apply.qa.indeed.net/indeedapply/static/questions/basic.json", "retrievedOnMillis": 0, "questions": [{ "id": "automation_exp", "question": "How many years of Automation experience do you have?", "type": "text", "required": true, "format": "integer", "min": "0", "max": "99", "limit": "300", "options": [], "hierarchicalOptions": [] }, { "id": "japanese", "question": "Do you speak Japanese?", "type": "select", "required": true, "options": [{ "label": "Yes", "value": "0" }, { "label": "No", "value": "1" } ], "hierarchicalOptions": [] }, { "id": "experience", "question": "Describe your most favourite ice cream flavor", "type": "textarea", "required": false, "options": [], "hierarchicalOptions": [] }, { "id": "extra", "question": "Website Url", "type": "text", "required": false, "options": [], "hierarchicalOptions": [] }, { "id": "multi", "question": "Which countries would you relocate to? (you can select multiple)", "type": "multiselect", "required": false, "options": [{ "label": "United States", "value": "0" }, { "label": "Canada", "value": "1" }, { "label": "Mexico", "value": "2" }, { "label": "Belize", "value": "3" }, { "label": "Other", "value": "4" } ], "hierarchicalOptions": [] } ], "answers": [{ "id": "automation_exp", "value": "12" }, { "id": "japanese", "value": "0" }, { "id": "experience", "value": "Ice Cream" }, { "id": "extra", "value": "www.testurl.com" }, { "id": "multi", "values": [ "1", "2", "3" ] } ] }, "questionsAndAnswers": { "url": "https://apply.qa.indeed.net/indeedapply/static/questions/basic.json", "retrievedOnMillis": 0, "questionsAndAnswers": [{ "question": { "id": "automation_exp", "question": "How many years of Automation experience do you have?", "type": "text", "required": true, "format": "integer", "min": "0", "max": "99", "limit": "300", "options": [], "hierarchicalOptions": [] }, "answer": "12" }, { "question": { "id": "japanese", "question": "Do you speak Japanese?", "type": "select", "required": true, "options": [{ "label": "Yes", "value": "0" }, { "label": "No", "value": "1" } ], "hierarchicalOptions": [] }, "answer": { "label": "Yes", "value": "0" } }, { "question": { "id": "experience", "question": "Describe your most favourite ice cream flavor", "type": "textarea", "required": false, "options": [], "hierarchicalOptions": [] }, "answer": "Ice Cream" }, { "question": { "id": "extra", "question": "Website Url", "type": "text", "required": false, "options": [], "hierarchicalOptions": [] }, "answer": "www.testurl.com" }, { "question": { "id": "multi", "question": "Which countries would you relocate to? (you can select multiple)", "type": "multiselect", "required": false, "options": [{ "label": "United States", "value": "0" }, { "label": "Canada", "value": "1" }, { "label": "Mexico", "value": "2" }, { "label": "Belize", "value": "3" }, { "label": "Other", "value": "4" } ], "hierarchicalOptions": [] }, "answer": [{ "label": "Canada", "value": "1" }, { "label": "Mexico", "value": "2" }, { "label": "Belize", "value": "3" } ] } ] }, "analytics": { "ip": "0.0.0.0", "advNum": "1212121212121", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36", "device": "desktop", "sponsored": false }, "appliedOnMillis": 1629153774243, "locale": "nl"}IA JSON fields
Top-level fields
| Field name | Description | Example |
|---|---|---|
id | Unique ID for the application as assigned by Indeed. Include this ID with the application status when sharing disposition data with Indeed. | 5156eb63c9a0a8ac
9358c3a444a2818c
8a5ffdbcba5960ec
0cace3277f6b99df |
appliedOnMillis | The date and time the user applied expressed in standard Unix time (新しいウィンドウで開きます). | 1324051581711 |
job | A job object representing the data provided by your button's HTML data attributes. | See Job object fields |
applicant | An applicant object representing the applicant. | See Applicant object fields |
analytics | An object containing this information:
To track sponsored job clicks on third-party sites, enable URL tracking. Because JSON responses do not include the "sponsored" parameter, you must also enable XML-only responses. Sponsored job tracking from third-party websites must be configured per job in your client's Advertiser accounts and appended to the joburls, which can then be tracked by the ATS. | |
locale | The locale that was used when applying to the job. | en_US |
Job object fields
These fields are based on the button configuration.
| Field name | Description | Example |
|---|---|---|
jobTitle | The title of the job to display. | Test Engineer |
jobCompany | The name of the company. This name is | Your Company |
jobLocation | The location of the job. | New York, NY 10110 |
Applicant fields
| Name | Always provided? | Description | Example |
|---|---|---|---|
fullName | Yes | The name of the applicant. If the user uses their Indeed Resume, this value is their firstName and lastName. | John Doe |
email | Yes | The email of the applicant. |
|
phoneNumber | No | The phoneNumber if provided by the applicant. | 555-555-4321 |
coverletter | No | The cover letter of the applicant. If a user did not provide a cover letter, the JSON object omits this field. | My cover letter |
resume | No | An object representing the user's resume. | See the Resume fields section |
verified | Yes | Indicates whether a job seeker's email address is verified. Is
In all other cases, value is | true |
Resume fields
| Field name | Resume upload | Indeed Resume | Description |
|---|---|---|---|
file | Yes | Yes | An object containing the binary resume file. |
text | No | Yes | A text representation of the resume. Only provided if the user is using their Indeed Resume. |
html | No | Yes | A representation of the resume. Only provided if the user is using their Indeed Resume. |
json | No | Yes | A JSON structured representation of the resume data. See Indeed resume below. |
Resume file fields
| Name | Description | Example |
|---|---|---|
data | The file's raw binary bytes encoded using base 64. | SGVsbG8h= |
fileName | The file name of the uploaded resume. When using the Indeed Resume, the file name is autogenerated. | resume.txt |
contentType | The content type identified using the resume file's extension. | application/octet-stream |
Indeed Resume fields
An array-like object that contains a _total field and a values field. The _total field is an integer indicating the length of the array. The values field is a JSON array containing the _total objects.
The publicProfileUrl field is deprecated and will be removed on June 30, 2026. Until removal, the field returns an empty string. Remove publicProfileUrl from your integration before this date.
| Field name | Type | Description |
|---|---|---|
firstName | string | The applicant's first name. |
lastName | string | The applicant's last name. |
headline | string | The applicant's resume headline. |
summary | string | The applicant's resume summary. |
publicProfileUrl | url | Deprecated. Returns an empty string. Scheduled for removal on June 30, 2026. |
additionalInfo | string | Any additional info. |
phoneNumber | string | The phone number of the user if included on the user's Indeed Resume. |
location | object | JSON object representing the user's location if provided. |
location.city | string | The applicant's city. |
location.country | string | The applicant's country. |
location.postalcode | string | The applicant's postal code. |
Personal details | object | Personal details supplied by applicant. These are only applicable in certain markets as noted on each field. |
skills | string | The applicant's skills. |
positions | array-like | An array-like object of position objects. |
educations | array-like | An array-like object of education objects. |
languages | array-like | An array-like object of language objects. |
links | array-like | An array-like object of link objects. |
awards | array-like | An array-like object of award objects. |
certifications | array-like | An array-like object of certification objects. |
associations | array-like | An array-like object of association objects. |
patents | array-like | An array-like object of patent objects. |
publications | array-like | An array-like object of publication objects. |
militaryServices | array-like | An array-like object of military service objects. |
Personal details fields
| Field Name | Type | Applicable Markets | Description | Example |
|---|---|---|---|---|
highestLevelOfEducation | Single Value | AE, AU, BE, BR, CA, CL, CO, CR, CZ, DK, EC, ES, GB, HK, HU, IE, IT, LU, MX, NG, NL, NO, PA, PE, PL, PT, RO, RU, SE, TR, TW, UA, UY, VE, VN,ZA | A dropdown with localized levels of education for each corresponding market, where a job seeker can select their highest level. | GCSE or equivalent Diploma of Higher Education |
employmentEligibility | Single Value | AE, AU, BH, EG, GB, HK, IT, KW, MA, NZ, OM, QA, RU, SA, SG | Asks if job seekers are eligible to work in a country. | Yes |
highestCareerLevel | Single value | FR, HK, IN, KR, VN, ZA | Job seekers can select their highest career level from 4 options. | New Grad |
industry | Multi Value | AE, AR, BH, BR, CL, CN, CO, CR, EC, EG, ES, FR, GB, IE, IN, KR, KW, LU, MA, MX, NG, OM, PA, PE, QA, RU, SA, TR, TW, UA, UY, VE, ZA | A drop-down where job seekers can select the industry in which they work/specialize. | Arts & Entertainment |
driversLicense | Multi Value | AR, BE, CL, CO, CR, CZ, EC, ES, GB, IT, JP, MX, NL, PA, PE, RU, TR, UY, VE, ZA | A dropdown with localized Driver License options for each corresponding market. | Light Vehicles |
dateOfBirth | Date | AE, AR, BH, BR, CK, CN, CO, CR, EC, EG, ES, FR, HK, ID, IN, IT, JP, KR, KW, MA, MX, MY, NG, OM, PA, PE, PT, QA, RU, SA, SG, TR, TW, UA, UY, VE, VN, ZA | 3 dropdowns - date, month and year. Order is localized per market. | DD-MM-YYYY |
educationDescription | Open text | CH, DE, NO, SE, UA, UY, VN, VN | Job seekers can describe their education. | Open text |
gender | Single Value | JP | The job seeker’s gender. | Female |
disability | Single Value | BR, IT, MX, ZA | A dropdown with different disability options (BR) or yes/no for remaining markets. | Cognitive OR Yes |
ethnicity | Single Value | ZA | A dropdown with ethnicity options. | African |
veteranStatus | Single Value | KR | A job seeker’s veteran status. | Applicable |
NYSCStatus | Single Value | NG | A dropdown for a job seeker's NYSC status. | Ongoing |
employmentSupportStatus | Single Value | KR | A job seeker’s employment support status. | Applicable |
willingToTravel | Single Value | AR, CL, CO, CR, EC, ES, MX, PA, PE, UY, VE | A dropdown for a job seekers' willingness to travel. | Yes |
europeanUnionWorkPermit | Single Value | IE | Asks job seekers if they have a European Work Permit. | Yes |
citizenship | Single Value | PH, SG, ZA | A dropdown for a job seeker's citizenship. | South African Citizen |
IDP | Checkbox | UA | Asks job seekers whether they are an internally displaced migrant. | IDP (Internally Displaced Migrants) |
employmentEligibilityMultiCountries | Multi Value | ES, IN | A dropdown that asks job seekers which countries they are eligible to work in. | Afghanistan |
idNumber | Numeric | BR, IT, TR, ZA | Asks job seekers to type in their ID Number. | Numeric value |
totalYearsOfExperience | Numeric | ID, IN | Asks job seekers about their years of experience. | 3 |
hobbiesAndInterests | Open text | CZ, HU, KR, LU, PL, RO | Asks job seekers about their hobbies and interests. | Open text |
Indeed resume position fields
| Field name | Type | Description | Example |
|---|---|---|---|
title | string | The title of the job. | Product Manager |
company | string | The company's name. | Indeed |
location | string | The location of the position. | Austin, TX |
description | string | The description of the position. | -------- |
startDateMonth | string | A string containing a number (1-12) representing the starting month. | "09" |
startDateYear | string | A string containing a number representing the year of the start date. | "2007" |
endDateMonth | string | A string containing a number (1-12) representing the ending month. | "09" |
endDateYear | string | A string containing a number representing the year of the end date. | "2007" |
endCurrent | boolean | A flag indicating if this is a current position. | true |
Indeed resume education fields
| Field name | Type | Description | Example |
|---|---|---|---|
degree | string | The degree level attained for this education listing. | B.A. |
field | string | The degree field studied for this education listing. | Computer Science |
school | string | The institution for this education listing. | University of Texas |
location | string | The institution location. | Austin, TX |
startDateMonth | string | A string containing a number (1-12) representing the starting month. | "09" |
startDateYear | string | A string containing a number representing the year of the start date. | "2007" |
endDateMonth | string | A string containing a number (1-12) representing the ending month. | "09" |
endDateYear | string | A string containing a number representing the year of the end date. | "2007" |
endCurrent | boolean | A flag indicating if this education is in progress. | true |
Indeed resume language fields
| Field name | Type | Description | Example |
|---|---|---|---|
language | string | A spoken, written, or signed language. | French |
proficiency | string | The level of proficiency in a spoken, written, or signed language. | Fluent |
Indeed resume link fields
| Field name | Type | Description | Example |
|---|---|---|---|
url | string | The URL of the link. | https://www.indeed.com (新しいウィンドウで開きます) |
Indeed resume award fields
| Field name | Type | Description | Example |
|---|---|---|---|
title | string | The title of this award. | Best PM at Indeed |
description | string | The description for this award. | Awarded for being the best PM in my company. |
dateMonth | string | A string containing a number (1-12) representing the month. | "09" |
dateYear | string | A string containing a number representing the year. | "2007" |
Indeed resume certification fields
| Field name | Type | Description | Example |
|---|---|---|---|
title | string | The title of this certification. | PMP |
description | string | The description of this certification. | Project Management Professional certification |
startDateMonth | string | A string containing a number (1-12) representing the starting month. | "09" |
startDateYear | string | A string containing a number representing the year of the start date. | "2007" |
endDateMonth | string | A string containing a number (1-12) representing the ending month. | "09" |
endDateYear | string | A string containing a number representing the year of the end date. | "2007" |
endCurrent | boolean | A flag indicating if this is a current certification. | true |
Indeed resume association groups fields
| Field name | Type | Description | Example |
|---|---|---|---|
title | string | The title of this association. | Society for Technical Communication |
description | string | A description of this association. | A professional association for technical communication professionals. |
startDateMonth | string | A string containing a number (1-12) representing the starting month. | "09" |
startDateYear | string | A string containing a number representing the year of the start date. | "2007" |
endDateMonth | string | A string containing a number (1-12) representing the ending month. | "09" |
endDateYear | string | A string containing a number representing the year of the end date. | "2007" |
endCurrent | boolean | A flag indicating if this is a current association. | true |
Indeed resume patent fields
| Field name | Type | Description | Example |
|---|---|---|---|
title | string | The title of this patent. | -------- |
description | string | The description of this patent. | -------- |
patentNumber | string | The patent number. | -------- |
url | string | The URL for this patent. | -------- |
dateMonth | string | A string containing a number (1-12) representing the month. | "09" |
dateYear | string | A string containing a number representing the year. | "2007" |
Indeed resume publication fields
| Field name | Type | Description | Example |
|---|---|---|---|
title | string | The title of this publication | -------- |
description | string | A description of this publication. | -------- |
url | string | A URL for this publication. | -------- |
dateDay | string | A string containing a number representing the day of the month. | "03" |
dateMonth | string | A string containing a number (1-12) representing the month. | "09" |
dateYear | string | A string containing a number representing the year. | "2007" |
Indeed resume military service fields
| Field name | Type | Description | Example |
|---|---|---|---|
serviceBranch | string | The service branch for this service entry. | -------- |
branch | string | The branch for this service entry. | -------- |
rank | string | The rank for this service entry. | -------- |
description | string | A description for this service entry. | -------- |
commendations | string | Any commendations earned for this service entry. | -------- |
startDateMonth | string | A string containing a number (1-12) representing the starting month. | "09" |
startDateYear | string | A string containing a number representing the year of the start date. | "2007" |
endDateMonth | string | A string containing a number (1-12) representing the ending month. | "09" |
endDateYear | string | A string containing a number representing the year of the end date. | "2007" |
endCurrent | boolean | A flag indicating if this is a current position. | true |
POST authenticity
The post request sent to your postUrl contains an HTTP header that can be used to verify the authenticity of the post. Using the shared API secret, Indeed Apply computes a message signature using the HMAC-SHA1 algorithm. This signature is sent as an X-Indeed-Signature HTTP header. The code examples below demonstrate how the message signature is generated.