求人情報連携APIガイド
Indeedで求人を作成および管理します。
このAPIとそのドキュメントを使用して連携を構築すると、APIに関する追加の利用規約およびガイドラインに同意したことになります。
APIの概要
求人情報連携APIを使用して、Indeedで求人を作成および管理します。呼び出しは無料で、Sponsored Jobs API利用ポリシーの制限には含まれません。
APIの手順
求人情報連携APIと連携すると、次の呼び出しで求人を作成および管理できます。
1. 認証する
Indeed パートナーになると、Indeed が連携用のアプリを作成します。Partner Console (新しいウィンドウで開きます) にサインインして、アプリと OAuth 認証情報(クライアント ID、シークレット、および 3-legged OAuth の認可コード)を確認します。これらの認証情報をアクセストークンと交換し、API 呼び出しを認証します。
2. 求人を作成する
Indeedに求人を作成します。
審査用の質問付きで求人を作成するには、審査用の質問付きで求人を作成するをご覧ください。
必須フィールドは、各地域の法規制とIndeedのポリシーに対応するため、国ごとに異なります。そのため、米国で作成した求人は、日本で作成した求人とは異なる動作をすることがあります。APIリファレンスでは、国固有の要件を説明しています。
職位と勤務地、および職位と言語の組み合わせごとに、個別の求人を掲載します。これらの求人は同じurlとjobRequisitionIdを使用できますが、Indeedが重複として扱わないように、それぞれ一意の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 で指定するには、このフィールドを デフォルト: |
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型で、求職者の応募方法を定義します。審査用の質問付きの求人の場合にのみ必須です。審査用の質問のフィールドについては、審査用の質問フィールドをご覧ください。
-
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: "contact@career.example.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を使って、求人を期限切れにすることができます。
3. 審査用の質問付きで求人を作成する
審査用の質問を使うと、採用企業は基準を満たす応募者を特定し、適格な候補者とのやり取りにより多くの時間を使えます。Indeedは審査用の質問をホストしません。お使いのシステムが審査用の質問をサポートしている場合は、Indeedが連携を承認するために実装する必要があります。
リクエスト – 審査用の質問付きで求人を作成する
Indeed エントリーの審査用の質問付きで求人を作成するには、jobsIngest.createSourcedJobPostingsを呼び出します。jobPostingsフィールドで、求人タイトル、求人説明、勤務地、福利厚生、およびソース名を含む求人ソースの詳細を指定します。
必須フィールドは、各地域の法規制とIndeedのポリシーに対応するため、国ごとに異なります。これらのフィールドと国固有の要件については、createSourcedJobPostingsミューテーションフィールドをご覧ください。
Indeed エントリーフローで審査用の質問を表示するには、CreateSourcedJobPostingInputのapplyMethodフィールドも設定する必要があります。このフィールドはSourcedJobPostingApplyMethodInput型で、求職者の応募方法を定義し、審査用の質問付きの求人では必須です。
次のいずれかの方法を使用します。
- 方法1
質問をJSONでフォーマットし、そのファイルをHTTPS URLでホストします。
各求人について、そのURLを
SourcedJobPostingIndeedApplyInput.applyQuestionsに設定します。ATSパートナー向けIndeed エントリー連携ガイド > Indeed エントリーの審査用の質問を追加するをご覧ください。
- 方法2
SourcedJobPostingIndeedApplyInput.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 } } } }}レスポンス – 審査用の質問付きで求人を作成する
レスポンス例については、レスポンス - 求人を作成するをご覧ください。
4. IDで求人ステータスを取得する
IDで求人のステータスを取得します。
IDで求人ステータスを取得するための認証
次のいずれかのトークンタイプを使用します。
| トークンタイプ | 説明 |
|---|---|
| 3-legged access token(ATS連携) | ユーザーがサインアウトしている場合、またはトークンの有効期限が切れている場合は、求人ステータスの代わりにLog in with Indeedボタンを表示します。 サインイン後、3-leggedトークンを取得します。認可コードを受け取るエンドポイントを登録してください。 |
| 広告主を指定した2-legged access token(直接採用企業 / 代理店連 携) | このトークンタイプを使用できるのは、直接採用企業および代理店の連携のみです。広告主と連携の所有者が同一であるためです。 2-legged OAuthでSponsored Jobs APIを利用している代理店は、すでにこのトークンタイプを持っています。 |
どちらのトークンタイプにも、employer_accessスコープとemployer.hosted_jobスコープが必要です。3-leggedトークンでは、ステータス確認時の再サインインを減らすためにoffline_accessもリクエストしてください。スコープの詳細は、スコープをご覧ください。
3-leggedトークンは、認可を付与したユーザーに紐付きます。そのユーザーが要求先の広告主アカウントまたは採用企業アカウントに紐付いていない場合、リクエストはFORBIDDENを返します。トークンは安全に保管し、あるユーザーのトークンを別のユーザーの求人に再利用しないでください。再利用すると、その求人が意図しないユーザーに開示される可能性があります。
2-leggedトークンは更新できないため、有効期限が切れたら新しいトークンをリクエストしてください。3-leggedトークンは、初回認可でoffline_accessをリクエストした場合のみ更新できます。再サインインを減らすため、有効期限前に更新してください。
トークンを取得したら、クエリに含めてください。
リクエスト – 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の求人ステータスを表示します。ユーザーはそのページでさらに詳しい情報を確認できます。
-
コールトゥアクション画像を取得するには、
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にサインイン済み)

5. IDで求人一覧を取得する
複数の求人の詳細を表示します。認証については、IDで求人ステータスを取得するための認証をご覧ください。
リクエスト – IDで求人一覧を取得する
nodesはidsに、Base64エンコードされたIRI形式の採用企業求人IDの配列を受け取ります。createSourcedJobPostingsが返すemployerJobIdの値を使用してください。
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オブジェクトの配列を返します。各フィールドの説明は、レスポンスフィールドの表をご覧ください。
{ "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の求人ステータスを表示するには、求人ステータスをご覧ください。
6. 求人を作成または更新する
- 自社がIndeedに送信した求人は、upsertします。
- 別のパートナーが送信した求人は、updateします。updateは主に広告代理店向けです。
日本のみ:広告代理店およびIndeed PLUSパブリッシャーネットワークのパートナーを除き、すべてのパートナーが求人をupdateできます。
関連項目:
IndeedとIndeed PLUS配信ネットワークで求人をアップサートします。アップサートでは、求人が存在する場合は更新し、存在しない場合は作成します。値を変更しない場合でも、必須の求人フィールドはすべて指定してください。
この呼び出しの制限については、レート制限をご覧ください。
リクエスト – 求人を作成または更新する
求人を作成または更新するには、求人を作成する場合と同様にjobsIngest.createSourcedJobPostingsを呼び出します。
求人を作成または更新する例
この例では、米国の求人を作成または更新します。求人を作成するの例を、新しいtitleとdescriptionで繰り返しています。
求人を作成したときに使用したjobPostingId、sourceName、およびOAuthクライアントIDと同じ値を使用してください。
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: "contact@career.example.com" contactPhone: "+10001112223" contactName: "SL1" } }] } }] }) { results { jobPosting { sourcedPostingId } } } }}レスポンス – 求人を作成または更新する
このミューテーションは、求人作成時にIndeedが生成したものと同じsourcedPostingIdを返します。この値はIndeedの採用企業求人IDで、求人を期限切れにしたり更新したりするときに使用します。