LinkedIn Jobs Scraper avatar

LinkedIn Jobs Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
LinkedIn Jobs Scraper

LinkedIn Jobs Scraper

Scrape public LinkedIn job postings by keyword, location and company – no login required. Returns title, company, location, posting date, salary, seniority, full description and more, with pagination, de-duplication, proxy support and an automatic stealth-browser fallback.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Tin

Tin

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

What does LinkedIn Jobs Scraper do?

LinkedIn Jobs Scraper extracts public job postings from LinkedIn Jobs – no LinkedIn account, cookies or login required. Search by keyword, location and company, apply the same filters LinkedIn offers (date posted, job type, experience level, remote/hybrid/on-site) and get clean, de-duplicated JSON, CSV or Excel with the job title, company, location, posting date, salary (when shown), seniority level, employment type, industries, applicant count and the full job description.

Because it runs on the Apify platform, you also get an API, scheduling, integrations (Google Sheets, Slack, Make, Zapier, webhooks), proxy rotation and run monitoring out of the box. Try it with the prefilled example in the Input tab – it takes about a minute.

Why scrape LinkedIn jobs?

  • Lead generation – companies that are hiring are companies that are buying. Find businesses opening sales, engineering or marketing roles in your territory and reach out while the budget exists.
  • Recruiting and sourcing – monitor which competitors are hiring for which roles, benchmark job descriptions and spot new openings the day they appear.
  • Market and salary research – track demand for skills, technologies and job titles over time, by region or by industry.
  • Job aggregation – feed a job board, newsletter or Slack channel with fresh, structured postings from the world's largest professional network.

How to scrape LinkedIn jobs

  1. Open the Actor in Apify Console and click Try for free.
  2. Enter one or more Keywords (e.g. data engineer) and a Location (e.g. Berlin).
  3. Optionally narrow the search with Date posted, Job type, Experience level, Workplace type or Company filters.
  4. Set Maximum jobs to control how many postings (and therefore how much compute) the run uses.
  5. Click Start. Results appear in the Output tab as they are scraped and can be exported in any format.

Already have a LinkedIn search URL? Paste it into Start URLs – every filter encoded in the URL is preserved. Individual job URLs (linkedin.com/jobs/view/...) work too.

Input

The Input tab documents every field. The important ones:

FieldWhat it does
keywordsList of search terms. Each runs as its own search; results are de-duplicated across searches.
locationFree-text location, exactly as you would type it into LinkedIn.
datePostedany, pastHour, past24Hours, pastWeek or pastMonth.
jobTypesAny of fullTime, partTime, contract, temporary, internship, volunteer, other.
experienceLevelsAny of internship, entryLevel, associate, midSeniorLevel, director, executive.
workplaceTypesAny of onSite, remote, hybrid.
companyIdsNumeric LinkedIn company IDs – filters on LinkedIn's side (e.g. 1441 for Google).
companyNamesCase-insensitive company-name filter applied by the scraper (Amazon also matches Amazon Web Services).
sortByrelevance (default) or date.
startUrlsLinkedIn job search or job posting URLs to scrape in addition to the search above.
maxItemsStop after this many jobs (default 100, 0 = unlimited).
scrapeJobDetailsOpen every posting for the description and criteria (default true). Turn off for a fast listing-only run.
fetchModeauto (HTTP first, stealth-browser fallback), http or browser.
proxyConfigurationApify Proxy settings. Residential proxies are strongly recommended.

Example input:

{
"keywords": ["data engineer", "analytics engineer"],
"location": "Germany",
"datePosted": "pastWeek",
"workplaceTypes": ["remote", "hybrid"],
"experienceLevels": ["midSeniorLevel"],
"maxItems": 200,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Output

Each job is one item in the default dataset. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel, or read it through the API.

{
"id": "4419969671",
"url": "https://www.linkedin.com/jobs/view/4419969671",
"title": "Senior Software Engineer – Go (Golang)",
"companyName": "General Motors",
"companyUrl": "https://www.linkedin.com/company/general-motors",
"companyLogo": "https://media.licdn.com/dms/image/v2/.../general_motors_logo",
"location": "Warren, MI",
"postedAt": "2026-08-22",
"postedText": "1 week ago",
"salary": null,
"benefits": "Actively Hiring",
"seniorityLevel": "Not Applicable",
"employmentType": "Full-time",
"jobFunction": "Engineering and Information Technology",
"industries": "Motor Vehicle Manufacturing, Appliances, Electrical, and Electronics Manufacturing, and IT Services and IT Consulting",
"applicantsCount": 136,
"applicantsText": "136 applicants",
"descriptionText": "Job Description\nAs a Senior Software Engineer – Go (Golang), you will design, develop, and deliver ...",
"descriptionHtml": "<p><strong>Job Description</strong></p><p>As a Senior Software Engineer – Go (Golang), you will ...</p>",
"applyUrl": null,
"detailScraped": true,
"query": { "keywords": "software engineer", "location": "United States" },
"scrapedAt": "2026-09-05T10:41:12.345Z"
}

Data fields

FieldDescription
id, urlLinkedIn job ID and canonical posting URL.
titleJob title.
companyName, companyUrl, companyLogoHiring company, its LinkedIn page and logo.
locationLocation as shown on the posting.
postedAt, postedTextPosting date (YYYY-MM-DD) and LinkedIn's relative wording ("2 days ago").
salarySalary range when LinkedIn displays one, otherwise null.
benefitsListing badge such as "Actively Hiring" or "Be an early applicant".
seniorityLevel, employmentType, jobFunction, industriesThe criteria block from the posting (details only).
applicantsCount, applicantsTextNumber of applicants when LinkedIn shows a concrete figure (details only).
descriptionText, descriptionHtmlFull job description as plain text and as HTML (details only).
applyUrlOff-site apply link when LinkedIn exposes it to guests, otherwise null.
detailScrapedfalse when only listing data could be fetched (details disabled, posting removed or blocked).
queryThe keywords and location that produced the job – handy when running several searches.

How much does it cost to scrape LinkedIn jobs?

The Actor is charged for the compute it uses. With job details enabled, every 10 jobs cost 11 HTTP requests (one search page plus 10 postings) at roughly one second each, so a 1 GB run collects about 100 jobs per minute:

  • 100 jobs ≈ 0.02–0.04 compute units over HTTP – well within the Apify free tier.
  • 1,000 jobs ≈ 0.2–0.4 compute units, plus proxy traffic (about 60 KB per job).

Turning Scrape job details off cuts the request count by about 90%. The browser fallback is considerably heavier (a Camoufox instance per concurrent request), which is why auto mode only uses it for the requests LinkedIn actually blocked.

Tips for reliable LinkedIn scraping

  • Use residential proxies. LinkedIn throttles datacenter IPs within a few hundred requests. Set the proxy group to RESIDENTIAL for anything beyond a small test.
  • LinkedIn caps every search at 1,000 results. To collect more, split the search: several locations, tighter keywords, or datePosted: "past24Hours" on a daily schedule.
  • Schedule incremental runs. sortBy: "date" with datePosted: "past24Hours" and a modest maxItems gives you a daily feed of new postings for a fraction of the cost of re-scraping everything.
  • Filter by company on LinkedIn's side with companyIds whenever you know the IDs – it avoids fetching pages you would only throw away. Use companyNames when you don't.
  • Lower maxConcurrency (to 2–3) if you see many 999 or 429 responses in the log.

FAQ, disclaimers and support

Is it legal to scrape LinkedIn jobs? The Actor only reads pages LinkedIn serves to anonymous visitors and does not log in or collect data about individual people. Public data is generally scrapable, but you are responsible for complying with LinkedIn's terms, applicable law and how you use the output. Read Apify's note on the legality of web scraping if in doubt.

Why do some items have detailScraped: false? Either you disabled job details, the posting was removed between the listing and detail request, or LinkedIn blocked the detail page even after the browser fallback. The listing data (title, company, location, date) is still saved so you don't lose the lead.

Why did I get fewer than maxItems jobs? LinkedIn returned fewer results for that search (it never shows more than 1,000), or the company-name filter removed some. The run log shows how many were listed, de-duplicated and filtered.

Can I scrape LinkedIn profiles or companies with this Actor? No – it is deliberately limited to job postings. Profile scraping requires a login and raises privacy issues this Actor avoids.

Found a bug or need another field? Open an issue in the Issues tab of this Actor. Need a custom solution built around LinkedIn or other job boards? Get in touch with Apify.