LinkedIn Profile Scraper - People, Job Changes & B2B Leads
Pricing
$4.00 / 1,000 profiles
LinkedIn Profile Scraper - People, Job Changes & B2B Leads
Scrape public LinkedIn profiles into B2B people data: current company, title where shown, location, experience, education, certifications, websites, followers and lead score. URLs or usernames, similar-profile discovery, job-change monitor. No login. Independent tool, not affiliated with LinkedIn.
Pricing
$4.00 / 1,000 profiles
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
57
Total users
9
Monthly active users
13 days ago
Last modified
Categories
Features
Share
Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "LinkedIn" is referenced only to describe the publicly available website this Actor collects data from.
Turn any list of public LinkedIn profiles into structured people records: full name, current company and its page, job title where LinkedIn shows it, location, work experience, education, certifications, projects, languages, the member's own websites, exact follower count, connection count and a 0-100 lead score. Feed profile URLs or usernames straight from your CRM or Sales Navigator export (typed, pasted, or as a CSV / Google Sheet), optionally expand into similar profiles to grow a small seed list into many related prospects, and switch on monitor mode to get job-change alerts.
No login, no cookies, no browser: it reads the public profile page LinkedIn shows to logged-out visitors.
What you get per profile
The actor merges two sources on every public profile, the page's structured data and the rendered page, and keeps only what LinkedIn actually shows: a masked value (LinkedIn writes asterisks for logged-out visitors) is left empty, never shipped as *****.
| Data | Notes |
|---|---|
| Full name, first and last name, location, city, country | Every public profile |
| Current company, company page link | The company the profile itself names as current |
| Job title and seniority | Only where LinkedIn shows it to logged-out visitors: many members keep their title and headline visible to signed-in members only, and the field is then empty |
| Headline, About | When the member's profile shows them publicly |
| Work experience | Every position (title, company, dates, duration, location, description) on profiles that show their Experience section; otherwise the current and past employers LinkedIn lists in the page data, with dates where shown |
| Education | School, school page, degree, field of study, years |
| Certifications, projects, courses, organizations, patents, test scores, services, volunteering, publications, honors | Where the member filled the section in |
| Languages (with proficiency), awards, skills | Where public |
| The member's own websites | Personal site, blog or company site from the profile card |
| Exact follower count, connection count | Connections as LinkedIn shows them ("500+" for large networks) |
| Recent posts (opt-in) | The member's own posts and reposts with date and likes |
| Lead score (0-100), Influencer badge | Every profile |
| Job-change / title-change / headline-change detection | Monitor mode |
| Similar-profile discovery | From the profile's "Other similar profiles" box |
| Needs your LinkedIn cookies? | Never |
Use cases
- B2B lead generation & prospecting - enrich a list of profile URLs into sales records: name, company, company page, location, websites and lead score, plus the title and seniority where the profile shows them. Prioritize decision-makers (
seniorityLevel= Owner/C-Level or VP/Director). - Job-change alerts (buying signals) - run in monitor mode on a schedule and get a record when a prospect changes company, title or headline.
- Recruiting & sourcing - shortlist candidates with experience, education, certifications, projects and languages;
openToWorkflags members whose own recent post uses #OpenToWork. - CRM enrichment - keep contact records fresh with current company, location and websites.
- Market & talent intelligence - map who works where and how followings compare across a company or industry.
- Creator research - rank profiles by exact follower count and their recent posts.
How to use
- Sign up for Apify - the free plan is enough to try this actor.
- Open the LinkedIn Profile Scraper, paste Profile URLs (or usernames), or put a CSV / Google Sheet link in Import URLs from a file - optionally turn on Discover related profiles - and click Start.
- Watch results stream into the dataset table.
- Export as JSON, CSV, Excel, XML, or RSS - or pull results programmatically via the Apify API.
Input
{"profileUrls": ["https://www.linkedin.com/in/williamhgates","satyanadella"],"discoverRelated": false,"maxRelatedPerProfile": 20,"maxProfiles": 100,"includeExperience": true,"includeEducation": true,"includeActivity": false,"monitorMode": false}
- profileUrls - LinkedIn profile URLs (
https://www.linkedin.com/in/<username>, any country subdomain, with or withouthttps://) or bare usernames. The primary, fastest, most reliable input. - startUrls - alternative request list of profile URLs, including the Console's "Link remote text file" and file upload (handy when chaining from another actor).
- urlsFromFile - paste links or usernames (one per line), or one link to a
.txt/.csvfile, Google Sheet or Google Drive file. CSV exports work: the column whose header names the LinkedIn link, URL, profile or username is read. A PDF, Excel or image file, or a Sheet that is not shared as "Anyone with the link", is refused with a note on the run instead of being misread. - discoverRelated (default false) - expand each seed profile into the people in its "Other similar profiles" box (one level deep), bounded by maxRelatedPerProfile (LinkedIn shows up to about 20) and maxProfiles.
- maxProfiles (default 100) - cap the number of profiles; set
0for no limit (explicit opt-in). - includeExperience / includeEducation (default true) - the experience and education lists (same page, no extra request).
- includeActivity (default false) - the member's own recent posts and reposts, plus the Recent posts view. Its latest-post columns always show the member's own newest post, never a repost of someone else's.
- monitorMode (default false) - emit a record only when a profile changed since the last run (company / title / headline). See below.
- maxConcurrency (default 8) - profiles fetched in parallel.
- proxyConfiguration - keep the default: each profile is opened through Apify Proxy, datacenter first and residential when LinkedIn refuses the request. A country, other proxy groups or your own proxy URLs are used exactly as you set them.
Output
One record per profile (type: "profile"), for example:
{"type": "profile","profileUrl": "https://www.linkedin.com/in/satyanadella","publicId": "satyanadella","fullName": "Satya Nadella","firstName": "Satya","lastName": "Nadella","headline": "Chairman and CEO at Microsoft","currentTitle": "Chairman and CEO","currentCompany": "Microsoft","currentCompanyUrl": "https://www.linkedin.com/company/microsoft","seniorityLevel": "Owner/C-Level","locationName": "Redmond, Washington, United States","city": "Redmond","country": "United States","about": "As chairman and CEO of Microsoft, I define my mission and that of my company as empowering every person and every organization on the planet to achieve more.","profilePhotoUrl": "https://media.licdn.com/dms/image/v2/.../profile-displayphoto-shrink_200_200/...","followerCount": 12263004,"connectionCount": 500,"connectionCountText": "500+","experience": [{ "title": "Chairman and CEO", "company": "Microsoft", "companyUrl": "https://www.linkedin.com/company/microsoft", "dateRange": "Feb 2014 - Present", "durationText": "12 years 9 months", "location": "Greater Seattle Area", "startDate": 2014, "isCurrent": true, "startedOn": "2014-02" }],"experienceCount": 5,"education": [{ "school": "The University of Chicago Booth School of Business", "schoolUrl": "https://www.linkedin.com/school/universityofchicagoboothschoolofbusiness", "dateRange": "1994 - 1996", "startYear": 1994, "endYear": 1996 }],"educationCount": 3,"isInfluencer": true,"leadScore": 100,"source": "url","scrapedAt": "2026-10-28T12:00:00.000Z","articles": [{ "title": "My annual letter: Building the frontier ecosystem", "url": "https://www.linkedin.com/pulse/...", "publishedAt": "Oct 21, 2026", "datePublished": "2026-10-21T20:41:14.000Z", "reactionCount": 8353 }],"peopleAlsoViewed": [{ "name": "Charles Phillips", "url": "https://www.linkedin.com/in/charlesphillips1", "headline": "Verizon", "followerCount": 27000, "location": "New York, NY" }],"currentRoleStartedOn": "2014-02","articleCount": 10}
Where the public profile shows them, records also carry certifications[] (name, issuer, issued and expiry month, credential ID and link), projects[], courses[], organizations[], patents[] (title, number, status, date), testScores[], services[], languageDetails[] (language and proficiency), publications[], volunteering[], honorsAndAwards[], recommendations[], skills[], websites[] with website (the member's own site, social networks left out) and currentRoleStartedOn (the month the current role began). With includeActivity, recentActivity[] lists the member's own posts and reposts (text, link, date, likes, comments) and latestPostAt / latestPostText / latestPostUrl / recentActivityCount fill the Recent posts view. Sections a member has not filled in are simply absent.
In the Console, the Profiles and B2B leads views fill on every run; Job changes (monitor) fills on monitor-mode runs and Recent posts on runs with Include recent activity on (on other runs their extra columns stay empty).
With Include recent activity on, recentActivity[] lists up to 10 recent items, newest first, each marked post (the member's own) or repost (with the original author's name). recentPostCount counts the member's own posts among them and recentActivityCount counts posts and reposts together; latestPostAt, latestPostText and latestPostUrl describe the newest own post. A repost's postedAt is when the original post was published.
Every LinkedIn link in a record (profile, company, school, article, post, recommender and similar profile) uses https://www.linkedin.com, whichever country site LinkedIn served the page from, so the same company or person always carries the same link.
Job-change monitoring
Turn on monitorMode and combine it with an Apify Schedule (e.g. weekly). On the first run every profile is emitted as first_seen. On later runs the actor compares each profile to its stored snapshot and emits a record only when something changed; unchanged profiles are not billed (from 12 November 2026 each run also has the small start fee described in the cost section below):
{"fullName": "Jane Doe","changeType": "new_job","currentTitle": "VP of Marketing","currentCompany": "Acme Corp","previousTitle": "Director of Marketing","previousCompany": "Globex","changedFields": ["company", "title"],"lastChangedAt": "2026-06-26T12:00:00.000Z","profileUrl": "https://www.linkedin.com/in/janedoe"}
Title changes are reported for profiles whose title LinkedIn shows publicly; company changes work for every profile. Monitor mode is orthogonal to Apify Schedules - the Schedule decides when the actor runs; monitor mode decides what it emits. Wire a webhook or Zapier zap to push job-change alerts straight into your CRM or Slack. State is kept in a named key-value store (monitorStoreName).
How much does it cost to scrape LinkedIn?
This Actor uses Apify's pay-per-event pricing: you pay for the profiles it delivers, with no monthly rental. From 12 November 2026 each run also has a small start fee. The events are:
- Profile - one public LinkedIn profile with everything it shows to logged-out visitors (name, location, current company, title where public, experience, education, followers, connections and lead score)
- Actor start (from 12 November 2026) - charged by Apify once when a run starts: $0.002 per GB of run memory, so $0.002 for a run at the default 1 GB. It covers the fixed cost of runs that deliver no profile, such as monitor checks with no changes.
Profiles LinkedIn does not show to logged-out visitors, links that are not profiles, and monitor-mode profiles that did not change are never billed. The current price is shown on the Pricing tab of this page. Set a maximum total charge on the run if you want a hard cap on spend: the actor stops before it reads a profile the cap cannot pay for, and says so on the run.
Automate & schedule
Run this actor on autopilot and pull results into your own stack:
- Apify API - start runs, fetch datasets, and manage schedules over REST.
- apify-client for JavaScript and apify-client for Python - official SDKs.
- Schedules - run hourly/daily/weekly to refresh records or watch a set of prospects for job changes.
- Webhooks - trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });const run = await client.actor('scrapesage/linkedin-profile-scraper').call({profileUrls: ['https://www.linkedin.com/in/williamhgates','satyanadella',],maxProfiles: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} LinkedIn profiles`);
Integrate with any app
Connect the dataset to 5,000+ apps - no code required:
- Make - multi-step automation scenarios.
- Zapier - push new profiles or job-change alerts straight into your CRM.
- Slack - get notified when a monitored prospect changes jobs.
- Google Drive / Sheets - auto-export every run to a spreadsheet.
- Airbyte - pipe results into your data warehouse.
- GitHub - trigger runs from commits or releases.
Use with AI assistants (MCP)
The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server - ask your assistant to "enrich these LinkedIn URLs into a lead list and flag anyone who changed jobs this month" and let it run this scraper for you.
Agent-ready: autonomous payments (x402 & Skyfire)
This actor is agent-ready: AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:
- x402: an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server, with no account and no API key.
- Skyfire: agent-to-service payments for fully autonomous AI-agent workflows.
Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.
More scrapers from scrapesage
Build a complete B2B lead-gen & sales-intelligence stack:
- LinkedIn Company Scraper - firmographics & company B2B leads (size, industry, HQ, website).
- LinkedIn Jobs Scraper - job postings as hiring-intent signals.
- LinkedIn Ad Library Scraper - competitor B2B ads & creatives.
- Website Contact Scraper - emails, phones & socials from any domain (enrich your profile leads with contact details).
- Google Maps Scraper - local business leads, emails & contacts.
- Salesforce AppExchange Scraper - ISV vendor & publisher leads.
- IndiaMART Scraper - B2B supplier & product leads.
Tips
- Profile URLs are the most reliable input. Turn on Discover related profiles to snowball from a handful of seeds into many similar prospects.
- Keep the default proxy setting. The actor picks the lane per request and retries a refused page once on residential.
- A profile that ends "not shown to logged-out visitors" has its public profile switched off, or the link is mistyped: LinkedIn answers both with the same sign-in wall. Such profiles are named on the run and never billed.
- For job-change monitoring, reuse the same
monitorStoreNameacross scheduled runs so snapshots persist. - Cost control - each profile is one request; lower
maxConcurrencyfor steadier runs on very large lists.
FAQ
Do I need my LinkedIn account or cookies? No. This actor reads public profile pages only - no login, no cookies, no browser.
Which fields can it get? Name, location, current company and its page, job title and seniority where public, headline and About where public, profile photo, exact follower count, connection count, work experience, education, certifications, projects, courses, organizations, patents, test scores, services, languages with proficiency, awards, skills, recommendations, volunteering, publications, honors, the member's own websites, recent posts (opt-in) and a lead score.
Why is the job title (or headline) empty on some profiles? For logged-out visitors LinkedIn hides the title, the headline and past employers' names on many profiles (members choose this in their visibility settings); the page carries asterisks instead. The actor leaves those fields empty rather than guessing, and still delivers the current company, location, experience dates, education and the rest of what the profile shows.
Why is a section sometimes missing? Profiles are member-filled: sections like About, Certifications, Projects or Languages appear only when the member added them and LinkedIn shows them publicly. Skills are shown publicly on few profiles.
Can I discover profiles without supplying every URL? Yes - turn on discoverRelated and the actor expands each seed profile into the people listed in its "Other similar profiles" box (one level deep, bounded by your caps).
Can I import a list from a file? Yes: paste the list into Import URLs from a file, link a .txt / .csv file or a Google Sheet shared as "Anyone with the link", or use "Link remote text file" in Start URLs.
Can I export to Google Sheets, CSV, or Excel? Yes - one click in the dataset view, or automatically on every run via the Google Drive integration.
Is it legal to scrape LinkedIn? This actor collects only publicly available profile data. Whether and how you may use it depends on where you are and what you use it for (for example GDPR and CCPA rules for personal data) and on LinkedIn's terms, so get advice for your situation.
Data & lawful use
This Actor reads only what LinkedIn publishes to logged-out visitors: it does not log in, use cookies or session tokens, create accounts, or reach anything behind a sign-in. Names, handles, bios and engagement figures are public, but they relate to identifiable people, so treat the output as personal data. If you are in the EU or UK you are the data controller for what you do with it: have a lawful basis (usually legitimate interest for research, marketing analytics or B2B prospecting), honour access and deletion requests, and do not use the output for spam or unsolicited messaging.
Under Apify's Standard Actor Contract, which governs your use of this Actor, you are the controller of any personal data in your input and output and scrapesage acts only as your processor: that data is processed solely to run your job, written only to your own Apify storage, never used for any other purpose and never shared onward. If you need help with a data-subject request that involves this Actor's output, open an issue on the Issues tab.
Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.
"LinkedIn" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official LinkedIn product, is not authorised or certified by LinkedIn Corporation, and does not distribute LinkedIn software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.
Need help?
Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome - this actor is actively maintained.