LinkedIn Profile Scraper – No Login, Public Data
Pricing
$20.99/month + usage
LinkedIn Profile Scraper – No Login, Public Data
Extract public LinkedIn profile data without login. Name, headline, company, location, about, skills. Auth wall detection + Google Knowledge Panel fallback. Residential proxy required. Bulk usernames or full names supported. JSON/CSV.
Pricing
$20.99/month + usage
Rating
0.0
(0)
Developer
Scrape Pilot
Actor stats
0
Bookmarked
7
Total users
4
Monthly active users
13 hours
Issues response
18 days ago
Last modified
Categories
Share
LinkedIn Profile Scraper | Name, Headline, Company, Location & Experience — No Login Required
Scrape LinkedIn profiles by username, profile URL, or full name — without login, without cookies, and without a LinkedIn API key. The most resilient LinkedIn profile scraper on Apify — with auth wall detection, 3-layer fallback, and Google Knowledge Panel backup.
📌 Table of Contents
- What Does This Actor Do?
- Quick Start — 3 Steps
- Why This LinkedIn Profile Scraper?
- Use Cases
- What Data You Get
- 3-Layer Extraction System
- Auth Wall Detection & Handling
- 3 Input Formats Supported
- Search Status — FOUND, PARTIAL, AUTH_REQUIRED
- Input Parameters
- Example Input & Output
- Performance & Speed
- Cost Estimate
- Limitations — Honest Overview
- Integrations
- FAQ
- Changelog
- Legal & Terms
🔍 What Does This Actor Do?
This LinkedIn profile scraper extracts structured profile data from LinkedIn — name, headline, current position, company, location, about section, experience, education, and connections — without requiring a LinkedIn account, login session, or API key.
What makes this actor different from every other LinkedIn scraper:
- ✅ Works without login — tries three LinkedIn URL variants in sequence before ever asking for credentials
- ✅ Detects auth walls — recognizes when LinkedIn is blocking a request (soft redirect to login page) and automatically switches to the next strategy instead of returning garbage data
- ✅ Falls back to Google Knowledge Panel — when all LinkedIn URLs are blocked, extracts profile data from Google's rich results for the person
- ✅ Accepts full names as input — type
"Satya Nadella"instead of a LinkedIn URL and the actor finds the profile automatically - ✅ Transparent status per profile — every record includes
FOUND,PARTIAL, orAUTH_REQUIREDso you always know data quality
No login. No cookies. No API key. Paste usernames, profile URLs, or full names — get structured profile data back.
⚡ Quick Start — 3 Steps
Step 1 — Add LinkedIn usernames, URLs, or full names
{"profile_urls": ["satyanadella","https://www.linkedin.com/in/sundarpichai","Tim Cook","https://www.linkedin.com/in/bill-gates"],"max_results": 20}
Step 2 — Click Run The actor tries three LinkedIn URL variants per profile, detects any auth walls, falls back to Google Knowledge Panel if blocked, and returns the richest data available.
Step 3 — Get your LinkedIn profile data
{"name": "Satya Nadella","profile_url": "https://www.linkedin.com/in/satyanadella","headline": "Chairman and CEO at Microsoft","current_position": "Chairman and CEO","company": "Microsoft","location": "Redmond, Washington, United States","connections": "500+","about": "We all need a purpose that animates us...","experience_summary": "Chairman and CEO at Microsoft (2014–present); EVP Cloud at Microsoft (2011–2014)","education": "MBA - University of Chicago; MS Computer Science - University of Wisconsin","search_status": "FOUND","data_quality": "Public"}
Your profiles are in the Dataset tab — export as JSON, CSV, or Excel immediately.
🏆 Why This LinkedIn Profile Scraper?
| Feature | This Actor | Other LinkedIn Scrapers | Manual Research |
|---|---|---|---|
| No login required | ✅ Attempts without auth | ⚠️ Require cookies/session | ✅ But slow |
| Auth wall detection | ✅ Auto-detects + switches strategy | ❌ Returns garbage data | ❌ |
| 3 URL variants tried per profile | ✅ linkedin.com + www + mobile | ❌ One URL only | ❌ |
| Google Knowledge Panel fallback | ✅ Last-resort data source | ❌ | ❌ |
| Full name as input | ✅ "Satya Nadella" → finds username | ❌ Username/URL only | ✅ |
| FOUND / PARTIAL / AUTH_REQUIRED status | ✅ Per profile | ❌ Silent failures | ❌ |
| Experience summary extracted | ✅ Up to 3 roles | ⚠️ Often missing | ❌ |
| Education extracted | ✅ Up to 2 entries | ⚠️ Often missing | ❌ |
| Bulk processing (any volume) | ✅ | ⚠️ Limited | ❌ |
| Keyword filter across profiles | ✅ Built-in | ❌ | ❌ |
| Transparent data provenance | ✅ url_used + data_quality fields | ❌ | ❌ |
The only LinkedIn profile scraper with built-in auth wall detection, automatic fallback across 3 URL variants, Google Knowledge Panel backup, and full-name search — all in one run.
🎯 Use Cases
🎯 Sales Prospecting & Account Research
Scrape LinkedIn profiles for decision-makers at target accounts before cold outreach. Get current position, company, location, and about section to personalize emails and calls with relevant context. Works on username lists exported from Sales Navigator or Apollo.
🤝 Recruitment & Talent Intelligence
Build candidate profiles from LinkedIn usernames at scale. Extract current title, company, experience summary, and education for initial screening — before investing recruiter time in manual research. Identify candidates' career progression and company tenure at a glance.
🔎 Competitive Intelligence & Executive Tracking
Monitor leadership changes at competitor companies by scraping their executives' LinkedIn profiles. Track when a CTO moves, when a VP of Sales is replaced, or when a new CMO joins — before the press release.
📊 Lead Enrichment for CRM
Enrich a list of LinkedIn profile URLs with structured data — name, title, company, location — and import directly into HubSpot, Salesforce, or Pipedrive. Replace expensive enrichment tools with a direct LinkedIn scrape.
🏢 Investor & VC Due Diligence
Research founding team profiles for investment decisions. Verify claimed experience, check for gaps in employment history, identify educational background, and understand career trajectory — all from public LinkedIn data.
📈 Market Research & People Analytics
Analyze the talent composition of an industry by scraping profiles with a keyword filter. Find all "Head of AI" profiles across companies, or all "Growth Manager" profiles in the fintech sector.
🎓 Academic & HR Research
Build structured datasets of professional profiles for research on career mobility, industry skill distribution, or gender/geographic diversity in leadership roles. All from public LinkedIn data — ethically scraped without login.
📰 Journalism & Background Research
Verify professional claims for interview subjects, sources, or article subjects. The experience_summary and education fields provide a structured career history from the person's own public profile.
📋 What Data You Get
Every LinkedIn profile record contains up to 16 structured fields:
| Field | Type | Description | Example |
|---|---|---|---|
name | string | Full name | "Satya Nadella" |
profile_url | string | LinkedIn profile URL | "https://www.linkedin.com/in/satyanadella" |
url_used | string | Which URL variant successfully returned data | "https://linkedin.com/in/satyanadella/" |
headline | string | LinkedIn headline (up to 300 chars) | "Chairman and CEO at Microsoft" |
current_position | string | Current job title | "Chairman and CEO" |
company | string | Current company name | "Microsoft" |
company_url | string | Company website (if in JSON-LD) | "https://microsoft.com" |
location | string | City, state, country | "Redmond, Washington, United States" |
connections | string | Connection/follower count | "500+" |
about | string | About section (up to 1000 chars) | "We all need a purpose..." |
experience_summary | string | Up to 3 recent roles formatted | "CEO at Microsoft (2014–present); EVP Cloud..." |
education | string | Up to 2 education entries | "MBA - University of Chicago; MS Computer Science..." |
skills | array | Listed skills (when available) | ["Leadership", "Cloud Computing", "AI"] |
search_status | string | Extraction result status | "FOUND" / "PARTIAL" / "AUTH_REQUIRED" |
data_quality | string | Data completeness label | "Public" |
source_input | string | Original input you provided | "satyanadella" |
scraped_at | string | ISO 8601 extraction timestamp | "2024-10-30T10:15:00Z" |
🔄 3-Layer Extraction System
This LinkedIn profile scraper uses three independent extraction methods in sequence — moving to the next only when the previous is definitively blocked:
Layer 1 — Direct LinkedIn (No-www)
https://linkedin.com/in/{username}/
LinkedIn's no-www domain often serves public profile data without triggering the login wall that www.linkedin.com sometimes shows. This is tried first — it works for a significant portion of public profiles without any proxy at all.
Layer 2 — Standard LinkedIn (www) + Mobile LinkedIn
https://www.linkedin.com/in/{username}/
https://m.linkedin.com/in/{username}/
If Layer 1 is blocked or returns a soft redirect, the actor tries the standard domain, then the mobile domain. Each variant uses different headers (desktop vs mobile User-Agent) to maximize the chance of getting past rate limiting.
Layer 3 — Google Knowledge Panel (Ultimate Fallback)
When all three LinkedIn URL variants return an auth wall, the actor searches Google for [name] linkedin and extracts whatever profile data appears in Google's Knowledge Panel — name, job title, description, and the direct LinkedIn profile link.
This 3-layer system means that even in the worst case — when LinkedIn blocks your IP entirely — you still get a PARTIAL record with publicly available data rather than an empty failure.
🛡️ Auth Wall Detection & Handling
LinkedIn's most common defense is a soft auth wall — the server returns HTTP 200 (not an error) but serves a login-prompt page instead of the profile. Generic scrapers cannot tell the difference and return this garbage data as a real result.
This actor detects auth walls by scanning the first 5,000 characters of each response for LinkedIn's known login-page phrases:
"welcome to your professional community""sign in to linkedin""join linkedin""linkedin: log in""be great at what you do""1 billion members""make the most of your professional life"
When an auth wall is detected:
- The current URL variant is immediately discarded
- A warning is logged:
"Auth wall detected at: [URL]" - The next URL variant is tried automatically
- If all variants are auth-walled → Google Knowledge Panel fallback is triggered
search_statusis set toPARTIALorAUTH_REQUIRED— never a falseFOUND
You never get silently wrong data. Every record tells you exactly what happened.
📥 3 Input Formats Supported
This LinkedIn profile scraper accepts three input formats — mix them freely in a single run:
Format 1 — LinkedIn Username
satyanadellabill-gatesjeff-weiner
The actor constructs the full LinkedIn URL automatically.
Format 2 — Full LinkedIn Profile URL
https://www.linkedin.com/in/sundarpichaihttps://linkedin.com/in/tim-cook
Both www. and non-www variants are accepted and normalized.
Format 3 — Full Name (Auto-Discovery)
Satya NadellaSundar PichaiJensen Huang
When the input contains a space and no LinkedIn URL pattern, the actor treats it as a full name, Google-searches site:linkedin.com/in "Full Name", extracts the LinkedIn username from the results, and proceeds with normal profile scraping. If the username cannot be found, Google Knowledge Panel data is returned with search_status: PARTIAL.
📊 Search Status — FOUND, PARTIAL, AUTH_REQUIRED
Every record includes a search_status field — so you always know exactly what you got:
| Status | Meaning | What's in the Record |
|---|---|---|
| FOUND | LinkedIn served the public profile successfully | Full profile data — name, headline, company, location, about, experience, education |
| PARTIAL | LinkedIn was blocked but Google Knowledge Panel returned data | Name, headline/title, about (from Google's rich results) — no experience or education |
| AUTH_REQUIRED | All LinkedIn URLs blocked AND Google KP returned nothing | Only profile_url, note explaining the block, and scraped_at timestamp |
How to use status in your workflow:
- Filter
FOUNDrecords for highest-confidence data PARTIALrecords are still useful for name, title, and company confirmationAUTH_REQUIREDrecords indicate the profile needs a fresher residential proxy IP — re-run with a new proxy session
⚙️ Input Parameters
{"profile_urls": ["satyanadella","https://www.linkedin.com/in/sundarpichai","Jensen Huang","https://linkedin.com/in/elonmusk"],"profile_url": "","username": "","keyword": "CEO","max_results": 20,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
| Parameter | Type | Default | Description |
|---|---|---|---|
profile_urls | array or string | [] | List of LinkedIn usernames, profile URLs, or full names. Mix formats freely. |
profile_url | string | "" | Single profile URL or username shortcut — added to profile_urls automatically |
username | string | "" | Single LinkedIn username shortcut |
keyword | string | "" | Filter results — only return profiles where this keyword appears in headline, company, or about section |
max_results | integer | 20 | Maximum number of profiles to scrape |
proxyConfiguration | object | ⚠️ Required | Apify proxy config — RESIDENTIAL proxy is required for reliable LinkedIn access |
📦 Example Input & Output
Single Profile — Full Data Extraction
Input:
{"profile_urls": ["satyanadella"]}
Output:
{"name": "Satya Nadella","profile_url": "https://www.linkedin.com/in/satyanadella","url_used": "https://linkedin.com/in/satyanadella/","headline": "Chairman and CEO at Microsoft","current_position": "Chairman and CEO","company": "Microsoft","company_url": "https://microsoft.com","location": "Redmond, Washington, United States","connections": "500+","about": "We all need a purpose that animates us. Mine is to empower every person and every organization on the planet to achieve more.","experience_summary": "Chairman and CEO at Microsoft (2014–present); EVP Cloud and Enterprise at Microsoft (2011–2014); SVP Server and Tools at Microsoft (2009–2011)","education": "MBA - Booth School of Business, University of Chicago; MS Computer Science - University of Wisconsin-Milwaukee","skills": [],"search_status": "FOUND","data_quality": "Public","security": "No Login Required","source_input": "satyanadella","scraped_at": "2024-10-30T10:15:00Z"}
Full Name Input — Auto Username Discovery
Input:
{"profile_urls": ["Jensen Huang", "Lisa Su", "Pat Gelsinger"]}
What happens: The actor Google-searches site:linkedin.com/in "Jensen Huang", finds jenhsunhuang, then scrapes the LinkedIn profile normally. Returns FOUND or PARTIAL depending on what LinkedIn serves.
Bulk Executive Scraping — 50 Profiles
Input:
{"profile_urls": ["satyanadella", "sundarpichai", "tim-cook","andy-jassy", "mark-zuckerberg", "...47 more..."],"keyword": "CEO","max_results": 50}
Output: Up to 50 profiles filtered to only include those with "CEO" in their headline, company, or about section. Each tagged with FOUND, PARTIAL, or AUTH_REQUIRED so you know exactly what to trust.
Google Knowledge Panel Fallback — What You Get When Blocked
When LinkedIn blocks all URL variants, you still get:
{"name": "Reid Hoffman","profile_url": "https://www.linkedin.com/in/reidhoffman","headline": "Co-Founder at LinkedIn, Partner at Greylock","about": "Reid Hoffman is a Silicon Valley entrepreneur and venture capitalist...","search_status": "PARTIAL","data_source": "Google Knowledge Panel","source_input": "reidhoffman","scraped_at": "2024-10-30T10:18:00Z"}
A partial record with real data — not an empty failure.
⚡ Performance & Speed
| Batch Size | Estimated Time |
|---|---|
| 1 profile | ~15–40 seconds |
| 5 profiles | ~1.5–3 minutes |
| 10 profiles | ~3–6 minutes |
| 25 profiles | ~8–15 minutes |
| 50 profiles | ~15–30 minutes |
| 100 profiles | ~30–60 minutes |
Each profile includes a 2–4 second random delay between requests. This is mandatory for LinkedIn — aggressive rate will result in IP blocks. The delay is what keeps long runs stable.
Full name inputs add ~5–10 seconds each (a Google search step is required first).
💰 Cost Estimate
Subscription: $20.99/month · Free Trial: 1 Full Day (no credit card required)
| Run Size | Apify Compute Units | Approx. Compute Cost |
|---|---|---|
| 10 profiles | ~0.05–0.10 CU | < $0.01 |
| 25 profiles | ~0.10–0.20 CU | ~$0.01 |
| 50 profiles | ~0.20–0.40 CU | ~$0.02–$0.03 |
| 100 profiles | ~0.40–0.80 CU | ~$0.03–$0.06 |
| 500 profiles/month (daily runs) | ~2–4 CU/month | ~$0.16–$0.32 |
Proxy cost note: Residential proxy is required for reliable LinkedIn access. Apify's RESIDENTIAL proxy is consumed per GB of data — LinkedIn profile pages are small (~50–200KB each), so proxy costs are minimal even for large batches.
Use the 1-day free trial to test on your target profiles and verify data quality before subscribing.
⚠️ Limitations — Honest Overview
Being fully transparent about what this LinkedIn profile scraper can and cannot do:
- ❌ Login-gated data — Connections list, contact info tab, full skill endorsements, and private profiles require LinkedIn login. This actor only accesses publicly visible profile data.
- ❌ 100% FOUND rate not guaranteed — LinkedIn actively protects profiles. Even with residential proxy, some profiles will return
PARTIALorAUTH_REQUIRED. Thesearch_statusfield tells you exactly what happened for every profile. - ⚠️ Residential proxy is mandatory — Without a residential proxy, LinkedIn will block datacenter IPs quickly. The actor logs a clear warning if proxy is not configured.
- ❌ Real-time connection count — LinkedIn shows
500+for most profiles without login. The exact connection count requires a logged-in session. - ❌ Full experience and education lists — The actor extracts up to 3 experience entries and 2 education entries from the publicly visible section. Complete employment history is behind login.
- ❌ Skills endorsement counts — Skills are extracted when visible but endorsement counts are not available without login.
- ❌ Private profiles — Profiles set to private or connection-only by their owner cannot be scraped by any tool without login.
- ❌ LinkedIn Sales Navigator — This actor does not access Sales Navigator or LinkedIn Recruiter data.
- ⚠️ Profile availability may vary by region — LinkedIn's auth wall aggressiveness varies by geography and IP history. Profiles accessible today may require a proxy IP refresh tomorrow.
🔌 Integrations
HubSpot / Salesforce / Pipedrive — CRM Enrichment
Export the Dataset to CSV and import into your CRM. Map name → Contact Name, current_position → Job Title, company → Company, location → Location, profile_url → LinkedIn URL.
Google Sheets — Prospect Research Tracker
Export results to Google Sheets. Color-code by search_status — green for FOUND, yellow for PARTIAL, red for AUTH_REQUIRED. Add outreach status columns for your sales team.
Apify API — Automated Lead Research
// Trigger a LinkedIn profile scrape via APIconst run = await fetch("https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs", {method: "POST",headers: {"Content-Type": "application/json","Authorization": "Bearer YOUR_TOKEN"},body: JSON.stringify({profile_urls: ["satyanadella","sundarpichai","https://linkedin.com/in/tim-cook"],keyword: "CEO",max_results: 50})});
Zapier / Make — Enrichment Trigger
Trigger a profile scrape from a Zapier workflow. When a new lead is added to your CRM with a LinkedIn URL, automatically run this actor and push the enriched data back to the CRM contact record.
n8n — Multi-Stage Research Pipeline
Build an n8n workflow: pull company names from one data source → search LinkedIn usernames → scrape profiles with this actor → score leads → route to outreach sequences.
❓ FAQ
Q: Does this LinkedIn profile scraper require a LinkedIn account? A: No. The actor attempts all three LinkedIn URL variants without any login or cookies. When all variants are blocked, it falls back to Google Knowledge Panel — which also requires no login.
Q: Why is residential proxy required?
A: LinkedIn aggressively blocks datacenter IPs (AWS, Google Cloud, Azure). Residential proxy routes requests through real consumer IP addresses that LinkedIn treats as regular browser traffic. Without it, most profiles will return AUTH_REQUIRED.
Q: What's the difference between FOUND and PARTIAL?
A: FOUND means the actor successfully loaded the LinkedIn profile page and extracted data from it. PARTIAL means LinkedIn was blocked for all URL variants, but Google's Knowledge Panel for the person returned some data. FOUND records have more fields (experience, education, connections). PARTIAL records typically have name, title, and about only.
Q: Can I input full names instead of usernames?
A: Yes. Input "Satya Nadella" and the actor searches site:linkedin.com/in "Satya Nadella" on Google, extracts the username from the first result, and proceeds. This adds ~5–10 seconds per profile. Works best for well-known professionals with unique names.
Q: How many profiles can I scrape in one run?
A: Set max_results to any value. The actor processes profiles one at a time with 2–4 second delays. For 500 profiles, expect approximately 30–90 minutes depending on LinkedIn's response rate. Use residential proxy for large runs.
Q: Why does it cost more than other LinkedIn scrapers?
A: Because it actually works when LinkedIn fights back. Auth wall detection, 3-layer fallback, Google Knowledge Panel backup, and full-name search are engineering investments that other scrapers skip. The search_status field means you never pay for false data — you always know exactly what you got.
Q: Can I use keyword filtering to find only CMOs or VPs?
A: Yes. Set "keyword": "CMO" and only profiles where "CMO" appears in the headline, company, or about section are returned. Combine with a large input list to target-filter a specific executive segment.
Q: What happens if a profile username doesn't exist? A: LinkedIn returns a 404. The actor logs it, skips the profile, and continues with the next input. No crash, no stall.
Q: Can I scrape the same profiles again later for changes?
A: Yes. Schedule the actor to run monthly on the same username list. Compare current_position and company fields across runs to detect job changes, promotions, or company moves.
📜 Changelog
v3.0.0 (Current)
- ✅ 3-layer extraction: linkedin.com (no-www) → www.linkedin.com → m.linkedin.com (mobile)
- ✅ Auth wall detection using 7 LinkedIn login-page phrase patterns
- ✅ Google Knowledge Panel fallback when all LinkedIn URLs are blocked
- ✅ Full name input support — auto-discovers LinkedIn username via Google search
- ✅ OG meta tag parsing for name, headline, company, and location
- ✅ JSON-LD
Person/ProfilePageschema extraction for structured data - ✅ HTML fallback selectors for name, headline, location, about, experience, and education
- ✅
search_statusfield: FOUND / PARTIAL / AUTH_REQUIRED per profile - ✅
url_usedfield — records which URL variant succeeded - ✅ Experience summary extraction — up to 3 most recent roles
- ✅ Education extraction — up to 2 entries
- ✅ Keyword filter across headline, company, and about section
- ✅ 2–4 second random delay between profiles
- ✅ Graceful 404 handling — missing profiles logged and skipped
- ✅ Results pushed to Dataset and Key-Value Store (
results.json) - ✅ Residential proxy support via
curl_cffiChrome 110 impersonation
v2.x — Fixed m.linkedin.com soft auth wall returning false positives as valid data
v1.x — Initial LinkedIn profile extraction (single URL variant, no fallback)
⚖️ Legal & Terms
This LinkedIn profile scraper accesses publicly visible LinkedIn profile data — the same information visible to any person viewing a LinkedIn profile in a browser without logging in.
Please use responsibly:
- Only scrape profiles of public figures or in contexts where you have a legitimate business reason
- Comply with GDPR, CCPA, and applicable data protection laws — LinkedIn profile data of individuals is personal data under most jurisdictions
- Do not use extracted data to build contact databases for mass unsolicited outreach (spam)
- Do not use this actor to bypass LinkedIn's authentication to access private profiles or paid features
- Respect LinkedIn's User Agreement — this actor only accesses public data that requires no login
- This actor is intended for B2B sales research, recruitment, due diligence, journalism, and legitimate professional workflows
GDPR Note: LinkedIn profile data of living individuals is personal data under GDPR Article 4. Processing requires a valid legal basis under Article 6. For B2B prospecting using professional contact information, Article 6(1)(f) (legitimate interest) is commonly relied upon — but consult a legal professional for your specific use case and jurisdiction.
🤝 Support
- Getting AUTH_REQUIRED on many profiles? Make sure RESIDENTIAL proxy is enabled — this is the most common cause of blocked profiles
- Full name not finding the right profile? Try the LinkedIn username directly — search
[Name] site:linkedin.comin your browser to find it - Need a field that's missing? Drop a feature request on the Apify actor page
- Works well for your research or sales workflow? A ⭐ review on the Apify Store helps others find this LinkedIn profile scraper and keeps it actively maintained
LinkedIn Profile Scraper · Built on Apify
No Login · 3-Layer Fallback · Auth Wall Detection · Full Name Search · Google Knowledge Panel · Bulk · Status Tracking