All-in one Linkedin Scraper
Pricing
from $0.85 / 1,000 job listings
All-in one Linkedin Scraper
LinkedIn scraper — NO COOKIES NEEDED. 7 scraping modes:Profiles, Companies,Jobs,Posts,Search,Search_profile, Profile Complete. Zero risk to your LinkedIn account. Multi-source search engine for maximum reliability. Pay per result from $1/1K. Apify subscription discounts. MCP-compatible for AI agents
Pricing
from $0.85 / 1,000 job listings
Rating
0.0
(0)
Developer
Japi Cricket
Actor stats
0
Bookmarked
140
Total users
67
Monthly active users
2.1 days
Issues response
4 hours ago
Last modified
Categories
Share
What does All-in-One LinkedIn Scraper do?
All-in-One LinkedIn Scraper extracts structured data from LinkedIn across 8 scraping modes — profiles, companies, jobs, posts, people search, search & scrape by name, plus a premium Profile Complete tier that bundles profile + posts + engagement into a single result. No cookies needed. No login required. Zero risk to your LinkedIn account.
Most LinkedIn scrapers require your li_at session cookie, putting your account at risk of permanent ban. This scraper works 100% without authentication — it uses public LinkedIn pages and guest APIs only. Replaces 5+ separate LinkedIn scrapers with one all-in-one actor.
Getting Started
- Click "Try for free" at the top of this page
- Choose a scraping mode (Profiles, Companies, Jobs, Posts, Search, Search Profiles, Profile Complete, or Company Employees)
- Paste LinkedIn URLs or enter a search query
- Click Start — results appear in the Dataset tab within seconds
- Download as JSON, CSV, or Excel — or connect via API, n8n, Make, or Zapier
No cookies needed. No login required. Just paste and scrape.
Easiest Way to Start: Paste a URL
Just paste any LinkedIn URL into the "LinkedIn URLs" field and hit Start. The scraper auto-detects the mode:
| URL Pattern | Auto-Detected Mode |
|---|---|
linkedin.com/in/williamhgates | Profiles |
linkedin.com/company/microsoft | Companies |
linkedin.com/posts/microsoft_... | Posts |
For Jobs and Search modes, enter a keyword in the "Search Query" field instead.
8 Scraping Modes
| Mode | Description | Best For |
|---|---|---|
| Profiles | Full public profile data: experience, education, about, posts | Lead enrichment, recruiting |
| Companies | Company pages: industry, size, HQ, website, specialties, followers | Market research, B2B targeting |
| Jobs | Job search with filters: type, experience, location, salary | Job market analysis, recruiting |
| Posts | Posts with engagement, hashtags, video detection, content type | Content analysis, social listening |
| Search | Find LinkedIn profiles by keywords and location (3 engines in parallel: Brave + Yahoo + Google) | Prospecting, lead discovery |
| Search Profiles | Search by person name → find ALL matching profiles → fully scrape each one (14+ fields) | Finding all people with a given name |
| Profile Complete | Profile + all posts + engagement data in one result | Full person intelligence |
| Company Employees | Find people who work at a company via SERP discovery | B2B lead lists, org mapping |
Standard vs Enhanced Mode
Every mode works out of the box without any cookie or login. For 4 modes, you can optionally provide your LinkedIn li_at cookie to unlock significantly richer data — at the same price per result.
What You Get Without a Cookie (Standard Mode)
All 8 modes work using search engine results (Brave, Yahoo, Google) and public LinkedIn pages. This is the default, zero-risk option:
- Profiles: Name, headline, location, photo, current company/title
- Companies: Full company page (industry, size, HQ, website, specialties, followers)
- Jobs: Full job details (title, salary, description, applicants) — no cookie needed
- Posts: Full post content with engagement metrics, hashtags, video detection
- Search: Profile discovery via 3-engine parallel SERP
- Search Profiles: Search by name + basic enrichment per profile
- Profile Complete: Profile + posts (basic fields)
- Company Employees: ~10-20 employees discovered via search engines
What You Unlock With a Cookie (Enhanced Mode)
Paste your li_at cookie to unlock LinkedIn's internal API. Same price per result — you just get more data.
| Mode | Standard (no cookie) | Enhanced (with cookie) | Improvement |
|---|---|---|---|
| Profiles | 6 fields (name, headline, location, company, title, photo) | 20+ fields (+experience, education, skills, certifications, languages, about, industry) | 5x more fields |
| Profile Complete | Basic profile + posts | Full profile + about section + structured posts with engagement | 5x more fields |
| Search Profiles | SERP discovery + basic enrichment | Voyager search (structured results) + full enrichment with experience/education | Better discovery + richer data |
| Company Employees | ~10-20 employees from search engines | 100+ employees via LinkedIn's internal search, paginated | 10x more results |
| Companies | Full data | No change | — |
| Jobs | Full data | No change | — |
| Posts | Full data | No change | — |
| Search | Full data | No change | — |
How to Get Your Cookie (2 minutes)
- Open linkedin.com in Chrome and log in
- Press F12 (or right-click → Inspect) to open Developer Tools
- Click the Application tab (top bar)
- In the left sidebar, expand Cookies → click linkedin.com
- Find the row named
li_at— copy the Value column - Paste it into the "LinkedIn Cookie" field in this scraper's input
Your cookie is sent directly to LinkedIn's API — it never touches our servers. The cookie typically lasts 1-3 months before expiring.
Is My Account Safe?
- The scraper uses human-like delays (randomized with Box-Muller distribution) between requests
- Session rotation prevents pattern detection
- Requests look identical to normal browser activity (Chrome TLS fingerprint via Impit)
- We've processed thousands of profiles without any account issues
- If you're concerned, use a secondary LinkedIn account
When to Use Which Mode
| Your Goal | Recommended Mode | Cookie Needed? |
|---|---|---|
| Quick lead list with names + titles | Standard (no cookie) | No |
| Full profile with experience + skills for recruiting | Enhanced | Yes |
| Job market research | Standard | No |
| Find all employees at a target company | Enhanced | Yes (for 100+) |
| Monitor someone's LinkedIn posts | Standard | No |
| Deep person intelligence report | Enhanced (Profile Complete) | Yes |
Pricing — Pay Per Result, No Monthly Fee
Standard Modes
| Mode | Price / result | Price / 1,000 | Fields | Best For |
|---|---|---|---|---|
| Jobs | $0.0015 | $1.50 | 16 fields | Job market research, recruiting pipelines |
| Posts | $0.0015 | $1.50 | 14 fields | Content monitoring, social listening |
| Companies | $0.002 | $2.00 | 15 fields | B2B market research, competitor tracking |
| Search | $0.002 | $2.00 | 9 fields | Lead discovery, prospecting |
| Profiles | $0.0025 | $2.50 | 14 fields | Lead enrichment, recruiting |
| Search Profiles | $0.004 | $4.00 | 14+ fields | Name search + full enrichment |
Premium Tier
| Mode | Price / result | Price / 1,000 | What's Included | Best For |
|---|---|---|---|---|
| Profile Complete | $0.004 | $4.00 | Profile + up to 10 posts with engagement (likes, comments, shares) + total engagement score | Full person intelligence, influencer analysis |
Why Profile Complete? Buying Profile + Posts separately costs $4/1K and requires two runs + manual matching. Profile Complete gives you everything in one result for $4/1K — one run, one output, zero hassle.
Apify Subscription Discounts
Higher Apify subscription plans get automatic discounts on all modes:
| Apify Plan | Discount Tier | Discount |
|---|---|---|
| Free / Starter | Standard | — |
| Scale | Bronze | 5% off |
| Business | Silver | 10% off |
| Enterprise | Gold | 15% off |
Cost examples:
- 100 job listings: $0.15
- 500 LinkedIn profiles: $1.25
- 200 company pages: $0.40
- 100 complete person profiles with posts: $0.40
You only pay for results delivered. Platform compute costs are included.
Why This LinkedIn Scraper?
- No cookies needed — all 8 modes work without login. Optional cookie unlocks 5x richer data (experience, education, skills) and 10x more company employees
- 8 modes in one actor — profiles, companies, jobs, posts, search, search profiles, profile complete, company employees — one integration to maintain
- Cheapest on Apify — see comparison below
- HTTP-only architecture — Impit with Chrome TLS fingerprint impersonation (no bloated browser)
- 256 MB memory — runs on minimal resources, keeping your compute costs low
- Residential proxy rotation — automatic retry with IP rotation on blocks
- Human-like behavior — randomized delays with Box-Muller distribution jitter
- MCP-compatible — works with AI agents (Claude, GPT, Cursor) out of the box
How We Compare
| Feature | This Scraper | Dev Fusion | HarvestAPI | ApiMaestro | Bebity |
|---|---|---|---|---|---|
| Profiles / 1K | $2.50 | $10.00 | $4.00 | $5.00 | $29/mo flat |
| Jobs / 1K | $1.50 | — | $1.00 | $5.00 | $29.99/mo flat |
| Posts / 1K | $1.50 | — | $2.00 | $5.00 | — |
| Companies / 1K | $2.00 | $8.00 | — | $5.00 | $29/mo flat |
| Search / 1K | $2.00 | — | $4.00 | $5.00 | — |
| Cookies required | No | No | No | No | Unclear |
| Modes in one actor | 8 | 1 | 1 (15+ separate actors) | 1 (10+ separate actors) | 2 |
| Email discovery | Free (+ optional Hunter.io) | Built-in | +$6/1K add-on | Built-in | No |
| Memory | 256 MB | 256 MB | 256 MB | 128–256 MB | 4096 MB |
| Success rate | 94%+ | 99.9% | 99.9% | 99.9% | 82% |
Key advantages:
- One actor, 8 modes — competitors split into 10–15 separate actors, each requiring its own integration. We give you everything in one.
- Lowest price per result — profiles at $2.50/1K (vs $5–$10/1K elsewhere), jobs at $1.50/1K
- Free email discovery — most competitors charge $6–$10/1K extra for email enrichment
- Lightweight — 256 MB HTTP-only means lower compute costs vs browser-based scrapers (Bebity uses 4096 MB)
MCP Integration for AI Agents
This scraper works with AI agents via the Model Context Protocol (MCP). Connect it to Claude Desktop, Cursor, GPT, or any MCP-compatible client.
Setup:
- Go to mcp.apify.com
- Add "All-in-One LinkedIn Scraper" to your MCP server
- Ask your AI: "Find 20 software engineers in San Francisco on LinkedIn"
Example prompts for your AI agent:
- "Scrape the LinkedIn profile of Bill Gates"
- "Search LinkedIn for product managers in New York"
- "Get the latest job postings for data scientist in London"
- "Get the complete profile with posts for Satya Nadella"
Works with Claude Desktop, Cursor, GPT via MCP, and any other MCP-compatible AI client.
Integrations
n8n
- Add the Apify node in your n8n workflow
- Select "All-in-One LinkedIn Scraper" as the actor
- Configure the mode and input parameters
- Connect the output to your CRM, Google Sheets, or database
Make.com (Integromat)
- Add the Apify module to your scenario
- Select "Run Actor" and choose this scraper
- Map the JSON output fields to your downstream modules
- Use for automated lead enrichment, job monitoring, or CRM syncing
Zapier
- Create a new Zap with Apify as the trigger or action
- Select "Run Actor" and configure with this scraper's actor ID
- Map output fields to Google Sheets, HubSpot, Salesforce, or Slack
- Trigger on schedule or from a webhook
REST API & SDKs
Use the Apify API, JavaScript SDK, or Python SDK for programmatic access. See the Python example below.
Mode 1: Profiles
Scrape public LinkedIn profile data including experience, education, skills, connections, and recent posts.
Input Parameters
| Parameter | Type | Required | Description | Values |
|---|---|---|---|---|
mode | string | Yes | Scraping mode | "profiles" |
urls | string[] | Yes | LinkedIn profile URLs | linkedin.com/in/username format |
maxResults | integer | No | Maximum profiles to return | 1–1000, default: 25 |
proxyConfig | object | No | Proxy settings | Default: Apify RESIDENTIAL |
minDelay | integer | No | Min delay between requests (ms) | 500–30000, default: 2000 |
maxDelay | integer | No | Max delay between requests (ms) | 1000–60000, default: 5000 |
Input Example
{"mode": "profiles","urls": ["https://www.linkedin.com/in/williamhgates","https://www.linkedin.com/in/satlokomern"],"maxResults": 25}
Output Fields
| Field | Type | Description | Example |
|---|---|---|---|
mode | string | Always "profiles" | "profiles" |
name | string | Full name | "Bill Gates" |
headline | string | Profile headline | "Co-chair, Gates Foundation" |
location | string | Location from profile | "Seattle, Washington" |
image_url | string | Profile photo URL | "https://media.licdn.com/..." |
url | string | LinkedIn profile URL | "https://www.linkedin.com/in/williamhgates" |
current_title | string | Current job title | "Co-chair" |
current_company | string | Current employer | "Gates Foundation" |
connections | integer | Number of connections | 500 |
experience | array | Full work history with dates | [{title, company, dates, location}] |
education | array | Education with degrees | [{school, degree, dates}] |
skills | array | Professional skills | ["Strategy", "Leadership", ...] |
certifications | array | Professional certifications | [{name, issuer, dates}] |
languages | array | Languages spoken | [{name, proficiency}] |
email | string | Discovered email address | "bill@gatesfoundation.org" |
email_source | string | How email was found | "company-website" or "guessed" |
scraped_at | string | ISO timestamp | "2026-03-19T00:00:00.000Z" |
With cookie (optional): When you provide an li_at cookie, the scraper uses LinkedIn's Voyager API to fetch full experience, education, skills, certifications, and languages via GraphQL section queries. Without a cookie, these fields are extracted from search engine results (more limited).
Email Discovery: Enabled by default. Uses a 5-layer pipeline: JSON-LD extraction, company website scraping (14 paths), search engine email search, MX-validated pattern guessing (11 patterns including underscore, reversed, hyphenated, and initials), and optional Hunter.io verification (premium).
Hunter.io Integration (Premium): Provide your own hunterApiKey for verified email delivery. Hunter.io verifies guessed email patterns ($0.01/verification) and uses its Email Finder database for higher accuracy. Without it, emails are verified via free MX record checks only.
Output Example
{"mode": "profiles","name": "Dr. William Soliman","headline": "Help Raise the Bar in Life Sciences | Founder, CEO @ ACMA","location": "New York","image_url": "https://media.licdn.com/dms/image/...","url": "https://www.linkedin.com/in/drwilliamsoliman","current_title": "Founder, CEO","current_company": "Accreditation Council for Medical Affairs (ACMA)","connections": 500,"email": "william.soliman@acma-health.com","email_source": "guessed","experience": [{"title": "Founder, CEO","company": "Accreditation Council for Medical Affairs (ACMA) · Self-employed","dates": "Feb 2015 - Present · 11 yrs 2 mos","location": "Greater New York City Area"},{"title": "Founder/CIO","company": "White Manna Capital Partners · Self-employed","dates": "Jul 2025 - Present · 9 mos","location": null}],"education": [{"school": "Columbia University","degree": "PhD","dates": null},{"school": "Columbia University","degree": "Master's Degree","dates": null}],"skills": ["Biotechnology Industry", "Pharmaceuticals", "Medical Science", "New Business Development", "Entrepreneurship"],"certifications": [],"languages": [],"scraped_at": "2026-03-19T13:10:14.167Z"}
Real test result from Build 0.1.179 — 20 experience positions, 5 education entries, 24 skills extracted via GraphQL section queries.
Input Parameters (Profiles Mode)
| Parameter | Type | Required | Description |
|---|---|---|---|
mode | string | Yes | "profiles" |
urls | string[] | Yes | LinkedIn profile URLs |
cookie | string | No | li_at cookie for Voyager API (enables experience/education/skills) |
discoverEmails | boolean | No | Find email addresses (default: true) |
hunterApiKey | string | No | Hunter.io API key for premium email verification |
maxResults | integer | No | Max profiles (default: 25) |
{"mode": "profiles","urls": ["https://www.linkedin.com/in/drwilliamsoliman"],"cookie": "your_li_at_cookie_here","discoverEmails": true,"hunterApiKey": "optional_hunter_key"}
Use Cases
- Lead enrichment: Enrich CRM contacts with LinkedIn profile data (headline, company, location)
- Recruiting: Screen candidates by experience, education, and current role
- Sales prospecting: Identify decision-makers and their current titles
- Competitor intelligence: Track key people at competitor companies
How to Run
Apify Console:
- Go to All-in-One LinkedIn Scraper on Apify
- Select Profiles mode
- Paste LinkedIn profile URLs
- Click Start
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("get-leads/linkedin-scraper").call(run_input={"mode": "profiles","urls": ["https://www.linkedin.com/in/williamhgates","https://www.linkedin.com/in/satyanadella"],"maxResults": 25})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['name']} — {item['headline']} — {item['location']}")
Mode 2: Companies
Scrape public LinkedIn company pages including industry, size, headquarters, website, specialties, and recent posts.
Input Parameters
| Parameter | Type | Required | Description | Values |
|---|---|---|---|---|
mode | string | Yes | Scraping mode | "companies" |
urls | string[] | Yes | LinkedIn company URLs | linkedin.com/company/name format |
maxResults | integer | No | Maximum companies to return | 1–1000, default: 25 |
proxyConfig | object | No | Proxy settings | Default: Apify RESIDENTIAL |
minDelay | integer | No | Min delay between requests (ms) | 500–30000, default: 2000 |
maxDelay | integer | No | Max delay between requests (ms) | 1000–60000, default: 5000 |
Input Example
{"mode": "companies","urls": ["https://www.linkedin.com/company/microsoft","https://www.linkedin.com/company/google"],"maxResults": 25}
Output Fields
| Field | Type | Description | Example |
|---|---|---|---|
mode | string | Always "companies" | "companies" |
name | string | Company name | "Microsoft" |
description | string | Company description | "Every company has a mission..." |
url | string | LinkedIn company URL | "https://www.linkedin.com/company/microsoft" |
website | string | Company website | "https://www.microsoft.com" |
logo | string | Company logo URL | "https://media.licdn.com/..." |
industry | string | Industry | "Software Development" |
company_size | string | Employee range | "10,001+ employees" |
employee_count | string | Employee count string | "10,001+ employees" |
headquarters | string | HQ location | "Redmond, Washington" |
company_type | string | Company type | "Public Company" |
founded | string | Year founded | "1975" |
specialties | string | Specialties list | "Cloud, AI, Enterprise Software" |
followers | integer | LinkedIn followers | 27657016 |
recent_posts | array | Last 3 posts | [{text, url, date}] |
scraped_at | string | ISO timestamp | "2026-02-27T00:00:00.000Z" |
Output Example
{"mode": "companies","name": "Microsoft","description": "Every company has a mission. What's ours? To empower every person and every organization on the planet to achieve more.","url": "https://www.linkedin.com/company/microsoft","website": "https://www.microsoft.com","logo": "https://media.licdn.com/dms/image/...","industry": "Software Development","company_size": "10,001+ employees","employee_count": "10,001+ employees","headquarters": "Redmond, Washington","company_type": "Public Company","founded": "1975","specialties": "Business Software, Developer Tools, Cloud Computing, AI","followers": 27657016,"recent_posts": [{"text": "We're excited to announce...","url": "https://www.linkedin.com/posts/microsoft_...","date": "2026-02-25"}],"scraped_at": "2026-02-27T00:43:22.000Z"}
Use Cases
- Market research: Analyze companies by industry, size, and location
- B2B targeting: Build company lists for outbound sales campaigns
- Competitor tracking: Monitor competitor companies' follower growth and posts
- Investment research: Screen companies by size, industry, and founding year
Python Example
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("get-leads/linkedin-scraper").call(run_input={"mode": "companies","urls": ["https://www.linkedin.com/company/microsoft","https://www.linkedin.com/company/google"]})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['name']} — {item['industry']} — {item['followers']} followers")
Mode 3: Jobs
Search LinkedIn's public job listings with filters for job type, experience level, time posted, work arrangement, and location.
Input Parameters
| Parameter | Type | Required | Description | Values |
|---|---|---|---|---|
mode | string | Yes | Scraping mode | "jobs" |
searchQuery | string | Yes | Job search keywords | e.g. "software engineer", "data scientist" |
location | string | No | Location filter | e.g. "San Francisco", "United States" |
maxResults | integer | No | Maximum jobs to return | 1–1000, default: 25 |
timePosted | string | No | Filter by posting date | "24h", "week", "month" |
jobType | string | No | Filter by job type | "full-time", "part-time", "contract", "temporary", "volunteer", "internship" |
experienceLevel | string | No | Filter by experience | "internship", "entry", "associate", "mid-senior", "director", "executive" |
workType | string | No | Filter by work arrangement | "onsite", "remote", "hybrid" |
proxyConfig | object | No | Proxy settings | Default: Apify RESIDENTIAL |
minDelay | integer | No | Min delay between requests (ms) | 500–30000, default: 2000 |
maxDelay | integer | No | Max delay between requests (ms) | 1000–60000, default: 5000 |
Input Example
{"mode": "jobs","searchQuery": "software engineer","location": "San Francisco","maxResults": 50,"jobType": "full-time","experienceLevel": "mid-senior","workType": "remote","timePosted": "week"}
Output Fields
| Field | Type | Description | Example |
|---|---|---|---|
mode | string | Always "jobs" | "jobs" |
job_id | string | LinkedIn job ID | "3847291056" |
title | string | Job title | "Senior Software Engineer" |
company | string | Company name | "Google" |
company_url | string | Company LinkedIn URL | "https://www.linkedin.com/company/google" |
location | string | Job location | "San Francisco, CA (Remote)" |
posted_date | string | When posted | "2 days ago" |
salary | string | Salary range (if listed) | "$180,000 - $250,000" |
benefits | string | Benefits info | "Health insurance, 401k" |
is_promoted | boolean | Promoted listing | false |
url | string | Job listing URL | "https://www.linkedin.com/jobs/view/3847291056" |
applicants | string | Number of applicants | "87 applicants" |
description | string | Full job description | "We are looking for..." |
description_html | string | HTML job description | "<p>We are looking for...</p>" |
seniority_level | string | Seniority level | "Mid-Senior level" |
employment_type | string | Employment type | "Full-time" |
job_function | string | Job function | "Engineering, Information Technology" |
industries | string | Industries | "Technology, Software" |
company_logo | string | Company logo URL | "https://media.licdn.com/..." |
scraped_at | string | ISO timestamp | "2026-02-27T00:00:00.000Z" |
Output Example
{"mode": "jobs","job_id": "3847291056","title": "Senior Software Engineer","company": "Google","company_url": "https://www.linkedin.com/company/google","location": "San Francisco, CA (Remote)","posted_date": "2 days ago","salary": "$180,000 - $250,000","benefits": null,"is_promoted": false,"url": "https://www.linkedin.com/jobs/view/3847291056","applicants": "87 applicants","description": "We are looking for a Senior Software Engineer to join our Cloud team...","seniority_level": "Mid-Senior level","employment_type": "Full-time","job_function": "Engineering, Information Technology","industries": "Technology, Internet","company_logo": "https://media.licdn.com/dms/image/...","scraped_at": "2026-02-27T00:43:22.000Z"}
Use Cases
- Job market analysis: Track hiring trends by role, location, and industry
- Recruiting intelligence: Monitor competitor job postings and salary ranges
- Salary benchmarking: Collect salary data across roles and locations
- Job board aggregation: Feed LinkedIn jobs into your own job board or newsletter
Python Example
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("get-leads/linkedin-scraper").call(run_input={"mode": "jobs","searchQuery": "data scientist","location": "New York","maxResults": 100,"jobType": "full-time","timePosted": "week"})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['title']} at {item['company']} — {item['salary']} — {item['location']}")
Mode 4: Posts
Extract posts from LinkedIn profiles and company pages with engagement data, hashtags, and video/media detection.
Input Parameters
| Parameter | Type | Required | Description | Values |
|---|---|---|---|---|
mode | string | Yes | Scraping mode | "posts" |
urls | string[] | Yes | Profile or company URLs | /in/username or /company/name |
maxResults | integer | No | Maximum posts to return | 1–1000, default: 25 |
proxyConfig | object | No | Proxy settings | Default: Apify RESIDENTIAL |
minDelay | integer | No | Min delay between requests (ms) | 500–30000, default: 2000 |
maxDelay | integer | No | Max delay between requests (ms) | 1000–60000, default: 5000 |
Input Example
{"mode": "posts","urls": ["https://www.linkedin.com/in/williamhgates","https://www.linkedin.com/company/microsoft"],"maxResults": 20}
Output Fields
| Field | Type | Description | Example |
|---|---|---|---|
mode | string | Always "posts" | "posts" |
author | string | Post author name | "Bill Gates" |
author_url | string | Author's LinkedIn URL | "https://www.linkedin.com/in/williamhgates" |
text | string | Post content (up to 5000 chars) | "AI is transforming education..." |
url | string | Direct post URL | "https://www.linkedin.com/posts/williamhgates_..." |
date | string | Publication date | "2026-02-20" |
content_type | string | "text", "image", or "video" | "video" |
hashtags | array | Extracted hashtags | ["#ai", "#education"] |
likes | integer | Number of likes/reactions | 45000 |
comments_count | integer | Number of comments | 1200 |
shares_count | integer | Number of shares/reposts | 350 |
media_url | string | Attached image URL | "https://media.licdn.com/..." |
video_url | string | Attached video URL (if detected) | "https://www.linkedin.com/video/..." |
scraped_at | string | ISO timestamp | "2026-02-27T00:00:00.000Z" |
Output Example
{"mode": "posts","author": "Bill Gates","author_url": "https://www.linkedin.com/in/williamhgates","text": "AI is transforming education in ways we couldn't have imagined... #ai #education #technology","url": "https://www.linkedin.com/posts/williamhgates_ai-education-technology-activity-123456","date": "2026-02-20","content_type": "image","hashtags": ["#ai", "#education", "#technology"],"likes": 45000,"comments_count": 1200,"shares_count": 350,"media_url": "https://media.licdn.com/dms/image/...","video_url": null,"scraped_at": "2026-02-27T00:43:22.000Z"}
Use Cases
- Content analysis: Analyze what topics perform best on LinkedIn
- Social listening: Monitor what companies and influencers are posting about
- Competitive intelligence: Track competitor announcements and messaging
- Influencer research: Identify high-performing content creators in your industry
Python Example
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("get-leads/linkedin-scraper").call(run_input={"mode": "posts","urls": ["https://www.linkedin.com/in/williamhgates"],"maxResults": 10})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['author']}: {item['text'][:100]}... ({item['likes']} likes)")
Mode 5: Search
Find LinkedIn profiles by keywords and location using a 5-engine parallel search: Brave, Yahoo, Google, DuckDuckGo, and Bing all queried simultaneously for maximum speed and reliability. LinkedIn Voyager API adds structured data (headline, location, images) when a cookie is provided. Results are merged and deduplicated across all engines.
Input Parameters
| Parameter | Type | Required | Description | Values |
|---|---|---|---|---|
mode | string | Yes | Scraping mode | "search" |
searchQuery | string | Yes | Search keywords | e.g. "product manager", "CEO SaaS" |
location | string | No | Location filter | e.g. "New York", "London" |
maxResults | integer | No | Maximum results to return | 1–1000, default: 25 |
proxyConfig | object | No | Proxy settings | Default: Apify RESIDENTIAL |
minDelay | integer | No | Min delay between requests (ms) | 500–30000, default: 2000 |
maxDelay | integer | No | Max delay between requests (ms) | 1000–60000, default: 5000 |
Input Example
{"mode": "search","searchQuery": "product manager","location": "New York","maxResults": 25}
Output Fields
| Field | Type | Description | Example |
|---|---|---|---|
mode | string | Always "search" | "search" |
name | string | Person's name | "Jane Smith" |
headline | string | LinkedIn headline | "Product Manager at Stripe" |
location | string | Parsed location (when available) | "New York, NY" |
image_url | string | Profile photo URL (when available) | "https://media.licdn.com/..." |
url | string | LinkedIn profile URL | "https://www.linkedin.com/in/janesmith" |
snippet | string | Search result snippet (up to 500 chars) | "Jane Smith is a Product Manager..." |
source | string | Data source used | "ddg", "voyager", "google_search", "bing_search" |
scraped_at | string | ISO timestamp | "2026-02-27T00:00:00.000Z" |
Output Example
{"mode": "search","name": "Jane Smith","headline": "Product Manager at Stripe","location": "New York, NY","image_url": null,"url": "https://www.linkedin.com/in/janesmith","snippet": "Jane Smith is a Product Manager at Stripe with 8+ years of experience in fintech...","source": "ddg","scraped_at": "2026-02-27T00:43:22.000Z"}
Use Cases
- Prospecting: Find potential customers by role and location
- Lead discovery: Build targeted outreach lists for sales teams
- Recruiting: Source candidates matching specific criteria
- Market sizing: Estimate the number of professionals in a role/location
Python Example
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("get-leads/linkedin-scraper").call(run_input={"mode": "search","searchQuery": "CTO SaaS","location": "San Francisco","maxResults": 50})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['name']} — {item['headline']} — {item['url']}")
Mode 6: Search Profiles (Search by Name + Full Enrichment)
Enter a person's name and the scraper finds ALL matching LinkedIn profiles, then fully scrapes each one with title, company, location, headline, and optional email discovery. Combines the discovery power of Search mode with the enrichment depth of Profiles mode.
How It Works
- Discovery: Searches LinkedIn via Voyager API + search engines (DDG, Google, Bing) to find all profiles matching the name
- Enrichment: For each discovered profile, runs the full enrichment pipeline (SERP extraction, Voyager lookup, 999 metadata)
- Email Discovery (optional): Scrapes employer websites for email addresses
Input Parameters
| Parameter | Type | Required | Description | Values |
|---|---|---|---|---|
mode | string | Yes | Scraping mode | "search_profiles" |
searchQuery | string | Yes | Person's name to search | e.g. "Sunny Savita", "Naveen Jain" |
location | string | No | Location filter | e.g. "New York", "India" |
maxResults | integer | No | Maximum profiles to return | 1–1000, default: 25 |
cookie | string | No | LinkedIn li_at cookie for Voyager API | Enables structured search results |
discoverEmails | boolean | No | Find email addresses | Default: true |
proxyConfig | object | No | Proxy settings | Default: Apify RESIDENTIAL |
Input Example
{"mode": "search_profiles","searchQuery": "Sunny Savita","maxResults": 10,"discoverEmails": true}
Output Fields
Same fields as Profiles mode (14+ fields per profile):
| Field | Type | Description | Example |
|---|---|---|---|
mode | string | Always "search_profiles" | "search_profiles" |
name | string | Full name | "Sunny Savita" |
headline | string | LinkedIn headline | "Senior Generative AI Engineer" |
location | string | Location | "Bangalore Urban" |
image_url | string | Profile photo URL | "https://media.licdn.com/..." |
url | string | LinkedIn profile URL | "https://www.linkedin.com/in/sunny-savita" |
current_title | string | Current job title | "Senior Generative AI Engineer" |
current_company | string | Current employer | "PwC India" |
email | string | Discovered email (if available) | "sunny.savita@pwc.com" |
scraped_at | string | ISO timestamp | "2026-03-19T00:00:00.000Z" |
Output Example
[{"mode": "search_profiles","name": "Sunny Savita","headline": "Senior Generative AI Engineer","location": "Bangalore Urban","url": "https://www.linkedin.com/in/sunny-savita","current_title": "Senior Generative AI Engineer","current_company": "PwC India","scraped_at": "2026-03-19T07:40:01.000Z"},{"mode": "search_profiles","name": "Sunny Savita","headline": "Senior Generative AI Engineer","location": "Agra","url": "https://www.linkedin.com/in/sunny-savita-8a80b620","current_title": "Senior Generative AI Engineer","current_company": "PwC India","scraped_at": "2026-03-19T07:40:01.000Z"}]
Use Cases
- Finding all people with a given name: Enter "Naveen Jain" and get every Naveen Jain on LinkedIn with full profile data
- Lead research: Search for a contact by name when you don't have their LinkedIn URL
- Recruiting: Find all candidates matching a specific name, then filter by title/company/location
- Due diligence: Verify a person's LinkedIn presence by searching their name
Python Example
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("get-leads/linkedin-scraper").call(run_input={"mode": "search_profiles","searchQuery": "Naveen Jain","maxResults": 10,"discoverEmails": True})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['name']} — {item.get('current_title', 'N/A')} at {item.get('current_company', 'N/A')} — {item['url']}")
Performance Notes
- Speed: ~10-30 seconds per profile for enrichment. 10 profiles takes ~2-5 minutes.
- With cookie: Voyager API provides structured search results (better name matching, profile photos, locations). Recommended for best results.
- Without cookie: Falls back to 5-engine parallel search (Brave, Yahoo, Google, DDG, Bing). Fewer results but still functional.
Mode 7: Profile Complete (Premium)
Get everything about a LinkedIn person in one result — full profile data plus their recent posts with engagement metrics (likes, comments, shares). Saves you from running Profiles + Posts separately.
Input Parameters
| Parameter | Type | Required | Description | Values |
|---|---|---|---|---|
mode | string | Yes | Scraping mode | "profile_complete" |
urls | string[] | Yes | LinkedIn profile URLs | linkedin.com/in/username format |
maxResults | integer | No | Maximum profiles to return | 1–1000, default: 25 |
proxyConfig | object | No | Proxy settings | Default: Apify RESIDENTIAL |
minDelay | integer | No | Min delay between requests (ms) | 500–30000, default: 2000 |
maxDelay | integer | No | Max delay between requests (ms) | 1000–60000, default: 5000 |
Input Example
{"mode": "profile_complete","urls": ["https://www.linkedin.com/in/williamhgates","https://www.linkedin.com/in/satyanadella"],"maxResults": 10}
Output Fields
| Field | Type | Description | Example |
|---|---|---|---|
mode | string | Always "profile_complete" | "profile_complete" |
name | string | Full name | "Bill Gates" |
headline | string | Profile headline | "Co-chair, Bill & Melinda Gates Foundation" |
location | string | Location | "Seattle, Washington" |
image_url | string | Profile photo URL | "https://media.licdn.com/..." |
url | string | Profile URL | "https://www.linkedin.com/in/williamhgates" |
current_title | string | Current job title | "Co-chair" |
current_company | string | Current employer | "Bill & Melinda Gates Foundation" |
connections | integer | Connections count | 500 |
followers | integer | Followers count | 35800000 |
about | string | About section | "Technologist, business leader..." |
experience | array | Work history | [{title, company, date_range, duration, location}] |
education | array | Education history | [{school, degree, dates}] |
posts | array | Up to 10 posts with engagement | [{text, url, date, likes, comments_count, shares_count, media_url}] |
posts_count | integer | Number of posts found | 5 |
total_engagement | integer | Sum of all likes + comments + shares | 125000 |
scraped_at | string | ISO timestamp | "2026-02-27T00:00:00.000Z" |
Output Example
{"mode": "profile_complete","name": "Bill Gates","headline": "Co-chair, Bill & Melinda Gates Foundation","location": "Seattle, Washington, United States","url": "https://www.linkedin.com/in/williamhgates","current_title": "Co-chair","current_company": "Bill & Melinda Gates Foundation","followers": 35800000,"experience": [{"title": "Co-chair","company": "Bill & Melinda Gates Foundation","date_range": "Jan 2000 - Present"}],"posts": [{"text": "AI is transforming education in ways we couldn't have imagined...","url": "https://www.linkedin.com/posts/williamhgates_...","date": "2026-02-20","likes": 45000,"comments_count": 1200,"shares_count": 350,"media_url": "https://media.licdn.com/..."}],"posts_count": 5,"total_engagement": 125000,"scraped_at": "2026-02-27T00:43:22.000Z"}
Use Cases
- Influencer analysis: Full profile + content performance in one call
- Sales intelligence: Know who they are AND what they care about
- Recruiting deep-dive: Candidate profile + thought leadership activity
- Competitive intelligence: Track key people + their public messaging
Python Example
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("get-leads/linkedin-scraper").call(run_input={"mode": "profile_complete","urls": ["https://www.linkedin.com/in/williamhgates","https://www.linkedin.com/in/satyanadella"],"maxResults": 10})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['name']} — {item['posts_count']} posts — {item['total_engagement']} total engagement")
Download Your Data
After every run, download your results in any format:
- JSON — for developers and API integrations
- CSV — for spreadsheets and data analysis
- Excel (XLSX) — for business users
- XML — for data pipelines
Google Sheets: Use =IMPORTDATA() with the CSV download link for instant import.
All Apify export formats available: JSON, JSONL, CSV, XLSX, XML, HTML Table, RSS.
Key Features
- No cookies, no login — 100% safe, zero risk to your LinkedIn account
- 7 modes in one actor — profiles, companies, jobs, posts, search, search profiles, profile complete
- Chrome TLS fingerprinting — Impit impersonates real Chrome browser fingerprints (JA3/JA4)
- 5-engine parallel search — Brave + Yahoo + Google + DDG + Bing all queried simultaneously for maximum reliability and speed
- SERP result caching — 24-hour KVStore cache avoids re-querying search engines for recently-scraped profiles
- Smart proxy routing — DATACENTER proxies for search engines ($0.10/GB), RESIDENTIAL only for LinkedIn direct access
- Residential proxy rotation — automatic IP rotation with retry on blocks
- Human-like behavior — randomized delays with Box-Muller normal distribution
- 256 MB memory — lightweight HTTP-only architecture, minimal compute costs
- MCP-compatible — works with Claude, GPT, Cursor, and any MCP client
- Pay per result — no subscription, no monthly fee
Error Handling
The scraper handles errors gracefully — individual failures never crash the entire run:
- Invalid URLs: Skipped with a warning in the log. Only valid LinkedIn URLs are processed.
- Profile not found: Profiles that return no data are skipped (not added to the dataset).
- Rate limits: Automatic delays with residential proxy rotation (up to 3 retries per request).
- Timeout errors: Requests that exceed the timeout are retried with a fresh proxy IP.
- Partial results: If enrichment fails for one profile, the rest continue unaffected.
Check the Run Log tab in Apify Console to see warnings for any skipped or failed URLs.
Performance Tips
- Batch your URLs — scraping 50 profiles in one run is faster and cheaper than 50 separate runs
- Use a cookie for profiles — adding an
li_atcookie unlocks Voyager API access for richer data (experience, education, skills). Without it, data comes from search engines (more limited). - Start with small batches — test with 5–10 URLs first, then scale up
- Check the logs — the Run Log shows exactly what was scraped, skipped, or retried
- Use maxResults wisely — for search modes, start with 25 and increase if needed
Daily Limits
There are no Apify-side limits on how many times you can run this scraper.
LinkedIn-side recommendations:
- Without cookie: No practical limit — requests go through search engines and public pages
- With cookie: ~100 profiles per cookie per day recommended. Exceeding this may trigger LinkedIn rate limits on your session.
- Search modes: LinkedIn returns up to ~1,000 results per search query. Use different keywords or locations to expand coverage.
- Jobs mode: No daily limit — job listings are fully public
Tip: For high-volume scraping (1,000+ profiles/day), run without a cookie to avoid any LinkedIn session risk.
Limitations
- Profile data is limited to what LinkedIn shows on public pages
- Some profiles may be behind a login wall (the actor will still extract available data)
- Post engagement metrics may be approximate
- Search mode uses a 3-engine parallel SERP (Brave + Yahoo + Google) for high reliability. Field completion: ~100% names, ~94% headlines, ~54% locations
- Profile and SERP results are cached for 24 hours — repeat runs return cached data instantly
FAQ
Do I need a LinkedIn account?
No. All 8 modes work without any cookie or login. Optionally, provide your li_at cookie for Enhanced Mode — 5x richer profiles (experience, education, skills) and 10x more company employees. See the Standard vs Enhanced Mode section above for details.
How accurate are emails? Email discovery uses a 5-layer pipeline: JSON-LD, company website scraping (14 paths), search engine email search, MX-validated pattern guessing (11 patterns), and optional Hunter.io verification. Hit rate is ~60-85% depending on the profile. Emails are verified against real MX records before being returned.
What if a profile returns empty?
The scraper tries multiple sources: Voyager API (if cookie provided), 3 search engines in parallel (Brave + Yahoo + Google), direct LinkedIn fetch, and 999 metadata extraction. If all fail, it means the profile is behind authentication or doesn't exist. Try providing an li_at cookie for better results.
How fast is it? Profiles: ~2-4 seconds each (with 24h caching, repeat queries are instant). Jobs: ~15 seconds per 20 listings. Search: ~3-5 seconds for 5-18 results. Company Employees: ~5-10 seconds.
What if I get blocked? Automatic retry with proxy rotation. The scraper uses residential proxies for LinkedIn and datacenter proxies for SERP engines to minimize costs and maximize reliability.
Can I scrape thousands of results?
Yes. Set maxResults up to 1,000. The scraper handles pagination, deduplication, and rate limiting automatically.
Is there a monthly subscription? No. Pay only for results delivered, starting at $1/1K for jobs. Higher Apify plans get 5-15% discounts.
What's the difference between Search and Search Profiles? Search returns basic profile cards (name, headline, URL). Search Profiles finds profiles AND fully scrapes each one — returning 14+ fields including experience, education, and email.
Can I find all employees of a company? Yes — use the Company Employees mode. Provide a LinkedIn company URL and the scraper discovers employees via search engine results. Results include name, headline, location, and profile URL.
Questions? Open an issue on the actor page or reach out via Apify Console.