Fast & Low-Cost LinkedIn Jobs Scraper avatar

Fast & Low-Cost LinkedIn Jobs Scraper

Pricing

Pay per usage

Go to Apify Store
Fast & Low-Cost LinkedIn Jobs Scraper

Fast & Low-Cost LinkedIn Jobs Scraper

Ultra-fast, lightweight LinkedIn job scraper built with Python and Crawlee. Extracts job titles, companies, locations, and direct URLs without requiring logins or browser automation.

Pricing

Pay per usage

Rating

5.0

(1)

Developer

Ahmed Elowny

Ahmed Elowny

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 hours ago

Last modified

Categories

Share

LinkedIn Jobs Scraper: Fast, No Login

v1.1.0 Beta — This release adds Apify Proxy support (cloud-only) and enforces a URL cap based on the session pool capacity. It is not the default build; deploy with apify push and select the beta tag to test it.

What does LinkedIn Jobs Scraper do?

LinkedIn Jobs Scraper extracts structured job listings from LinkedIn Jobs — no login, no browser, no cookies required. Paste any LinkedIn job search URL and the scraper returns job titles, companies, locations, posting dates, and direct job links in seconds.

Enable the Scrape Job Details option to unlock richer data: full job descriptions, seniority levels, contract types, work arrangements (Remote / Hybrid / On-site), salary ranges, applicant counts, recruiter profiles, and direct apply links.

The Actor uses LinkedIn's public guest API endpoints and HTTP parsing — making it roughly 10× faster and cheaper to run than browser-based scrapers. Schedule it on the Apify platform with proxy rotation, automatic retries, and easy export to JSON, CSV, or Excel.


Why use LinkedIn Jobs Scraper?

  • Talent intelligence — track which companies are actively hiring for specific roles, technologies, or locations
  • Job market research — monitor salary trends, demand spikes, and emerging skill requirements across industries
  • Competitive hiring analysis — see how your competitors are growing their teams
  • Automated job alerts — run on a schedule to get notified about fresh postings the moment they appear
  • ATS and workflow integration — feed structured job data directly into spreadsheets, databases, or recruiting tools via the Apify API
  • Career research — build a comprehensive picture of the market before a job search or salary negotiation

How to use LinkedIn Jobs Scraper

  1. Open the Actor on the Apify platform and click Try for free
  2. Paste a LinkedIn Jobs search URL in the Start URLs field
    Example: https://www.linkedin.com/jobs/search/?keywords=Python+Developer&location=London
  3. (Optional) Toggle Scrape Job Details to true for full descriptions and extra fields
  4. (Optional) Add Exclude Keywords to skip titles like "Senior", "Lead", or "Manager"
  5. Set a Maximum Jobs limit (default: 25)
  6. Click Start and wait a few seconds
  7. Download results from the Output tab in JSON, CSV, or Excel

Tip: Build any search URL you like on LinkedIn — by keyword, location, date posted, experience level, or company — and paste it directly into the Actor.


Input

Configure the Actor from the Input tab or by passing a JSON payload to the API.

FieldTypeRequiredDefaultDescription
startUrlsarray✅[{"url": "https://www.linkedin.com/jobs/search/?keywords=Python"}]One or more LinkedIn job search URLs. Maximum 64 URLs per run (see URL limit section below)
scrapeDetailsboolean❌falseOpen each job page for full details
jobTitleExcludearray❌[]Skip jobs with these keywords in the title
maxItemsinteger❌25Maximum unique jobs to collect (up to 640)
proxyConfigurationobject❌{ "useApifyProxy": true, "apifyProxyGroups": ["DATACENTER"] }Proxy settings. Active on Apify platform only — ignored during local apify run (see note below)

Example input (JSON):

{
"startUrls": [
{
"url": "https://www.linkedin.com/jobs/search/?keywords=Backend+Engineer&location=Germany&f_TPR=r86400"
}
],
"scrapeDetails": true,
"jobTitleExclude": ["Staff", "Principal"],
"maxItems": 50,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["DATACENTER"]
}
}

URL limit

The number of start URLs you can process in a single run depends directly on the proxies available. Each proxy has a limited request budget, so the more proxies your plan provides, the more search URLs you can handle in one run.

To scrape more searches than your proxy budget allows, split them across multiple runs.

Proxy note

proxyConfiguration is only active when the Actor runs on the Apify platform. During local development (apify run), the proxy is skipped automatically — no configuration change is needed to switch between environments.


Output

Results are stored in the default dataset and are accessible in real time from the Output tab. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Fast mode (scrapeDetails: false) — sample output

{
"id": "4473763235",
"title": "Backend Engineer",
"companyName": "Acme Corp",
"companyUrl": "https://www.linkedin.com/company/acme-corp",
"location": "Berlin, Germany",
"publishedAt": "2026-09-30",
"postedTime": "2 hours ago",
"benefits": "Be an early applicant",
"jobUrl": "https://www.linkedin.com/jobs/view/backend-engineer-at-acme-corp-4473763235",
"scrapingInfo": {
"page": 1,
"index": 3,
"inputUrl": "https://www.linkedin.com/jobs/search/?keywords=Backend+Engineer&location=Germany"
}
}

Full details mode (scrapeDetails: true) — sample output

{
"id": "4473763235",
"title": "Backend Engineer",
"companyName": "Acme Corp",
"companyUrl": "https://www.linkedin.com/company/acme-corp",
"location": "Berlin, Germany",
"jobFunction": "Engineering",
"contractType": "Full-time",
"experienceLevel": "Mid-Senior level",
"workType": "Hybrid",
"salary": "$90,000 - $120,000/yr",
"applyType": "EASY_APPLY",
"applyUrl": "https://www.linkedin.com/jobs/view/...",
"postedTime": "2 hours ago",
"publishedAt": "2026-09-30",
"applicationsCount": "47 applicants",
"benefits": "Be an early applicant",
"posterFullName": "Jane Smith",
"posterProfileUrl": "https://www.linkedin.com/in/jane-smith",
"jobUrl": "https://www.linkedin.com/jobs/view/backend-engineer-at-acme-corp-4473763235",
"description": "We are looking for a backend engineer to join our platform team...",
"scrapingInfo": {
"page": 1,
"index": 3,
"inputUrl": "https://www.linkedin.com/jobs/search/?keywords=Backend+Engineer&location=Germany"
}
}

Data fields

FieldModeDescription
idBothLinkedIn numeric job ID
titleBothJob title
companyNameBothHiring company name
companyUrlBothCompany LinkedIn page URL
locationBothJob location string
publishedAtBothISO date the job was posted (e.g. 2026-09-30)
postedTimeBothRelative posting time (e.g. "2 hours ago")
benefitsBothBadge text (e.g. "Be an early applicant")
jobUrlBothDirect link to the job posting
scrapingInfoBothInternal metadata: page, index, and source URL
jobFunctionDetailsJob function category (e.g. "Engineering")
contractTypeDetailsEmployment type (e.g. "Full-time", "Contract")
experienceLevelDetailsSeniority level (e.g. "Entry level", "Mid-Senior level")
workTypeDetailsWork arrangement: "Remote", "Hybrid", or "On-site"
salaryDetailsSalary range if listed by the employer
applyTypeDetails"EASY_APPLY" or "EXTERNAL"
applyUrlDetailsDirect application URL
applicationsCountDetailsNumber of applicants shown on the page
posterFullNameDetailsRecruiter or poster display name
posterProfileUrlDetailsRecruiter LinkedIn profile URL
descriptionDetailsFull plain-text job description

Pricing / Cost estimation

The Actor runs on Apify's pay-per-event billing model. Costs depend on the number of pages crawled and whether detail pages are enabled.

ModeRequests per 100 jobsNotes
Fast (card only)~4–5 pagesVery cheap — one API call per 25 results
Full details~100–105 pagesOne extra request per job

Rough estimates:

  • Scraping 100 jobs in fast mode typically costs less than $0.01
  • Scraping 100 jobs with full details costs roughly $0.05–$0.10 depending on proxy usage

New Apify accounts include a free tier that covers substantial usage. See the Apify pricing page for current limits and paid plan details.


Tips and advanced options

Filter jobs to the last 24 hours
Add f_TPR=r86400 to your search URL. For the past hour, use f_TPR=r3600. LinkedIn supports multiple time values that you can set in the LinkedIn search UI and copy the URL.

Scrape multiple search URLs in one run
Add multiple objects to startUrls — the Actor deduplicates jobs across all of them, so you won't get duplicates even if the same job appears in multiple searches.

Keep costs low with fast mode + keyword filter
Use scrapeDetails: false with jobTitleExclude to quickly harvest thousands of job cards, then re-run with scrapeDetails: true only on the specific roles you care about.

Schedule for real-time alerts
Set the Actor to run on a 1-hour schedule with f_TPR=r3600 in the URL and a low maxItems (e.g. 25). Connect the output to a webhook or Apify integration (Slack, email, Google Sheets) to get instant notifications on new listings.

Use Apify Proxy for reliability
LinkedIn rate-limits unauthenticated requests aggressively. When running on the Apify platform, proxyConfiguration.useApifyProxy: true (the default) routes each request through a different datacenter IP, significantly reducing failures and retries. The proxy is automatically skipped during local development.


FAQ, disclaimers, and support

Is scraping LinkedIn legal?
The Actor only accesses publicly available, non-authenticated LinkedIn job listings — the same data visible to any anonymous visitor. The legal landscape for web scraping public data varies by jurisdiction. Always review LinkedIn's Terms of Service and consult your legal team before large-scale or commercial use.

Why are some fields empty?
Not all jobs display every field. Salary, for example, is only listed by employers who opt in. Fields will be empty strings when the data is not present on the page.

Can it scrape private or behind-login content?
No. The Actor uses LinkedIn's public guest API and does not support authenticated sessions or scraping of member-only content.

The Actor returned fewer jobs than expected — why?
LinkedIn limits guest API access to a certain number of results per search (typically up to a few hundred per query). Narrow your search with more specific keywords, location filters, or date filters to get the most relevant results within those limits.

Known limitations:

  • No authentication / login support
  • LinkedIn may rate-limit or block requests in high-volume runs — use proxies and keep concurrency reasonable
  • Job counts displayed on LinkedIn's UI are approximate and not always reachable via the guest API

Need help or a custom solution?
Open an issue in the Issues tab on Apify. For custom scraping solutions, data pipelines, or integrations, contact us through the Apify platform.


About the author

Built by Ahmed Abdelsalam — Full-Stack & Backend Engineer with 5+ years of experience building scalable web architectures, high-performance APIs, and cloud infrastructure.

🌐 ahmedabdelsalam.dev