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's Job Posting API enables authorized third parties such as clients, ATS systems, and job distributors to post jobs directly to LinkedIn on behalf of customers. Jobs that are already created externally on 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.
What you will learn
In this article, I shall walk you through understanding what LinkedIn Job Posting API 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), 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.
There are several restrictions or obligations 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 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 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.
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. 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 or XML feeds.
Promoted Jobs - These are paid job postings. You can directly post promoted jobs using Job Postings API. 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:
POST https://api.linkedin.com/v2/simpleJobPostings
API Authorization
All requests below require access tokens obtained via the OAuth2.0 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
.
Authorization: Bearer {token}
x-restli-method: batch_create
Sample Request Body:
{
"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
Follow me on Twitter eunit99 for more contents.
Top comments (8)
Hi there. I used information below but why I get ({
"serviceErrorCode": 100,
"message": "Not enough permissions to access: POST /simpleJobPostings",
"status": 403
}) response, Please help me
Hey, i have the same problem, if you have fixed it can you help me on it please?
Check out this LinkedIn Job Postings scraper to get the latest LinkedIn job postings.
It is designed for both personal and professional use, simply enter your LinkedIn job search page URL to extract tailored job titles, companies names, locations, job URL and more. This scraper handles infinite scrolling and exports data to any format such CSV, JSON, XML and more.
Hi brother, did you fix the issue?
Check out this LinkedIn Job Postings scraper to get the latest LinkedIn job postings.
It is designed for both personal and professional use, simply enter your LinkedIn job search page URL to extract tailored job titles, companies names, locations, job URL and more. This scraper handles infinite scrolling and exports data to any format such CSV, JSON, XML and more.
I do get the same error!!
keep enhancing your informative and valuable post with us . ya wadoodo for husband love
Hi,
I'm facing Same Issue..
({
{
"serviceErrorCode": 100,
"message": "Not enough permissions to access: POST /simpleJobPostings",
"status": 403
}
Some comments have been hidden by the post's author - find out more