LinkedIn Profile Scraper - No Cookies, Pay Per Result avatar

LinkedIn Profile Scraper - No Cookies, Pay Per Result

Pricing

from $7.50 / 1,000 results

Go to Apify Store
LinkedIn Profile Scraper - No Cookies, Pay Per Result

LinkedIn Profile Scraper - No Cookies, Pay Per Result

Scrape LinkedIn public profiles without login or cookies. Extracts name, headline, current and past positions, education, about section, follower count, and articles.

Pricing

from $7.50 / 1,000 results

Rating

0.0

(0)

Developer

Thirdwatch

Thirdwatch

Maintained by Community

Actor stats

0

Bookmarked

180

Total users

16

Monthly active users

10 days ago

Last modified

Share

LinkedIn Profile Scraper

Thirdwatch portfolio: 5K users across 88 public Actors, 2M+ records delivered, and >99% run success. Explore all Thirdwatch Actors.

Scrape structured data from public LinkedIn profile URLs and usernames. Get names, headlines, current roles, companies, locations, education, profile summaries, follower counts, profile photos, and recent articles without using a LinkedIn account or cookies.

Value proposition

LinkedIn profile URLs are common in CRMs, applicant lists, conference exports, Google results, and prospecting workflows, but they are not directly usable as clean structured data. This actor turns public LinkedIn profile URLs into JSON records that can be loaded into a CRM, ATS, enrichment pipeline, spreadsheet, or internal research tool.

Use it when you need a reliable profile-enrichment step for:

  • Sales prospecting and SDR research
  • RevOps and CRM enrichment
  • Recruiting and candidate research
  • Founder, executive, or investor research
  • Talent movement and market-mapping workflows

What's new

  • Full profile sections: set fullSections: true to get every section LinkedIn renders publicly — all experience, education, skills, licenses & certifications, volunteering, publications, honors & awards, languages, courses, projects, organizations, recommendations and activity — instead of the standard summary. It costs no extra requests: it parses the page the actor already fetched.
  • Built for bulk: send up to 1,000 profile URLs in one run. Each worker keeps a warmed, keep-alive connection and reuses it across profiles instead of doing a fresh TLS handshake and warmup request per profile.
  • Per-profile failure isolation: one authwalled or malformed profile costs exactly one row. It never aborts the batch, and rows are written as they resolve, so a run that hits its timeout keeps everything already collected.
  • No-login profile enrichment: scrape public /in/{username} profile pages without cookies or a paid LinkedIn seat.
  • Flexible URL input: accepts full profile URLs, /in/... paths, or plain usernames.

What data you get

FieldDescription
nameFull name
headlinePublic professional headline
experiencePositions with position, companyName, startDate, endDate, duration, location when available
educationSchools with schoolName, degreeName, fieldOfStudy, dates when available
topSkillsSkills listed on the public profile
aboutPublic About or summary section
locationPublic profile location
profile_photo_urlProfile image URL
followers_countPublic follower count
profile_url / linkedinUrlCanonical LinkedIn profile URL
publicIdentifierThe /in/{slug} identifier
articlesRecent public articles when available
certifications{name, issuer} for licenses and certifications
languagesLanguages listed on the profile
volunteer_experience{organization, role} entries
recommendations_countNumber of public recommendations, when exposed
sectionsFull public sections — see below. {} unless fullSections is on
dataSourceWhich path produced the row (linkedin_direct, linkedin_residential, brave_search, …)

fullSections

With fullSections: true, sections is keyed by section — experience, education, skills, certifications, volunteering, publications, honors_and_awards, languages, courses, projects, organizations, patents, recommendations_received, articles, activity, about — and each entry is {title, subtitle, date_range, description, url} (only the keys that section actually has). A section LinkedIn adds later still comes through under a slugified key rather than being silently dropped.

fullSections also backfills topSkills, certifications, languages, volunteer_experience and recommendations_count when the profile's structured data left them empty. It only ever fills an empty list — it never rewrites a value your pipeline already relies on.

Search-engine recovery paths reconstruct a profile from a result snippet and never see the profile page, so those rows carry sections: {}. Check dataSource if that distinction matters to you.

Quick-start input examples

1. Enrich one profile URL

{
"profileUrls": ["https://www.linkedin.com/in/satyanadella/"],
"maxProfiles": 1
}

2. Enrich usernames and profile paths

{
"profileUrls": ["satyanadella", "/in/williamhgates", "https://www.linkedin.com/in/example/"],
"maxProfiles": 3
}

3. Batch-enrich CRM records

{
"profileUrls": [
"https://www.linkedin.com/in/profile-one/",
"https://www.linkedin.com/in/profile-two/",
"https://www.linkedin.com/in/profile-three/"
],
"maxProfiles": 500,
"maxConcurrency": 10
}

4. Every public section, in bulk

{
"profileUrls": ["reidhoffman", "satyanadella", "williamhgates"],
"maxProfiles": 3,
"fullSections": true
}

Input parameters

ParameterRequiredDefaultDescription
profileUrlsYes-LinkedIn profile URLs, /in/... paths, or usernames. Up to 1,000 per run.
maxProfilesNo5Maximum number of profiles to process from the input list.
maxConcurrencyNo10Profiles resolved in parallel; maximum 10.
fullSectionsNofalseReturn every public profile section under sections, not just the summary.
proxyConfigurationNoResidential fallbackDirect HTTP and free search run first. The configured proxy is used only after those paths fail.
preferFullProfileNofalseTry paid residential recovery before accepting a partial search result.

Sample output snippet

{
"name": "Reid Hoffman",
"headline": "Co-Founder, Executive Board Chair at Manas AI",
"experience": [
{
"position": "Co-Founder, Executive Board Chair",
"companyName": "Manas AI",
"startDate": {"year": 2025}
}
],
"education": [
{"schoolName": "Stanford University", "degreeName": "BS", "fieldOfStudy": "Symbolic Systems"}
],
"topSkills": ["CEOs", "Founding", "Venture Capital"],
"about": "Public profile summary text...",
"location": {"parsed": {"text": "Greater Seattle Area"}},
"followers_count": 3000000,
"profile_url": "https://www.linkedin.com/in/reidhoffman/",
"publicIdentifier": "reidhoffman",
"dataSource": "linkedin_direct",
"sections": {
"experience": [
{
"title": "Co-Founder, Executive Board Chair",
"subtitle": "Manas AI",
"date_range": "Jan 2025 - Present 1 year 9 months",
"description": "Manas AI leverages proprietary AI...",
"url": "https://www.linkedin.com/company/manas-ai"
}
],
"publications": [
{"title": "Superagency", "subtitle": "Authors Equity", "date_range": "January 28, 2025"}
],
"honors_and_awards": [
{"title": "Sigillum Magnum", "subtitle": "University of Bologna", "date_range": "Sep 2023"}
],
"volunteering": [
{"title": "Chair, Board of Directors", "subtitle": "Opportunity@Work", "date_range": "Jun 2016 - Present"}
],
"skills": [{"title": "CEOs"}, {"title": "Founding"}]
}
}

(sections shown here abbreviated; a rich profile returns 11+ sections.)

Use cases

  • CRM enrichment: update contact records with current title, company, location, headline, and canonical profile URL.
  • Sales prospecting: enrich LinkedIn URLs from search exports, conference lists, founder directories, or account research.
  • Recruiting research: summarize public candidate backgrounds before outreach or screening.
  • Investor research: profile founders, operators, and executive teams across a portfolio or market segment.
  • Data pipelines: normalize LinkedIn usernames and URLs into structured fields for downstream workflows.

Limitations

  • Only public profile data is returned. Restricted profiles may return limited or no data.
  • fullSections returns what LinkedIn renders publicly. Endorsement counts, connection-gated sections, and anything behind the login wall stay out of reach; a profile that hides a section publicly returns no key for it.
  • Sections are unavailable on rows recovered through search engines (dataSource is brave_search / bing_search / google_serp), because those paths never load the profile page.
  • Some fields are optional because LinkedIn profiles vary by user privacy settings and public visibility.
  • The actor does not create LinkedIn sessions, send messages, connect with users, or access private LinkedIn data.

FAQ

Do I need a LinkedIn account or cookies?

No. The actor uses public profile URLs and does not require a logged-in LinkedIn session.

What input formats work?

Full URLs, /in/... paths, and plain usernames are accepted when they resolve to public LinkedIn profile pages.

Can I enrich profiles found through Google or another scraper?

Yes. If the result resolves to a public LinkedIn /in/{username} profile, it can be used as input.

How many profiles can I scrape in one run?

The actor supports batch input. Use maxProfiles to control how many profiles from your input list are processed in a run.

Is the data fresh?

Data is pulled at run time from public profile pages, subject to what LinkedIn makes publicly visible.

Support and custom builds

Need a custom LinkedIn enrichment flow, CRM mapper, webhook integration, or combined company-employee plus profile-enrichment actor? Contact Thirdwatch through Apify or visit thirdwatch.dev for custom builds.

Pairs well with LinkedIn Company Employees Scraper to find profiles and LinkedIn Jobs Scraper to connect people data with hiring signals.

Use cases and recipes

Step-by-step guides on thirdwatch.dev/blog:

Last verified: 2026-09