Linkedin Job Scraper avatar

Linkedin Job Scraper

Pricing

$0.50 / 1,000 results

Go to Apify Store
Linkedin Job Scraper

Linkedin Job Scraper

Fast, reliable LinkedIn job scraper that extracts structured data from public job listings — no LinkedIn account required.

Pricing

$0.50 / 1,000 results

Rating

0.0

(0)

Developer

Patrik

Patrik

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

0

Monthly active users

2 days ago

Last modified

Categories

Share

LinkedIn Jobs Scraper - No Login Required

Fast, reliable LinkedIn job scraper that extracts 20+ structured fields from public job listings. No LinkedIn account, cookies, or API key needed.

Why This Actor?

  • 20+ fields included — seniority level, industries, job function, skills, and more. Other actors charge $30/month extra for these fields.
  • No login, no cookies — scrapes LinkedIn's public job pages. Zero setup, zero risk to your LinkedIn account.
  • Skills extraction — automatically extracts skills mentioned in job descriptions. No upsell, no "Advanced" tier.
  • Cross-query deduplication — run multiple overlapping queries and get clean, unique results.
  • Concurrent fetching — configurable parallelism (1-20 workers). Scrape 1,000 jobs in ~2.5 minutes.
  • Reliable — exponential backoff with jitter on rate limits (4 retries). Proxy rotation built in.
  • Boolean search — use LinkedIn's native search operators: "data engineer" AND (Python OR SQL) NOT junior.
  • Lightweight — runs on 256MB memory, keeping your compute costs low.

Cost

$0.50 per 1,000 results (platform usage included).

ResultsCost
100$0.05
1,000$0.50
10,000$5.00

Input

FieldTypeDefaultDescription
queriesstring[]["software engineer"]Search queries (supports boolean operators)
locationstring""Location name (e.g. "Finland", "New York")
geo_idstring""LinkedIn GeoID — overrides location if set
max_results_per_queryinteger25Max results per query (up to 1000)
date_postedenum""Filter: "", pastDay, pastWeek, pastMonth
experience_levelstring[][]LinkedIn codes: 1=Internship, 2=Entry, 3=Associate, 4=Mid-Senior, 5=Director, 6=Executive
concurrencyinteger5Parallel detail requests (1-20)
min_delay_msinteger300Minimum delay between requests (ms)
max_delay_msinteger800Maximum delay between requests (ms)
proxyobjectApify proxyProxy configuration
include_description_htmlbooleanfalseInclude raw HTML description in output

Example Input

{
"queries": [
"software engineer",
"\"data scientist\" AND Python NOT junior"
],
"location": "San Francisco",
"max_results_per_query": 100,
"date_posted": "pastWeek",
"experience_level": ["4", "5"],
"concurrency": 10
}

Output

Every result includes 20+ fields. All fields are present in every result — missing data returns null, never errors.

FieldTypeDescription
job_idstringLinkedIn job ID
job_urlstringDirect URL to the job posting
job_titlestringJob title
company_namestringCompany name
locationstringJob location
job_descriptionstringPlain text description
seniority_levelstringe.g. "Mid-Senior level", "Director"
employment_typestringe.g. "Full-time", "Contract"
job_functionstringe.g. "Engineering", "Information Technology"
industriesstringe.g. "Software Development"
skillsstring[]Skills extracted from the job description
salary_rangestringSalary info if listed
posted_datestringISO date when posted
applicant_countstringe.g. "Over 200 applicants"
company_urlstringLinkedIn company page URL
workplace_typestring"Remote", "On-site", or "Hybrid"
apply_urlstringExternal application URL if available
description_htmlstringRaw HTML description (only if include_description_html is true)

Example Output

{
"job_id": "3812345678",
"job_url": "https://www.linkedin.com/jobs/view/3812345678",
"job_title": "Senior Software Engineer",
"company_name": "Acme Corp",
"location": "San Francisco, CA",
"job_description": "We are looking for a senior software engineer...",
"seniority_level": "Mid-Senior level",
"employment_type": "Full-time",
"job_function": "Engineering",
"industries": "Software Development",
"skills": ["Python", "AWS", "Kubernetes", "React", "PostgreSQL"],
"salary_range": "$150,000 - $200,000",
"posted_date": "2026-03-15",
"applicant_count": "Over 200 applicants",
"company_url": "https://www.linkedin.com/company/acme-corp",
"workplace_type": "Hybrid",
"apply_url": "https://acme.com/careers/12345"
}

Usage Tips

  • Start small: Test with 1 query and 5-10 results before scaling up
  • Use boolean search: Combine terms with AND, OR, NOT and quotes for exact phrases. Example: "product manager" AND (B2B OR SaaS) NOT intern
  • Use date filters: pastWeek reduces results and speeds up scraping
  • Tune concurrency: Start at 5, increase to 10-15 with proxy enabled
  • Enable proxy for large runs: Scraping 500+ jobs without proxy may hit rate limits
  • Combine queries: Use multiple specific queries rather than one broad query for better results
  • GeoID vs location: GeoID is more precise — use it if you know the LinkedIn code for your target region

Common Use Cases

  • Job boards and aggregators — feed fresh listings into your platform
  • Recruitment pipelines — monitor openings at target companies
  • Salary benchmarking — collect compensation data across roles and regions
  • Market research — track hiring trends, skill demand, and competitive intelligence
  • Personal job alerts — monitor 100 jobs/day for just $0.05

Limitations

  • LinkedIn public pages show up to ~1000 results per search query
  • Salary information is only available if the employer has listed it
  • Some fields (applicant count, apply URL) may not be present on all listings
  • Rate limits apply even with proxy — the actor handles this with retry and backoff

Disclaimer

This actor scrapes publicly accessible LinkedIn job pages that do not require login. It is your responsibility to ensure your use complies with LinkedIn's Terms of Service and all applicable laws. The author provides this tool as-is and assumes no liability for how it is used.