Integrate with Indeed and call APIs
Get OAuth credentials and make your first API call.
By using this API and its documentation and building an integration, you agree to the Additional API Terms and Guidelines.
Overview
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.
Become an Indeed partner
If you are not already a partner, become an Indeed partner.
Get your OAuth credentials
-
Sign in to Partner Console with your Indeed user account.
-
On the Dashboard, select your app in the Apps list.
The Credentials tab on the app details page lists your OAuth credentials: a client ID and secret.
Get an access token
To get an access token, send a POST request to https://apis.indeed.com/oauth/v2/tokens with these headers and body parameters, using a command-line tool like curl or a UI tool like Insomnia.
Don't expose the client secret to end users. Indeed recommends generating tokens in the backend.
curl -L 'https://apis.indeed.com/oauth/v2/tokens' \ -H 'Accept: application/json' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'client_id=<client_id>' \ -d 'client_secret=<client_secret>' \ -d 'grant_type=client_credentials' \ -d 'scope=employer_access'The request headers are:
| Header | Value |
|---|---|
Accept |
|
Content-Type |
|
The request body parameters are:
{ "access_token": "<access_token>", "scope": "employer_access", "token_type": "Bearer", "expires_in": 3600}Your token expires in one hour (3600 seconds). Refresh your token hourly.
Call Indeed APIs
To call an Indeed GraphQL API, send a POST request to https://apis.indeed.com/graphql with these headers and your GraphQL query or mutation:
curl -L 'https://apis.indeed.com/graphql' \ -H 'Authorization: Bearer <access_token>' \ -H 'Content-Type: application/json' \ -d '{"query":"query {\n jobSearch(\n location: { radius: 5, radiusUnit: MILES, where: \"Austin\" }\n what: \"Nurse\"\n limit: 5\n ) {\n results {\n job {\n title\n sourceEmployerName\n }\n }\n }\n}","variables":{}}'Request headers:
| Header | Value | Description |
|---|---|---|
|
| Authenticate with the server to access protected resources. Pass the access token in this header using the note For the See Get an access token and Authorization header. |
|
| The media type of the resource. See Content-Type header. |
The -d parameter specifies the GraphQL query:
query { jobSearch(location: { radius: 5, radiusUnit: MILES, where: "Austin" } what: "Nurse" limit: 5) { results { job { title sourceEmployerName } } }}{ "errors": [{ "message": "The client does not have access to the 'job-retrieval-service' service.", "extensions": { "code": "INTERNAL_SERVER_ERROR" } }], "data": null}See also
- oauth/v2/tokens endpoint
- HTTP request headers
- Create an example employer
- Create an example job
- OAuth 2.0 Client for Java/Kotlin)
- GraphQL API reference
- Troubleshoot GraphQL errors
- Troubleshoot OAuth errors