LinkedIn Jobs Scraper — Search, Salaries & Recruiter Info
Pricing
from $1.00 / 1,000 job listings
LinkedIn Jobs Scraper — Search, Salaries & Recruiter Info
Scrape public LinkedIn job postings with full descriptions, salary insights, recruiter contacts, and company data. Search by URLs or AI filters (keyword, location, date, remote). Fast guest HTTP scraper with no login or cookies needed. Pay only per successful job retrieved.
Pricing
from $1.00 / 1,000 job listings
Rating
0.0
(0)
Developer
Scrape Pilot
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
💼 LinkedIn Jobs Scraper – Search, Full Details, Salaries & Company Intel
Extract comprehensive public LinkedIn job postings — titles, companies, full HTML/text descriptions, salary insights, recruiter contacts, seniority levels, employment types, and company intelligence — directly from LinkedIn's public job search. Includes automated AI search query translation and company profile enrichment. No login required. Residential proxy ready. Pay per successful result — from $1.00 to $2.00 per 1,000 successful jobs ($0.02 actor start).
💡 What is the LinkedIn Jobs Scraper?
This actor extracts public job posting data from LinkedIn by querying LinkedIn's public guest jobs search and job detail endpoints using a Chrome-impersonating HTTP client (curl_cffi). It bypasses the 25-jobs-per-page browser limitations and extracts rich, structured job data at high speeds with a multi-strategy parser:
- Public Guest Search Engine — queries LinkedIn's high-speed guest search streams (
/jobs-guest/jobs/api/seeMoreJobPostings/search), paginating seamlessly across offsets with zero login or session cookies required. - Deep Detail & Criteria Hydration — visits each posting's public detail endpoint (
/jobs-guest/jobs/api/jobPosting/{id}) to extract full semantic HTML descriptions, plain-text descriptions, applicant counts, seniority levels, employment types, job functions, and industries. - Automated AI Search Backward Compatibility — converts legacy filters (Experience level, Job type, Workplace arrangement) into natural language keywords for full compatibility with LinkedIn's latest AI search updates.
- Company Intelligence Engine — optionally extracts company overviews, corporate websites, and employee headcounts directly from hiring organization profiles.
On top of core listing data, the actor mines the posting for salary ranges, hiring badges (e.g. "Actively Hiring"), recruiter profiles (name, title, photo, LinkedIn URL), and external application links, making it indispensable for recruiters, job board aggregators, market analysts, and sales intelligence teams.
No LinkedIn login, no password, and no cookies required. You are charged only for successful job retrievals — empty queries, blocked requests, or invalid postings incur no cost.
🚀 Key Features
| Feature | Description |
|---|---|
| Direct URL & AI Filter Modes | Provide any LinkedIn jobs search URL, or build searches directly from structured keywords and filter fields. |
| Full HTML & Plain-Text Descriptions | Captures complete, un-truncated job descriptions formatted as both semantic HTML (descriptionHtml) and clean plain text (descriptionText). |
| Salary & Compensation Insights | Extracts advertised salary brackets, hourly wages, and compensation insights directly from job cards or description text. |
| Recruiter & Job Poster Info | Identifies the hiring team — captures recruiter name, headline title, profile avatar, and LinkedIn profile link. |
| Structured Job Criteria | Extracts seniority level (e.g. Entry level, Associate, Mid-Senior), employment type (Full-time, Contract), job function, and industries. |
| Workplace & Remote Detection | Automatically flags remote-eligible roles, hybrid arrangements, and on-site requirements. |
| Company Intelligence Enrichment | Optional mode to fetch hiring company descriptions, official websites, and employee headcounts. |
| Backward-Compatible AI Search | Automatically maps legacy URL filters (f_E, f_JT, f_WT) into natural language keywords for LinkedIn's newest search algorithms. |
| No Login Required | Operates 100% publicly on guest endpoints without personal accounts, cookies, or risk of account bans. |
| Residential Proxy Ready | Integrates seamlessly with Apify's RESIDENTIAL proxy pool matching the target job market country. |
| Pay Per Success | Charged only when a job posting is successfully retrieved and stored. Failed attempts are free. |
| Spending Limit Protection | Automatically and gracefully halts the run as soon as your configured Apify PPE spending limit is reached. |
| Clean, Structured JSON | Outputs standardized, analytics-ready JSON records ready for CRM, database import, or CSV/Excel export. |
📥 Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
urls | array | No | [] | List of LinkedIn jobs search URLs or individual job URLs (/jobs/view/...). If provided, structured filter fields are bypassed. |
keywords | string | No | "software engineer" | Search term, job title, technology, or company name (e.g. "data analyst", "python", "react developer"). |
location | string | No | "United States" | Target city, state, zip code, or country (e.g. "New York, NY", "London", "Remote"). |
datePosted | string | No | "anytime" | Posting age filter: "anytime", "past-24h" (f_TPR=r86400), "past-week" (f_TPR=r604800), or "past-month" (f_TPR=r2592000). |
experienceLevel | string | No | "all" | Seniority filter: "all", "internship", "entry-level", "associate", "mid-senior", "director", "executive". |
jobType | string | No | "all" | Employment type filter: "all", "full-time", "part-time", "contract", "temporary", "internship", "volunteer". |
workplaceType | string | No | "all" | Workplace arrangement: "all", "on-site", "remote", "hybrid". |
easyApply | boolean | No | false | Restrict search to jobs supporting LinkedIn Easy Apply (f_AL=true). |
under10Applicants | boolean | No | false | Early-bird deal mode: filter for jobs with fewer than 10 applicants (f_EA=true). |
companyIds | string | No | "" | Comma-separated list of LinkedIn company numeric IDs to filter by (e.g. "10667" for Meta). |
autoConvertToAiSearch | boolean | No | true | Automatically append legacy filter terms to search query keywords for maximum accuracy. |
scrapeCompanyDetails | boolean | No | false | Visit hiring company profiles to extract company description, website, and employee size. |
maxItems | integer | No | 50 | Maximum number of job postings to collect and push. |
proxy | object | No | Residential | Proxy configuration. Apify Residential proxies matching the target country are recommended. |
Example Input (Structured Search with Filters)
{"keywords": "python developer","location": "United States","datePosted": "past-week","workplaceType": "remote","jobType": "full-time","maxItems": 20}
Example Input (LinkedIn Search URL)
{"urls": [{"url": "https://www.linkedin.com/jobs/search/?keywords=react&location=London&f_TPR=r86400"}],"maxItems": 30}
📤 Output Fields
Each successful job posting is pushed to the dataset as an object with the following fields:
| Field | Type | Description |
|---|---|---|
id | string | Unique LinkedIn job identifier. |
link | string | Canonical LinkedIn job URL. |
title | string | Clean job title. |
companyName | string | Name of the hiring company. |
companyLinkedinUrl | string | LinkedIn profile URL of the hiring company. |
companyLogo | string | Company logo image URL. |
location | string | Job location or metropolitan area. |
salaryInfo | array of strings | Extracted compensation brackets or hourly wage strings. |
postedAt | string | Formatted relative posting date (e.g. "2 weeks ago", "1 day ago"). |
postedAtTimestamp | string | ISO 8601 UTC timestamp of posting date. |
benefits | array of strings | Hiring badges and perks (e.g. ["Actively Hiring"]). |
descriptionHtml | string | Full job description in semantic HTML format. |
descriptionText | string | Clean, readable plain-text job description. |
applicantsCount | string | Number of applicants (e.g. "Over 200 applicants"). |
applyUrl | string | Direct external application destination URL, if captured. |
jobPosterName | string | Name of the recruiter or job poster. |
jobPosterTitle | string | Headline title of the job poster. |
jobPosterPhoto | string | Avatar URL of the job poster. |
jobPosterProfileUrl | string | LinkedIn profile URL of the job poster. |
seniorityLevel | string | Required seniority level (e.g. "Associate", "Mid-Senior level"). |
employmentType | string | Employment type (e.g. "Full-time", "Contract"). |
jobFunction | string | Primary department or function category. |
industries | string | Industry classifications of the hiring company. |
companyDescription | string | Overview description of the hiring company. |
companyWebsite | string | Official corporate website URL of the company. |
companyEmployeesCount | string | Employee count or size bracket (e.g. "201-500 employees"). |
workRemoteAllowed | boolean | Whether remote work is permitted. |
workplaceTypes | array of strings | Workplace arrangements (e.g. ["Remote"], ["On-site"]). |
insights | array of strings | Additional job insight tags provided by LinkedIn. |
apify_charge_info | object | Pay-Per-Event billing audit object ({"job": true}). |
Example Output
[{"id": "3692563200","link": "https://www.linkedin.com/jobs/view/english-data-labeling-analyst-at-facebook-3692563200/","title": "English Data Labeling Analyst","companyName": "Facebook","companyLinkedinUrl": "https://www.linkedin.com/company/facebook","companyLogo": "https://media.licdn.com/dms/image/C4E0BAQHi-wrXiQcbxw/company-logo_100_100/0/1635988509026?e=2147483647&v=beta&t=pKAh1a653MsJvWqrqxSunoCVUALyq29eXX1oqobspnE","location": "Los Angeles Metropolitan Area","salaryInfo": ["$17.00","$19.00"],"postedAt": "2 weeks ago","postedAtTimestamp": "2026-10-02T16:00:00+00:00","benefits": ["Actively Hiring"],"descriptionHtml": "<p>APPROVED REMOTE LOCATIONS: Los Angeles, CA, San Francisco, CA, New York, NY...</p>","descriptionText": "APPROVED REMOTE LOCATIONS: Los Angeles, CA, San Francisco, CA, New York, NY... Summary: The main function of a data labeling analyst...","applicantsCount": "200","applyUrl": "","jobPosterName": "Andrea Cowan","jobPosterTitle": "Technical Recruiter at Meta","jobPosterPhoto": "https://media.licdn.com/dms/image/C5603AQErv53vemaq_A/profile-displayphoto-shrink_100_100/0/1657753132661?e=1699488000&v=beta&t=5R1WgyX-TbL6qhhsntBeR5qmjKdTL5G2l2KtroVTntM","jobPosterProfileUrl": "https://ca.linkedin.com/in/andrea-cowan-458b5423b","seniorityLevel": "Associate","employmentType": "Contract","jobFunction": "Other","industries": "Retail Office Equipment","companyDescription": "The Facebook company is now Meta. Meta builds technologies that help people connect, find communities, and grow businesses...","companyWebsite": "https://www.meta.com","companyEmployeesCount": "36,275 employees","workRemoteAllowed": true,"workplaceTypes": ["Remote"],"insights": [],"apify_charge_info": {"job": true}}]
💰 Pricing
This actor operates on Apify's Pay-Per-Event (PPE) pricing model. You only pay for what you actually extract — failed queries or empty results incur no data charge.
Event Pricing Breakdown
| Event | Event Code | Pricing Tier | Rate |
|---|---|---|---|
| Actor Start | apify-actor-start | Fixed start fee | $0.02 / run |
| Job Listing | job | Standard (No discount) | $2.00 / 1,000 jobs ($0.0020 / job) |
| 🥉 Bronze Tier | $1.67 / 1,000 jobs ($0.00167 / job) | ||
| 🥈 Silver Tier | $1.33 / 1,000 jobs ($0.00133 / job) | ||
| 🥇 Gold Tier | $1.00 / 1,000 jobs ($0.0010 / job) |
- Pay-per-event: you are charged one
jobevent only when a job posting is successfully captured with substantive data (title, company, description, location) and saved to the dataset. - Run start fee: a nominal $0.02
apify-actor-startfee applies per run to initialize proxy routing and session environments. - Volume discounts: Apify monthly spending tiers (Bronze, Silver, Gold) automatically discount your per-job pricing down to as low as $1.00 per 1,000 jobs.
- Failed or blocked requests are free — zero charge for failed attempts, empty pages, or blocked endpoints.
- Spending limit protection: the run automatically and gracefully halts as soon as your configured Apify PPE spending limit is reached — preventing any accidental overspending.
🛠 How to Use on Apify
- Create a task with this actor in the Apify Console.
- Choose your search mode:
- AI Filter Mode: Enter
keywords(e.g."react developer"),location(e.g."United States"), and select filters likedatePostedorworkplaceType. - URL Mode: Paste any LinkedIn jobs search link or specific job posting link into
urls.
- AI Filter Mode: Enter
- Configure company enrichment:
- Enable
scrapeCompanyDetailsif you need company overview, official website, and employee size.
- Enable
- Proxies are configured automatically — the actor uses Apify's
RESIDENTIALproxy group matching the target market country. - Run — the actor scrapes jobs at high speed and streams clean JSON records directly into your Dataset.
- Export — download your results as JSON, CSV, or Excel from the Dataset tab.
Running via API
curl -X POST "https://api.apify.com/v2/acts/your-username~linkedin-jobs-scraper/runs" \-H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_API_TOKEN" \-d '{"keywords": "software engineer","location": "United States","datePosted": "past-week","workplaceType": "remote","maxItems": 50}'
🎯 Use Cases
| Industry / Use Case | How It Helps |
|---|---|
| Recruitment & Executive Search | Track hiring surges, identify companies expanding headcount, and connect with active recruiters posting openings. |
| Job Board & Aggregator Feeds | Populate niche job boards, career sites, and Telegram/Discord alerts with real-time, verified LinkedIn listings. |
| B2B Lead Generation & Sales Signals | Hiring is the #1 signal of corporate budget. Find companies actively investing in specific tools, technologies, and departments. |
| Compensation & Salary Benchmarking | Analyze transparent compensation data across tech, finance, and engineering roles by geography and seniority. |
| Competitive Intelligence | Monitor competitors' expansion strategies, department growth, and skill requirements before official announcements. |
| Workforce & Labor Market Research | Analyze remote vs. hybrid trends, time-to-fill estimates, and talent demand shifts across global metropolitan regions. |
❓ Frequently Asked Questions
1. Do I need a LinkedIn account or cookies? No. The actor operates 100% publicly on server-rendered LinkedIn guest endpoints. No login, password, or session cookies required.
2. How does the actor bypass the ~1,000 jobs limit per search?
LinkedIn caps pagination to 1,000 results per query. To scrape larger volumes, split your searches by city, state, or date posted (e.g. schedule daily runs with datePosted: "past-24h").
3. Why do I need residential proxies? LinkedIn monitors traffic and restricts datacenter IP addresses. Apify Residential proxies ensure uninterrupted access and geo-targeted results.
4. How does the Auto convert to AI search feature work? LinkedIn's recent search updates discontinued some legacy URL filters. When enabled, this feature translates filters (like Experience Level or Workplace Type) into natural-language keywords to maintain maximum result precision.
5. Am I charged for failed or empty runs? No. You are charged only for job listings successfully extracted and pushed to the dataset.
6. Can I scrape private or member-only jobs? No. The actor accesses publicly indexable job postings available to public search engines. Confidential or internal member-restricted listings are excluded.
7. Where do the recruiter contact details come from? When an employer chooses to highlight a recruiter on their public job posting, the actor extracts their name, title, photo, and LinkedIn profile URL.
8. What happens when my spending limit is reached? The actor detects the pay-per-event spending limit and gracefully stops processing further jobs, preventing accidental overspending.
9. How fast does the scraper execute?
Using lightweight HTTP client technology (curl_cffi) with Chrome TLS impersonation, each job detail is hydrated in under 0.5 seconds, scraping dozens of postings per minute.
10. What if LinkedIn changes its layout? The parser employs multi-strategy fallbacks, checking semantic CSS selectors, embedded JSON metadata, and heuristic regular expressions to ensure maximum resilience against UI changes.
📝 Technical Notes
- Target:
https://www.linkedin.com/jobs/search/andhttps://www.linkedin.com/jobs-guest/jobs/api/seeMoreJobPostings/search. - Parsing Strategies: (1) Public Guest Search offset stream pagination, (2) Deep Detail hydration via
/jobs-guest/jobs/api/jobPosting/{id}, (3) Multi-selector semantic criteria parsing, (4) In-memory cached company profile hydration. - Concurrency: Parallel detail hydration using
asyncio.Semaphore(5)to maximize throughput while avoiding rate-limiting. - Charging: Programmatic Pay-Per-Event billing via
Actor.charge(event_name="job")with spending-limit protection. - Output: Clean, normalized dataset records pushed directly to the Apify default dataset.
🔍 SEO Keywords
linkedin jobs scraper, linkedin job scraper, scrape linkedin jobs, linkedin jobs api, linkedin jobs crawler, linkedin job postings extractor, linkedin salary scraper, linkedin recruiter scraper, remote jobs scraper, linkedin jobs data extractor, apify linkedin jobs, b2b hiring leads, job board scraper, linkedin company scraper
Start scraping LinkedIn jobs today — from $1.00 to $2.00 per 1,000 successful jobs ($0.02 actor start), with full descriptions, salary insights, and recruiter details.