- 求人情報連携APIワークフロー
- 求人情報連携APIリファレンス
- 認証
- 求人を作成する
- リクエスト – 求人を作成する
- レスポンス – 求人を作成する
- 審査用の質問付きで求人を作成する
- リクエスト – 審査用の質問付きで求人を作成する
- レスポンス – 審査用の質問付きで求人を作成する
- IDで求人ステータスを取得する
- IDで求人ステータスを取得するための認証
- リクエスト – IDで求人ステータスを取得する
- レスポンス – IDで求人ステータスを取得する
- 求人ステータス
- IDで求人一覧を取得する
- リクエスト – IDで求人一覧を取得する
- レスポンス – IDで求人一覧を取得する
- 求人を作成または更新する
- リクエスト – 求人を作成または更新する
- レスポンス – 求人を作成または更新する
- 求人を期限切れにする
- リクエスト – 求人を期限切れにする
- レスポンス – 求人を期限切れにする
- レート制限
- エラーをトラブルシューティングする
求人情報連携APIガイド
Indeedで求人を作成および管理します。
このAPIとそのドキュメントを使用して連携を構築すると、APIに関する追加の利用規約およびガイドラインに同意したことになります。
求人情報連携APIワークフロー
求人情報連携APIを使用して、Indeedで求人を作成および管理します。
求人情報連携APIと連携すると、次のことができます。
- 1.認証する。
- 2.求人を作成する。審査用の質問は含みません。
- 3.審査用の質問付きで求人を作成する。
- 4.IDで求人ステータスを取得する。
- 5.IDで求人一覧を取得する。
- 6.求人を作成または更新する。求人が存在する場合は更新し、存在しない場合は作成します。
- 7.求人を期限切れにする。
- 8.レート制限を確認する。
- 9.GraphQLエラーをトラブルシューティングする。
- 10.よくある質問を確認する。
求人情報連携APIリファレンス
jobsIngest.createSourcedJobPostings- Indeedで求人を作成、アップサート、または再有効化します。node- IDで求人ステータスを取得します。nodes- IDで求人一覧を取得します。jobsIngest.expireSourcedJobsBySourcedPostingId- 求人を期限切れにします。
認証
Indeed パートナーになると、Indeed が連携用のアプリを作成します。Partner Console にサインインして、アプリと OAuth 認証情報(クライアント ID、シークレット、および 3-legged OAuth の認可コード)を確認します。これらの認証情報をアクセストークンと交換し、API 呼び出しを認証します。
Indeedと連携してAPIを呼び出すをご覧ください。
求人情報連携APIの呼び出しは無料です。Sponsored Jobs API利用ポリシーの費用や制限には含まれません。
求人を作成する
Indeedに求人を作成します。
審査用の質問付きで求人を作成するには、審査用の質問付きで求人を作成するをご覧ください。
Indeedは、各地域の法規制とIndeedのポリシーに対応するため、国ごとに異なるフィールドを要 求することがあります。たとえば、米国で作成した求人は、日本で作成した求人とは異なる動作をすることがあります。国ごとに求人を作成し、その国の規制とIndeedのポリシーに従ってください。APIリファレンスでは、国固有の要件を説明しています。
複数の勤務地または言語がある求人を、固有の求人掲載に分割します。
- 職位と勤務地の組み合わせごとに、1件の求人を掲載します。
- 職位と言語の組み合わせごとに、1件の求人を掲載します。
これらの固有の求人は、同じurlとjobRequisitionIdを使用できますが、重複を避けるために一意のjobPostingIdが必要です。
日本の求人については、日本向け求人掲載ガイドラインと例をご覧ください。
この呼び出しのレート制限については、レート制限をご覧ください。
リクエスト – 求人を作成する
求人を作成するには、jobsIngest.createSourcedJobPostingsミューテーションを呼び出します。
jobPostingsフィールドで、求人タイトル、求人説明、勤務地、福利厚生、およびソース名を含む求人ソースの詳細を指定します。
CreateSourcedJobPostingInputでは、次のフィールドを定義します。
bodyフィールド
必須のbodyフィールドは、SourcedJobPostingBodyInput型で、求人説明を含みます。
デフォルトでは、Indeed は求人内容をプレーンテキストとして扱います。より豊富な書式を使用するには、求人内容を HTML で指定します。
Indeed はサポートされている HTML を正規化し、求職者向けに標準化された形式で表示します。次のガイドラインに従わない HTML は、拒否されたり正しく表示されなかったりする場合があります。
-
サポートされている HTML タグ と computed style nodes のみを使 用します。
-
HTML 内の引用符はエスケープします。
<font style=\"font-weight:bold\">Some bold text</font> -
<ではなく<などのリテラル文字を使用します。HTML entities を使用すると、拒否されたり正しく表示されなかったりする場合があります。
HTML 形式の求人内容を使用するには、SourcedJobPostingBodyInput で次のフィールドを設定します。
| フィールド | 型 | 説明 |
|---|---|---|
description | String! | 必須。求職者に表示される求人内容です。最大 65,000 バイトです(ASCII は 1 バイト、その他の文字は 2〜3 バイト)。 |
descriptionFormatting | SourcedJobPostingFormattingType! | 求人内容の形式です。 クライアントが求人一覧ページまたは求人詳細ページで HTML 形式を使用している場合、XML と API の求人でも、含められない合理的な理由がない限り、Indeed のポリシーでは通常 HTML が必要です。 HTML を使用すると、求人がクライアント側の表示にできるだけ近い形式で表示されます。書式が適切でない場合、クライアントや求職者から苦情が寄せられることがあります。 求人内容を HTML で指定するには、このフィールドを デフォルト: |
| フィールド | 型 | 説明 |
|---|---|---|
description | String | 必須。求人説明です。勤務時間、給与、適格条件、休日、その他の求人詳細を含めます。 求人説明はHTMLで指定します。 |
詳しくは、求人説明の書式をご覧ください。
metadataフィールド
必須のmetadataフィールドは、SourcedJobPostingMetadataInput!型で、求人メタデータを含みます。
| フィールド | 型 | 説明 |
|---|---|---|
jobPostingId | String | 必須。ATS内の求人IDです。次の要件が適用されます。
|
sourceName | String | 必須。
採用企業が、別々の担当者が管理する複数の求人グループを持つ場合は、各グループに一意の 求人の |
contactEmail | EmailAddress! | 必須。RFC 822形式の連絡先メールアドレスです。 |
contactPhone | PhoneNumber | 必須。クライアント連絡先の電話番号です。E.164形式で指定します。電話番号がE.164形式でない場合、APIは検証エラーを返します。 |
trackingUrl | WebUrl | この機能は日本では利用できません。 任意です。このURLは、誰かが求人を閲覧したときに外部分析ツールで求人閲覧を追跡します。 |
applyMethodフィールド
applyMethodフィールドは、SourcedJobPostingApplyMethodInput型で、求職者の応募方法を定義します。
このフィールドは、Indeed エントリーの審査用の質問付きで求人を作成する場合に必須です。それ以外の場合は任意です。審査用の質問のフィールドについては、審査用の質問フィールドをご覧ください。
-
jobRequisitionIdはスキーマ上では任意ですが、jobPostingIdと異なる場合、Indeed では必須です。日本の求人の場合: ID または
jobPostingIdと同じ値を設定します。 -
SourcedJobPostingJobContactInputの hiring manager と recruiter の値は、スキーマ上では任意ですが、取得できる場合は Indeed で必須です。
関連項目:
SourcedJobPostingMetadataInputのjobRequisitionIdとjobPostingIdSourcedJobPostingJobContactInput
APIは、SourcedJobPostingJobSourceInputのsourceNameフィールドとSourcedJobPostingMetadataInputのjobPostingIdフィールドから、先頭と末尾の空白を削除します。
その他のリクエストフィールドについては、createSourcedJobPostingsをご覧ください。
求人を作成します。
mutation { jobsIngest { createSourcedJobPostings(input: { jobPostings: [{ body: { title: "title 1" description: "description 1" location: { country: "US" cityRegionPostal: "Syracuse, New York 13209" } benefits: [] } metadata: { jobSource: { companyName: "Company" sourceName: "Source" sourceType: "Employer" } jobPostingId: "JobId1" datePublished: "2023-01-02T12:00Z" url: "http://example.com/careers/job1.html" contacts: [{ contactType: ["contact", "recruiter"] contactInfo: { contactEmail: "songdatadrop2@gmail.com" contactPhone: "+10001112223" contactName: "SL1" } }], trackingUrl: "https://www.example.com/" } }] }) { results { jobPosting { sourcedPostingId } } } }}mutation CreateJobPostingExample { jobsIngest { createSourcedJobPostings(input: { jobPostings: [{ body: { title: "Customer Support" description: "<h2 data-segment-type=\"header\" data-segment-label=\"WorkHours\">Working hours\n</h2><div data-segment-type=\"content\" data-segment-label=\"WorkHours\">8 working hours per day\n 5 working days per week</div>" descriptionFormatting: RICH_FORMATTING benefits: [] salary: { currency: "JPY" period: "HOUR" minimumMinor: 2000 fineGrainedSalaryInformation: { totalSalaryMinor: 2000 workingHours: 1 fixedOvertimePay: false } } hasProbationaryPeriod: NO location: { country: "JP" streetAddress: "108-0023 東京都港区芝浦3-1-21 田町ステーションタワーS18階" } } metadata: { jobSource: { companyName: "Sample Company" sourceName: "Sample Company" sourceType: "Employer" employerIds: [{ type: "YOUR EMPLOYER TYPE PROVIDED BY INDEED" id: "EmployerId1" }] } taxonomyClassification: { jobTypes: ["75GKK"] occupations: ["N3YNG"] attributes: ["7ADHN"] } jobPostingId: "YourJobId1" datePublished: "2023-01-01T12:34:56+09:00" url: "https://example.com/jobs/aaabbbccc" contacts: { contactType: "contact", contactInfo: { contactEmail: "contact@career.example.com" } }, trackingUrl: "https://www.example.com/" } applyMethod: { indeedApply: { postUrl: "https://example.com/applypost" apiToken: "API TOKEN HERE" } } }] }) { results { jobPosting { sourcedPostingId } } } }}レスポンス – 求人を作成する
成功したレスポンスでは、Indeedが各求人に対して一意のsourcedPostingIdを生成します。
{ "data": { "jobsIngest": { "createSourcedJobPostings": { "results": [ { "jobPosting": { "sourcedPostingId": "e29aaba8-2cef-447f-a1e0-bcb7ec3fa730", "employerJobId": "aXJpOi8vYXBpcy5pbmRlZWQuY29tL0VtcGxveWVySm9iL2UyOWFhYmE4LTJjZWYtNDQ3Zi1hMWUwLWJjYjdlYzNmYTczMA==" } } ] } } }}sourcedPostingIdの値は、APIが求人情報を受理するか拒否するかによって異なります。
-
APIが完全な求人情報を受理した場合、
sourcedPostingIdにはIndeedの採用企業求人IDが入ります。この値を使って求人を期限切れにしたり更新したりします。スパムチェックと不正チェックの後、Indeedは数分から数時間以内に求人をインデックス化し、Indeed上で利用可能にします。createSourcedJobPostingsミューテーションまたは XML フィードを通じて求人を作成した場合、その求人を期限切れにするには、お客様側で対応する必要があります。該当の求人は明示的に期限切れにする必要があります。他のユーザーが
updateSourcedJobPostingsミューテーションを呼び出した場合や、この求人の Indeed 求人詳細ページで Edit をクリックした場合でも、その求人は明示的に期限切れにする必要があります。関連項目:
-
データの欠落や形式不正が原因でAPIが求人情報を拒否した場合、
sourcedPostingIdはnullになり、APIは標準のGraphQLerrors配列でエラーを返します。
検証エラーをトラブルシューティングするには、GraphQLエラーをトラブルシューティングするをご覧ください。検証エラーの詳細については、GraphQLドキュメントのValidationをご覧ください。
sourcedPostingIdを使って、求人を期限切れにすることができます。
審査用の質問付きで求人を作成する
求人情報連携APIと連携すると、審査用の質問付きで求人を作成できます。
審査用の質問を使うと、採用企業は応募者が基準を満たしているかどうかをすばやく判断できます。審査用の質問を追加すると、採用企業は適格な候補者とのやり取りにより多くの時間を使えます。Indeedは審査用の質問をホストしません。お使いのシステムが審査用の質問をサポートしている場合は、Indeedが連携を承認するために実装する必要があります。
リクエスト – 審査用の質問付きで求人を作成する
Indeed エントリーの審査用の質問付きで求人を作成するには、jobsIngest.createSourcedJobPostingsを呼び出します。jobPostingsフィールドで、求人タイトル、求人説明、勤務地、福利厚生、およびソース名を含む求人ソースの詳細を指定します。
Indeedは、各地域の法規制とIndeedのポリシーに対応するため、国ごとに異なるフィールドを要求することがあります。国ごとに求人を作成し、その国の規制とIndeedのポリシーに従ってください。APIリファレンスでは、国固有の要件を説明しています。必須フィールドについては、createSourcedJobPostingsミューテーションフィールドをご覧ください。
Indeed エントリーフローで審査用の質問を表示するには、CreateSourcedJobPostingInputのapplyMethodフィールドも設定する必要があります。
次のいずれかの方法を使用します。
- 方法1
質問をJSONでフォーマットし、そのファイルをHTTPS URLでホストします。
各求人について、そのURLを
SourcedJobPostingIndeedApplyInput.applyQuestionsに設定します。ATSパートナー向けIndeed エントリー連携ガイド > Indeed エントリーの審査用の質問を追加するをご覧ください。
- 方法2
SourcedJobPostingIndeedApplyInput.applyQuestionsDetailsで審査用の質問スキーマを定義します。
applyMethodフィールドは、SourcedJobPostingApplyMethodInput型で、求職者の応募方法を定義します。このフィールドは、Indeed エントリーの審査用の質問付きで求人を作成する場合に必須です。それ以外の場合は任意です。
この表では、applyQuestions、applyQuestionsDetails、および関連フィールドを説明します。
| フィールド | 型 | 説明 |
|---|---|---|
applyQuestions | URI | 方法1を使用して審査用の質問付きで求人を作成する場合に必須です。 Indeed エントリーフロー用の、JSON形式の質問文字列を返すURLです。 |
applyQuestionsDetails | IndeedApplyQuestionsDetailsInput | 方法2を使用して審査用の質問付きで求人を作成する場合に必須です。 Indeed エントリーフロー用の審査用の質問スキーマです。 |
questions | IndeedApplyScreenerQuestionsDefinitionInput | V1.x標準に準拠した、Indeed エントリーフロー用の審査用の質問定義です。 |
screenerQuestions | [ScreenerQuestionBodyInput!]! | 職務経験、スキル、認定資格など、求人に関する一般的な質問です。 民族、性別、障害に関するデモグラフィック質問はここに含めないでください。それらは |
demographicQuestions | [DemographicQuestionsBodyInput!]! | 民族、性別、障害など、応募者の保護対象属性に関する質問です。 法域によっては、これらの質問が規制されています。Indeedのシステム、および場合によってはお客様のシステムでも、これらを別の方法で処理する必要があります。 デモグラフィック質問は、EEOコンプライアンスのため、米国求人に限定されます。 一般的な審査用の質問はここに含めないでください。それらは |
方法1の例です。applyQuestionsを使用してIndeed エントリーの審査用の質問を作成します。
mutation CreateSourcedJobPostings($companyName: String!$sourceName: String!$indeedApplyToken: ID!) { jobsIngest { createSourcedJobPostings(input: { jobPostings: [{ body: { title: "Software Engineer - All SQ and SQ types" description: "We are looking for a talented software engineer" descriptionFormatting: TEXT location: { latitude: 43.0729 longitude: -76.2161 country: "US" streetAddress: "123 Main St" cityRegionPostal: "Syracuse, New York 13209" } benefits: ["Health Insurance", "401k"] } metadata: { jobSource: { companyName: $companyName sourceName: $sourceName sourceType: "Employer" } jobPostingId: "JOB-12345" datePublished: "2023-01-01T12:00:00Z" url: "https://example.com/jobs/12345" contacts: [{ contactType: ["contact"] contactInfo: { contactEmail: "jobs@example.com" contactName: "HR Department" } }], visibility: { hideFromIndeedSearch: { reason: "OPT_OUT" } } trackingUrl: "https://www.example.com/" } applyMethod: { indeedApply: { postUrl: "https://example.com/apply" apiToken: $indeedApplyToken, resumeRequired: NO, applyQuestions: "https://your-webserver.com/job/questions/jb12345" } } }] }) { results { jobPosting { sourcedPostingId employerJobId } } } }}方法2の例です。applyQuestionsDetailsを使用してIndeed エントリーの審査用の質問を作成します。
mutation CreateSourcedJobPostings($companyName: String!$sourceName: String!$indeedApplyToken: ID!) { jobsIngest { createSourcedJobPostings(input: { jobPostings: [{ body: { title: "Software Engineer - All SQ and SQ types" description: "We are looking for a talented software engineer" descriptionFormatting: TEXT location: { latitude: 43.0729 longitude: -76.2161 country: "US" streetAddress: "123 Main St" cityRegionPostal: "Syracuse, New York 13209" } benefits: ["Health Insurance", "401k"] } metadata: { jobSource: { companyName: $companyName sourceName: $sourceName sourceType: "Employer" } jobPostingId: "JOB-12345" datePublished: "2023-01-01T12:00:00Z" url: "https://example.com/jobs/12345" contacts: [{ contactType: ["contact"] contactInfo: { contactEmail: "jobs@example.com" contactName: "HR Department" } }], visibility: { hideFromIndeedSearch: { reason: "OPT_OUT" } } trackingUrl: "https://www.example.com/" } applyMethod: { indeedApply: { postUrl: "https://example.com/apply" apiToken: $indeedApplyToken, resumeRequired: NO, applyQuestionsDetails: { questions: { screenerQuestions: [{ text: { integer: { questionInput: { id: "int1" question: "How many years of experience do you have?" minValue: 0 maxValue: 5 required: true, } } } } { text: { decimal: { questionInput: { id: "dec1" question: "What is your current hourly rate?" minValue: 10.0 maxValue: 120.0 required: false } qualification: { type: NON_BLOCKING range: { minValue: 15.0, maxValue: 100.0 } } } } } { text: { freeform: { id: "free1" question: "Briefly describe your relevant experience" maxCharCount: 500 required: true } } } { textarea: { id: "ta1" question: "Tell us about your most challenging project" maxCharCount: 2000 required: true } } { select: { questionInput: { id: "sel1" question: "What programming language are you most proficient in?" options: [{ value: "java", label: "Java" } { value: "python", label: "Python" } { value: "javascript", label: "JavaScript" } { value: "csharp", label: "C#" }] required: true } qualification: { type: NON_BLOCKING match: { values: ["java", "python"] } } } } { multiselect: { questionInput: { id: "multi1" question: "Which of the following technologies have you worked with?" options: [{ value: "react", label: "React" } { value: "angular", label: "Angular" } { value: "vue", label: "Vue" } { value: "svelte", label: "Svelte" }] required: true } qualification: { type: NON_BLOCKING match: { type: ANY, values: ["react", "angular"] } } } } { date: { questionInput: { id: "date1" question: "When can you start?" format: "MM-dd-yyyy" minDate: "2025-02-01T00:00:00Z" maxDate: "2025-12-31T00:00:00Z" required: true } qualification: { type: NON_BLOCKING range: { minValue: "2025-02-15T00:00:00Z" maxValue: "2025-12-31T00:00:00Z" } } } } { file: { id: "file1" question: "Please upload a sample of your work" format: ["pdf", "doc", "docx"] required: true, min: 1 } } { information: { id: "info1" text: "<p>Please note that all candidates must complete a coding assessment as part of the interview process.</p>" } } { pageBreak: { id: "page1" } } { hierarchical: { id: "hier1" question: "Select your location" options: [{ value: "us", label: "United States" } { value: "ca", label: "Canada" } { value: "uk", label: "United Kingdom" }] hierarchicalOptions: [{ id: "states" condition: { id: "hier1", values: ["us"] } options: [{ value: "ny", label: "New York" }, { value: "ca", label: "California" }] } { id: "provinces" condition: { id: "hier1", values: ["ca"] } options: [{ value: "on", label: "Ontario" }, { value: "bc", label: "British Columbia" }] }] required: true } }] demographicQuestions: [{ textarea: { id: "demo_ta1" question: "Please describe any accommodations you may need" maxCharCount: 1000 required: false } } { text: { freeform: { id: "demo_free1" question: "How did you hear about this position?" maxCharCount: 200 required: false } } } { text: { integer: { id: "demo_int1" question: "How many dependents do you have?" minValue: 0 maxValue: 20 required: false } } } { text: { decimal: { id: "demo_dec1" question: "What is your desired salary?" minValue: 30000.0 maxValue: 200000.0 required: false } } } { text: { numeric: { id: "demo_num1" question: "What is your zip code?" required: false } } } { select: { id: "demo_sel1" question: "What is your gender?" options: [{ value: "male", label: "Male" } { value: "female", label: "Female" } { value: "non-binary", label: "Non-binary" } { value: "prefer-not", label: "Prefer not to say" }] required: false } } { multiselect: { id: "demo_multi1" question: "Which of the following describe your ethnicity? (Select all that apply)" options: [{ value: "hispanic", label: "Hispanic or Latino" } { value: "white", label: "White" } { value: "black", label: "Black or African American" } { value: "asian", label: "Asian" } { value: "native" label: "Native American or Alaska Native" } { value: "pacific" label: "Native Hawaiian or Pacific Islander" } { value: "prefer-not", label: "Prefer not to say" }] required: false } } { date: { id: "demo_date1" question: "What is your date of birth?" format: "MM/dd/yyyy" required: false } } { information: { id: "demo_info1" text: "<p>The following questions are for Equal Employment Opportunity purposes only and do not affect your application status.</p>" } } { pageBreak: { id: "demo_page1" } }] } } } } }] }) { results { jobPosting { sourcedPostingId employerJobId } } } }}レスポンス – 審査用の質問付きで求人を作成する
レスポンス例については、レスポンス - 求人を作成するをご覧ください。
IDで求人ステータスを取得する
IDで求人のステータスを取得します。
IDで求人ステータスを取得するための認証
次のいずれかのトークンタイプを使用します。
| トークンタイプ | 説明 |
|---|---|
| 3-legged access token(ATS連携) | ユーザーがサインアウトしている場合、またはトークンの有効期限が切れている場合は、求人ステータスの代わりにLog in with Indeedボタンを表示します。 サインイン後、3-leggedトークンを取得します。認可コードを受け取るエンドポイントを登録してください。 |
| 広告主を指定した2-legged access token(直接採用企業 / 代理店連携) | このトークンタイプを使用できるのは、直接採用企業および代理店の連携のみです。広告主と連携の所有者が同一であるためです。 2-legged OAuthでSponsored Jobs APIを利用している代理店は、すでにこのトークンタイプを持っています。 |
2-leggedトークンと3-leggedトークンに必要なスコープ:
employer_accessemployer.hosted_job
3-leggedトークンで推奨されるスコープ:
offline_access(ステータス確認時の再サインインを減らします)
トークンは安全に保管し、ユーザー間で共有しないでください。あるユーザーが投稿した求人に別のユーザーのトークンを使うと、別ユーザーがその求人にアクセスできる可能性があります。
ス コープの詳細は、スコープをご覧ください。
各3-leggedトークンは、認可を付与したユーザーに紐付きます。そのユーザーが要求先の広告主アカウントまたは採用企業アカウントに紐付いていない場合、リクエストはFORBIDDENを返します。
トークンを取得したら、クエリに含めてください。
更新ルール:
- 2-leggedトークンは更新できません。新しいトークンをリクエストしてください。
- 3-leggedトークンは、初回認可で
offline_accessをリクエストした場合のみ更新できます。 offline_accessを含む3-leggedトークンは、有効期限前に更新すると再サインインを減らせます。
リクエスト – IDで求人ステータスを取得する
IDで求人ステータスを取得するには、OAuthトークンを使ってnodeクエリを呼び出します。
nodeはidを受け取ります。これはBase64エンコードされたIRI形式の採用企業求人IDです。createSourcedJobPostingsが返すemployerJobIdを使います。
query { node(id: "aXJpOi8vYXBpcy5pbmRlZWQuY29tL0VtcGxveWVySm9iLzkxZGU0ZjVhLWE1MWYtNGQ1Ni1iOWI0LWNhMDQzZWVjNDAzMQ==" ) { ...on EmployerJob { id jobData { title datePostedOnIndeed dateCreated description company jobLocation { countryCode city postalCode fullAddress } externalJobPageUrl externalPostingMetadata { jobPostingId jobRequisitionId campaignCategories trackingUrls isIntegratedJob } } managementUrls { viewJob } seatsConnection { pageInfo { endCursor hasNextPage hasPreviousPage startCursor } seats { jobPost { id externalPartnerCallToAction(input: { locale: "en-us" }) { imageAltText imageUrl } status { globalStatus { lifecycleStatus isIndeedApplyActive } surfaceStatuses { isRejected isSponsorshipRequired isMissingRequiredSponsorship } } } } } } }}レスポンス – IDで求人ステータスを取得する
nodeは、指定した採用企業求人IDのEmployerJobオブジェクトを返します。このオブジェクトはNodeインターフェースを実装します。
このクエリは1件の結果を返すため、カーソルは同一で、次ページも前ページもありません。
{ "data": { "node": { "id": "aXJpOi8vYXBpcy5pbmRlZWQuY29tL0VtcGxveWVySm9iLzkxZGU0ZjVhLWE1MWYtNGQ1Ni1iOWI0LWNhMDQzZWVjNDAzMQ==", "jobData": { "title": "Certified Nursing Assistant CNA", "datePostedOnIndeed": "2022-03-22T20:33:28Z", "dateCreated": "2022-03-22T20:33:28Z", "description": "Anytown Health and Rehabilitation Center in Anytown, USA is a 186-bed center offering a variety of individualized, health care services for our patients and residents. We are seeking a qualified and committed team member to join our team.", "company": "Anytown Health and Rehabilitation Center", "jobLocation": { "countryCode": "US", "city": "Cambridge", "postalCode": null, "fullAddress": null }, "externalJobPageUrl": "http://www.indeed.com/job/certified-nursing-assistant-cna-9354ed892ad3a1b6", "externalPostingMetadata": { "jobPostingId": "CBA-Anytown-Posting-Id", "jobRequisitionId": "CBA-Anytown-Req-Id", "campaignCategories": [], "trackingUrls": [], "isIntegratedJob": false } }, "managementUrls": { "viewJob": "https://employers.indeed.com/jobs/view?employerJobId=aXJpOi8vYXBpcy5pbmRlZWQuY29tL0VtcGxveWVySm9iLzkxZGU0ZjVhLWE1MWYtNGQ1Ni1iOWI0LWNhMDQzZWVjNDAzMQ==" }, "seatsConnection": { "pageInfo": { "endCursor": "YVhKcE9pOHZZWEJwY3k1cGJtUmxaV1F1WTI5dEwwcHZZbEJ2YzNRdk5EQXhOVFkxTW1OaFpEYzJZVFF4TlE9PQ==", "hasNextPage": false, "hasPreviousPage": false, "startCursor": "YVhKcE9pOHZZWEJwY3k1cGJtUmxaV1F1WTI5dEwwcHZZbEJ2YzNRdk5EQXhOVFkxTW1OaFpEYzJZVFF4TlE9PQ==" }, "seats": [ { "jobPost": { "id": "aXJpOi8vYXBpcy5pbmRlZWQuY29tL0pvYlBvc3QvNDAxNTY1MmNhZDc2YTQxNQ==", "externalPartnerCallToAction": [ { "imageUrl": "https://dlogqfjusi9uq.cloudfront.net/cta/en_US/not_searchable.svg", "imageAltText": "Update needed on Indeed" } ], "status": { "globalStatus": [ { "lifecycleStatus": "INACTIVE", "isIndeedApplyActive": false } ], "surfaceStatuses": [ { "isRejected": false, "isSponsorshipRequired": false, "isMissingRequiredSponsorship": false } ] } } } ] } } }}EmployerJobには、次のフィールドが含まれます。
| フィールド | 説明 |
|---|---|
id型: ID! | Employer Job ID(EJID)です。これはIndeed Resource Identifier(IRI)形式のsourcedPostingIdをエンコードした値です。この値を使って、求人を期限切れにする、求人を更新する、または求人を作成または更新することができます。 |
jobData型: EmployerJobData | 求人データを含みます。
|
managementUrls.viewJob型: WebUrl! | Indeed上の採用企業向け求人詳細ページのURLです。このページでは、ユーザーはモデレーション情報を含む求人詳細を確認し、その求人が候補者にどのように表示されるかを確認できます。 |
seatsConnection型: EmployerJobSeatsConnection | 求人シートのページネーション付き一覧です。求人シートには、勤務地、スケジュール、報酬の詳細が含まれます。求人には0件以上のシートを含めることができ、各シートは1つの求人に対応します。 |
globalStatus.lifecycleStatus型: JobPostLifecycleStatus |
|
globalStatus.isIndeedApplyActive型: Boolean! | その求人でIndeed エントリーが有効かどうかを示します。 |
求人ステータス
Indeedの求人管理ページへのリンクとしてIndeedの求人ステータスを表示します。ユーザーが画像をクリックすると、Indeedでさらに詳しい情報を確認できます。
-
コールトゥアクション画像を取得するには、
seats.jobPostの下にあるexternalPartnerCallToActionサブクエリを呼び出します。サポートされているロケールを指定してください。localeではフォールバックロジックが使われます。fr_CHをリクエストしてそのロケールがサポートされていない場合は、frにフォールバックします。一致するロケールがない場合のデフォルトは
en_USです。このクエリは、次の求人ステータス画像のいずれかに対応する
imageUrlを返します。求人ステータス 画像 説明 求人はIndeedで公開中です。
求人は検索結果に表示されます。
求人はIndeedで期限切れです。
求人は検索結果に表示されません。
求人はIndeedでスポンサーシップが必要です。
求人は検索結果に表示されません。
その求人のステータスはIndeedで不明です。
Indeedで求人が見つからないか、ユーザーアカウントにその求人へのアクセス権がありません。
注:
APIは
not_found.svg画像を返しません。コールトゥアクション画像は求人データの一部であるため、求人が見つからない場合はこの画像を返せません。ただし、ATSは必要に応じてこの画像を使用できます。求人を検索結果に表示するには、Indeedで更新が必要です。
-
ユーザーの求人詳細ページのURLを取得するには、
managementUrls.viewJobをクエリします。 -
コールトゥアクション画像を、クリック可能なリンクとして求人詳細ページに埋め込みます。
-
ユーザーがページを開いたときに、求人ステータスを更新します。
よくある質問 >求人の表示状態をご覧ください。
ATSでの求人ステータス表示例です。
求人詳細ページ(Indeedにサインイン済み)

求人一覧ページ(Indeedにサインイン済み)

IDで求人一覧を取得する
複数の求人の詳細を表示します。認証については、IDで求人ステータスを取得するための認証をご覧ください。
リクエスト – IDで求人一覧を取得する
nodesは複数のIDを受け取ります。idsには、IRI形式の採用企業求人IDの配列を指定します。
query { nodes(ids: [ "aXJpOi8vYXBpcy5pbmRlZWQuY29tL0VtcGxveWVySm9iLzkxZGU0ZjVhLWE1MWYtNGQ1Ni1iOWI0LWNhMDQzZWVjNDAzMQ==" ]) { ...on EmployerJob { id jobData { title datePostedOnIndeed dateCreated description company jobLocation { countryCode city postalCode fullAddress } externalJobPageUrl externalPostingMetadata { jobPostingId jobRequisitionId campaignCategories trackingUrls isIntegratedJob } } managementUrls { viewJob } seatsConnection { pageInfo { endCursor hasNextPage hasPreviousPage startCursor } seats { jobPost { id externalPartnerCallToAction(input: { locale: "en-us" }) { imageAltText imageUrl } status { globalStatus { lifecycleStatus isIndeedApplyActive } surfaceStatuses { isRejected isSponsorshipRequired isMissingRequiredSponsorship } } } } } } }}レスポンス – IDで求人一覧を取得する
EmployerJobの配列を返します。詳細は、レスポンス – IDで求人ステータスを取得するの表をご覧ください。
{ "data": { "nodes": [{ "id": "aXJpOi8vYXBpcy5pbmRlZWQuY29tL0VtcGxveWVySm9iLzkxZGU0ZjVhLWE1MWYtNGQ1Ni1iOWI0LWNhMDQzZWVjNDAzMQ==", "jobData": { "title": "Certified Nursing Assistant CNA", "datePostedOnIndeed": "2022-03-22T20:33:28Z", "dateCreated": "2022-03-22T20:33:28Z", "description": "Anytown Health and Rehabilitation Center in Anytown, USA is a 186-bed center offering a variety of individualized, health care services for our patients and residents. We are seeking a qualified and committed team member to join our team.", "company": "Anytown Health and Rehabilitation Center", "jobLocation": { "countryCode": "US", "city": "Cambridge", "postalCode": null, "fullAddress": null }, "externalJobPageUrl": "http://www.indeed.com/job/certified-nursing-assistant-cna-9354ed892ad3a1b6", "externalPostingMetadata": { "jobPostingId": "CBA-Anytown-Posting-Id", "jobRequisitionId": "CBA-Anytown-Req-Id", "campaignCategories": [], "trackingUrls": [], "isIntegratedJob": false } }, "managementUrls": { "viewJob": "https://employers.indeed.com/jobs/view?employerJobId=aXJpOi8vYXBpcy5pbmRlZWQuY29tL0VtcGxveWVySm9iLzkxZGU0ZjVhLWE1MWYtNGQ1Ni1iOWI0LWNhMDQzZWVjNDAzMQ==" }, "seatsConnection": { "pageInfo": { "endCursor": "YVhKcE9pOHZZWEJwY3k1cGJtUmxaV1F1WTI5dEwwcHZZbEJ2YzNRdk5EQXhOVFkxTW1OaFpEYzJZVFF4TlE9PQ==", "hasNextPage": false, "hasPreviousPage": false, "startCursor": "YVhKcE9pOHZZWEJwY3k1cGJtUmxaV1F1WTI5dEwwcHZZbEJ2YzNRdk5EQXhOVFkxTW1OaFpEYzJZVFF4TlE9PQ==" }, "seats": [{ "jobPost": { "id": "aXJpOi8vYXBpcy5pbmRlZWQuY29tL0pvYlBvc3QvNDAxNTY1MmNhZDc2YTQxNQ==", "externalPartnerCallToAction": [{ "imageUrl": "https://dlogqfjusi9uq.cloudfront.net/cta/en_US/not_searchable.svg", "imageAltText": "Update needed on Indeed" }], "status": { "globalStatus": [{ "lifecycleStatus": "INACTIVE", "isIndeedApplyActive": false }], "surfaceStatuses": [{ "isRejected": false, "isSponsorshipRequired": false, "isMissingRequiredSponsorship": false }] } } }] } }, { "id": "aXJpOi8vYXBpcy5pbmRlZWQuY29tL0VtcGxveWVySm9iLzkxZGU0ZjVhLWE1MWYtNGQ1Ni1iOWI0LWNhMDQzZWVjNDAzMZ==", ... }] }}ユーザーがATSでIndeedの求人情報を確認する場合は、Indeedの求人管理ページへのリンク付きでIndeedの求人ステータスを表示できます。詳細については、求人ステータスをご覧ください。
求人を作成または更新する
- 自社がIndeedに送信した求人は、upsertします。
- 別のパートナーが送信した求人は、updateします。updateは主に広告代理店向けです。
日本のみ:広告代理店およびIndeed PLUSパブリッシャーネットワークのパートナーを除き、すべてのパートナーが求人をupdateできます。
関連項目:
IndeedとIndeed PLUS配信ネットワークで求人をアップサートします。
アップサートでは、求人が存在する場合は更新し、存在しない場合は作成します。
値を変更しない場合でも、必須の求人フィールドはすべて指定してください。
この呼び出しのレート制限については、レート制限をご覧ください。
リクエスト – 求人を作成または更新する
求人を作成または更新するには、求人を作成する場合と同様にjobsIngest.createSourcedJobPostingsを呼び出します。
求人を作成または更新する例
この例では、単一フィードクライアント向けの米国求人を作成または更新します。求人を作成すると同じ例を使用していますが、titleフィールドとdescriptionフィールドを更新しています。
求人を作成したときに使用したjobPostingId、sourceName、およびOAuthクライアントIDと同じ値を使用してください。
変更しないフィールドであっても、必須フィールドはすべて指定してください。APIは、求人作成時にIndeedが生成したものと同じ一意のsourcedPostingIdを返します。
mutation { jobsIngest { createSourcedJobPostings(input: { jobPostings: [{ body: { title: "Updated job title" description: "Updated job description" location: { country: "US" cityRegionPostal: "Syracuse, New York 13209" } benefits: [] } metadata: { jobSource: { companyName: "Company" sourceName: "Source" sourceType: "Employer" } jobPostingId: "JobId1" datePublished: "2023-01-02T12:00Z" url: "http://example.com/careers/job1.html" contacts: [{ contactType: ["contact", "recruiter"] contactInfo: { contactEmail: "songdatadrop2@gmail.com" contactPhone: "+10001112223" contactName: "SL1" } }] } }] }) { results { jobPosting { sourcedPostingId } } } }}レスポンス – 求人を作成または更新する
このミューテーションは、求人作成時にIndeedが生成したものと同じsourcedPostingIdを返します。この値はIndeedの採用企業求人IDで、求人を期限切れにしたり更新したりするときに使用します。
求人を期限切れにする
IndeedとIndeed PLUSパブリッシングネットワークから求人を削除します。
Job Sync API は求人を自動的には期限切れにしません。貴社の採用ページから削除した求人は、Job Sync API を明示的に呼び出して期限切れにする必要があります。
Indeedは、求人情報連携APIを通じて送信した求人を自動では期限切れにしません。
ATSが求人の作成と期限切れを制御します。キャリアページから求人を削除する場合は、その求人を期限切れにするために 求人情報連携APIを明示的に呼び出す必要があります。
createSourcedJobPostings ミューテーションまたは XML フィードを通じて求人を作成した場合、その求人を期限切れにするには、お客様側で対応する必要があります。該当の求人は明示的に期限切れにする必要があります。
他のユーザーが updateSourcedJobPostings ミューテーションを呼び出した場合や、この求人の Indeed 求人詳細ページで Edit をクリックした場合でも、その求人は明示的に期限切れにする必要があります。
関連項目:
期限切れになった求人を再有効化するには、アクティブな求人を更新する場合と同様に、期限切れになった求人のjobPostingIdとsourceNameを使ってjobsIngest.createSourcedJobPostingsを呼び出します。
ATSがその求人を再有効化した日付を定義するには、datePublishedフィールドの値を更新します。
期限切れになった求人は、期限切れ後30日間再有効化できます。
30日後、Indeedはその求人の統計情報と設定をアーカイブすることがあります。30日後に再有効化した場合、Indeedは通常、新しいsourcedPostingIdを返します。そのため、コードが同じ値と新しい値の両方に対応できることを確認してください。
sourcedPostingIdの値は必ず保存してください。求人を期限切れにする場合も、期限切れになった求人を再有効化する場合も必要です。
リクエスト – 求人を期限切れにする
求人を期限切れにするには、jobsIngest.expireSourcedJobsBySourcedPostingIdをsourcedPostingIdとともに呼び出します。これは求人のIndeedの採用企業求人IDに設定します。
求人を期限切れにする例
この例では、単一フィードクライアントの求人を期限切れにします。
mutation { jobsIngest { expireSourcedJobsBySourcedPostingId(input: { jobs: [{ sourcedPostingId: "123" }, { sourcedPostingId: "456" }] }) { results { trackingKey } } }}レスポンス – 求人を期限切れにする
Indeedは、応答前に求人が存在するかどうかを確認しません。レスポンスは常にACCEPTEDです。
レスポンスには追跡IDが表示されます。
{ "data": { "jobsIngest": { "expireSourcedJobsBySourcedPostingId": { "results": [ { "trackingKey": "1h958ob2601bv800" } ] } } }}指定した各sourcedPostingIdに対して、APIはExpireSourcedJobResultオブジェクトを返します。このオブジェクトには、次のフィールドが含まれます。
| 項目 | 説明 |
|---|---|
trackingKey型: String! | Indeedからの追跡IDです。 |
inputData型: ExpireSourcedJobResultInfo | 一意の求人IDを含むunion型です。 |
APIは、無効なリクエストやバックエンド障害など、期限切れ処理の失敗に対してエラーを返すこともあります。お客様のシステムでこれらのエラーレスポンスをログに記録しておくと、Indeed側で発生した失敗の種類を特定できます。APIは標準のGraphQL errors配列でエラーを返します。検証エラーの詳細については、GraphQLドキュメントのValidationをご覧ください。
レート制限
求人情報連携APIは、求人を作成する場合と求人を作成または更新する場合のjobsIngest.createSourcedJobPostingsの呼び出し、および求人を期限切れにするjobsIngest.expireSourcedJobsBySourcedPostingIdの呼び出しにレート制限を適用します。
これらの制限は、APIの可用性を維持します。Indeedはこれらの制限を通常の1日あたりの使用量より高く設定していますが、短期間に大量のリクエストがある場合はスロットリングします。制限を超えないように、リクエストを10分間に分散してください。
制限を超えると、APIはextensions.codeがSUBREQUEST_HTTP_ERRORに設定されたGraphQLエラーと、HTTPステータス429を返します。
制限はリクエストサイズによって異なります。
| リクエストサイズ | レート制限 |
|---|---|
| 1件の求人または期限切れ処理を含む小規模リクエスト |
|
| 2件から10件の求人または期限切れ処理を含む中規模リクエスト |
|
| 10件を超える求人または期限切れ処理を含む大規模リクエスト |
|
関連情報:
エラーをトラブルシューティングする
求人情報連携API固有のエラーについては、エラーをトラブルシューティングするをご覧ください。
GraphQLにアクセスする前に発生するOAuthエラーをトラブルシューティングするには、OAuthエラーをトラブル シューティングするをご覧ください。
求人がIndeedに表示されない一般的な原因については、よくある質問をご覧ください。