LinkedIn Jobs Scraper (Public Guest Search, No Login)
Pricing
$2.50 / 1,000 job scrapeds
LinkedIn Jobs Scraper (Public Guest Search, No Login)
Scrapes LinkedIn job postings (title, company, location, description, posted date, apply link) from LinkedIn's public guest job-search pages. No login, no cookies, no account-ban risk — only data LinkedIn already serves to logged-out visitors.
Pricing
$2.50 / 1,000 job scrapeds
Rating
0.0
(0)
Developer
Mikkel Bech-Hansen
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Searches LinkedIn job postings and returns title, company, location, full description,
posted date, and the apply link — using only the pages LinkedIn already serves to
logged-out visitors. There is no login field, no cookie input, and no session state
anywhere in this actor: it calls LinkedIn's public guest job-search endpoint
(linkedin.com/jobs-guest/jobs/api/seeMoreJobPostings/search), the same one LinkedIn's
own logged-out job search page uses. That means no account-ban risk and nothing to
configure before your first run — but it also means it can't return anything LinkedIn
hides from logged-out visitors (see Known limitations).
Input
| Field | Type | Default | Notes |
|---|---|---|---|
keywords | string | "software engineer" | Job title, skill, or company. Leave blank to browse all listings for the location. |
location | string | "United States" | City, state, country, or region. Leave blank to search worldwide. |
datePosted | enum | "any" | any, past24Hours, pastWeek, pastMonth, past6Months, past12Months. The 6/12-month windows aren't exposed in LinkedIn's own UI but work on the guest endpoint - verified against live results. |
workplaceType | enum | "any" | any, onSite, remote, hybrid. |
maxItems | integer | 50 | Stop after this many job listings (1-2000). Each listing is one billable unit. |
fetchFullDescription | boolean | true | Visit each job's detail page for the full description, seniority level, employment type, job function, industries, and salary (when listed). Off = search-result fields only (title, company, location, posted date, apply link) — fewer requests, same price per listing. |
proxyConfiguration | object | no proxy | The guest endpoint works without a proxy at the throttled request rate this actor uses by default. Turn on Apify Proxy if you plan to run many searches back to back. |
Output
One dataset record per job listing:
{"jobId": "4446240091","title": "Software Engineer","companyName": "Aroghia Group, LLC","companyUrl": "https://www.linkedin.com/company/aroghia-group-llc","location": "Beaverton, OR","postedAt": "2026-08-03","postedAgo": "1 week ago","applyUrl": "https://www.linkedin.com/jobs/view/software-engineer-at-aroghia-group-llc-4446240091","companyLogoUrl": "https://media.licdn.com/dms/image/v2/.../aroghia_group_llc_logo?...","description": "2+ years software engineering experience (level dependent).\nStrong proficiency in Python, TypeScript or React...","seniorityLevel": "Associate","employmentType": "Contract","jobFunction": "Information Technology","industries": "IT Services and IT Consulting","salary": null,"applicantCount": "Over 200 applicants","searchKeywords": "software engineer","searchLocation": "United States"}
description, seniorityLevel, employmentType, jobFunction, industries,
salary, and applicantCount are null when fetchFullDescription is off, or when
the poster didn't provide that field (salary in particular is only present on a
minority of listings — LinkedIn doesn't require it).
Cost guidance
Pay-per-event: $0.005 per job listing delivered (see MONETIZATION.md). A typical
run of 50 listings (the default maxItems) costs about $0.25. A 1,000-listing run
costs about $5.00. There is no charge for searches that match nothing.
How it works
keywords + location are sent to LinkedIn's guest search endpoint, which returns an
HTML fragment of job cards (no JSON API, no auth). The actor paginates through result
pages, and — when fetchFullDescription is on — follows each card's own guest-accessible
detail page for the full description and criteria. Requests are deliberately throttled
to one at a time with a 2-second delay between requests to the same domain, which is
what keeps the default (no-proxy) configuration reliable — verified directly: an
earlier, un-throttled version of this actor hit LinkedIn's rate limit (HTTP 429) within
the first ~15 requests, while the throttled version completed 55/55 requests
successfully in testing. This makes runs slower (roughly one job listing every 1-2
seconds with fetchFullDescription on) but keeps them working without a proxy.
Known limitations
- No cookie-gated data, by design. This actor never asks for or uses a LinkedIn session. It cannot return applicant lists, recruiter contact details, "people you may know," or any other field LinkedIn only shows to logged-in users. If you need those, you need a different (cookie-based) actor and accept the account-risk tradeoff that comes with it — this actor exists specifically so you don't have to.
- Pagination is capped. LinkedIn's guest endpoint itself stops returning results
past a certain offset (observed around
start=1000-2000depending on the query, returning HTTP 400) regardless of how many listings actually exist. In practice this means very broad searches (e.g. blank keywords in a huge market) won't surface every listing on LinkedIn, only the first page or so of them. - Low-signal queries can return loosely-related "filler" listings. When a search matches very few or no real postings, LinkedIn's guest search sometimes fills the page with generic/unrelated listings rather than an empty result — this is LinkedIn's own behavior, not a bug in this actor. It's more common with obscure keyword/location combinations than with normal job searches.
- No proxy is required by default, but heavy use may still get rate-limited.
Testing showed the default throttling (1 request at a time, 2s apart) runs cleanly
for at least ~50-100 requests in a row. If you run this actor very frequently or in
parallel, enable Apify Proxy in the
proxyConfigurationinput to reduce the chance of temporary blocks. - Undocumented endpoint.
jobs-guest/jobs/api/seeMoreJobPostings/searchis LinkedIn's own internal endpoint, not a published API — its response shape or availability could change without notice. - Salary is rarely present. Most listings don't include one;
salaryisnullfar more often than not (16 of 50 in one representative test run).
Legal
This Actor is an independent, third-party tool. It is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation.
It retrieves data from LinkedIn's public, logged-out guest job-search pages, never from a login-gated surface and never using a session cookie. Despite that, LinkedIn's User Agreement (Section 8.2) restricts automated data collection from the site regardless of whether the page requires login, and LinkedIn has pursued this in practice - a well-known public-data-only LinkedIn scraping API (Proxycurl) shut down in 2025 citing the cost of LinkedIn/ Microsoft's legal pressure. Using this Actor may not comply with LinkedIn's terms. You are responsible for reviewing LinkedIn's terms and applicable law before using this Actor, and for how you use the data it returns.