LinkedIn Profile Scraper | 9 Fields, No Login or Cookies
Pricing
from $4.00 / 1,000 linkedin profiles
LinkedIn Profile Scraper | 9 Fields, No Login or Cookies
Scrape public LinkedIn profiles in bulk with no login. Name, headline, experience, education, skills, connections, followers. From $4 per 1,000. MCP-ready.
Pricing
from $4.00 / 1,000 linkedin profiles
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
69
Total users
14
Monthly active users
12 days ago
Last modified
Categories
Share
👤 LinkedIn Profile Scraper: Public JSON-LD, No Browser · From $4.00/1k
Part of the Recruiting & Jobs MCP. This actor's data is also available to AI agents through our Recruiting & Jobs MCP server, seven job-market and sourcing tools behind one endpoint. No result, no charge.
What does LinkedIn Profile Scraper do?
It turns a list of public linkedin.com/in/ URLs into structured JSON records. For each profile you get the name, headline, location, about section, work history and education that LinkedIn itself publishes on the page for logged-out visitors, plus a follower count where the profile exposes one. No login, no cookies, no account of any kind, so there is no LinkedIn identity on your side that could ever be flagged or banned.
Give it a batch of profile URLs from a candidate list, a target-account roster, or a LinkedIn Employees Scraper run, and get clean, structured records back for each one you can actually reach.
✅ No login required | ✅ No cookies | ✅ Pay only for delivered profiles | ✅ MCP-ready for AI agents
Guide and FAQs: LinkedIn Profile Scraper on themineworks.com. Tutorial: LinkedIn Profile Scraper: Experience and Skills, No Login.
Who is it for?
Recruiters turning a shortlist of profile URLs into structured candidate data for an ATS. Sales teams verifying a prospect's current role and company before outreach. Anyone who already has a list of LinkedIn URLs, from LinkedIn Employees Scraper, LinkedIn Post Scraper, or their own CRM, and needs the detail behind each one.
How much does it cost to scrape LinkedIn profiles?
You pay per profile actually delivered. Nothing else: no subscription, no seat licence, no monthly minimum, no per-run start fee.
| Apify plan | Price per 1,000 profiles |
|---|---|
| Free | $7.00 |
| Bronze | $6.25 |
| Silver | $5.60 |
| Gold and above | $4.00 |
The Pricing tab on this page is the single source of truth and always shows the rate for your own plan. If this table and the Pricing tab ever disagree, the Pricing tab is right.
What a real job costs. Apify's Free plan includes $5 of usage credit every month, which is about 710 profiles a month at no cost to you. A 500 profile candidate-list enrichment, the maximum a single run accepts, costs about $2.00 on Gold. A 5,000 profile market sweep across ten runs costs about $20.00 on Gold.
What is never charged. Blocked, private, and not-found profiles cost nothing. The charge event fires only after a profile record is in your dataset.
How does it work without a browser or a login?
Earlier builds of this actor drove a full Chromium browser through a residential proxy to render each profile page and scrape its DOM, which was both the most expensive path and the least reliable one: it hit LinkedIn's authwall on roughly half of loads, cost several times more to run than the current Gold rate charges for the same result, and still returned empty experience and education most of the time, because the logged-out DOM does not contain those sections in the rendered page.
The current build does not use a browser at all. LinkedIn keeps public profiles open to logged-out visitors so search engines can index them, and it embeds a structured Person record as JSON-LD directly in the page HTML. A single HTTP GET, routed through a datacenter proxy by default because these pages need no special handling, returns that block on a fresh IP, no cookies, no rendering. The actor parses that JSON-LD, not the visual page, and maps it straight to the output fields below. Each profile gets up to two attempts on a fresh proxy session before it is marked blocked, so a single rate-limited IP does not cost you the whole run.
Because the actor never authenticates, never uses cookies, and reads only what LinkedIn already serves to an anonymous visitor, there is no LinkedIn account involved and no ban risk on your side.
What input does it take?
{"profileUrls": ["https://www.linkedin.com/in/satyanadella","https://www.linkedin.com/in/williamhgates"],"maxResults": 10}
| Input | Required | What it does |
|---|---|---|
profileUrls | Yes | Public LinkedIn profile URLs to scrape, up to 500 per run. Accepts full URLs, locale subdomains (in.linkedin.com/in/...), or bare usernames |
maxResults | No | Caps how many profiles are processed (default 10, up to 500), which is how you cap cost |
proxy | No | Defaults to datacenter, which is sufficient because these pages are served over plain HTTP with no special handling required. Override to a specific group if you need one |
What data do you get back?
Three real records from a live run, since this actor returns one record per input URL rather than a shared array of leads, showing a full profile, one where several optional sections were absent on the public page, and one with a longer, multi-employer work history:
[{"profile_url": "https://www.linkedin.com/in/satyanadella","name": "Satya Nadella","headline": "Chairman and CEO at Microsoft","location": "Redmond, Washington, United States","about": "Chairman and CEO of Microsoft. Previously served as Executive Vice President of Microsoft's Cloud and Enterprise group, leading engineering for the company's computing platforms.","experience": [{ "company": "Microsoft", "company_url": "https://www.linkedin.com/company/microsoft" }],"education": [{ "school": "University of Chicago Booth School of Business", "school_url": "https://www.linkedin.com/school/university-of-chicago-booth-school-of-business" },{ "school": "University of Wisconsin-Milwaukee", "school_url": null }],"followers": "18142033","scraped_at": "2026-09-09T01:09:48.048Z"},{"profile_url": "https://www.linkedin.com/in/reidhoffman","name": "Reid Hoffman","headline": "Co-Founder at LinkedIn, Partner at Greylock","experience": [{ "company": "Greylock", "company_url": "https://www.linkedin.com/company/greylock-partners" },{ "company": "LinkedIn", "company_url": "https://www.linkedin.com/company/linkedin" }],"education": [{ "school": "Stanford University", "school_url": "https://www.linkedin.com/school/stanford-university" }],"scraped_at": "2026-09-09T01:11:22.615Z"},{"profile_url": "https://www.linkedin.com/in/sundarpichai","name": "Sundar Pichai","headline": "CEO at Google and Alphabet","location": "Mountain View, California, United States","about": "Leading Google and Alphabet. Joined Google in 2004 and previously led Chrome, Android and Google's product and engineering teams before becoming CEO.","experience": [{ "company": "Alphabet Inc.", "company_url": "https://www.linkedin.com/company/alphabet-inc" },{ "company": "Google", "company_url": "https://www.linkedin.com/company/google" }],"education": [{ "school": "Stanford University", "school_url": "https://www.linkedin.com/school/stanford-university" },{ "school": "The Wharton School", "school_url": "https://www.linkedin.com/school/the-wharton-school" },{ "school": "Indian Institute of Technology, Kharagpur", "school_url": "https://www.linkedin.com/school/indian-institute-of-technology-kharagpur" }],"followers": "14208551","scraped_at": "2026-09-09T01:13:56.902Z"}]
Every profile record contains these fields:
| Field | Description |
|---|---|
🔗 profile_url | Canonical LinkedIn profile URL |
🙍 name | Full name of the person |
💬 headline | LinkedIn headline (current role and company), when present |
📍 location | Location as shown on the profile, when present |
📝 about | About / summary section text, when present |
💼 experience | Array of { company, company_url } entries. Always present, may be empty |
🎓 education | Array of { school, school_url } entries. Always present, may be empty |
⭐ followers | Follower count as a string, when the profile exposes one |
🕒 scraped_at | ISO timestamp when the record was captured |
headline, location, about and followers are included only when the public page's structured data actually carries that section for the profile. When it does not, the field is omitted rather than sent as null or fabricated. experience and education are always present as arrays, empty when the page carries none, and each entry is the company or school name and URL as LinkedIn itself labels them, not a full job title, dates, or a description, because those are not part of the structured record the public page exposes.
Every run also ends with a final _type: "summary" record with counts (scraped, blocked, not_found, charged_for). It is informational only and never billed.
What are the limitations?
Worth knowing before you buy, so there are no surprises:
- No
skillsand noconnectionscount. These are not part of the structured data LinkedIn embeds on the public page, so this actor never returns them, not even as an empty placeholder. If your workflow needs them, treat this as a gap rather than expecting askills: []field to fill in later. experienceandeducationare company/school names and URLs, not full history. You get who someone worked for or studied at and a link to that org's LinkedIn page, not job titles, employment dates, or descriptions, because the public JSON-LD record does not carry those either.- Coverage is what a logged-out visitor can see, not a private-profile bypass. Private profiles and accounts that require authentication return
not_foundand are never charged, this actor makes no attempt to get around that. - A profile with a temporarily rate-limited IP returns
blockedrather than a partial record. The actor retries once on a fresh proxy session before giving up on that URL; blocked profiles are never charged.
What can you use it for?
Sales and lead enrichment. Turn a list of profile URLs into structured contact intelligence. Verify a prospect's current role and company before you reach out.
Recruiting and sourcing. Pull candidate current role, past employers and education into your ATS from a shortlist of profile URLs.
Due diligence and research. Profile founders, executives or key hires from their public pages. Map who holds which role across a set of competitors or portfolio companies.
Pipeline enrichment. Take the URLs LinkedIn Employees Scraper or LinkedIn Post Scraper found and add work history and education to each one before outreach.
How do I get started?
- Paste one or more LinkedIn profile URLs into
profileUrls, up to 500 per run. - Set
maxResultsto cap how many profiles are processed (default 10). Use 1 to 3 for a quick test. - Leave
proxyon the default, datacenter is sufficient for these pages. - Click Start.
- Download as JSON, CSV, or Excel, or pull the dataset via API or MCP.
Can I run it on a schedule?
Yes, with Apify's built-in Schedules. No code and no cron server of your own.
- Run the actor once with the input you want repeated, then click Save as a task at the top of the run form. This keeps your exact input attached for every future run.
- In the Apify Console, go to Schedules in the left sidebar, then Create new.
- Name it, set your timezone, and pick a frequency: a preset (hourly, daily, weekly) or a cron expression such as
0 6 * * *for daily at 6am. - Under Actors or tasks to run, add the task you saved in step 1.
- Save. It then runs unattended, billed the same pay-per-profile way as a manual run. Nothing is charged just for the schedule existing.
Prefer to automate the setup itself? Same thing via the API:
curl -X POST "https://api.apify.com/v2/schedules?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"name": "linkedin-profile-scraper-daily","cronExpression": "0 6 * * *","isEnabled": true,"actions": [{ "type": "RUN_ACTOR", "actorId": "themineworks/linkedin-profile-scraper" }]}'
Full options, including time zones, run notifications and pausing, are in Apify's Schedules documentation.
Is scraping public LinkedIn profiles legal?
This actor reads only pages that LinkedIn has made publicly visible and that search engines are able to index. It does not log in, does not use cookies, and does not access anything behind an authentication wall.
Courts in the United States have addressed public profile scraping directly. In hiQ Labs v. LinkedIn, the Ninth Circuit held that scraping publicly accessible data does not violate the Computer Fraud and Abuse Act. That said, this is general information and not legal advice. You remain responsible for how you use the data, including your obligations under GDPR, CCPA and similar laws when processing personal data.
FAQ
Does it use a browser or need a LinkedIn login? No. It reads the structured JSON-LD block LinkedIn embeds in the public page HTML with a single HTTP request, no browser rendering, no cookies, no login.
Will this get my LinkedIn account banned? It cannot. The actor never authenticates as you and never uses any account's session, so there is no LinkedIn identity on your side to restrict.
Why do I get skills or connections from other tools but not this one?
Because that data is not present in the structured record LinkedIn embeds for logged-out visitors. Rather than fabricate values, this actor omits fields it cannot verify from the source.
Why did a profile come back as blocked?
A small share of proxy IPs are pre-flagged. The actor automatically retries once on a fresh session. Blocked profiles are never charged.
Does this work for private profiles?
No. Private and authentication-gated profiles return not_found and are not charged.
Can I use it inside an AI agent? Yes. It is exposed as an MCP tool. See the section below.
Can I use LinkedIn Profile Scraper through an MCP server? Yes. It is exposed as an MCP tool, so any MCP-compatible AI assistant, Claude, ChatGPT, or your own agent, can call it directly. See "Use in Claude, ChatGPT and any MCP agent" below for the paste-ready prompt and setup.
Use in Claude, ChatGPT and any MCP agent
Add it to Claude Code in one line:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=themineworks/linkedin-profile-scraper"
Or point any MCP client at:
https://mcp.apify.com/?tools=themineworks/linkedin-profile-scraper
Things an agent can ask for once connected:
- "Enrich these 10 LinkedIn profile URLs with current role, company and education."
- "Pull the work history for this shortlist of candidates and put it in a table."
- "Check this prospect's current title and company before I email them."
Copy this into your AI assistant
Paste the line below into ChatGPT, Claude, or any assistant connected to Apify's MCP, and it will run the job for you:
Use the Apify actor themineworks/linkedin-profile-scraper to enrich these LinkedIn profile URLs: https://www.linkedin.com/in/satyanadella and https://www.linkedin.com/in/reidhoffman. Return the current headline, location, and work history for each as a table.
Or call it programmatically with the Apify client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('themineworks/linkedin-profile-scraper').call({profileUrls: ['https://www.linkedin.com/in/satyanadella'],maxResults: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Related LinkedIn actors
Found the profiles. Now enrich the rest of the graph with the full LinkedIn wedge:
- LinkedIn Employees Scraper: every public employee profile at a target company, by role, feeding this actor its URLs.
- LinkedIn Company Scraper: firmographics (industry, size, HQ, founded, website) from a company page URL.
- LinkedIn Post Scraper: public LinkedIn posts and their authors by keyword, another source of profile URLs for this actor.
- LinkedIn Jobs Scraper: public job listings by keyword and location, useful for flagging accounts that are hiring.
- LinkedIn Candidate Finder: a matched candidate shortlist from role, skills, and location.
- B2B Leads Finder: named decision-maker contacts with business emails and phone numbers from a company or domain list.
Typical flow: linkedin-employees or linkedin-post-search discovers the profile URLs, linkedin-profile-scraper enriches each one, linkedin-company-details fills in firmographics on the account.
Disclaimer: This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation. LinkedIn is a registered trademark of LinkedIn Corporation. All trademarks are the property of their respective owners. Use scraped public data in line with GDPR/CCPA and your local laws.
Found a bug or have a feature request? Open an issue on the actor's Apify Console page or reach out through the Apify profile.