- Overview
- Program overview
- User experience flow
- New employer account setup flow
- Campaign creation and management flow
- Set up your ATS with the program
- Sign a Developer Agreement with Indeed
- Create an Indeed account and register your integration
- Identify the redirect URL where Indeed sends users
- Start your integration
- Email a demo video to Indeed
- Work with Indeed on messaging
- API integration overview
- Integration prerequisites
- Set up employer account
- Set up no sponsorship
- Get OAuth authorization from each employer
- Secondary users and OAuth authorization
- Sponsored Jobs API overview
- Base URL
- Endpoints
- OAuth scopes
- Recommended best practices
- Account management
- Campaign management
- Get campaign budget quote
- Create campaigns
- Update a campaign
- Get a campaign's budget
- Monthly recurring campaigns
- Update a campaign's budget
- Reports
- Campaign performance
- ATS campaign predictions
- Request body
- CampaignPredictions
- JobInfo
- CampaignInfo
- PredictionsInfo
- Response
- JobLevelPredictions
- Job details
- Prediction
- Organic job performance and prediction
- Organic job performance and prediction request
- OrganicjobPrediction field
- JobInfo field
- Organic job performance and prediction response
- OrganicMetric field
- OrganicPrediction field
- SponsoredPrediction field
Sponsored Jobs API integration guide for ATS partners
Access private endpoints, including campaign predictions and organic job performance and prediction.
Unless you have a written agreement with Indeed regarding your use of Indeed's APIs, by using this API or its documentation, you agree to apply the Indeed API Terms and the Additional API Terms and Guidelines to your use of Indeed's APIs.
Overview
Use this guide with the Sponsored Jobs API reference for ATS partners. It helps ATS partners integrate with the Sponsored Jobs API, but it does not cover every endpoint.
In this guide and the public API docs, employer and advertiser both mean the user who sponsors jobs on Indeed. Send technical questions to marketplacesupport@indeed.com.
Program overview
Set up your ATS with the program.
Plan the user experience flow before you design the prototype.
User experience flow
Build two flows in your ATS: one to create an employer account and one to create and manage ad campaigns.
New employer account setup flow
Each employer who wants to use Indeed needs one Indeed account and one primary account admin who authorizes your ATS to act on the employer’s behalf. Complete this setup once for each employer. An employer can have multiple ATS users, but only one Indeed account for sponsorship campaigns. Employers cannot create campaigns until setup is complete.
- The employer’s account admin enters the corporate email address used to sign in to Indeed.
- Your ATS prompts the admin to complete setup on Indeed.
- After the Indeed account is set up, redirect the admin to authorize your ATS through Indeed OAuth.
- After authorization, let the admin choose which ATS users can create sponsorship campaigns with the employer’s Indeed account, based on their ATS role.
For implementation details, see Set up employer account.
Campaign creation and management flow
Show the Indeed advertising experience where it fits best in your platform, such as the marketplace, job performance reviews, or an analytics page.
Use the API endpoints to let authorized ATS users create and manage Indeed sponsored job campaigns directly in your ATS.
Users can:
- Set a budget and duration for each job campaign.
- Set hiring objectives for each job and receive recommendations from Indeed.
- Accept Indeed's Terms of Service.
- Contact Indeed when needed.
Manage campaign
Let authorized ATS users:
- View basic Indeed analytics in your ATS, including:
- Cost, applies, clicks, and impressions
- Links to the Indeed dashboard for more details
- End ATS-created campaigns or add budget to them.
For integration details, see Sponsored Jobs API overview.
Set up your ATS with the program
Follow these steps to start using the Sponsored Jobs API as an ATS partner. Send questions to marketplacesupport@indeed.com as you build.
| Step | Description |
|---|---|
| 1. | Sign a Developer Agreement with Indeed. |
| 2. | Create an Indeed account with your ATS email address. |
| 3. | Identify the redirect URL in your ATS where Indeed sends users. |
| 4. | Start your integration. |
| 5. | Send a demo video to Indeed. |
| 6. | Work with Indeed on messaging. |
Sign a Developer Agreement with Indeed
Confirm that your company has a Developer Agreement with Indeed that covers the Sponsored Jobs Integration APIs and Referral Partnership terms.
If not, email marketplacesupport@indeed.com to request one.
Create an Indeed account and register your integration
Create an Indeed account with your ATS company email address. Use this account only for OAuth authorization and to register your ATS integration. After setup, use this email and account to manage your clients' employer accounts on Indeed.
Also email marketplacesupport@indeed.com to request a unique ATS identifier, which you need to set up employer accounts.
When you become an Indeed partner, Indeed sets up an app for your integration. Sign in to Partner Console to view your app and OAuth credentials (client ID, secret, and authorization code for 3-legged OAuth). Exchange credentials for an access token to authenticate API calls.
Identify the redirect URL where Indeed sends users
Choose the ATS redirect URL that Indeed uses to send users back to your ATS after they set up their employer account.
Start your integration
You are ready to start your integration. See the API integration overview.
To test the integration, create a separate Indeed account to use as a client account. Use a different email address from the one you used to create your main Indeed account.
- Test the UX features with this account using
$50budgets. - Indeed covers up to
$200in sponsored job clicks on your company’s real jobs so you can verify that the integration works. This refund is a one-time offer for this single account. - Reply to Indeed’s email with the address you use for testing so Indeed can confirm success.
As you build your integration, follow the brand and logo guidelines.
Email a demo video to Indeed
Email a demo of your integration to marketplacesupport@indeed.com.
Subject: New ATS-SJI API Approval Request
Body:
ATS Name:
Product Contact:
BD/Marketing Contact:
Redirect URL (from Step 4):
UX Video:Indeed replies within 48 hours to approve the integration or request changes.
Work with Indeed on messaging
Work with Indeed on messaging so your clients can get started, and prepare to announce the new features to them. Send any open questions to marketplacesupport@indeed.com.
API integration overview
Before you call the Sponsored Jobs API for an employer, confirm that the employer has an Indeed account and has authorized your system through OAuth to call the API on their behalf.
Complete the prerequisites below to support these steps.
Integration prerequisites
Before you start calling the Sponsored Jobs API, complete these steps:
Set up employer account
Complete these steps for each new employer to confirm that the employer is set up to sponsor jobs on Indeed.
Step 1
Show a dialog that asks an admin user with the required access to set up sponsoring on Indeed and complete setup. Prompt the user for a corporate email address.
Step 2
Send the user to the Indeed account setup endpoint. This endpoint runs account readiness checks and guides the user through any required setup steps.
The endpoint is:
https://ats-management.indeed.com/accountsetupMake an HTTP GET request to this endpoint with these parameters:
| Field | Required | Description |
|---|---|---|
__email | ✓ | URL-encoded email address to use for sponsoring on Indeed. |
ak | ✓ | Unique ID that Indeed assigns to each ATS partner. It identifies the employer accounts that the partner refers to Indeed. |
state | String that Indeed returns to the ATS unchanged. Use it as a request key. Must be 1 to 100 alphanumeric characters. | |
type | Use one of these options:
|
You can reuse the Indeed account setup endpoint to redirect the admin user and confirm that the employer is set up for sponsorship on Indeed. If all checks pass, the call returns immediately with no further user interaction.
The endpoint checks that:
- The Indeed account for the given corporate email address is set up to use Indeed.
- The user is signed in to Indeed.
- The employer account is set up for sponsorship.
- Billing information is set up for sponsorship.
- The user has full access to the employer account.
If a check fails, Indeed redirects the user to the correct setup page and then runs the checks again after setup is complete.
For secondary users, at least one employer account they can access must pass the checks.
Step 3
After setup is complete, Indeed redirects the user to your ATS by using the redirect URL you provide. You must create this redirect URL in your ATS.
Endpoint must support these parameters
| Field | Description |
|---|---|
state | The API returns the same value that you send in this field. |
result | Possible values:
|
Step 4. Ask the user to grant you OAuth authorization
On success, send the user to the OAuth authorization flow.

Use this flow to set up sponsoring on Indeed and to update billing information when needed.
If a user's billing information is no longer valid, send the user through the account management flow to fix it.
Set up no sponsorship
If an employer has not set up an Indeed account but wants to view Indeed performance data before sponsoring jobs, add the optional type=login parameter to the request URL. This creates the employer’s Indeed account and skips the remaining checks.
Use type=login to access the organic job performance and prediction endpoint when the employer has not sponsored any jobs yet. After the employer finishes setting up the Indeed account, redirect the user to the OAuth authorization endpoint.
Get OAuth authorization from each employer
You need this authorization for each new employer account and its associated secondary users. The Sponsored Jobs API uses the standard OAuth 2.0 authorization code grant. In this flow, end users grant your system access to their Indeed account and campaign data. You then call the API with the OAuth access token they provide.
Follow the authorization code grant type (3-legged OAuth) to set up your Indeed account for OAuth and get authorization to call the API on behalf of your clients.
In the authorization code request, select the correct scope for the endpoint you are calling. For details, see OAuth scopes.
In addition to the Sponsored Jobs Campaigns API scopes, request an employer access token. See Get employer access token.
Store the access and refresh tokens securely. Each token pair is unique to an employer account on Indeed and is required to call the API. If the tokens are lost, your client must grant OAuth access again.
Secondary users and OAuth authorization
The primary user is the admin user who sets up employer account. This user has full access to all resources associated with the employer account on Indeed. Primary users can give other people access to the employer account. These users are called secondary users. Primary users can add and review secondary users and their permissions on the Indeed Account page.
Indeed recommends adding each user who manages campaigns for an employer as a secondary user. Then get OAuth authorization for each secondary user. See Get OAuth authorization from each employer.
To list the employer accounts a user can access, you can get user information.
For secondary users, the Indeed account setup endpoint behaves as follows:
- If the user has full access, with admin permissions, to at least one employer account that has valid billing information, the endpoint returns the user to your ATS with the
OKresult. - If the user does not have full access to any employer account, or none of those employer accounts have valid billing information, the endpoint shows an error page explaining that no suitable employer accounts are available. That page includes a link that returns the user to your ATS with the
BILLING_SETUP_CANCELEDerror.
After the user selects one of the employer accounts returned from the v2/api/userinfo endpoint, use the account management endpoint to confirm that the account has valid billing information.
Sponsored Jobs API overview
These technical details supplement the Sponsored Jobs API reference for ATS partners. They describe the endpoints available for your integration. Some endpoints are private and available only to ATS partners. Others are public.
Base URL
ATS partners can access the API at this base URL.
apis.indeed.com/ads |
Endpoints
Public endpoints
These endpoints are documented in the Sponsored Jobs API reference for ATS partners.
If an endpoint supports two usage patterns, one for ad agencies and one for direct employers, use the direct employer method.
Private endpoints
These endpoints are available only to ATS partners set up for this program.
OAuth scopes
In your OAuth authorization code request, pass the scopes for the API endpoints you are calling. The end user can then grant none, some, or all of those scopes. Use the following tables to find the correct scope for each endpoint.
Campaign predictions
| API endpoint | OAuth scope | Access token type |
|---|---|---|
POST /v1/campaignpredictions | employer_access | With employer_access scope. See Get an employer access token. |
Organic job predictions
| API endpoint | OAuth scope | Access token type |
|---|---|---|
POST /v1/organicjobpredictions | employer_access | Any |
Handle authorization errors
Verify you handle any errors that occur when the user does not have access to the requested scopes or does not authorize your application. To determine which scopes have been granted, view the scope response field in the request an access token response.
The error codes are:
| Error code | Description |
|---|---|
403 INSUFFICIENT_SCOPE | The access token is valid but has not been granted the necessary scope. |
401 INVALID_TOKEN | The access token is missing, invalid, or expired. |
For suggestions on how to handle these errors, see Recommended best practices. You can offer the user the option to complete the OAuth Authorization code grant again to authorize your app with more scopes. However, some users might have restricted permissions and cannot authorize all the scopes you request.
If your app has not been granted all requested scopes, enable it to operate with a limited feature set.
Recommended best practices
The API follows an eventual consistency model. That is, when you create a campaign through the POST /v1/campaigns endpoint, you might not get the new campaign from the GET /v1/campaigns/{campaignId} endpoint for a brief time.
Ensure you have a retry mechanism in place if you try to get a resource immediately after creation or modification.
In addition, ensure that you continuously monitor for 4XX-level error responses from the API to determine whether there are API usage issues.
5XX-level error responses from the API are typically temporary internal service issues and could be retried after some delay. If you are unsure of how to resolve the issue or if the errors persist, because the request path was not prefixed with /ads, the response indicates that the request could not be routed to the Sponsored Jobs API.
For example, instead of https://apis.indeed.com/v1/account, use https://apis.indeed.com**/ads**/v1/account. reach out to marketplacesupport@indeed.com for help with diagnosis. You might encounter 401 INVALID_TOKEN and 403 INSUFFICIENT_SCOPE errors when using OAuth scopes.
Account management
GET | /v1/account | Sponsored Jobs API reference for ATS partners |
|---|
Use this endpoint to get basic information about the employer.
The following responses indicate that the employer must complete the Set up employer account:
-
If the endpoint returns
400 NOT_EMPLOYER_ACCOUNT, this indicates that the user does not have an Indeed employer account. -
To include the account billing status in the response, pass the following in the
fieldsparameter:fields=id,email,contact,company,jobSourceList,billingActive.If the returned value of the
billingActivefield isfalse, the user has not completed the necessary account set up at Indeed to start sponsoring.
Campaign management
An employer's campaign corresponds to what an employer can manage in the Indeed Analytics dashboard. All job campaigns at Indeed have unique IDs, for example: 784e4acec9x100z2.
Use the following endpoints to:
- Get campaign budget quote
- Create campaigns
- Update a campaign
- Get a campaign’s budget
- Update a campaign’s budget
Get campaign budget quote
Lets employers get recommended daily budgets for each job and a campaign-level average daily budget before creating an average daily budget (ADB) campaign.
POST | https://apis.indeed.com/ads/v1/campaignbudgetquote | Sponsored Jobs API reference for ATS partners |
|---|
Returns the average budget quote for the sponsorship plan, a budget quote for each matched job, and recommendations for the STANDARD and PREMIUM tiers.
The recommended daily budget is a target, not a guarantee. Indeed optimizes toward it, but actual daily spend can vary.
For example, if the average daily budget is $25, spend might be $20 on day 1 and $30 on day 2.
Calls to this endpoint are not charged under the Sponsored Jobs API usage policy.
- Wait 2 to 3 hours after posting new jobs before creating a campaign.
- Create the campaign within 1 hour of the budget recommendation call. After that, market conditions can change, and campaign creation uses the latest recommended budgets.
- Jobs added automatically through query-based job resolution, including after campaign creation, use their recommended budgets as the default daily spend.
- Jobs added manually to a campaign also use their recommended budgets as the default daily spend.
This example gets recommended daily budgets for each job and the campaign-level average daily budget.
-
Get recommended daily budgets for each job and the campaign-level average daily budget.
API details:
Get campaign budget quote API URL https://apis.indeed.com/ads/v1/campaignbudgetquoteRequest type POSTContent type application/jsonAuth OAuth 2.0 bearer token Sample request:
curl -L -X POST 'https://apis.indeed.com/ads/v1/campaignbudgetquote' \-H 'Content-Type: application/json' \-H 'Accept: application/json' \--data-raw '{"jobsQuery": "title:\"financial analyst\" AND city:(toronto OR \"new york\")","jobsTitle": "Healthcare Intern","jobsCompany": "Indeed","jobsLocation": "Austin, TX","jobsLocationRadius": 25,"jobsSourceId": "8977ac341a3c4527","jobsSourceName": "CompanyABC","jobsToInclude": "ALL"}'Sample response:
{"meta": {"status": 200,"errors": [{"type": "RESOURCE_NOT_FOUND","description": "Couldn't locate the requested resource"}],"rootLocation": "https://apis.indeed.com/ads","perPage": 25,"links": [{"rel": "next","href": "/v1/campaigns/3141592653589793"}]},"data": {"sponsorshipPlanBudgetQuotes": [{"sponsorshipPlan": "PREMIUM","dailyAvgBudgetPerJob": {"amount": 0,"currency": "string"},"jobBudgetQuotes": [{"jobKey": "89deb9de58ebe149","dailyBudget": {"amount": 0,"currency": "string"}}]}]}}
Create campaigns
Creates a sponsored jobs campaign.
Prerequisites
- Wait 2 to 3 hours after posting new jobs before creating a campaign.
- Your employer account must be associated with a job source. Use
GET /v1/accountto list the job sources for your account. If none are associated, contact Indeed Customer Support. - Your employer account must have valid billing information before the campaign can sponsor jobs.
POST | https://apis.indeed.com/ads/v1/campaigns | Sponsored Jobs API reference for ATS partners |
|---|
This endpoint returns the new campaign ID. Store it so you can update the campaign or retrieve reports.
When you create a campaign, set the budget and duration the employer selected.
The budget must use the employer's default currency.
- The minimum budget is
$50, and the minimum duration is 7 days. - For each job, use the unique reference number set in the XML feed.
- Use the
YYYY-MM-DDdate format, and specify all dates in the US Central time zone.
To create a campaign, set these parameters
| Field | Description |
|---|---|
jobsToInclude | Always set to |
jobsQuery | Use Example:
|
jobsSourceName | Source or company for this job. Must exactly match the Example:
|
If the employer chooses a monthly campaign
Monthly recurring campaigns follow the calendar month.
| Field | Description |
|---|---|
budgetMonthlyLimit | The budget amount. |
budgetFirstMonthBehavior | Set to |
If the employer chooses a fixed duration campaign
| Field | Description |
|---|---|
budgetOnetimeLimit | Budget amount. |
startDate | Campaign start date. Defaults to today. In the format YYYY-MM-DD and is specified in the US Central time zone. |
| Set
|
Update a campaign
PATCH | /v1/campaigns/{campaignId} | Sponsored Jobs API reference for ATS partners |
|---|
Use this endpoint to make changes to the campaign status.
Employers can set campaigns to one of the following statuses:
| Status | Description |
|---|---|
ACTIVE | Active campaigns can start sponsoring jobs. |
PAUSED | Paused campaigns do not sponsor jobs until the employer makes them active. |
DELETED | These campaigns have been deleted by the employer. |
The statuses are only for the campaign and are independent of an employer’s billing status or remaining budget.
The campaign status can be active, but you might need to perform these checks to verify their billing status or remaining budget:
| Campaign status | Additional check | Description |
|---|---|---|
Active | Use the account management endpoint to check their billing status and confirm billing is active. | If billing is not active, the campaign cannot start spending. Alert the user with the message: “You must first add billing details to your Indeed account to fund your campaigns." Then to complete the set up, redirect the user to set up employer account. |
Active | Use the get a campaign's budget and campaign performance endpoints to determine the remaining budget for the campaign. | If the remaining budget is zero, the campaign cannot continue to sponsor the job. Ask the user whether to update the budget amount for the campaign. Use the update a campaign's budget endpoint to set the new total budget, which is the original amount plus any additional amount. |
Get a campaign's budget
GET | /v1/campaigns/{campaignId}/budget | Sponsored Jobs API reference for ATS partners |
|---|
Use this endpoint to get a campaign’s budget.
The fields returned vary depending upon whether the campaign has a single lifetime budget or is a monthly recurring campaign.
Monthly recurring campaigns
These campaigns follow the calendar month. The response includes the budgetMonthlyLimit field that contains the monthly budget amount.
Fixed time-duration campaigns
| Field | Description |
|---|---|
budgetOnetimeLimit | Budget amount. |
startDate | Campaign start date, in YYYY-MM-DD format, and in the US Central time zone. Defaults to today. |
| Set
|
Update a campaign's budget
PATCH | /v1/campaigns/{campaignId}/budget | Sponsored Jobs API reference for ATS partners |
|---|
Use this endpoint to make changes to the campaign’s budget and duration.
Reports
Use the reporting endpoints to pull campaign performance reports from Indeed and make them available to employers.
Campaign performance
GET | /v1/campaigns/{campaignId}/stats | Sponsored Jobs API reference for ATS partners |
|---|
Use this endpoint to get a campaign performance report for a given date range.
ATS Partners can use this report to present aggregated Clicks, Impressions, Conversions, and Cost information to employers.
The date range cannot exceed 366 days.
| Parameter | Description |
|---|---|
startDate | Report start date, inclusive, in YYYY-MM-DD format in the US Central time zone. |
endDate | Report end date, exclusive, in YYYY-MM-DD format in the US Central time zone. |
merge | Value is:
|
Get a campaign’s budget and combine the information with the campaign performance report to display the current budget for a job and the cost incurred to date.
To do this pass the campaign creation date in the startDate parameter of this endpoint.
Also pass, merge=true to aggregate the data.
This helps you find what was spent for a campaign from the campaign start date.
The campaign performance data that is returned includes:
- Impressions
- Clicks
- Conversions (Applies)
- Cost
- Currency Code (
USD,GBP, and so on)
ATS campaign predictions
POST | /v1/campaignpredictions |
|---|
This endpoint:
- Estimates the expected job performance in terms of the number of total job applies for a budget.
- Recommends a budget to sponsor a job based on the desired performance.
For a specific job and its properties, these predictions are based on the past performance of similar jobs at Indeed. It can predict performance of campaign with multiple jobs as well
Predictions are currently available for US (English) jobs only and estimate performance for budgets lower than USD $100 per day. All budget amounts are specified in US dollars (USD).
Predictions are based on the job properties and the type and duration of the campaign.
After the employer accepts the recommended budget, create campaigns with the same parameters.
| Parameter | Description |
|---|---|
mode | Job mode value. Set to |
Request body
| Field | Required | Description | Type |
|---|---|---|---|
body | required | Job, campaign, and prediction information. | CampaignPredictions |
CampaignPredictions
| Field | Required | Description | Type |
|---|---|---|---|
jobInfo | required | Describes a job and its properties. | JobInfo |
campaignInfo | required | Describes the desired campaign type. | CampaignInfo |
predictionsInfo | required | Specifies the desired number of applies or desired budgets for predictions. | PredictionsInfo |
JobInfo
| Field | Required | Description | Type |
|---|---|---|---|
| required | City where the job is located. Example:
| String |
jobsQuery | required | Use Example:
| String |
| required | Source or company for this job. Must exactly match the Example:
| String |
| required | Job title. Example:
| String |
CampaignInfo
| Field | Required | Description | Type |
|---|---|---|---|
| required | Either Example:
| String |
| conditional | Campaign start date, in Example:
| String |
| conditional | Campaign end date, in Example:
| String |
PredictionsInfo
| Field | Required | Description | Type |
|---|---|---|---|
| required | Either Example:
| String |
| conditional | Budget for which to get an estimated performance. Performance is estimated in number of applies. Pass only one number in the array. Required if Example:
| Double array |
| conditional | Desired number of total applies (organic and sponsored) across jobs for which you want a recommended budget. Pass only one number in the array. Required if Example:
| Integer array |
| conditional | Desired number of applies (organic and sponsored) per job for which you want a recommended budget. Pass only one number in the array. Required if Example:
| Integer array |
Response
| Name | Description | Type |
|---|---|---|
currencyCode | Currency code for the budget amounts. Example:
| String |
| The estimated performance or recommended budget overall for all the jobs. | Prediction array |
| Estimated performance or recommended budget for each jobs. | JobLevelPredictions array |
JobLevelPredictions
| Name | Description | Type |
|---|---|---|
job | Job Details | Job Details |
predictions | Estimated performance or recommended budget for a job. | Prediction array |
Job details
| Name | Description | Type |
|---|---|---|
jobKey | Job key. | String |
refNum | Job reference number. | String |
title | Job title. | String |
location | Job location. | String |
Prediction
| Name | Description | Type |
|---|---|---|
budget | For BUDGET_BASED requests, this is the budget that the estimated number of applies is based on. For APPLY_BASED requests, this is the recommended budget to achieve the desired number of total applies. | Double |
organicApplies | For BUDGET_BASED requests, the estimated number of organic applies for the job without sponsoring. Use totalApplies and organicApplies to calculate the estimated number of applies that result from sponsoring the job. | Integer |
totalApplies | For BUDGET_BASED requests, the estimated number of total applies for an organic and sponsored job for a budget value. For APPLY_BASED requests, this is the number of total applies that the recommended budget is based on. | Integer |
estimatedLowerApplies | For BUDGET_BASED requests, the estimated lower range of applies for an organic and sponsored job for a budget value. For APPLY_BASED requests, the response does not include this field. | Integer |
estimatedHigherApplies | For BUDGET_BASED requests, the estimated higher range of applies for an organic and sponsored job for a budget value. For APPLY_BASED requests, the response does not include this field. | Integer |
Example JSON request for prediction
{ "jobInfo": { "jobsLocation": "Austin, TX", "jobsQuery": "refnum:12345", "jobsSourceName": "Bob’s Recruiting", "jobsTitle": "Software Engineer" }, "campaignInfo": { "campaignType": "ONETIME", "startDate": "2021-08-10", "endDate": "2021-08-11" }, "predictionsInfo": { "predictionType": "BUDGET_BASED", "budgets": [75.50] }}Example JSON response for prediction
{ "currencyCode": "USD", "predictions": [{ "predictionType": "BUDGET_BASED", "budget": 151, "organicApplies": 3, "totalApplies": 7, "estimatedLowerApplies": 3, "estimatedHigherApplies": 10 }], "jobLevelPredictions": [{ "job": { "jobKey": "80fdf7e9de72243f", "refNum": "12800649-92-99", "title\"": "Firmware Engineer", "location": "Irvine" }, "predictions": [{ "predictionType": "BUDGET_BASED", "budget\"": 75.5, "organicApplies": 2, "totalApplies": 4, "estimatedLowerApplies": 2, "estimatedHigherApplies": 5 }] }, { "job": { "jobKey": "79db86f75cbbde08", "refNum": "12800649-93-100", "title\"": "Principal Software Engineer", "location": "Irvine" }, "predictions": [{ "predictionType": "BUDGET_BASED", "budget": 75.5, "organicApplies": 1, "totalApplies": 3, "estimatedLowerApplies": 1, "estimatedHigherApplies": 5 }] } ]}Organic job performance and prediction
POST | /v1/organicjobpredictions |
|---|
This endpoint provides:
- The organic traffic statistics of a single job for the past 30 days
- The estimated organic traffic statistics for the next 30 days
- The estimated improvement in traffic if the job is sponsored
The performance is expressed in terms of clicks.
All budget amounts are specified in USD.
To use this endpoint, the employer’s admin user must have an account at Indeed by following the steps in Set up employer account. However, if you do not have billing information set up for sponsoring, you can pass the type=login parameter in the URL to simplify the setup flow.
Organic job performance and prediction request
| Name | Required | Description | Type |
|---|---|---|---|
body | required | Job-related information. | OrganicJobPrediction |
OrganicjobPrediction field
| Name | Required | Description | Type |
|---|---|---|---|
jobInfo | required | Job description, and its properties. | JobInfo |
JobInfo field
| Name | Required | Description | Type |
|---|---|---|---|
jobsQuery | required | The unique reference number that identifies the job, in "refnum:xxxxx” format. Should match the Example:
| String |
jobsSourceName | required | The source or company for this job, in "refnum:xxxxx” format. Should exactly match the Example:
| String |
Organic job performance and prediction response
The response can differ depending on whether the job received traffic or whether sponsoring the job is recommended.
- If the job hasn’t received any traffic in the past 30 days, the value of the
clicksfield within themetricobject is0. - If the job hasn’t existed for 30 days, traffic statistics are returned for the number of days the job existed (but the value of the
daysresponse field is still30). - If the recommendation is not available, the
recommendationfield is not returned.
| Name | Required | Description | Type |
|---|---|---|---|
metric | required | The organic traffic statistics of the given job for the past 30 days. | OrganicMetric |
prediction | required | The estimated organic traffic statistics of the given job for the next 30 days. | OrganicPrediction |
recommendation | optional | If available, the estimated sponsored performance of the given job with a recommended budget. | SponsoredPrediction |
OrganicMetric field
| Name | Description | Type |
|---|---|---|
clicks | Number of clicks the job received in the last n number of days. | Integer |
days | Number of days. Default is 30 days. | Integer |
OrganicPrediction field
| Name | Description | Type |
|---|---|---|
clicks | For the next n number of days, the estimated clicks for the job. | Integer |
days | Number of days. Default is 30 days. | Integer |
SponsoredPrediction field
| Name | Description | Type |
|---|---|---|
clicks | For the next n number of days, the estimated clicks for the job. | Integer |
days | Number of days. Default is 30 days. | Integer |
budget | Recommended budget for sponsoring. | Double |
Example JSON request
{ "jobInfo": { "jobsQuery": "refnum:12345", "jobsSourceName": "Bob’s Recruiting" }}Example JSON response
{ "metric": { "clicks": 30, "days": 30 }, "prediction": { "clicks": 40, "days": 30 }, "recommendation": { "budget": 250.0, "clicks": 70, "days": 30 }}