LinkedIn Jobs Scraper (No Login) - Salary, Poster, Company avatar

LinkedIn Jobs Scraper (No Login) - Salary, Poster, Company

Pricing

from $0.70 / 1,000 jobs

Go to Apify Store
LinkedIn Jobs Scraper (No Login) - Salary, Poster, Company

LinkedIn Jobs Scraper (No Login) - Salary, Poster, Company

Scrape LinkedIn jobs without login. Search by title, location and filters, or paste search, job or company URLs. Full description, parsed salary, applicants, apply type, job poster and company profile. Same input as bebity's scraper. $1 per 1,000 jobs, all included.

Pricing

from $0.70 / 1,000 jobs

Rating

0.0

(0)

Developer

Deependra Singh

Deependra Singh

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Security

Limited permissions

Share

LinkedIn Jobs Scraper (No Login)

Scrape LinkedIn job postings into JSON, CSV or Excel without a LinkedIn account, cookies or login. Search by job title, location and filters, or paste a LinkedIn search URL, a single job URL or a company page. Every job comes with the full description, a parsed salary, applicant count, apply type, the person who posted it (name, headline, photo) and the hiring company's profile. $1 per 1,000 jobs, everything included.

Why this LinkedIn jobs scraper

  • Filters that actually filter. In 2026 LinkedIn stopped applying the workplace type, employment type, experience level and industry filters for logged-out visitors: the URL accepts them, but the results do not change. This Actor checks every job against those filters itself, so a "Remote" search returns remote jobs, not whatever LinkedIn shows.
  • Locations that mean what you typed. Each location is matched to LinkedIn's own location list first. "UK" becomes United Kingdom (LinkedIn's lookup says Ukraine), "Czech Republic" becomes Czechia (LinkedIn's text search returns Dominican Republic). The match is printed in the log.
  • Everything in one price. Poster headline and photo, salary source, job state, repost flag and the full company profile are included. No premium add-ons.
  • More than 1,000 jobs per search. LinkedIn stops every search at about 1,000 results. Turn on Split large searches by region and a country search continues state by state (13 countries supported), with duplicates removed.
  • Only new jobs on a schedule. Give the run a monitoring store name and each run skips the jobs earlier runs already delivered, so a daily schedule returns, and charges for, only fresh postings.
  • You only pay for jobs you keep. Jobs dropped by your filters, duplicates across searches and failed pages are never charged.
  • Drop-in compatible with bebity/linkedin-jobs-scraper. Same input field names (titles, locations, rows, workTypes, contractTypes, experienceLevels, industry, publishedAt, easyApply, under10Applicants, companyName, companyId, companyUrls, startUrls, maxRowsPerUrl, companyProfile) and the same output field names, so saved tasks, API calls and n8n or Make flows keep working.

What you can do with it

  • Job hunting: schedule a daily run for your title and city and get new postings within hours.
  • Recruiting and sales intelligence: see which companies are hiring for what, where and at what pay, and who posted each role.
  • Labor market research: salaries, seniority, employment types and applicant counts by market.
  • AI agents and automations: call it from Claude, ChatGPT, n8n, Make or Zapier and get typed JSON back. Through Apify's MCP server (https://mcp.apify.com) it shows up as a tool with its input schema.

How to use it

Option 1: fill in the search. Enter one or more job titles and locations. Each title is searched in each location (3 titles x 2 locations = 6 searches) and every job records which search found it. Add filters as needed.

Option 2: paste LinkedIn URLs. Search on LinkedIn, copy the URL from the address bar and paste it into LinkedIn URLs. All its filters are kept. You can also paste a single job (linkedin.com/jobs/view/...) or a company page (linkedin.com/company/openai) to get every open job at that company.

Input example

{
"titles": ["Data Analyst"],
"locations": ["United States"],
"workTypes": ["2"],
"experienceLevels": ["2", "3"],
"publishedAt": "r604800",
"rows": 100,
"companyProfile": true
}

Filters

FilterFieldApplied by
Date postedpublishedAtLinkedIn
Easy Apply onlyeasyApplyLinkedIn, double-checked on each job
Under 10 applicantsunder10ApplicantsLinkedIn
Company (name, ID or page URL)companyName, companyId, companyUrlsLinkedIn
Workplace type (on-site, remote, hybrid)workTypesthis Actor, from the posting text
Employment typecontractTypesthis Actor, from the job's "Employment type"
Experience levelexperienceLevelsthis Actor, from the job's "Seniority level"
Industry (434 to pick from)industrythis Actor, from the job's "Industries"
Apply type (Easy Apply or external)applyTypesthis Actor, from the Apply button
Every title word in the job titlestrictTitleMatchthis Actor
Exclude companies (e.g. agencies)excludeCompaniesthis Actor
Only jobs with a salarysalaryOnlythis Actor
Exclude job titles (e.g. "Senior", "Intern")titleExcludethis Actor, before the job is opened
Exclude recruiting agenciesexcludeRecruitingAgenciesthis Actor, from the company's industry
Company size rangecompanySizeMin, companySizeMaxthis Actor, from the company's declared size
Distance from a citydistanceLinkedIn
Skip known jobsskipJobIds, seenJobsStoreNamethis Actor

Output

One row per job. Example (trimmed):

{
"id": "4444390846",
"title": "Enterprise Data Analyst",
"companyName": "Husch Blackwell",
"companyUrl": "https://www.linkedin.com/company/husch-blackwell",
"companyId": "13646",
"location": "Washington, DC",
"locationParsed": { "city": "Washington", "region": "DC", "country": "United States", "formatted": "Washington, DC" },
"workType": "Hybrid",
"workTypeSource": "description",
"contractType": "Full-time",
"experienceLevel": "Not Applicable",
"sector": "Law Practice",
"salary": "$70,000 USD - $85,000 USD",
"salaryMin": 70000,
"salaryMax": 85000,
"salaryCurrency": "USD",
"salaryPeriod": "year",
"salarySource": "Job description",
"applicationsCount": "Over 200 applicants",
"applicantsCount": 200,
"postedTime": "2 weeks ago",
"publishedAt": "2026-09-28",
"repostedJob": false,
"jobState": "LISTED",
"applyType": "EXTERNAL",
"jobUrl": "https://www.linkedin.com/jobs/view/4444390846",
"description": "Husch Blackwell LLP is a full-service litigation and business law firm...",
"posterFullName": "Kelli Watson, MHRM, SHRM-CP",
"posterHeadline": "Senior Talent Acquisition Specialist at Husch Blackwell",
"posterProfileUrl": "https://www.linkedin.com/in/kelliwatson-hr",
"companyWebsite": "https://www.huschblackwell.com",
"companyEmployeeCount": 1890,
"companySize": "1,001-5,000 employees",
"companyFollowerCount": 98000,
"companyType": "Partnership",
"companyFoundedYear": 1916,
"scrapingInfo": { "page": 1, "index": 3, "inputUrl": "", "title": "Data Analyst", "location": "United States" }
}

The dataset has three views: Jobs, Company and Job poster. The run also stores RUN-SUMMARY (per search: LinkedIn's result count, pages read, jobs delivered, jobs filtered out and why) and SEARCH_TOTALS (how many jobs LinkedIn says match each search).

Field notes

  • workType is read from the title, location and description, because LinkedIn no longer shows the workplace label to logged-out visitors. workTypeSource says where it came from; default means the posting says nothing, which LinkedIn treats as on-site.
  • salarySource is LinkedIn listing when LinkedIn shows a pay range and Job description when the range was found in the text.
  • repostedJob is inferred: logged-out pages no longer say "Reposted", but LinkedIn job IDs grow over time, so a job shown as posted more than 30 days after its ID was issued has been reposted. About a quarter of postings are.
  • benefits holds only real benefits ("Medical insurance"); LinkedIn's badges ("Actively Hiring", "Be an early applicant") are in jobInsights, and activelyHiring is true when the badge is shown.
  • Company profile fields are empty for universities and schools: LinkedIn shows school pages only to signed-in members.
  • verified is always null: LinkedIn shows the verification badge only to signed-in members. The column is kept so files match bebity's layout.
  • publishedAt is a date; postedAtTimestamp is that date at midnight UTC.
  • yearsOfExperienceMin is the smallest number of years of experience the description asks for ("3-5 years of experience" gives 3), or null.
  • jobFunction is always null: LinkedIn no longer shows the job function to logged-out visitors.
  • applyType is EASY_APPLY or EXTERNAL, read from the Apply button; it is null for closed jobs and for the rare listing LinkedIn shows without any Apply button.
  • applyUrl is the LinkedIn job page. Logged out, LinkedIn routes every Apply button through its own page and does not expose the employer's application link.

Pricing

Pay per event: $1.00 per 1,000 jobs on the free plan, less on paid plans. Company profile, poster details and every field above are included. Jobs removed by your filters, duplicates and failures are free. Set a max cost on the run and the Actor stops at that budget.

Limits

  • LinkedIn shows at most about 1,000 jobs per search. Use Split large searches by region for country searches, or add more specific locations or titles.
  • Many employers leave the seniority level as "Not Applicable". Those jobs never match an experience-level filter; the log tells you when this is why a search came back small.
  • Searches with very narrow filters (for example Remote + Director in a small city) can need many pages per kept job. A search stops early only when its first 300 jobs all fail the filters, with a note in the log.
  • A run stops about a minute before its Timeout (run options, 1 hour by default) and ends as succeeded with the jobs it has; the status message and RUN-SUMMARY say so. Count on about 50 jobs a minute at the default concurrency of 10, company profiles included, and raise the timeout for big runs (many titles and locations, or Split large searches by region).
  • LinkedIn changes its pages from time to time. The Actor is tested on a schedule; open an issue if something looks wrong.

FAQ

Do I need a LinkedIn account? No. The Actor reads public job pages, the same ones anyone sees without signing in. No cookies, no account risk.

Is scraping LinkedIn jobs legal? Job postings are published for the public. Results can still include personal data, such as the name of the person who posted a job; handle it under GDPR and similar laws, and only keep it with a legitimate reason.

Can I run it every day and get only new jobs? Yes. Schedule it and set Only new jobs (monitoring store) to any name, e.g. my-job-alerts. Each run skips what earlier runs with that name already delivered.

Which location will "London" or "Paris" use? The one LinkedIn ranks first: London, United Kingdom and Paris, France. Add a region to pick another one ("London, Ontario"). The log prints every match.

Why do I get fewer jobs than LinkedIn shows when signed in? Signed-in users get personalised results. Logged-out search returns a smaller list and caps at about 1,000 per search. Splitting by location usually closes most of the gap.

I switched from bebity's scraper. Do I need to change my input? No. The same fields work. enrichCompany is accepted and ignored, because everything it unlocked is always included here.