LinkedIn Profile Scraper ✅ NO COOKIES
Pricing
$6.00 / 1,000 profile enricheds
LinkedIn Profile Scraper ✅ NO COOKIES
Scrape LinkedIn profiles into structured records: name, title, headline, summary, company, location, skills, education, and work history. Submit up to 5,000 URLs per run, each returns one record. Pay only for profiles found; not-found and errors are free. No account or cookies needed.
Pricing
$6.00 / 1,000 profile enricheds
Rating
5.0
(2)
Developer
Atomus APIs
Maintained by CommunityActor stats
3
Bookmarked
22
Total users
15
Monthly active users
3 days ago
Last modified
Categories
Share
LinkedIn Profile Scraper
A LinkedIn profile scraper that turns any LinkedIn profile URL into a full structured record: name, job title, headline, summary, company, location, skills, education, and work history, plus deeply enriched company data. Paste a list of profile URLs and the Actor returns one clean JSON record per profile. No LinkedIn account, login, or cookies required.
Submit up to 5,000 URLs in a single run, pay only for profiles found (not-found and errors are always free), and get a predictable 1:1 mapping back to your input list.
💡 More LinkedIn tools by Atomus: https://apify.com/atomus
What does this LinkedIn Profile Scraper do?
Give it one or more LinkedIn profile URLs and it returns a structured JSON record for each one, ready to load into a CRM, spreadsheet, or AI agent.
| Feature | Description |
|---|---|
| 📋 Rich profile data | First name, last name, full name, title, headline, summary, picture URL, location, skills, education, and work history. |
| 🎯 Sales / ICP signals | open_to_work, hiring, verified, premium badges; seniority (c_suite, vp, director, etc.); department + functions. |
| 🏢 Deeply enriched company | Legal name, founded year, type, industry, staff count, website, domain, social URLs, full HQ address, tech stack, IPO date, IT spend, and more. |
| 🔗 Cross-platform links | LinkedIn, Twitter / X, GitHub, and Facebook URLs surfaced when discoverable. |
| 💰 Pay only for results | You are charged only when a profile is found. not_found and error responses are always free. |
| 📦 Batch processing | Submit up to 5,000 URLs in a single run. |
| ⚡ 1:1 enrichment | One input URL produces exactly one output record, predictable and easy to join back to your data. |
| 🔐 No cookies needed | No LinkedIn account, cookies, or risk of bans. |
How do I scrape a LinkedIn profile?
- Open the Actor and paste one or more LinkedIn profile URLs into the
profileUrlsfield (format:https://www.linkedin.com/in/<handle>/). - Click Start. The Actor processes each URL and pushes one record per profile to the dataset.
- Read the results. Each record has a
status(success|not_found|error); successful records carry the fullprofileobject. - Export or pipe the data. Pull the dataset via the Apify API or Console, or feed it straight into an AI agent over MCP.
No login, no browser session, no cookies, just URLs in and structured data out.
Input
Basic Usage
Just paste one or more LinkedIn profile URLs:
{"profileUrls": ["https://www.linkedin.com/in/satyanadella/"]}
All Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
profileUrls | string[] | ✅ Yes | (none) | LinkedIn profile URLs. Each must match https://www.linkedin.com/in/<handle>/. Up to 5,000 per run. |
Supported URL Formats
✅ https://www.linkedin.com/in/satyanadella/✅ https://www.linkedin.com/in/satyanadella✅ https://www.linkedin.com/in/satyanadella/?utm_source=share
Output
Each input URL produces exactly one record in the dataset. The status field tells you what happened:
| Status | Charged? | Description |
|---|---|---|
success | ✅ Yes ($0.006) | Profile found, full data in the profile field. |
not_found | ❌ No | Profile not found in the data source (private, deleted, or not indexed). |
error | ❌ No | Invalid URL format or upstream network failure. |
Success Record
{"url": "https://www.linkedin.com/in/satyanadella/","status": "success","profile": {"identifier": "satyanadella","first_name": "Satya","last_name": "Nadella","full_name": "Satya Nadella","title": "Chairman and CEO","headline": "Chairman and CEO at Microsoft","summary": "As chairman and CEO of Microsoft, I define my mission...","picture_url": "https://images.ai-ark.com/...","background_url": "https://media.licdn.com/dms/image/...","industry": "Computer Software","location": {"default": "Redmond, Washington, United States, North America","short": "Redmond, Washington","country": "United States","state": "Washington","city": "Redmond"},"languages": {"primary_locale": { "country": "US", "language": "en" },"supported_locales": [{ "country": "US", "language": "en" }]},"badges": {"premium": true,"creator": true,"open_to_work": false,"hiring": false,"verified": true,"influencer": true},"department": {"departments": ["c_suite"],"sub_departments": ["founder", "executive"],"functions": ["entrepreneurship"],"seniority": "c_suite"},"links": {"linkedin": "https://www.linkedin.com/in/satyanadella","twitter": null,"github": null,"facebook": null},"skills": [],"educations": [{"school": {"name": "The University of Chicago Booth School of Business","logo": "https://images.ai-ark.com/...","url": "https://www.linkedin.com/school/universityofchicagoboothschoolofbusiness/"},"date": { "start": "1994-01-01", "end": "1996-12-31" }}],"position_groups": [{"company": {"name": "Microsoft","logo": "https://images.ai-ark.com/...","url": "https://www.linkedin.com/company/microsoft","employees": { "start": 10001 }},"date": { "start": "2014-02-01", "end": null },"profile_positions": [{"company": "Microsoft","title": "Chairman and CEO","date": { "start": "2014-02-01", "end": null }}]}],"company": {"name": "Microsoft","legal_name": "Microsoft Corporation","founded_year": 1975,"type": "PUBLIC_COMPANY","industry": "software development","staff": { "total": 228018, "range_start": 10001, "range_end": null },"website": "https://news.microsoft.com","domain": "microsoft.com","linkedin_url": "https://www.linkedin.com/company/microsoft","twitter_url": "https://x.com/Microsoft","crunchbase_url": "https://www.crunchbase.com/organization/microsoft","headquarter": {"country": "United States","state": "Washington","city": "Redmond","street": "1 Microsoft Way","postal_code": "98052","raw_address": "1 Microsoft Way, Redmond, Washington, United States, North America","position": { "lng": -122.33279, "lat": 47.591396 }},"technologies": [{ "name": "organization schema", "category": "framework" }],"industries": ["Software Development"],"keywords": ["AI", "Cloud", "Productivity"],"naics": ["511210"],"revenue_amount": "10000000000-...","funding_total": 1000000,"ipo_date": "1986-03-13","it_spend": 66692471976,"last_updated": "2026-04-12"},"last_updated": "2026-04-12"},"_metadata": {"extracted_at": "2026-04-28T12:00:00.000Z"}}
Not Found Record
{"url": "https://www.linkedin.com/in/someunknownperson/","status": "not_found","_metadata": {"extracted_at": "2026-04-28T12:00:00.000Z"}}
Error Record
{"url": "https://example.com/not-a-linkedin-url","status": "error","error_kind": "user_error","reason": "Invalid LinkedIn profile URL. Expected: https://www.linkedin.com/in/<handle>/","_metadata": {"extracted_at": "2026-04-28T12:00:00.000Z"}}
Output Fields Reference
All fields below are nested under profile (present when status = success).
Identity:
| Field | Type | Description |
|---|---|---|
profile.identifier | string | null | LinkedIn handle (the slug after /in/, e.g. satyanadella). |
profile.first_name | string | null | First name. |
profile.last_name | string | null | Last name. |
profile.full_name | string | null | Full display name. |
profile.title | string | null | Current job title. |
profile.headline | string | null | LinkedIn headline (short tagline under the name). |
profile.summary | string | null | About / summary section. |
profile.picture_url | string | null | Profile photo URL. |
profile.background_url | string | null | Banner / background image URL. |
profile.birth_date | string | null | Birth date if exposed by the source. |
profile.industry | string | null | Top-level industry classification (e.g. Computer Software). |
profile.last_updated | string | null | ISO date the upstream source last refreshed this profile. |
Location & locale:
| Field | Type | Description |
|---|---|---|
profile.location.default | string | Compact one-liner (e.g. Redmond, Washington, United States, North America). |
profile.location.short | string | Short one-liner (e.g. Redmond, Washington). |
profile.location.country | string | Country name. |
profile.location.state | string | State or region. |
profile.location.city | string | City. |
profile.languages.primary_locale | object | { country, language } of the profile's primary locale. |
profile.languages.supported_locales | object[] | Other locales the profile is translated into. |
Sales / ICP signals:
| Field | Type | Description |
|---|---|---|
profile.badges.open_to_work | boolean | True when the profile is flagged Open to Work. |
profile.badges.hiring | boolean | True when the profile is hiring. |
profile.badges.premium | boolean | LinkedIn Premium subscriber. |
profile.badges.creator | boolean | LinkedIn Creator. |
profile.badges.verified | boolean | LinkedIn-verified profile. |
profile.badges.influencer | boolean | LinkedIn Influencer. |
profile.department.seniority | string | null | Seniority level (e.g. c_suite, vp, director, manager). |
profile.department.functions | string[] | Functional areas (e.g. engineering, sales). |
profile.department.departments | string[] | Departments (e.g. engineering, c_suite). |
profile.department.sub_departments | string[] | Sub-departments. |
Social links:
| Field | Type | Description |
|---|---|---|
profile.links.linkedin | string | null | Canonical LinkedIn URL from the data source. |
profile.links.twitter | string | null | Twitter / X profile URL if discoverable. |
profile.links.github | string | null | GitHub profile URL if discoverable. |
profile.links.facebook | string | null | Facebook profile URL if discoverable. |
Career history:
| Field | Type | Description |
|---|---|---|
profile.skills | string[] | List of skills. |
profile.educations | object[] | Education history. Each entry: { school: { id, name, logo, url }, degree_name, field_of_study, grade, date: { start, end } }. |
profile.position_groups | object[] | Work experience grouped by company. Each entry: { company: { id, name, logo, url, employees }, date: { start, end }, profile_positions: [{ company, title, description, employment_type, location, date }] }. |
Current company (deeply enriched):
| Field | Type | Description |
|---|---|---|
profile.company.name | string | null | Current company name. |
profile.company.legal_name | string | null | Legal company name (e.g. Microsoft Corporation). |
profile.company.description | string | null | Long-form company description. |
profile.company.overview | string | null | Short company overview. |
profile.company.founded_year | integer | null | Year founded. |
profile.company.type | string | null | PUBLIC_COMPANY, PRIVATELY_HELD, NON_PROFIT, etc. |
profile.company.industry | string | null | Company-level industry. |
profile.company.staff.total | integer | null | Total employees. |
profile.company.staff.range_start | integer | null | Lower bound of employee range. |
profile.company.website | string | null | Company website URL. |
profile.company.domain | string | null | Root domain (e.g. microsoft.com). |
profile.company.linkedin_url | string | null | Company LinkedIn page. |
profile.company.twitter_url | string | null | Company Twitter / X. |
profile.company.facebook_url | string | null | Company Facebook. |
profile.company.crunchbase_url | string | null | Company Crunchbase. |
profile.company.headquarter | object | null | { country, state, city, street, postal_code, raw_address, position: { lng, lat } }. |
profile.company.technologies | object[] | Tech stack: [{ name, category }]. |
profile.company.industries | string[] | Industry tags. |
profile.company.keywords | string[] | SEO / topic keywords. |
profile.company.naics | string[] | NAICS classification codes. |
profile.company.revenue_amount | string | null | Revenue range (e.g. 10000000000-...). |
profile.company.funding_total | integer | null | Total funding raised in USD. |
profile.company.ipo_date | string | null | IPO date if public. |
profile.company.it_spend | integer | null | Estimated annual IT spend in USD (Aberdeen data). Useful for B2B SaaS targeting. |
Provenance:
| Field | Type | Description |
|---|---|---|
_metadata.extracted_at | string | ISO timestamp of the lookup. |
How much does it cost to scrape LinkedIn profiles?
This Actor uses pay-per-event pricing. You are charged $0.006 per successfully scraped profile (= $6.00 per 1,000 profiles).
Cost examples:
| Profiles scraped | Cost |
|---|---|
| 100 | $0.60 |
| 500 | $3.00 |
| 1,000 | $6.00 |
| 5,000 | $30.00 |
What you are NOT charged for:
- Profiles that returned
not_found(not in the data source) - Profiles that returned
error(invalid URL or network failure) - Apify platform compute time (memory/CPU)
Free plan limit
Apify Free plan users can scrape up to 20 profiles per calendar month so you can validate the output and field shape before paying. The cap resets on the 1st of each month. To run unlimited profiles, upgrade to any paid Apify plan. Free-tier overflow returns a status: "error" record with error_kind: "free_tier_limit" and is not charged.
💡 Profiles that aren't found cost nothing, there's no penalty for trying.
Use it with AI agents and MCP
This Actor is built for AI agents and LLMs via the Apify MCP server. Each record has a status field (success | not_found | error) and a flat, predictable profile object when status is success, ideal for agent post-processing.
Key fields for agents:
profile.full_name: Who this person isprofile.title+profile.headline: Their current role and self-descriptionprofile.industry: Industry classificationprofile.department.seniority: Seniority level (c_suite,vp,director, etc.) for ICP matchingprofile.badges.open_to_work/profile.badges.hiring: Intent signalsprofile.company.name+profile.company.industry+profile.company.staff.total: Where they work, what the company does, headcountprofile.company.technologies: Tech stack used by the companyprofile.company.it_spend: Annual IT spend (B2B SaaS targeting)profile.skills: Areas of expertiseprofile.position_groups: Career historyprofile.links.{twitter, github, facebook}: Other social profiles for outreach
Example agent prompt:
"Scrape these 10 LinkedIn profiles and summarize each person's role, company, and top 3 skills in a table."
The agent passes the URL list as profileUrls and processes the structured profile output directly, no scraping logic, no HTML parsing.
Use Cases
- 📊 CRM enrichment: Automatically fill in job title, company, location, and skills for contacts in your CRM.
- 🔎 Sales prospecting: Validate and enrich leads before outreach.
- 🧩 Recruiting: Quickly build structured candidate profiles from a list of LinkedIn URLs.
- 🏢 Account research: Understand a company's team composition and expertise.
- 📋 Data pipelines: Feed structured profile data into downstream tools (Airtable, HubSpot, Salesforce, etc.).
- 🤖 AI agent context: Give AI agents structured professional background on a person before a meeting or call.
LinkedIn Profile Scraper vs cookie-based tools vs the official LinkedIn API
| This LinkedIn Profile Scraper | Cookie-based scrapers | Official LinkedIn API | |
|---|---|---|---|
| LinkedIn account / cookies | Not needed | Your logged-in cookies required | OAuth app + LinkedIn approval |
| Account / ban risk | None (no account used) | High (your account can be restricted) | None |
| Setup | Paste profile URLs | Extract and paste your session cookie | Partner application + review |
| Data depth | Full profile + deep company data | Varies, often profile-only | Limited, mostly your own network |
| Bulk | Up to 5,000 URLs per run | Rate-limited by your account | Strict quotas |
| Company enrichment | Yes (legal name, HQ, tech stack, IT spend, more) | Rarely | No |
| Pricing | Pay per profile found ($0.006) | Subscription + your account | Gated / partner pricing |
For most teams that just have a list of profile URLs to enrich, the cookieless approach returns full structured data with zero account risk, no session to maintain, and no partner approval to wait on.
Other LinkedIn scrapers by Atomus
| Actor | What it does |
|---|---|
| LinkedIn Post Reactions Scraper Pro | Extract every reactor on a LinkedIn post (name, headline, profile URL, reaction type). |
| LinkedIn Posts Scraper | Scrape posts, text, media, and engagement counts from any LinkedIn profile or company. |
| LinkedIn Post Comments & Replies Scraper Pro | Extract every comment and reply on a LinkedIn post, with reaction counts and reply tracking. |
See all tools at apify.com/atomus.
FAQ
What is LinkedIn profile scraping?
LinkedIn profile scraping turns a bare LinkedIn profile URL into a full structured record, name, job title, headline, summary, company, location, skills, education, and work history, without opening a browser or logging in. This Actor takes a list of profile URLs and returns one clean JSON record per profile, ready for a CRM, spreadsheet, or AI agent.
How do I scrape a LinkedIn profile without an account or cookies?
Paste the profile URL (or up to 5,000 URLs) into profileUrls and run the Actor. It resolves each profile through a cookieless data source, so you never connect a LinkedIn account, paste a session cookie, or risk a ban. Each URL returns exactly one record.
What data does the LinkedIn Profile Scraper return?
For each found profile: identity (name, title, headline, summary), location, ICP signals (seniority, department, open-to-work / hiring / verified / premium badges), skills, education, full work history, cross-platform links, and a deeply enriched company object (legal name, HQ address, industry, staff count, tech stack, IT spend, IPO date, and more).
How much does it cost?
$0.006 per successfully scraped profile ($6 per 1,000). You are charged only for profiles that are found, not_found and error results are free. Free Apify plans include 20 profiles per month so you can test before paying.
Is there an official LinkedIn API for profile data?
LinkedIn's official APIs (Marketing, Talent Solutions) are partner-gated, require an approved OAuth app, and do not expose arbitrary public profile data for enrichment. For turning a list of profile URLs into structured records, a cookieless scraper like this one is the practical path.
Is it legal to scrape LinkedIn profiles?
This Actor reads publicly available profile information through a third-party data source. You are responsible for using the output in line with applicable laws (GDPR/CCPA), LinkedIn's terms, and your own compliance requirements. It is an independent tool, not affiliated with LinkedIn.
How fresh is the data?
Each record includes a last_updated field (both at the profile and company level) showing when the upstream source last refreshed that profile, so you always know how recent the data is.
What happens if a profile isn't found?
You get a record with status: "not_found" (private, deleted, or not indexed) or status: "error" (invalid URL or upstream failure). Neither is charged, so there is no penalty for trying a URL that doesn't resolve.
Can I enrich a CRM or spreadsheet in bulk?
Yes. Export LinkedIn URLs from your CRM or spreadsheet, paste them into profileUrls (up to 5,000 per run), and run. The output maps 1:1 to your input by URL, so it's easy to rejoin in any spreadsheet tool or database.
⚠️ 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 property of their respective owners.