Scrape LinkedIn jobs by keyword, location or company — no login, no cookies. Every posting returns the full description, salary, required skills, seniority and hiring-team contacts. Built for recruiters and sourcers. Export to CSV, JSON or Excel, run via API, or schedule runs.
All notable changes to the LinkedIn Jobs Scraper are documented here.
The format follows Keep a Changelog .
[0.0.27] - 2026-08-12
Maintenance build — no user-facing changes. Input schema, output dataset
columns, KVS records, console output, error messages, defaults, and pricing
are all unchanged from 0.0.26. Saved tasks continue to work identically.
[0.0.26] - 2026-08-12
Maintenance build — no user-facing changes. Input schema, output dataset
columns, KVS records, console output, error messages, defaults, and pricing
are all unchanged from 0.0.25. Saved tasks continue to work identically.
[0.0.25] - 2026-08-10
Fixed
A failed run no longer names the exact request that failed inside the service this actor depends
on. When that service refused a request, the run's failure reason spelled out which of its
endpoints had been called, and that reason is stored in RUN_SUMMARY and shown with the run. It
now says only that the request was refused upstream.
[0.0.24] - 2026-08-10
Changed
The free-plan limit ids listed in the run's FREE_LIMITS_APPLIED storage record now use one
shared vocabulary across all our actors, so the same limit reads the same wherever you meet it.
The human-readable message on each entry is unchanged.
[0.0.23] - 2026-07-30
Maintenance build — no change to input, output or pricing.
[0.0.22] - 2026-07-29
Changed
The Storage tab now names the records the run writes — the run summary, the plain-language
explanation of what happened, and the free-plan caps applied — instead of showing bare keys.
The Store listing now says what this actor returns — full description, salary, required
skills, seniority and hiring-team contacts on every posting — and the price line shows the
per-job price instead of a generic label.
[0.0.21] - 2026-07-28
Fixed
The status page is saved at all now. Its saved copy was being rejected on every single run,
so there was nothing to fall back on once the run's container went away.
The status page now keeps up while a run is going. Its saved copy was only written twice —
once at the start and once at the end — so anyone opening it mid-run saw the run as it looked at
second zero. It now refreshes every ten seconds.
The "Live status" link now works after a run has finished. It pointed at the run's own
container, which the platform shuts down as soon as the run ends, so opening it later showed
nothing. It now opens the saved copy of the page, which stays available for as long as the run's
storage does.
Removed a storage record from the actor's schema that this actor never writes.SKIPPED_ITEMS
was declared but never produced, so tools reading the schema expected a record that was never
there.
[0.0.20] - 2026-07-06
Changed
Every "Upgrade" link in run messages now says what's behind it: paid plans start at $29/mo with $29 in platform credits, and the link opens your plan page in Apify Console.
[0.0.19] - 2026-07-06
Fixed
The "Upgrade" link in run summaries now opens your Apify plan page directly (the old link form could land on the wrong billing tab).
[0.0.18] - 2026-07-02
Added
When some job links return nothing, the run now says how many. A Fetch Job Details run with a mix of live and expired links previously reported only the rows it saved — now the run report and the completed screen show "N of your M job links returned nothing — likely closed, filled, or removed postings", with a reminder that empty links are not charged. The run summary also carries the count.
[0.0.17] - 2026-07-02
Changed
README "Example tasks" now links the new "Scrape jobs by company on LinkedIn" ready-to-run task (six one-click examples total). No code changes.
[0.0.16] - 2026-07-02
Fixed
Mode 3 (Search Company Jobs) now returns what companies actually list. Two bugs made most company searches come back empty:
Leaving the keyword field blank silently searched a default query instead of returning every open role. Blank keywords now return the company's complete job listing, as the field always promised.
Results were silently limited to the United States unless you changed the location. Mode 3 now searches all locations by default; pick a Mode 1 location field to narrow.
Added
Empty company searches now explain themselves — the run report and live status screen show each company's live open-roles count, so you can tell "this company lists no jobs on LinkedIn" apart from "my keywords filtered everything out".
New "Scrape jobs by company" example task; FAQ entry on getting every open role at a company.
Changed
Mode 3 documentation rewritten around the fixed behavior: blank keywords = complete listing, worldwide by default, cost guidance for large companies.
[0.0.15] - 2026-07-02
Added
Example tasks — five ready-to-run, pre-configured searches linked from the README (by keyword, Data Analyst, Product Manager, remote jobs, Software Engineer). One click, no setup.
The run tells you what you're missing — when a free run hits the plan cap, the run report now shows exactly how many jobs matched your search and how many more are waiting, with a one-step path to the full result set.
Recovery screen for zero-result runs — instead of a generic completion screen, a run that finds nothing now shows the most likely cause, the top fix, and a starter search that always returns jobs. The no-results report also leads with that starter search.
New FAQ entries — no LinkedIn account/cookies/login needed; how many jobs per run; bulk-enriching job URL lists; scheduling a daily search.
Tips & Best Practices and Disclaimer sections in the README; clearer in-form guidance on both search-keyword fields.
Changed
Free plan now returns up to 20 jobs per run (was 50). When a search matches more, the run report says exactly how many — upgrade and re-run the same input for the full set.
Store title and description now lead with what the data is for: salary, skills, and hiring-team contacts for recruiters, sourcers, and lead-gen teams.
Mode 3 (Search Company Jobs) documentation now sets honest expectations — many companies have no open roles at any given moment.
Fixed
Truncated Store description (ended mid-sentence with "…").
Welcome message wrongly said scheduling was paid-only — free plans can schedule tasks with saved input too.
[0.0.14] - 2026-05-28
Fixed
Helpful message when Fetch Job Details returns nothing — if a job link can't be pulled, the run now explains the likely cause (the posting was closed, filled, or removed; or the link isn't a job-view URL like https://www.linkedin.com/jobs/view/<id>) and how to copy a valid one, instead of showing the generic welcome message. Search mode already did this — Fetch Job Details now does too. Empty detail pulls are not charged.
[0.0.13] - 2026-05-21
Added
Helpful message when a search returns no jobs — if Search Jobs or Search Company Jobs finds nothing, the run now explains the most likely reasons and the highest-impact fixes (trim your keywords to the core job title, widen the date range, turn off Easy Apply / Under 10 applicants, broaden experience levels) instead of finishing silently with an empty dataset. Empty results are not charged.
Changed
The Job keywords field now notes that extra words (seniority, degree, e.g. "fresher") sharply narrow results and can return nothing.
[0.0.12] - 2026-05-21
Fixed
Multiple job titles in one search — a comma-separated keyword list (e.g. Risk Analyst, Data Analyst, Financial Analyst) is now treated as an OR search that returns jobs matching any of the titles. Previously the whole comma string was sent as a single literal phrase, which matched nothing and returned zero rows. Applies to Mode 1 (Search Jobs) and Mode 3 (Search Company Jobs).
Custom Location with several places — a comma list in Custom Location (e.g. Poznań, Łódź) now resolves to the first place LinkedIn recognises instead of silently falling back to the whole country.
[0.0.11] - 2026-05-18
Added
State / province / region dropdown — narrow Mode 1 to a single subdivision (~1500 entries covering 70 top markets, sourced from LinkedIn's own canonical ADMIN_DIVISION_1 IDs).
Major city dropdown — narrow Mode 1 to a single city (top ~1000 global cities by population, sourced from LinkedIn's canonical CITY IDs).
Custom Location free-text field — type ANY LinkedIn-indexed location (city / town / neighborhood / region) and the actor resolves it live. Power users can paste a numeric LinkedIn geoId directly. Closes the long-tail gap for places not in the curated dropdowns (Cluj-Napoca, Pune, Tartu, etc.).
Changed
Geo resolution now cascades through four fields. Priority: Custom Location → City → State → Country. The most specific non-empty filter wins. Country dropdown remains the always-default fallback.
[0.0.10] - 2026-05-18
Maintenance build — no user-facing changes.
[0.0.9] - 2026-05-18
Changed
Country dropdown expanded to 198 entries — full ISO-3166-1 sovereign-state coverage. GeoIds resolved canonically against LinkedIn's own public typeahead API (the same source that powers the autocomplete on linkedin.com/jobs). No more "your country isn't in the list" gaps.
[0.0.8] - 2026-05-18
Changed
Country dropdown expanded from 23 → 28 entries after cross-referencing a community-curated mapping. Added: China, Italy, Russia, South Korea, United Arab Emirates. Two prior probe-rejected geoIds were re-investigated and revealed to be these countries (initial probes misread the top-row locations).
[0.0.7] - 2026-05-18
Changed
"Location (LinkedIn geo code)" is now a Country dropdown with 23 probe-verified top markets. Previously a numeric input that asked customers to extract the geoId from a linkedin.com URL — now they pick a country name from a list. Default is United States.
Default country geoId updated to the real United States value (probe-verified). The previous default returned ~500K mixed-region results dominated by Vietnam — it was a supra-regional bucket, not a country filter.
Notes
LinkedIn's upstream geo filter is loose; even with a country selected, some rows from adjacent markets may appear. The field description discloses this.
[0.0.5] - 2026-05-18
Added
Industries multi-select dropdown on Mode 1 (Search Jobs) and Mode 3 (Search Company Jobs), sourced from the 434-entry canonical LinkedIn V2 industry taxonomy. Pick one or more industries to narrow the search to a specific sector.
Notes
Verified via live probe that the upstream filter accepts industry name strings end-to-end (e.g. Software Development narrowed the broad "engineer" pool from 499,684 → 95,375 jobs with software companies up top; Accounting narrowed to 4,017 with PwC / James Moore; Higher Education to 1,332 with Penn State / Duke).
[0.0.4] - 2026-05-18
Fixed
Dataset schema validation no longer rejects Mode 2 rows. Three upstream-type mismatches reconciled: expired, closed, remote_allow, and hiring_team now accept the actual variants the source returns.
[0.0.1] - 2026-05-18
Added
Initial private build with three operation modes — Search Jobs, Fetch Job Details, and Search Company Jobs.
PAY_PER_EVENT pricing with a single JOB_ANALYZED event ($0.030/job) across all modes.
Seven post-fetch filters — title contains / NOT contains, company name allow-list, location contains, minimum salary, posted-within-N-days, remote-only.