LinkedIn Jobs Scraper API
Search LinkedIn Jobs and Get LinkedIn Job Details cover LinkedIn job search end to end. Search LinkedIn Jobs takes a keyword and a location and returns matching postings with their title, company, location, posting date, a salary hint where LinkedIn publishes one, and the job id to pass into the detail call. Get LinkedIn Job Details takes that job id — or a job URL, or a urn:li:jobPosting URN — and returns the full posting: complete description, seniority level, employment type, job function, industries, applicant count and how long ago it was posted. Both read LinkedIn’s public GUEST job-search surface, the same pages a signed-out visitor can browse — no LinkedIn account or session cookie is required, and they route over datacenter exits rather than the residential pool the platform reserves for its authenticated Voyager scrapers. The exact rate is on this page’s FAQ, generated from the catalog. This pair is deliberately separate from the linkedin-* Voyager profile-lookup operations, which are a different, cookie-authenticated tier priced on their own — the two should not be confused, and this cluster is jobs only.
What data you get
Search LinkedIn Jobs
- jobs
- arrayrequired
- jobs[].jobId
- stringrequired
- jobs[].title
- stringrequired
- jobs[].jobUrl
- stringrequired
- jobs[].salary
- stringrequired
- jobs[].company
- stringrequired
- jobs[].logoUrl
- stringrequired
- jobs[].benefits
- arrayrequired
- jobs[].location
- stringrequired
- jobs[].postedAt
- stringrequired
- jobs[].companyUrl
- stringrequired
- jobs[].postedLabel
- stringrequired
- page
- integerrequired
- hasMore
- booleanrequired
- keywords
- stringrequired
- location
- stringrequired
- elapsedMs
- integerrequired
- fetchedAt
- stringrequired
- resultCount
- integerrequired
Get LinkedIn Job Details
- jobId
- stringrequired
- title
- stringrequired
- jobUrl
- stringrequired
- company
- stringrequired
- logoUrl
- stringrequired
- location
- stringrequired
- elapsedMs
- integerrequired
- fetchedAt
- stringrequired
- companyUrl
- stringrequired
- industries
- stringrequired
- jobFunction
- stringrequired
- postedLabel
- stringrequired
- employmentType
- stringrequired
- seniorityLevel
- stringrequired
- applicantsLabel
- stringrequired
- descriptionHtml
- stringrequired
- descriptionText
- stringrequired
Calling Search LinkedIn Jobs
A schema-derived request and response shape — not a captured production call, since upAPI has none to publish. Every field is real, from the operation’s own published schema.
curl -X POST https://api.upapi.io/linkedin-jobs-search.get \
-H "X-Api-Key: $UPAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"page": 1,
"keywords": "python developer",
"location": "United States",
"timePosted": "any",
"workplaceType": "any"
}'{
"jobs": [
{
"jobId": "example",
"title": "Alan Turing",
"jobUrl": "example",
"salary": "example",
"company": "example",
"logoUrl": "example",
"benefits": [
"example"
],
"location": "example",
"postedAt": "example",
"companyUrl": "example",
"postedLabel": "example"
}
],
"page": 1,
"hasMore": false,
"keywords": "example",
"location": "example",
"elapsedMs": 1,
"fetchedAt": "example",
"resultCount": 1
}Pricing
Search LinkedIn Jobs
6 units per call
Get LinkedIn Job Details
6 units per call
Every unit draws from one pooled monthly quota shared across the whole catalog. See upapi.io/pricing for what a unit costs on each plan.
Questions people actually ask
Do I need a LinkedIn account to search jobs?
No. Both operations read LinkedIn’s public guest job-search surface — the pages a signed-out visitor can already browse — and authenticate only with your upAPI key.
What can I pass into Get LinkedIn Job Details?
The job id returned by Search LinkedIn Jobs, the full job posting URL, or a urn:li:jobPosting URN — whichever you already have on hand.
How is this different from upAPI’s other LinkedIn operations?
This pair is jobs only, runs over datacenter exits, and needs no LinkedIn account. The separate linkedin-* profile-lookup operations are cookie-authenticated, run over the residential proxy pool, and carry their own per-call rate — a different surface, priced on its own.
How much does this cost?
Every operation in this cluster costs 6 weighted units per call, drawn from your plan’s pooled monthly quota — see upapi.io/pricing for what a unit costs on each tier.
How fresh is the data — is it cached?
Search LinkedIn Jobs is cached for 5 minutes; Get LinkedIn Job Details is cached for 1 hour. A repeat call inside a cached window returns the cached response and is billed nothing.