LinkedIn Jobs Scraper avatar

LinkedIn Jobs Scraper

Pricing

from $0.60 / 1,000 jobs

Go to Apify Store
LinkedIn Jobs Scraper

LinkedIn Jobs Scraper

LinkedIn Jobs Scraper returns public job listings from LinkedIn by keywords, location, and filters. Scrape job titles, companies, salaries, descriptions, and applicant counts from LinkedIn's public guest job search API.

Pricing

from $0.60 / 1,000 jobs

Rating

0.0

(0)

Developer

Murat Uzun

Murat Uzun

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

7 days ago

Last modified

Share

What does LinkedIn Jobs Scraper do?

LinkedIn Jobs Scraper extracts job listings from LinkedIn's public job search API. It returns job titles, companies, locations, salaries, application counts, and full job descriptions from LinkedIn's public guest listings without requiring login or cookies.

Try it now: Search for software engineer jobs, data analyst positions, or any title across different locations worldwide.

Why use LinkedIn Jobs Scraper?

  • No login required — scrapes LinkedIn's public guest job search API
  • Comprehensive data — extract titles, companies, locations, salaries, descriptions, seniority levels, job types
  • Flexible filtering — search by keywords, location, experience level, work type, posting date
  • Bulk operations — scrape hundreds of job listings in a single run
  • API access — integrate job data into your applications, dashboards, and workflows via the Apify API
  • Scheduled runs — automate job monitoring and alert systems

How to use LinkedIn Jobs Scraper

  1. Open the Actor on the Apify platform or via API
  2. Set search parameters:
    • Enter job title(s) or keywords (e.g., "software engineer", "data analyst")
    • Specify location(s) (e.g., "United States", "Germany")
    • Optionally filter by experience level, work type (remote/onsite/hybrid), posting date
  3. Configure options:
    • Set maximum jobs to scrape (1-1000, default 25)
    • Enable/disable job descriptions (impacts run time and cost)
    • Choose proxy mode (auto/always/never)
  4. Run the Actor — results are saved to the dataset
  5. Download or integrate results in JSON, CSV, Excel, or other formats

Input parameters

ParameterTypeRequiredDescription
keywordsstringNoJob title or skills, e.g. "data analyst". Several searches: "python; golang". Aliases accepted: keyword, query.
locationstringNoCity, region or country, e.g. "Austin, TX". Empty = worldwide.
locationsarrayNoExtra locations for the same search, e.g. ["London", "Manchester"].
datePostedstringNoFilter: past24h, pastWeek, pastMonth, or leave empty for all
workTypearrayNoFilter by: onsite, remote, hybrid
experienceLevelarrayNoFilter by level: internship, entry_level, senior, manager, etc.
jobTypearrayNoFilter by: full-time, part-time, contract, temporary, internship, volunteer
titleIncludesarrayNoKeep only jobs whose title contains one of these words or phrases, e.g. ["data analyst", "bi"]. Case-insensitive, whole words.
titleExcludesarrayNoDrop jobs whose title contains one of these words, e.g. ["senior", "staff", "intern"]. Case-insensitive, whole words; Sr. is not senior, so list both if needed.
excludeCompaniesarrayNoDrop jobs from these companies, e.g. ["Deloitte"]. Whole-name match, case-insensitive.
externalApplyOnlybooleanNoReturn only jobs that apply on the company's own site. Fetches the detail page for each candidate.
maxJobsnumberNoMaximum jobs to scrape (default 25, max 1000)
includeDescriptionbooleanNoFetch full job descriptions (default true; costs more, takes longer)
searchUrlsarrayNoPaste LinkedIn job search URLs; parameters are extracted and applied
proxyModestringNoauto (direct first), always (residential), or never (default: auto)

Output

Each job is returned as a single JSON object:

{
"jobId": "4465379983",
"url": "https://www.linkedin.com/jobs/view/4465379983",
"title": "Senior Software Engineer - Python",
"company": "Venmo",
"companyUrl": "https://www.linkedin.com/company/venmo",
"location": "Austin, TX",
"postedAt": "2026-09-10",
"postedText": "2 weeks ago",
"salary": "$120,000 - $150,000",
"applicants": 163,
"seniority": "Senior",
"employmentType": "Full-time",
"jobFunction": "Software Development",
"industries": ["Technology", "Software Development"],
"description": "We are seeking a senior Python engineer...",
"descriptionHtml": "<p>We are seeking a senior Python engineer...</p>",
"easyApply": true,
"keyword": "software engineer",
"searchLocation": "United States",
"scrapedAt": "2026-09-28T10:30:45.123Z"
}

You can download the dataset in JSON, CSV, Excel, HTML, or other formats directly from the platform.

Data fields

FieldDescription
jobIdLinkedIn job posting ID
urlDirect link to the job on LinkedIn
titleJob position title
companyHiring company name
companyUrlLink to company's LinkedIn profile
locationJob location
postedAtJob posting date (ISO format)
postedTextRelative time text (e.g., "2 weeks ago")
salaryPay range written in the posting text (e.g. $143,500.00 - $212,850.00 Annually), copied as written. LinkedIn's public pages have no structured salary field, so this is null for postings that state no pay range.
applicantsNumber of applicants (if shown)
seniorityRequired seniority level
employmentTypeFull-time, Part-time, Contract, etc.
jobFunctionPrimary job category (null when LinkedIn does not show it on the posting)
industriesIndustry categories, as a list (null when not shown)
descriptionFull job description (plain text)
descriptionHtmlJob description with HTML markup
applyTypeexternal (Apply on the company site) or null; the public job page rarely shows a LinkedIn Easy Apply marker, so easyApply is reported only when it does
applyUrlThe company's application link, only when the posting markup carries one that leaves LinkedIn (often null)
easyApplytrue when applyType is easyApply
keywordSearch keyword used to find job
searchLocationLocation parameter in search
scrapedAtTimestamp when job was scraped

Pricing

Cost per job: $0.001 (1/1000 of a USD cent)

  • Without descriptions: scraping ~50 jobs costs ~$0.05
  • With descriptions: scraping ~25 jobs costs ~$0.03 (detail pages are smaller than full page scrapes)
  • Bulk runs: scraping 500 jobs with descriptions costs ~$0.50

Pricing depends on your Apify plan; free tier includes up to 50 platform runs per month.

Tips and advanced options

  • Batch searches: Combine multiple keywords and locations in one run to reduce startup costs
  • Disable descriptions: If you only need job titles and companies, turn off descriptions to cut costs by 50%
  • Use search URLs: Paste a LinkedIn job search URL with complex filters instead of manually entering parameters
  • Proxy mode: Use auto mode (default) for cost efficiency; switch to always if direct requests are blocked
  • Scheduling: Run the Actor daily to monitor new jobs or track hiring trends

Limitations

  • Public data only — scrapes publicly visible guest job listings; does not use login or cookies
  • Search cap — LinkedIn caps search results at approximately 1,000 jobs per query
  • Some fields optional — salary and applicant counts only appear when LinkedIn displays them
  • Refresh delays — job data may lag by a few hours after posting
  • Rate limiting — LinkedIn may throttle requests during high-volume scraping (handled with proxy escalation)
  • Regional restrictions — some job listings may be region-locked and not available via guest API

This tool scrapes publicly available data from LinkedIn's guest job search API. Users are responsible for ensuring compliance with:

Do not:

  • Scrape private profile information
  • Bypass authentication or access restrictions
  • Use data for discriminatory purposes
  • Violate LinkedIn's terms or local laws

The data returned is public information and the user assumes full responsibility for its use.

FAQ

Q: Does this require a LinkedIn account? A: No. It uses LinkedIn's public guest job search API, same as anyone can access in a browser without logging in.

Q: Can I scrape millions of jobs? A: LinkedIn's search results are capped at ~1,000 jobs per query. For multiple queries, batch them together in a single run.

Q: How do I get job descriptions? A: Enable the "Include job descriptions" option in the input. This fetches the detail page for each job (additional cost).

Q: What if I get blocked? A: The Actor handles blocks automatically in auto mode by escalating to residential proxies. Use proxyMode: always for guaranteed access.

Q: Can I filter by salary range? A: Not directly in the input schema, but LinkedIn's job listings include salary data when available. Filter results post-scrape.

Q: How often can I run this? A: No built-in limits. Schedule daily runs, hourly checks, or bulk one-time scrapes as needed.

Integrations

  • n8n — Automate job alerts and notifications
  • Make/Zapier — Pipe jobs into your CRM or email
  • Google Sheets — Use the Apify Google Sheets integration to append jobs to a spreadsheet
  • Slack — Send new job alerts to your team

Part of the webdatatools web-intelligence suite — every Actor is pay-per-event, reads public data without a login, and returns one clean row per entity:

Browse the whole suite at webdatatools, or call ten of these Actors straight from Claude, Cursor or Cline with the webdatatools MCP server.

Website & domain intelligence

Content for AI, LLMs and RAG

Search, video and social

Leads, jobs and company data

Developer, app and research data

Support

Found a bug? Have questions? ../../issues or visit the Apify community forum.


Happy scraping! Visit Apify Store for more job scraping tools and data extraction Actors.

Feedback

  • Found a bug or want a feature? Open an issue on the Issues tab.
  • Useful? A short review on the reviews page helps other users find it.
  • A run that returns no rows or has warnings says why in its status message.