LinkedIn Jobs API
Tags: linkedin, jobs, api, postings
Published: 2022-08-06 14:26:00


## Outline

- Introduction
- What you will learn
- What you can use LinkedIn Jobs API for
- How to get access to LinkedIn Jobs API
- Getting started with access
- Job Posting Categories
- Posting job details
- Limitations of LinkedIn Jobs API
- Further readings

## Introduction

[LinkedIn](https://www.linkedin.com/)'s Job Posting API enables authorized third parties such as clients, [ATS systems](https://www.techtarget.com/searchhrsoftware/definition/applicant-tracking-system-ATS), and job distributors to post jobs directly to LinkedIn on behalf of customers. Jobs that are already created externally on [ATS](https://www.techtarget.com/searchhrsoftware/definition/applicant-tracking-system-ATS), company size, or job board can be automatically ingested by LinkedIn. LinkedIn provides various solutions to ingest such jobs to your customers, partner ATSs' and Job Distributors.

![LinkedIn Job Posting API](https://user-images.githubusercontent.com/24845008/183251525-82c9a6f2-eca3-4509-aec1-9fc305ade3d1.png)

## What you will learn

In this article, I shall walk you through understanding what [LinkedIn Job Posting API](https://docs.microsoft.com/en-us/linkedin/talent/job-postings/job-posting-overview) is all about, how you will integrate LinkedIn's Jobs Posting API to your ATS to directly post job openings to LinkedIn.

## What you can use LinkedIn Jobs API for

The LinkedIn Job Posting API allows members who use it (*authorized third parties such as clients, ATS systems, and job distributors*) to automatically post jobs to LinkedIn from their [Applicant Tracking System (ATS)](https://www.techtarget.com/searchhrsoftware/definition/applicant-tracking-system-ATS), instead of manually posting via their LinkedIn Recruiter account. This API is typically utilized by recruiter clients who are currently using a job distribution tool. It allows them (people) to post a job to various sites at one time, including LinkedIn. ATS partners no longer need login or password information to post on behalf of clients.

The LinkedIn jobs API in simple terms is used to publish jobs on LinkedIn on behalf of the hiring organization, making it simpler for recruiters to find candidates who are a good fit for their open positions.

It is, however, important to point out that this feature is not available to **Recruiter Online** or **Recruiter Lite** accounts.

## How to get access to LinkedIn Jobs API

The use of LinkedIn's APIs is restricted to those developers approved by LinkedIn. In **order to get access** to LinkedIn's Jobs APIs, you will need to reach out to your LinkedIn Relationship Manager or Business Development contact as you will need to meet certain criteria and sign an API agreement with data restrictions to use this integration. If you are not yet a LinkedIn Talent Solutions Partner, please complete the [LinkedIn Talent Solutions Partner Request Form](https://business.linkedin.com/talent-solutions/ats-partners/partner-application).

There are several [restrictions or obligations](https://docs.microsoft.com/en-us/linkedin/talent/job-postings/api/overview) you need to be aware of from LinkedIn. These include but are not limited to:

- Acknowledging that LinkedIn acts as a passive conduit for the online distribution and publication of job listings and LinkedIn is not responsible for screening or monitoring job listings. Jobs posted to the LinkedIn Service (including via the LinkedIn APIs) may be posted only for lawful purposes by individuals and employers seeking employees.
- You will ensure that you agree to the [LinkedIn Jobs Terms and Conditions](https://www.linkedin.com/legal/jobs-terms-conditions) before posting any jobs to the LinkedIn Service via your partner’s application and shall have a method of keeping track of which of its customers have agreed to the [LinkedIn Jobs Terms and Conditions](https://www.linkedin.com/legal/jobs-terms-conditions) and when and shall furnish such information to LinkedIn upon request.
- Shall not market any job listings to be distributed via LinkedIn or its syndication network as a "free way to post jobs to LinkedIn" or anything substantially similar in any marketing or sales materials. Please refer to a [comprehensive list of these conditions](https://docs.microsoft.com/en-us/linkedin/talent/job-postings/api/overview).

## Getting started with access

You must be granted access to test resources and have your API applications enabled to access the job posting API endpoints before you can start developing. The actions listed below must be taken to seek access to use the LinkedIn Job Posting API:

- For the integration, [create API applications](https://www.linkedin.com/developer/apps). Per integration, you are allowed to create two API applications: one for use in production and the other for testing and development. Please contact the LinkedIn Business Development point of contact to fill up the Partner Onboarding Form.

## Job Posting Categories

The following two job categories broadly define the ways to post jobs on LinkedIn:

- **Basic Jobs** - These are free job posts gathered by LinkedIn from external sources such as ATS, job boards, distributors, and aggregators across the web to create a comprehensive job-seeking experience for LinkedIn members. Basic jobs can be posted using [Job Postings API](https://docs.microsoft.com/en-us/linkedin/talent/job-postings/api/sync-job-postings) or [XML feeds](https://docs.microsoft.com/en-us/linkedin/talent/job-postings/xml-feeds).

- **Promoted Jobs** - These are paid job postings. You can directly post promoted jobs using [Job Postings API](https://docs.microsoft.com/en-us/linkedin/talent/job-postings/api/sync-job-postings). For customers with paid job slots, the API allows posting jobs directly into their job slots.

## Posting job details

To create a job, post the job by providing a unique `externalJobPostingId` value and set the `jobPostingOperationType` as `CREATE`.

### API Endpoint

Use the following endpoint to submit a task to create, close, update, or renew one or more jobs asynchronously:

```http
POST https://api.linkedin.com/v2/simpleJobPostings
```

### API Authorization

All requests below require access tokens obtained via the [OAuth2.0 Client Credentials flow](https://docs.microsoft.com/en-us/linkedin/shared/authentication/client-credentials-flow).

## Sample Request for Basic Jobs

To publish a job as a **free job**, you need to provide the `listingType` field value as `BASIC`.

API Header:

The header for making the request is `X-Restli-Method: batch_create`.

```http
Authorization: Bearer {token}
x-restli-method: batch_create
```

Sample Request Body:

```json
{
 "elements": [{
   "integrationContext": "urn:li:organization:2414183",
   "companyApplyUrl": "http://linkedin.com",
   "description": "We are looking for a passionate Software Engineer to design, develop and install software solutions. Software Engineer responsibilities include gathering user requirements, defining system functionality and writing code in various languages. Our ideal candidates are familiar with the software development life cycle (SDLC) from preliminary system analysis to tests and deployment.",
   "employmentStatus": "PART_TIME",
   "externalJobPostingId": "1234",
   "listedAt": 1440716666,
   "jobPostingOperationType": "CREATE",
   "title": "Software Engineer",
   "location": "India",
   "workplaceTypes": [
    "remote"
   ]
  },
  {
   "integrationContext": "urn:li:organization:2414183",
   "companyApplyUrl": "http://linkedin.com",
   "description": "We are looking for a passionate Software Engineer to design, develop and install software solutions. Software Engineer responsibilities include gathering user requirements, defining system functionality, and writing code in various languages. Our ideal candidates are familiar with the software development life cycle (SDLC) from preliminary system analysis to tests and deployment.",
   "employmentStatus": "PART_TIME",
   "externalJobPostingId": "1234",
   "listedAt": 1440716666,
   "jobPostingOperationType": "CREATE",
   "title": "Software Engineer",
   "location": "San Francisco, CA",
   "workplaceTypes": [
    "hybrid"
   ]
  },
  {
   "integrationContext": "urn:li:organization:2414183",
   "companyApplyUrl": "http://linkedin.com",
   "description": "We are looking for a passionate Senior Software Engineer to design, develop and install software solutions. Software Engineer responsibilities include gathering user requirements, defining system functionality, and writing code in various languages. Our ideal candidates are familiar with the software development life cycle (SDLC) from preliminary system analysis to tests and deployment.",
   "employmentStatus": "PART_TIME",
   "externalJobPostingId": "789",
   "listedAt": 1440716666,
   "jobPostingOperationType": "CREATE",
   "title": "Senior Software Engineer",
   "location": "San Francisco, CA"
  }
 ]
}
```

## Limitations of LinkedIn Jobs API

The LinkedIn jobs API is constantly evolving. One of the biggest drawbacks of this API is that, when you sign up as a developer to gain access to the API, LinkedIn grants you a limit of **100,000 API calls** per day. However, if you run different scripts, you will eventually get stopped after 300 calls with an error stating that the throttle limit exceeds.

### Meaning of throttles

**API throttling** is the process of limiting the number of API requests a user can make in a certain period. To prevent abuse and ensure service stability, all API requests are rate-limited.

Rate limits specify the maximum number of API calls that can be made in 24 hours. These limits reset at midnight UTC every day.

There are three types of throttles applied to all API keys:
**Application throttles**: These throttles limit the number of each API call your application can make using its API key.
**User throttles**: These throttles limit the number of calls for any individual user of your application.
**Developer throttles**: For people listed as developers on their API keys, they will see user throttles that are approximately four times higher than the user throttles for most calls. But your users will experience the User throttle limits, which are lower.
These rate limits can be extended or the throttling limits can be increased to give developers more space to explore and build things for the user.

## Further readings

- [LinkedIn API Products](https://developer.linkedin.com/product-catalog) catalog.
- [Create Jobs - LinkedIn](https://docs.microsoft.com/en-us/linkedin/talent/job-postings/api/create-jobs)

Follow me on Twitter [eunit99](https://twitter.com/eunit99) for more contents.