LinkedIn Profile Scraper ✅ NO COOKIES avatar

LinkedIn Profile Scraper ✅ NO COOKIES

Pricing

$6.00 / 1,000 profile enricheds

Go to Apify Store
LinkedIn Profile Scraper ✅ NO COOKIES

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

Atomus APIs

Maintained by Community

Actor stats

3

Bookmarked

22

Total users

15

Monthly active users

3 days ago

Last modified

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.

FeatureDescription
📋 Rich profile dataFirst name, last name, full name, title, headline, summary, picture URL, location, skills, education, and work history.
🎯 Sales / ICP signalsopen_to_work, hiring, verified, premium badges; seniority (c_suite, vp, director, etc.); department + functions.
🏢 Deeply enriched companyLegal name, founded year, type, industry, staff count, website, domain, social URLs, full HQ address, tech stack, IPO date, IT spend, and more.
🔗 Cross-platform linksLinkedIn, Twitter / X, GitHub, and Facebook URLs surfaced when discoverable.
💰 Pay only for resultsYou are charged only when a profile is found. not_found and error responses are always free.
📦 Batch processingSubmit up to 5,000 URLs in a single run.
1:1 enrichmentOne input URL produces exactly one output record, predictable and easy to join back to your data.
🔐 No cookies neededNo LinkedIn account, cookies, or risk of bans.

How do I scrape a LinkedIn profile?

  1. Open the Actor and paste one or more LinkedIn profile URLs into the profileUrls field (format: https://www.linkedin.com/in/<handle>/).
  2. Click Start. The Actor processes each URL and pushes one record per profile to the dataset.
  3. Read the results. Each record has a status (success | not_found | error); successful records carry the full profile object.
  4. 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

ParameterTypeRequiredDefaultDescription
profileUrlsstring[]✅ 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:

StatusCharged?Description
success✅ Yes ($0.006)Profile found, full data in the profile field.
not_found❌ NoProfile not found in the data source (private, deleted, or not indexed).
error❌ NoInvalid 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:

FieldTypeDescription
profile.identifierstring | nullLinkedIn handle (the slug after /in/, e.g. satyanadella).
profile.first_namestring | nullFirst name.
profile.last_namestring | nullLast name.
profile.full_namestring | nullFull display name.
profile.titlestring | nullCurrent job title.
profile.headlinestring | nullLinkedIn headline (short tagline under the name).
profile.summarystring | nullAbout / summary section.
profile.picture_urlstring | nullProfile photo URL.
profile.background_urlstring | nullBanner / background image URL.
profile.birth_datestring | nullBirth date if exposed by the source.
profile.industrystring | nullTop-level industry classification (e.g. Computer Software).
profile.last_updatedstring | nullISO date the upstream source last refreshed this profile.

Location & locale:

FieldTypeDescription
profile.location.defaultstringCompact one-liner (e.g. Redmond, Washington, United States, North America).
profile.location.shortstringShort one-liner (e.g. Redmond, Washington).
profile.location.countrystringCountry name.
profile.location.statestringState or region.
profile.location.citystringCity.
profile.languages.primary_localeobject{ country, language } of the profile's primary locale.
profile.languages.supported_localesobject[]Other locales the profile is translated into.

Sales / ICP signals:

FieldTypeDescription
profile.badges.open_to_workbooleanTrue when the profile is flagged Open to Work.
profile.badges.hiringbooleanTrue when the profile is hiring.
profile.badges.premiumbooleanLinkedIn Premium subscriber.
profile.badges.creatorbooleanLinkedIn Creator.
profile.badges.verifiedbooleanLinkedIn-verified profile.
profile.badges.influencerbooleanLinkedIn Influencer.
profile.department.senioritystring | nullSeniority level (e.g. c_suite, vp, director, manager).
profile.department.functionsstring[]Functional areas (e.g. engineering, sales).
profile.department.departmentsstring[]Departments (e.g. engineering, c_suite).
profile.department.sub_departmentsstring[]Sub-departments.

Social links:

FieldTypeDescription
profile.links.linkedinstring | nullCanonical LinkedIn URL from the data source.
profile.links.twitterstring | nullTwitter / X profile URL if discoverable.
profile.links.githubstring | nullGitHub profile URL if discoverable.
profile.links.facebookstring | nullFacebook profile URL if discoverable.

Career history:

FieldTypeDescription
profile.skillsstring[]List of skills.
profile.educationsobject[]Education history. Each entry: { school: { id, name, logo, url }, degree_name, field_of_study, grade, date: { start, end } }.
profile.position_groupsobject[]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):

FieldTypeDescription
profile.company.namestring | nullCurrent company name.
profile.company.legal_namestring | nullLegal company name (e.g. Microsoft Corporation).
profile.company.descriptionstring | nullLong-form company description.
profile.company.overviewstring | nullShort company overview.
profile.company.founded_yearinteger | nullYear founded.
profile.company.typestring | nullPUBLIC_COMPANY, PRIVATELY_HELD, NON_PROFIT, etc.
profile.company.industrystring | nullCompany-level industry.
profile.company.staff.totalinteger | nullTotal employees.
profile.company.staff.range_startinteger | nullLower bound of employee range.
profile.company.websitestring | nullCompany website URL.
profile.company.domainstring | nullRoot domain (e.g. microsoft.com).
profile.company.linkedin_urlstring | nullCompany LinkedIn page.
profile.company.twitter_urlstring | nullCompany Twitter / X.
profile.company.facebook_urlstring | nullCompany Facebook.
profile.company.crunchbase_urlstring | nullCompany Crunchbase.
profile.company.headquarterobject | null{ country, state, city, street, postal_code, raw_address, position: { lng, lat } }.
profile.company.technologiesobject[]Tech stack: [{ name, category }].
profile.company.industriesstring[]Industry tags.
profile.company.keywordsstring[]SEO / topic keywords.
profile.company.naicsstring[]NAICS classification codes.
profile.company.revenue_amountstring | nullRevenue range (e.g. 10000000000-...).
profile.company.funding_totalinteger | nullTotal funding raised in USD.
profile.company.ipo_datestring | nullIPO date if public.
profile.company.it_spendinteger | nullEstimated annual IT spend in USD (Aberdeen data). Useful for B2B SaaS targeting.

Provenance:

FieldTypeDescription
_metadata.extracted_atstringISO 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 scrapedCost
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 is
  • profile.title + profile.headline: Their current role and self-description
  • profile.industry: Industry classification
  • profile.department.seniority: Seniority level (c_suite, vp, director, etc.) for ICP matching
  • profile.badges.open_to_work / profile.badges.hiring: Intent signals
  • profile.company.name + profile.company.industry + profile.company.staff.total: Where they work, what the company does, headcount
  • profile.company.technologies: Tech stack used by the company
  • profile.company.it_spend: Annual IT spend (B2B SaaS targeting)
  • profile.skills: Areas of expertise
  • profile.position_groups: Career history
  • profile.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.

This LinkedIn Profile ScraperCookie-based scrapersOfficial LinkedIn API
LinkedIn account / cookiesNot neededYour logged-in cookies requiredOAuth app + LinkedIn approval
Account / ban riskNone (no account used)High (your account can be restricted)None
SetupPaste profile URLsExtract and paste your session cookiePartner application + review
Data depthFull profile + deep company dataVaries, often profile-onlyLimited, mostly your own network
BulkUp to 5,000 URLs per runRate-limited by your accountStrict quotas
Company enrichmentYes (legal name, HQ, tech stack, IT spend, more)RarelyNo
PricingPay per profile found ($0.006)Subscription + your accountGated / 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

ActorWhat it does
LinkedIn Post Reactions Scraper ProExtract every reactor on a LinkedIn post (name, headline, profile URL, reaction type).
LinkedIn Posts ScraperScrape posts, text, media, and engagement counts from any LinkedIn profile or company.
LinkedIn Post Comments & Replies Scraper ProExtract 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.

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.