LinkedIn People Scraper
Pricing
from $50.00 / 1,000 results
LinkedIn People Scraper
Advanced LinkedIn People Scraper for high-quality lead generation. Extract verified profile data including names, job titles, companies, locations, emails, and phone numbers using secure authenticated sessions. Perfect for sales prospecting, recruitment, and B2B outreach at scale.
Pricing
from $50.00 / 1,000 results
Rating
5.0
(1)
Developer
Angelus
Actor stats
0
Bookmarked
3
Total users
3
Monthly active users
3 days ago
Last modified
Categories
Share
Scrape LinkedIn people profiles by search query with advanced filters. Extracts structured profile data including name, headline, location, current role, experience, education, and skills. In Full Profile with Email mode, the actor also extracts email addresses directly from LinkedIn's Contact Info section and by crawling external websites linked on each profile β no third-party enrichment API required.
Features
- π Fuzzy people search with keyword queries
- π Authenticated scraping via your LinkedIn session cookie (li_at)
- π§ Email extraction from LinkedIn Contact Info and linked external websites
- π― 14 filter types: location, company, school, job title, seniority, headcount, and more
- π Pagination control: set start page and number of pages to scrape
- πΎ Dataset output with configurable views + HTML snapshots in key-value store
- π Run metadata saved for audit and debugging
How to get your LinkedIn session cookie
This actor requires a valid LinkedIn session cookie (li_at) to access profile data. LinkedIn does not expose contact info or full profiles to unauthenticated visitors.
Steps (Chrome):
- Open linkedin.com and log in to your account
- Press
F12to open DevTools - Click the Application tab
- In the left sidebar, expand Cookies and click
https://www.linkedin.com - Find the cookie named
li_atin the list - Click it and copy the full Value (it's a long string)
- Paste it into the "LinkedIn Session Cookie (li_at)" input field
Firefox: Same steps, but DevTools is under Storage β Cookies.
Security note: Your cookie value is marked as
isSecretin this actor β it is never logged to the console or saved to the dataset output. Treat yourli_atcookie like a password. Do not share it.
Cookie expiry: LinkedIn session cookies typically last 1 year, but LinkedIn can invalidate them earlier if suspicious activity is detected. If the actor returns a "cookie expired" error, simply repeat the steps above to get a fresh cookie value.
Scraper Modes
Full Profile
Scrapes authenticated profile data for each person:
- Full name, headline, location
- About / summary text
- Current job title and company
- Full work experience history
- Education history
- Skills list
- Languages
- Follower count
- Profile URL
Full Profile with Email
Everything in Full Profile, plus:
- LinkedIn Contact Email β extracted directly from the Contact Info modal (only visible when logged in)
- External Website URLs β collected from the Contact Info section
- Emails from Websites β each linked website is crawled (homepage + contact/about pages) and emails are extracted from the HTML
- Best Email β the highest-confidence email selected from all sources, scored by name match and domain relevance
Input
| Field | Type | Required | Description |
|---|---|---|---|
linkedInSessionCookie | string | β | Your li_at cookie value from LinkedIn |
scraperMode | select | β | fullProfile or fullProfileWithEmail |
searchQuery | string | β | Keyword or name query (e.g. "Marketing Manager", "John Doe") |
maxProfiles | integer | Max profiles to collect. Default: 50 | |
startPage | integer | Page to start from. Default: 1 | |
numberOfPages | integer | Pages to scrape. Default: 5 (β 50 profiles) | |
websiteCrawlDepth | integer | Depth to crawl external websites for emails (1β3). Default: 2 | |
locationFilter | array | Filter by location (e.g. "United States", "Nairobi") | |
currentCompanyFilter | array | Filter by current employer name | |
pastCompanyFilter | array | Filter by past employer name | |
schoolFilter | array | Filter by educational institution | |
currentJobTitleFilter | array | Filter by current job title keywords | |
pastJobTitleFilter | array | Filter by past job titles | |
yearsOfExperienceFilter | select | Filter by total years of experience | |
yearsAtCurrentCompanyFilter | select | Filter by tenure at current company | |
seniorityFilter | array | Filter by seniority level (Entry, Senior, Director, CXO, etc.) | |
functionFilter | array | Filter by job function / department | |
firstNamesFilter | array | Filter by first name | |
lastNamesFilter | array | Filter by surname | |
profileLanguagesFilter | array | Filter by profile language | |
companyHeadcountFilter | array | Filter by company size | |
companyHQLocationsFilter | array | Filter by company HQ location | |
proxyConfiguration | proxy | Proxy settings. Residential proxies strongly recommended |
Output
Dataset β Scraped Profiles
Each item in the dataset contains:
{"profileUrl": "https://www.linkedin.com/in/jane-doe/","fullName": "Jane Doe","firstName": "Jane","lastName": "Doe","headline": "Head of Marketing at Acme Corp","location": "San Francisco, California","about": "Passionate marketer with 10+ years in B2B SaaS...","currentJobTitle": "Head of Marketing","currentCompany": "Acme Corp","experience": [{ "title": "Head of Marketing", "company": "Acme Corp", "duration": "Jan 2021 β Present", "description": null },{ "title": "Marketing Manager", "company": "Beta Inc", "duration": "2018 β 2020", "description": null }],"education": [{ "school": "University of California, Berkeley", "degree": "B.A. Communications", "dates": "2012 β 2016" }],"skills": ["B2B Marketing", "Demand Generation", "HubSpot", "Content Strategy"],"languages": [{ "language": "English", "proficiency": "Native or bilingual proficiency" }],"connectionDegree": "2nd","followerCount": "500+","websiteUrls": ["https://janedoe.com"],"contactEmail": "jane@janedoe.com","emailsFromWebsites": ["jane@janedoe.com", "hello@janedoe.com"],"bestEmail": "jane@janedoe.com","scrapedAt": "2025-01-15T09:23:41.000Z"}
Fields
contactEmail,emailsFromWebsites, andbestEmailare only populated in Full Profile with Email mode.
Key-Value Store
| Key | Contents |
|---|---|
snapshot-page-001 | Raw HTML of search results page 1 |
snapshot-page-002 | Raw HTML of search results page 2 |
profile-<username> | Raw HTML of each visited profile page |
run-metadata | JSON summary of the run (query, filters, counts, timing) |
Proxy recommendations
LinkedIn is one of the most aggressively protected websites to scrape. Residential proxies are strongly recommended and are set as the default. Datacenter proxies are almost always blocked within a few requests.
On the Apify platform, use the built-in RESIDENTIAL proxy group. When running locally, either disable proxy (useApifyProxy: false) for development testing, or configure a residential proxy provider.
Important notes
- Terms of Service: LinkedIn's Terms of Service prohibit automated scraping. Use this actor only for lawful purposes and in compliance with applicable laws (GDPR, CCPA, etc.). Do not use scraped data for spam or unsolicited contact.
- Rate limits: The actor runs with
maxConcurrency: 1and randomised delays between requests to mimic human behaviour. Aggressive settings will result in blocks. - Profile availability: Some profiles may be private, deleted, or restricted to 1st-degree connections. These will be partially populated or skipped.
- Email coverage: Not all LinkedIn users list their email in Contact Info or link to external websites. Email extraction coverage varies by audience β professional communities and freelancers tend to have higher coverage than corporate employees.
Local development
# Install dependenciesnpm install# Set your cookie in storage/key_value_stores/default/INPUT.json# Then run locally:apify run# Results appear in:# storage/datasets/default/ β scraped profiles# storage/key_value_stores/default/ β snapshots and metadata
See the implementation plan document for full local development and testing instructions.