- Job Update API のワークフロー
- Job Update API リファレンス
- 認証
- 求人を更新する
- ワークフロー
- リクエスト – 求人を更新する
- 更新内容を確認する
- 部分的な更新
- レスポンス – 求人を更新する
- 求人情報を取得するクエリ方法を選択する
- ID で求人ステータスを取得する
- 認証
- 単一求人のクエリ (node)
- 複数求人のクエリ (nodes)
- Webhook を使用する
- 条件で求人を一覧表示する
- 求人の更新をクリアする
- ワークフロー
- リクエスト – 求人の更新をクリアする
- レスポンス – 求人の更新をクリアする
- 求人ステータス
- スポンサーなしのオーガニック求人
- スポンサー求人
- レート制限
- エラーのトラブルシューティング
- FORBIDDEN: Advertiser is in a restricted moderation status
- FORBIDDEN: You are missing permissions for this action
- FORBIDDEN: Advertiser is requesting an update to EJ
- UNAUTHENTICATED
- BAD_USER_INPUT
- NOT_FOUND
- DOWNSTREAM_SERVICE_ERROR または INTERNAL_SERVER_ERROR
- よくある質問
Job Update API ガイド
Indeed 上の求人の更新、更新のクリア、詳細の取得、一覧表示を行います。
このAPIとそのドキュメントを使用して連携を構築すると、APIに関する追加の利用規約およびガイドラインに同意したことになります。
Job Update API のワークフロー
Job Update API を使用して、Indeed 上の求人の更新、更新のクリア、求人の詳細の取得、求人の一覧表示を行います。これらの呼び出しは無料で、Sponsored Jobs API usage policy の上限にはカウントされません。
- 1.開始前に確認する - single-source policy に基づき、雇用主の求人の正しい情報源は ATS です。
- 2.認証する。
- 3.求人を更新する -
updateSourcedJobPostingsを使用して、サポートされている求人フィールドを更新します。 - 4.クエリ方法を選択する。
- 5.ID で求人ステータスを取得する - 求人 IRI がある場合は、
nodeクエリまたはnodesクエリを使用します。 - 6.条件で求人を一覧表示する - 一括取得には
findEmployerJobsPartnerを使用します。 - 7.求人の更新をクリアする -
clearSourcedJobPostingUpdatesを使用して更新を削除します。 - 8.求人ステータスを確認する。
- 9.レート制限を確認する。
- 10.GraphQL エラーをトラブルシューティングする。
- 11.よくある質問を読む - Job Update API に関するよくある質問の答えを確認します。
Job Update API リファレンス
updateSourcedJobPostings- サポートされている求人フィールドを更新します。node- ID で 1 件の求人を取得します。nodes- ID で複数の求人を取得します。findEmployerJobsPartner- 雇用主の求人を一覧表示します。clearSourcedJobPostingUpdates- 求人の更新をクリアします。
求人の作成と期限切れは ATS が管理します。
認証
Indeed パートナーになると、Indeed が連携用のアプリを作成します。Partner Console にサインインして、アプリと OAuth 認証情報(クライアント ID、クライアントシークレット、および 3-legged OAuth の場合は認可コード)を確認します。認証情報をアクセストークンと交換し、API 呼び出しを認証します。
設定の詳細については、Indeed と連携して API を呼び出す をご覧ください。
findEmployerJobsPartner、node、nodes の各クエリには、次のいずれかの OAuth トークンタイプが必要です。
| トークンタイプ | 説明 |
|---|---|
| 広告主を指定する 2‑legged OAuth token | すでに Sponsored Jobs API を client credentials grant type (2-legged OAuth) で使用している場合は、このトークンタイプをすでにお持ちの可能性があります。 |
| 3-legged OAuth token | すでに 3-legged OAuth トークンをお持ちの場合は、それを使用できます。 |
アクセストークンには、次のスコープが必要です。
employer_accessemployer.hosted_job
スコープの詳細については、Scopes をご覧ください。
アクセストークンを取得したら、クエリにそのトークンを含めます。更新後の求人ステータスを表示するたびにユーザーがサインインしなくて済むよう、Indeed ではアクセストークンの有効期限が切れる前に更新することを推奨しています。
求人を更新する
この機能はベータ版であり、日本では利用できません。詳細については Indeed にお問い合わせください。
- 自社がIndeedに送信した求人は、upsertします。
- 別のパートナーが送信した求人は、updateします。updateは主に広告代理店向けです。
日本のみ:広告代理店およびIndeed PLUSパブリッシャーネットワークのパートナーを除き、すべてのパートナーが求人をupdateできます。
関連項目:
広告代理店がIndeedおよびIndeed PLUS上で求人のフィールドを更新できるようにします。
クライアントから認可された求人のみを更新してください。認可されていない更新を行うと、クライアントがその求人で他のIndeedツールを使用できなくなることがあります。ATSにない勤務地を追加する場合は、自社のXMLまたはAPI連携を使用してください。
ワークフロー
Indeed に送信していない求人を更新するには、次の手順に従います。
| # | 説明 | 参照先 |
|---|---|---|
| 1. | 追加するクライアントを選択する: Indeed にお問い合わせください。 | |
| 2. | 条件で求人を一覧表示する:
| |
| 3. | 求人を更新する: トラッキング URL や求人 URL などのフィールドを更新するには、 | |
| 4. | 更新内容を確認する: 次のいずれかの方法を使用します。
キャンペーンのスポンサー求人を一覧表示するには、 | |
この呼び出しのレート制限については、レート制限 をご覧ください。
リクエスト – 求人を更新する
求人の一部のフィールドを更新するには、jobsIngest.updateSourcedJobPostings ミューテーションを呼び出します。
この操作には、広告主を表すアクセストークンが必要です。
アクセストークンには、次のスコープが必要です。
employer_accessemployer.hosted_job
Get access token that represents employer をご覧ください。雇用主 ID の代わりに、広告主 ID をトークンに関連付けます。
更新したいフィールドのみを指定します。フィールドを変更しない場合は、省略するか null を設定します。
次の例では、updateSourcedJobPostings ミューテーションを呼び出して、求人の複数のフィールドを更新します。
mutation UpdateSourcedJobPostings { jobsIngest { updateSourcedJobPostings( input: { updates: [ { sourcedPostingId: "<SOURCED POSTING ID OF JOB POSTING>" metadata: { url: "https://www.example.com/jobs/123" campaignCategories: ["springCampaign"] trackingUrl: "https://www.example.com/jobs/123?utm_source=indeed" } body: { title: "Software Developer" description: "Come build the future with us!" jobLocation: { general: { cityRegionPostal: "Phoenix, AZ 85003" streetAddress: "1234 Sunny Lane, Phoenix, AZ 85003" } } salary: { currency: "USD" maximumMinor: 1000 minimumMinor: 1000 period: "HOUR" } } } ] } ) { results { jobPosting { sourcedPostingId employerJobId } } } }}mutation UpdateSourcedJobPostings { jobsIngest { updateSourcedJobPostings(input: { updates: [{ sourcedPostingId: "<SOURCED POSTING ID OF JOB POSTING>" body: { description: "<h2>About the role</h2><p>Join our team as a software engineer. You design and build scalable backend services.</p><ul><li>Competitive salary</li><li>Remote-friendly</li><li>Health and dental benefits</li></ul>" descriptionFormatting: HTML } }] }) { results { jobPosting { sourcedPostingId employerJobId } } } }}updateSourcedJobPostings は、UpdateSourcedJobPostingsInput 型の input という 1 つの引数を取ります。
input には updates という 1 つのフィールドがあり、これは UpdateSourcedJobPostingInput オブジェクトの配列です。各オブジェクトは、1 件の求人に対する更新内容を定義します。
各 UpdateSourcedJobPostingInput オブジェクトは、次のフィールドをサポートします。
| フィールド | タイプ | 説明 |
|---|---|---|
sourcedPostingId | ID! | 必須。求人ごとに、次のいずれかの値を指定します。
|
metadata.url | WebUrl | Indeed エントリーを利用できない場合に、求職者が応募できる広告代理店の URL です。 |
metadata.campaignCategories | [String!] | キャンペーン選択のために関連する求人をグループ化するカテゴリータグです。指定した値については、ad_campaign_category:{category} で Sponsored Jobs API にクエリを実行します。 |
metadata.trackingUrl | WebUrl | 求人のトラッキング URL です。求職者が Indeed 上でその求人を表示すると、Indeed はこの URL に HTTP リクエストを送信します。 |
body.title | String | 求人のタイトルです。 |
body.description | String | 求人の説明です。
|
body.descriptionFormatting | DescriptionFormatting | 求人の説明の形式です。HTML 形式を有効にするには、このフィールドに |
body.jobLocation .general.cityRegionPostal | String! | 勤務地を更新する場合は必須 。求人の市区町村、都道府県や州などの行政区分、および郵便番号です。 リモート求人にこのフィールドを設定すると、Indeed はその求人を地域限定のリモート求人として扱います。 |
body.jobLocation .general.streetAddress | String | 求人の主な勤務地の番地です。Indeed が勤務地のマッチングを改善し、求職者に住所を表示できるよう、完全な住所を指定してください。 |
body.salary.currency | CurrencyCode | ISO 4217 形式の給与の通貨コードです。 |
body.salary.maximumMinor | Int64 | 現地通貨の補助単位で表した給与の上限です。USD の場合、 |
body.salary.minimumMinor | Int64 | 現地通貨の補助単位で表した給与の下限です。USD の場合、 |
body.salary.period | JobSalaryPeriod! | 給与を更新する場合は必須。時給、日給、週給など、給与の計算に使用する単位です。 |
body.companyName | String | 求人の会社名を更新します。変更しない場合は、このフィールドを省略するか |
詳細については、API リファレンス をご覧ください。
更新内容を確認する
updateSourcedJobPostings のレスポンスには求人 IRI が含まれます。変更を確認するには、返された IRI を指定して node クエリを使用します。
ID で求人ステータスを取得する をご覧くださ い。
部分的な更新
フィールドの更新はアトミックではありません。1 回のリクエストで複数のフィールドを更新した場合、まれに一部の変更のみが適用されることがあります。その場合、レスポンスにエラーが含まれます。
エラーレスポンスが返っても、必ず部分的な更新が発生したとは限りません。複数フィールドのリクエストでエラーが返された場合は、更新後の求人を表示して、どのフィールドが成功したかを確認してください。エラー処理の方法については、Troubleshoot GraphQL errors をご覧ください。
レスポンス – 求人を更新する
updateSourcedJobPostings は UpdateSourcedJobPostingsPayload オブジェクトを返します。このオブジェクトには results フィールドが含まれ、これは UpdateSourcedJobPostingResult オブジェクトの配列です。各オブジェクトは、1 件の求人の更新に対応します。
各 UpdateSourcedJobPostingResult オブジェクトには、SourcedJobPostingUpdate 型の jobPosting フィールドが含まれます。Indeed が更新を受け付けない場合、このフィールドは null です。それ以外の場合は、次の値が含まれます。
sourcedPostingId: 求人の UUID です。これは、Indeed が求人を作成したときに生成したSourcedJobPosting.sourcedPostingIdと一致します。この値を使用して、求人を期限切れにしたり更新したりします。employerJobId: 求人の Indeed Resource Identifier (IRI) です。これはEmployerJob.idと一致します。
求人情報を取得するクエリ方法を選択する
求人情報を取得するには、次のいずれかの方法を使用します。
| 方法 | 説明 |
|---|---|
ID で求人ステータスを取得する(node クエリまたは nodes クエリ) | 求人 IRI( IRI がすでに分かっている場合は、 ユースケース:
|
条件で求人を一覧表示する(findEmployerJobsPartner) | すべての求人を一覧表示するには、この検索ベースの方法を使用します。求人在庫の一括取得に最適です。 ユースケース:
|
ID で求人ステータスを取得する
IRI(EmployerJob の ID)で求人ステータスを取得するには、GraphQL の node クエリまたは nodes クエリを呼び出します。これらのクエリは、条件で求人を一覧表示する方法よりも効率的です。
認証
findEmployerJobsPartner と同じ認証と認可を使用します。認証 をご覧ください。アクセストークンには、次のスコープが必要です。
employer_accessemployer.hosted_job
単一求人のクエリ (node)
Relay Node パターンを使用して、IRI(EmployerJob の ID)で 1 件の求人を取得します。
query GetJob($id: ID!) { node(id: $id) { ...on EmployerJob { id jobData { title description company dateCreated datePostedOnIndeed jobLocation { city countryCode fullAddress } salary { max min period } externalPostingMetadata { jobPostingId jobRequisitionId } } managementUrls { viewJob } } }}変数:
{ "id": "dXJuOmluZGVlZDplbXBsb3llcmpvYjphMWIyYzNkNC1lNWY2LTc4OTAtYWJjZC1lZjEyMzQ1Njc4OTA="}求人 IRI(EmployerJob の ID)は base64 でエンコードされています。レスポンスの id フィールドは、エンコードされた IRI です。
EmployerJob をご覧ください。
POST https://apis.indeed.com/graphqlAuthorization: Bearer YOUR_ACCESS_TOKENContent-Type: application/json
{ "query": "query GetJob($id: ID!) { node(id: $id) { ... on EmployerJob { id jobData { title description company } } } }", "variables": { "id": "dXJuOmluZGVlZDplbXBsb3llcmpvYjphMWIyYzNkNC1lNWY2LTc4OTAtYWJjZC1lZjEyMzQ1Njc4OTA=" }}複数求人のクエリ (nodes)
IRI(EmployerJob の ID)で複数の求人のステータスを取得します。
複数の更新を確認する場合や、Webhook イベントをバッチ処理する場合は、このクエリを使用します。
query GetMultipleJobs($ids: [ID!] !) { nodes(ids: $ids) { ... on EmployerJob { id jobData { title description company datePostedOnIndeed jobLocation { city countryCode } } } }}変数:
{ "ids": [ "dXJuOmluZGVlZDplbXBsb3llcmpvYjphMWIyYzNkNC1lNWY2LTc4OTAtYWJjZC1lZjEyMzQ1Njc4OTA=", "dXJuOmluZGVlZDplbXBsb3llcmpvYjpiMmMzZDRlNS1mNmE3LTg5MDEtYmNkZS1mMjM0NTY3ODkwMTI=", "dXJuOmluZGVlZDplbXBsb3llcmpvYjpjM2Q0ZTVmNi1hN2I4LTkwMTItY2RlZi0zNDU2Nzg5MDEyMzQ=" ]}求人 IRI(EmployerJob の ID)は base64 でエンコードされています。レスポンスの id フィールドは、エンコー ドされた IRI です。
EmployerJob をご覧ください。
Webhook を使用する
Webhook のペイロードには、求人 IRI が含まれます。
{ "eventType": "job.updated", "jobIri": "dXJuOmluZGVlZDplbXBsb3llcmpvYjphMWIyYzNkNC1lNWY2LTc4OTAtYWJjZC1lZjEyMzQ1Njc4OTA=", "timestamp": "2025-12-10T15:30:00Z"}IRI を指定して node クエリを使用し、現在の求人ステータスを取得します。例については、ID で求人ステータスを取得する をご覧ください。
利点:
- リアルタイムの更新
- IRI による高速な取得
- 表示前のデータ補完期間
条件で求人を一覧表示する
この機能を使用するには、Indeed にお問い合わせください。追加の要件があります。
雇用主の求人を一覧表示します。
この呼び出しにはレート制限があります。
クライアントごとに 1 時間に 1 回この操作を呼び出す場合は、制限に達しない可能性があります。ただし、HTTP 429 が発生することはあります。発生した場合は、リクエストの頻度を下げてください。429 error code をご覧ください。
この呼び出しのレート制限については、レート制限 をご覧ください。
リクエスト – 条件で求人を一覧表示する
雇用主の求人を一覧表示するには、findEmployerJobsPartner を呼び出します。
次の例では、findEmployerJobsPartner を呼び出して、Indeed への掲載日の降順で求人を一覧表示します。
query FindEmployerJobsPartner { findEmployerJobsPartner(input: { filters: { legacySourceId: "60a9614a5d973a21", jobFeedType: ["INTEGRATED_FROM_PARTNER"] }, sort: [{ sortDirection: DESC, sortField: datePostedOnIndeed }] }, first: 10, before: null, after: null) { employerJobs { id jobData { title datePostedOnIndeed dateCreated description company jobLocation { countryCode city postalCode fullAddress } externalJobPageUrl externalPostingMetadata { jobPostingId jobRequisitionId campaignCategories trackingUrls rawInputLocation isIntegratedJob } } managementUrls { viewJob } seatsConnection { pageInfo { endCursor hasNextPage hasPreviousPage startCursor } seats { jobPost { id externalPartnerCallToAction(input: { locale: "en-us" }) { imageAltText imageUrl } status { globalStatus { isIndeedApplyActive } surfaceStatuses { isRejected isSponsorshipRequired isMissingRequiredSponsorship } } } } } } estimatedTotalResultsCount pageInfo { endCursor hasNextPage hasPreviousPage startCursor } }}findEmployerJobsPartner は、ソース ID で求人を検索するか、雇用主の求人を一覧表示します。次の入力フィールドをサポートします。
| フィールド | 説明 |
|---|---|
求人の取得元を示すフィードタイプで求人をフィルタリングします。 有効な値は次のとおりです。
指定できる値は 1 つです。ただし、 デフォルト: デフォルトでは、 | |
求人に指定された ATS の採用管理 ID( このフィールドが返す値をそのまま送信してください。照合では大文字と小文字を区別せず、前後の空白も除去されません。
採用管理 ID は一意ではないため、1 つのフ ィルターが複数の求人に一致することがあります。 デフォルトでは、 | |
input.sort | レスポンス内の求人の並び順を定義するオブジェクトの配列です。各オブジェクトには、次のフィールドがあります。
|
first | 返す求人の件数です。
|
before | この値より前のカーソル値を持つ項目を返します。ページネーションの詳細については、レスポンスの PageInfo を使用してください。 |
after | この値より後のカーソル値を持つ項目を返します。ページネーションの詳細については、レスポンスの PageInfo を使用してください。 |
レスポンス – 条件で求人を一覧表示する
findEmployerJobsPartner は、アクセストークンに関連付けられた雇用主の求人を一覧表示します。
リクエストにフィルターや並び替えを含めた場合、API はそれらを結果に適用します。
トークンで期待した求人が返らない場合は、Indeed の雇用主アカウントページから Indeed のサポート担当者に問い合わせるようユーザーに依頼してください。必要に応じて、担当者が Indeed 上の求人と広告主またはユーザーアカウントの関連付けを支援できます。
API は、次のフィールドを持つ FindEmployerJobsPartnerConnection オブジェクトを返します。
| フィールド | タイプ | 説明 |
|---|---|---|
employerJobs | [EmployerJob]! | 求人オブジェクトの配列です。フィールドの詳細については、Response - View job posting をご覧ください。 |
estimatedTotalResultsCount | Int! | レスポンスに含まれる求人の推定総数です。 |
pageInfo | PageInfo! | ページネーション情報です。 |
次のレスポンス例は、求人を一覧表示します。
この API は seats に 1 件のみを返すため、startCursor と endCursor は同じ値になり、hasNextPage と hasPreviousPage は false になります。
{ "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 } ] } } } ] } } }}検証エラーのトラブルシューティングについては、Troubleshoot GraphQL errors をご覧ください。詳細については、GraphQL ドキュメントの Validation をご覧ください。
求人の更新をクリアする
このベータ機能は日本では利用できません。詳細については Indeed にお問い合わせください。
クライアントの求人を更新した広告代理店は、後からその更新をクリアできます。
ワークフロー
広告代理店が求人に対して行った更新をクリアするには、この操作を使用します。
たとえば、クライアントとの取引を終了する場合は、そのクライアン トの求人に対して行った更新をクリアします。この操作によって最新の ATS データが復元され、クライアントは他の Indeed のツールで再びその求人を管理できるようになります。
| # | 説明 | 参照先 |
|---|---|---|
| 1. | 求人を更新する: クライアントを追加し、その求人を更新します。 | 求人を更新する |
| 2. | 条件で求人を一覧表示する:
| |
| 3. | 求人の更新をクリアする:
| |
| 4. | 条件で求人を一覧表示する: 同じ |
この呼び出しのレート制限については、レート制限 をご覧ください。
リクエスト – 求人の更新をクリアする
updateSourcedJobPostings で以前に変更したフィールドをクリアするには、jobsIngest.clearSourcedJobPostingUpdates ミューテーションを呼び出します。
この操作には、元の更新を行った広告主のアクセストークンが必要です。
アクセストークンには、次のスコープが必要です。
employer_accessemployer.hosted_job
Get access token that represents employer をご覧ください。雇用主 ID の代わりに、広告主 ID をトークンに関連付けます。
次の例では、clearSourcedJobPostingUpdates ミューテーションを呼び出して、求人の更新をクリアします。
mutation ClearSourcedJobPostingUpdates { jobsIngest { clearSourcedJobPostingUpdates(input: { updates: [{ sourcedPostingId: "<SOURCED POSTING ID OF JOB POSTING>" }] }) { results { jobPosting { sourcedPostingId employerJobId } } } }}clearSourcedJobPostingUpdates は、ClearSourcedJobPostingUpdatesInput 型の input という 1 つの引数を取ります。
input には updates という 1 つのフィールドがあり、これは ClearSourcedJobPostingUpdateInput オブジェクトの配列です。各オブジェクトは、更新をクリアする求人を 1 件指定します。
1 回のリクエストで複数の求人の更新をクリアするには、複数の ClearSourcedJobPostingUpdateInput オブジェクトを指定します。
各 ClearSourcedJobPostingUpdateInput オブジェクトは、次のフィールドをサポートします。
| フィールド | タイプ | 説明 |
|---|---|---|
sourcedPostingId | ID! | 必須。求人ごとに、次のいずれかの値を指定します。
|
レスポンス – 求人の更新をクリアする
clearSourcedJobPostingUpdates は ClearSourcedJobPostingUpdatesPayload オブジェクトを返します。このオブジェクトには results フィールドが含まれ、これは ClearSourcedJobPostingUpdateResult オブジェクトの配列です。各オブジェクトは、更新をクリアした求人 1 件に対応します。
各 ClearSourcedJobPostingUpdateResult オブジェクトには、SourcedJobPostingUpdate 型の jobPosting フィールドが含まれます。Indeed がリクエストを受け付けない場合、このフィールドは null です。それ以外の場合は、次の値が含まれます。
sourcedPostingId: 求人の UUID です。これは、Indeed が求人を作成したときに生成したSourcedJobPosting.sourcedPostingIdと一致します。この値を使用して、求人を期限切れにしたり更新したりします。employerJobId: 求人の Indeed Resource Identifier (IRI) です。これはEmployerJob.idと一致します。
求人ステータス
フィードポリシーが変更されたため、Indeed 上で管理する求人の多くは、自社のフィード由来ではなくなりました。
| 求人ステータス | ブール値 | 参照先 |
|---|---|---|
| オーガニック |
| スポンサーなしのオーガニック求人 |
| スポンサー求人のみ(消費あり) |
| スポンサー求人 |
| スポンサー求人のみ(消費なし) |
| |
| どこにも表示されない |
|
スポンサーなしのオーガニック求人
スポンサー求人ではない求人のオーガニックトラ フィックのデータを取得するには、次のいずれかの方法を使用します。
| 方法 | 説明 | |
|---|---|---|
| 1. | trackingUrl フィールドを追加する | 求人のクリックごとに HTTP リクエストを受け取るには、次のいずれの場合でもこのフィールドを追加します。
|
| 2. | カスタムの求人 URL を使用する | 求人 URL を自社が所有する採用ページに置き換えるか、ATS パートナーと連携してトラッキング用のメタデータを求人 URL に付加します。 求人が Indeed エントリーを使用していない場合、求職者はこの URL に移動します。Indeed エントリーを使用している場合は、移動しません。
|
| 3. | クライアントの ATS と連携する | クライアントおよびそのクライアントの ATS と連携して、オーガニックのパフォーマンスデータを収集します。 |
| 4. | クライアントに Indeed Analytics の画面にサインインしてもらう | クライアントは Indeed Analytics にサインインすると、スポンサー求人かどうかにかかわらず、すべての求人の完全なオーガニックパフォーマンスを確認できます。 |
スポンサー求人
スポンサー求人のトラフィックデータを取得するには、Sponsored Jobs API v8 以降を呼び出して、Job Update API が返す ID と一致する雇用主の求人 ID を取得します。
レート制限
Job Update API では、次の操作にレート制限が適用されます。
- 条件で求人を一覧表示するための
findEmployerJobsPartner - 求人を更新するための
jobsIngest.updateSourcedJobPostings - 求人の更新をクリアするための
jobsIngest.clearSourcedJobPostingUpdates
これらの制限は、API の可用性を維持するためのものです。Indeed は Job Update API の通常の 1 日の使用量を上回る値を設定していますが、短期間に大量のリクエストが発生した場合はスロットリングを行います。スロットリングの可能性を下げるには、リクエストを 10 分間に分散してください。
制限を超えると、API は HTTP レスポンスまたは GraphQL の JSON errors 配列のいずれかで HTTP 429 を返します。
特別な対応は必要ありません。これらの制限への対処についてサポートが必要な場合は、サポートをリクエストしてください。
これらのレート制限を超えると、API から通知されます。
| クエリまたはミューテーション | レート制限 |
|---|---|
findEmployerJobsPartner クエリ | 1 秒あたり 5 リクエスト |
| 2 つのミューテーション合計で 1 秒あたり 20 リクエスト |
関連情報:
エラーのトラブルシューティング
GraphQL にアクセスする前に発生する OAuth エラーのトラブルシューティングについては、Troubleshoot OAuth errors をご覧ください。
GraphQL エラーのトラブルシューティングについては、Troubleshoot GraphQL errors をご覧ください。
次のエラーが発生することがあります。
- FORBIDDEN: Advertiser is in a restricted moderation status
- FORBIDDEN: You are missing permissions for this action
- FORBIDDEN: Advertiser is requesting an update to EJ
- UNAUTHENTICATED
- BAD_USER_INPUT
- NOT_FOUND
- DOWNSTREAM_SERVICE_ERROR または INTERNAL_SERVER_ERROR
FORBIDDEN: Advertiser is in a restricted moderation status
エラーメッセージの例
{ "errors": [ { "extensions": { "code": "FORBIDDEN", "message": "Advertiser is in a restricted moderation status" } } ]}意味
Indeed は、スパム対策として、OAuth トークンに関連付けられた広告主を制限しました。
対応方法
このエラーはまれです。発生した場合は、担当のパートナーマネージャーに連絡して制限を解除してもらってください。
FORBIDDEN: You are missing permissions for this action
エラーメッセージの例
{ "errors": [ { "extensions": { "code": "FORBIDDEN", "message": "You are missing permissions for this action. Ask your administrator for the permissions [Hosted_Job Create, Hosted_Job Update, Hosted_Job Read]" } } ]}意味
OAuth トークンに関連付けられたユーザーに、求人を更新する権限がありません。
対応方法
管理者ユーザーが OAuth クライアントを作成していない場合は、OAuth クライアントに関連付けられたユーザーに求人管理の権限を付与してください。この権限は、管理者ユーザーが UI で付与できます。Indeed account settings をご覧ください。
FORBIDDEN: Advertiser is requesting an update to EJ
エラーメッセージの例
{ "errors": [ { "extensions": { "code": "FORBIDDEN", "message": "Advertiser is requesting an update to EJ (id=<EJID>), but the job is claimed by a different advertiser." } } ]}意味
別の広告主がすでにこの求人を更新しているため、この広告主は更新できません。1 件の求人を同時に更新できる広告主は 1 社のみです。
正しい広告主に対して OAuth トークンをリクエストしたことを確認してください。
対応方法
別の広告主が求人を更新した場合、その広告主の更新がクリアされるまでこのエラーが続きます。求人の更新をクリアする をご覧ください。
これは、次のいずれかの理由で発生することがあります。
-
代理店が複数の広告主を通じてその求人にアクセスできる。
代理店が 1 つの広告主を通じて求人を更新した後、別の広告主を通じて同じ求人を更新しようとすると、このエラーが発生します。
-
雇用主が UI で求人を編集した。
代理店が API で求人を更新できるようにするには、雇用主が UI でその編集を取り消す必要があります。
UNAUTHENTICATED
エラーメッセージの例
"extensions.code": "UNAUTHENTICATED"意味
Indeed はリクエストを認証で きません。OAuth トークンが期限切れか、形式が正しくありません。
対応方法
Troubleshoot OAuth errors をご覧ください。
BAD_USER_INPUT
エラーメッセージの例
"extensions.code": "BAD_USER_INPUT"意味
リクエストに形式の正しくない入力が含まれています。詳細は message フィールドをご覧ください。
対応方法
形式の正しくないリクエストのフィールドを修正します。
正しい形式のリクエスト例については、次をご覧ください。
NOT_FOUND
エラーメッセ ージの例
"extensions.code": "NOT_FOUND"意味
Indeed は求人を見つけられません。
対応方法
sourcedPostingId が正しいこと、および正しい広告主に対して OAuth トークンをリクエストしたことを確認してください。このエラーは、広告主にその求人を表示する権限がない場合にも発生することがあります。
DOWNSTREAM_SERVICE_ERROR または INTERNAL_SERVER_ERROR
エラーメッセージの例
"extensions.code": "DOWNSTREAM_SERVICE_ERROR"または:
"extensions.code": "INTERNAL_SERVER_ERROR"意味
内部サーバーエラーが発生しました。
対応方法
しばらくしてからリクエストを再試行してください。エラーが続く場合は、担当のパートナーマネージャーにお問い合わせください。
よくある質問
Job visibility
求人でIndeed エントリーが使用されている場合、EmployerJob.seatConnections.jobPost.isIndeedApplyActiveはtrueを返します。パートナーはfindEmployerJobsPartnerでこのフィールドを取得できます。