LinkedIn Profile Scraper — No Login · No Cookies avatar

LinkedIn Profile Scraper — No Login · No Cookies

Pricing

$4.00 / 1,000 item scrapeds

Go to Apify Store
LinkedIn Profile Scraper — No Login · No Cookies

LinkedIn Profile Scraper — No Login · No Cookies

Get public LinkedIn profile data (name, headline, about, location) from a URL. No login, no session cookie. $0.0028/profile, 30% cheaper than the leading listing.

Pricing

$4.00 / 1,000 item scrapeds

Rating

0.0

(0)

Developer

Gio

Gio

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

2

Monthly active users

21 hours ago

Last modified

Categories

Share

Get real public LinkedIn profile data (name, headline, about section, location) from any profile URL, no login, no session cookies and no LinkedIn API access required. Point it at one profile URL or a bulk list and get structured JSON back in seconds.

Why use this scraper

LinkedIn does not offer a public API for reading arbitrary profiles, so most "LinkedIn profile scraper" tools require you to paste your own LinkedIn session cookie (li_at), which expires, ties the scrape to your personal account, and can get that account restricted. This Actor:

  • Needs no login, no session cookie, no personal LinkedIn account at risk.
  • Reads the same public metadata LinkedIn serves to search engines and link previews — a stable, low-risk surface.
  • Accepts a single profile URL or a bulk list (up to 100 per run) in one call.
  • Falls back gracefully to a clearly labeled authwall error item instead of crashing when a profile is not reachable logged out, so a bulk run never silently drops a row.

Overview

For each profile URL, the Actor requests the public page through an unlocking proxy layer and parses the Open Graph metadata (og:title, og:description) that LinkedIn embeds for link previews, plus any available JSON-LD Person structured data and embedded state blobs, to extract name, headline, about text and location. Fields not present in the public page for a given profile come back as null rather than a guess.

Supported inputs

FieldTypeDescription
profileUrlstringA single public LinkedIn profile URL
profileUrlsarray of stringsMultiple profile URLs at once
maxItemsintegerMaximum number of profile URLs to process (1–100), applied across profileUrl + profileUrls combined

Use cases

  1. Sales and recruiting prospecting — enrich a list of LinkedIn profile URLs (from a CRM, a search export, or a LinkedIn Sales Navigator list) with current headline and about text before outreach.
  2. Lead list verification — confirm that a list of profile URLs collected elsewhere still resolve to a real, public profile and pull the current headline to personalize a message.
  3. Market and competitor research — track how executives at target companies describe their own role (headline/about) over time by re-running the same list on a schedule.
  4. Data enrichment pipelines — feed profile URLs from another Actor (e.g. a company-employee list) into this one to add name/headline/about to each row before loading into a spreadsheet or CRM.

How it works

  1. The Actor normalizes profileUrl + profileUrls into a deduplicated list and caps it at maxItems.
  2. For each URL, it requests the public profile page through an unlocking proxy layer with automatic retries.
  3. It parses the Open Graph metadata (og:title → name + headline, og:description → about/location) with Cheerio — the same public summary a browser link preview or search engine would see.
  4. As a best-effort second pass, it also looks for JSON-LD Person structured data and embedded state blobs, filling in any fields the meta-tag pass missed.
  5. If LinkedIn serves a login wall instead of the profile (which happens for some profiles even logged out), the Actor returns an error: "authwall" item instead of failing the whole run.

Input configuration — 3 examples

Mode 1 — single profile:

{
"profileUrl": "https://www.linkedin.com/in/williamhgates/",
"maxItems": 1
}

Mode 2 — bulk list of profile URLs:

{
"profileUrls": [
"https://www.linkedin.com/in/satyanadella/",
"https://www.linkedin.com/in/williamhgates/",
"https://www.linkedin.com/in/jeffweiner08/"
],
"maxItems": 50
}

Mode 3 — single + list combined:

{
"profileUrl": "https://www.linkedin.com/in/satyanadella/",
"profileUrls": ["https://www.linkedin.com/in/williamhgates/"],
"maxItems": 100
}

Output sample

Real output from a smoke test run, unedited:

{
"name": "Satya Nadella",
"headline": "Chairman and CEO at Microsoft",
"location": null,
"about": "Chairman and CEO at Microsoft · 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. · Experience: Microsoft · Location: Redmond · 500+ connections on LinkedIn.",
"profileUrl": "https://www.linkedin.com/in/satyanadella/",
"scrapedAt": "2026-09-25T07:22:02.864Z"
}
{
"name": "Bill Gates",
"headline": "Chair, Gates Foundation and Founder, Breakthrough Energy",
"location": null,
"about": "Chair, Gates Foundation and Founder, Breakthrough Energy · Chair of the Gates Foundation. Founder of Breakthrough Energy. Co-founder of Microsoft. · Experience: Gates Foundation · Education: Harvard University · Location: Seattle · 8 connections on LinkedIn.",
"profileUrl": "https://www.linkedin.com/in/williamhgates/",
"scrapedAt": "2026-09-25T07:22:33.056Z"
}

Key output fields

FieldTypeDescription
namestring | nullFull name shown on the profile
headlinestring | nullCurrent headline / role summary
locationstring | nullLocation text, when it can be isolated from the about block
aboutstring | nullPublic summary text (headline + about + experience/education highlights, as shown to a logged-out visitor)
profileUrlstringThe input URL, echoed back
scrapedAtstringISO timestamp of the extraction
errorstringauthwall (LinkedIn served a login wall) or fetch-failed (network/proxy issue) — present only when the profile could not be read

Pricing

Pay per event, no subscription. You are charged once per run for the Actor start, and once per profile that comes back with real data — authwall and fetch-failed items are not charged.

EventPriceWhen
Actor start$0.005Once per run
Profile scraped$0.0028Per profile returned with real data

Example: a run with 30 profile URLs where 27 return real data costs $0.005 + 27 × $0.0028 = $0.0806. This pricing update takes effect 2026-10-10 (Apify requires two weeks' notice for a price change on an Actor with existing users); the previous flat $0.004/item pricing applies until then.

What makes this richer than the competition

Compared with the two closest listings for the same target on the Apify Store:

  • vs. LinkedIn Profile Scraper + Email (harvestapi, $0.004/profile for base details): this Actor is priced at $0.0028 per profile (30% cheaper) for the same headline/about/location fields, with no login required.
  • vs. Mass LinkedIn Profile Scraper with Email (dev_fusion): that listing targets high-volume bulk enrichment with email lookup at a higher per-item cost; this Actor is the lean, fast option for headline/about/location only, without paying for an email-lookup feature you may not need.

Notes & limitations

  • LinkedIn increasingly serves a login wall ("authwall") to logged-out traffic on some profile URLs, especially for profiles with restricted visibility settings. When that happens, the Actor returns an error: "authwall" item rather than a guess — this is expected behavior, not a bug.
  • location is extracted on a best-effort basis from the same text block as about and can be null even when the location does appear inside about in a format the parser does not isolate.
  • This Actor extracts profile-level summary data only: full work history, education entries, skills, endorsements, connections list and posts are not extracted.
  • On the Apify Free plan, maxItems is capped at 10 profiles per run regardless of the input value.

FAQ

Do I need a LinkedIn account, login or session cookie? No. The Actor reads the public profile page the same way a browser link preview or search engine does — no session, no cookies, no login wall triggered by the Actor itself.

What happens if a profile is private or LinkedIn shows a login wall? You get one dataset item for that URL with error: "authwall", and you are not charged for it.

Can I enrich a list of profile URLs from another source? Yes — pass them all in profileUrls; this is the primary bulk-enrichment use case.

Does this return full work history and education? No, only the headline/about-level summary visible on the public page. For structured work history, a login-based or LinkedIn-API-based tool would be required.

Is there a limit on how many profiles I can pass in one run? Up to 100 per run via maxItems. For larger lists, split across multiple runs.

For AI Agents & LLM Apps

This Actor is Apify MCP-compatible and can be called directly from an LLM agent:

  • Via Apify MCP (mcp.apify.com): add gio21/linkedin-profile-scraper as a tool and pass {"profileUrl": "https://www.linkedin.com/in/williamhgates/"} or {"profileUrls": [...]} as the call arguments.
  • Via API (no MCP needed):
curl -X POST "https://api.apify.com/v2/acts/gio21~linkedin-profile-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"profileUrl": "https://www.linkedin.com/in/williamhgates/", "maxItems": 1}'

Disclaimer

This Actor is an independent tool that reads publicly available LinkedIn profile pages. It is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation or Microsoft. "LinkedIn" and related marks are trademarks of LinkedIn Corporation. Use this Actor in accordance with LinkedIn's Terms of Service and applicable data protection law; only public data is collected.

SEO Keywords

linkedin profile scraper, scrape linkedin profile, linkedin data extraction, linkedin api alternative, no login linkedin scraper, no cookies linkedin scraper, linkedin lead enrichment, linkedin prospecting tool, linkedin profile data api, bulk linkedin profile lookup