LinkedIn Profile Scraper — No Cookies, No Key | $3.9/1K avatar

LinkedIn Profile Scraper — No Cookies, No Key | $3.9/1K

Pricing

from $3.78 / 1,000 profile records

Go to Apify Store
LinkedIn Profile Scraper — No Cookies, No Key | $3.9/1K

LinkedIn Profile Scraper — No Cookies, No Key | $3.9/1K

Scrape public LinkedIn profile records from profile URLs or bare public IDs. Get names, headlines, companies, locations, education, photos, followers, and parsing quality. Run with profileUrls; no login, cookies, or API key. Pricing: $0.0039 per returned record on the Free plan.

Pricing

from $3.78 / 1,000 profile records

Rating

0.0

(0)

Developer

Vitalii Bondarev

Vitalii Bondarev

Maintained by Community

Actor stats

0

Bookmarked

79

Total users

16

Monthly active users

7 hours ago

Last modified

Features

Limited permissions

Share

LinkedIn Profile Scraper

Scrape public LinkedIn profile data from URLs or bare public IDs into structured records using LinkedIn's server-rendered JSON-LD and Open Graph data. No login, cookies, li_at, or API key is required.

  • Enrich LinkedIn URLs in Clay, Make, or n8n with names, headlines, companies, and locations.
  • Build recruiter and sales contact sheets from profile links.
  • Clean profile lists with canonical URLs and public slugs.
  • Review parse_path, parse_confidence, and warnings for each record.
  • Set maxProfiles to limit processing and cost.

What you get

Fields are null when the source does not provide them.

Field familyFieldsType and empty valueDescription
Identitynamestring; not pushed without a nameFull name
Identityfirst_name, last_namestring or nullSplit name parts
Profile referenceprofile_urlstringCanonical LinkedIn profile URL
Profile referenceslugstring or nullVanity slug
Professional summaryheadlinestring or nullRejected when it is only a site label, employer, school, or location
Professional summaryjob_titlestring or nullMultiple titles joined with "; "
Professional summarydescriptionstring or nullAbout or summary text
Profile labelsbadgesstring array; [] when noneLabels such as Authoritative, Creator, Top Voice, Influencer, Premium, and Verified
Companycurrent_company, current_company_urlstring or null; URL is null for OG-only recordsCurrent employer and company page
Locationlocation, countrystring or null; JSON-LD onlyRegion and country code
Educationeducationarray of {name,url,start,end}, or null; OG-only is nullSchools and LinkedIn-provided years
Experienceexperiencearray of {name,url,start,end}, or null; OG-only is nullworksFor and non-school alumniOf entries
Mediaphoto_urlstring or nullTime-limited LinkedIn CDN link
Audiencefollower_countinteger or null; OG-only is nullFollowers when exposed
Social linkssame_asstring array or null; OG-only is nullLinkedIn's sameAs list
Postsrecent_postsarray of {headline,url,published}; at most 10, or null; OG-only is nullRecent post stubs; published is ISO 8601 or null
Languageslanguagesstring array or null; OG-only is nullReturned language values
Parsing qualityparse_pathstringExtraction source and user-agent path
Parsing qualityparse_confidencenumber from 0 to 1, rounded to 3 decimalsConfidence score
Warningswarningsstring array; [] when noneCodes such as no_work_history, no_location, and og_only

The parser first reads public server-rendered JSON-LD Person data and can fall back to Open Graph metadata. parse_path records the source and user-agent path, such as jsonld:facebookexternalhit/1.1.

Anonymous data does not provide full dated work history, skills, certifications, recommendations, or contact email or phone. Public work history can contain company stubs. JSON-LD records get no_work_history only when both current_company and experience are absent; confidence is reduced by 0.05. OG-only records get og_only; experience is null, while current_company can come from the OG Experience: segment.

Sample output

The sample is shortened by dropping nonessential fields and list items.

{
"profile_url": "https://www.linkedin.com/in/williamhgates",
"slug": "williamhgates",
"name": "Bill Gates",
"job_title": null,
"current_company": "Gates Foundation",
"current_company_url": "https://www.linkedin.com/company/gates-foundation",
"location": "Seattle, Washington, United States",
"country": "US",
"education": [{"name":"Harvard University","url":"https://www.linkedin.com/school/harvard-university/","start":1973,"end":1975}],
"experience": [{"name":"Gates Foundation","url":"https://www.linkedin.com/company/gates-foundation","start":null,"end":null}],
"follower_count": 40779437,
"parse_path": "jsonld:facebookexternalhit/1.1",
"parse_confidence": 1,
"warnings": []
}

Pricing

This Actor uses pay-per-event pricing. Each returned profile record charges one profile-record event; a profile that produces no returned record is not charged.

PlanPrice
Free$0.0039 per profile record
Silver$0.003822 per profile record
Bronze$0.003861 per profile record
Gold$0.003783 per profile record
Platinum$0.003744 per profile record
Diamond$0.003705 per profile record

Worked example: 1,000 results = $3.90 on the Free plan; 10,000 results = $39.00 on the Free plan.

The Apify Free plan includes $5 of monthly platform usage credit. At the Free-plan event price, the $5 credit covers 1,282 runs returning one profile record each (1,282 profile records). Free-plan runs process at most 25 distinct valid inputs per run. Paid plans do not have that per-run Free-plan cap.

This Actor does not use the Pay per event + usage option, so compute, proxy traffic, and storage are included in event prices and are not billed separately.

How to use

  1. Open the Actor in your Apify account.
  2. Enter LinkedIn profile URLs or bare public IDs in profileUrls.
  3. Set maxProfiles if you want to cap processing.
  4. Leave the prefilled Apify Proxy configuration unless you need a custom setup.
  5. Run the Actor and inspect the dataset for one record per returned profile.
  6. Repeat the run through Apify Schedules; weekly is a starting point.

Export the dataset as JSON or CSV, or read it through the Apify dataset API for an automation step.

Example input:

{
"profileUrls": [
"https://www.linkedin.com/in/williamhgates/",
"satyanadella"
],
"maxProfiles": 2,
"disableUsageStats": false
}

Full URLs and bare slugs are normalized to https://www.linkedin.com/in/{slug}; query strings, fragments, and trailing slashes are removed.

Input parameters

ParameterWhat it doesDefault
profileUrlsRequired array of LinkedIn profile URLs or bare public IDsRequired
maxProfilesCaps profiles scraped; 0 means all provided, subject to the Free-plan cap0
proxyConfigurationApify Proxy settings; the prefilled configuration uses the RESIDENTIAL group. If omitted, the Actor still uses RESIDENTIAL through the proxyPrefilled Apify Proxy configuration
disableUsageStatsSet to true to turn off the run summary in Usage statisticsfalse

Limits and edge cases

ConditionWhat you seeWhat to do
Empty, malformed, or unresolvable profile URL or IDInput is skipped; no record or chargeSupply a LinkedIn /in/ URL or bare public ID
LinkedIn blocks a requestRetries on fresh proxy IPs, up to 5 tries; then skips the profile without a record or chargeRetry later
Proxy rejects the selected groupWith prefilled RESIDENTIAL, one shared ladder drops to datacenter for the rest of the run; direct access is disabled. If no rung remains, the profile is skipped and not chargedKeep Apify Proxy available and retry
JSON-LD has no public work historyno_work_history is added only when both work fields are absent; confidence is reduced by 0.05Treat work history as unavailable
Profile has no JSON-LDAn Open Graph record may be returned with parse_path beginning og:, og_only, and confidence 0.6Review parse_path, parse_confidence, and warnings
Anonymous data does not expose a fieldThe field is null or unavailable; unavailable fields are not fabricatedUse the fields present
No valid targets remain after validationRun ends Succeeded with an empty dataset and No valid LinkedIn profile URLs in the input; 0 profiles, nothing was charged.Correct profileUrls
URL does not open a public profile (LinkedIn answers HTTP 404, confirmed on 2 IPs) for every valid targetRun ends Succeeded with 0 records; status says the input URL(s) were not found on LinkedIn; nothing is chargedFix the profile URLs; running again gives the same result
Every valid target fails for another causeRun ends Failed; status and log name causes such as blocked, rate-limited, network error, no usable proxy, or no parseable dataCorrect inputs or proxy setup and retry
Some targets failRun ends Succeeded; status counts pushed and failed profiles with causes; failed profiles are not chargedReview records and retry failed profiles
Proxy setup failsRun ends Failed before requests; nothing is chargedRetry later or check Apify Proxy
Run aborts, times out, or crashesCompleted batches of 10 remain saved and charged; up to 9 records in the unfinished batch are not saved or chargedCheck the dataset and rerun unfinished inputs
Free-plan cap is reachedAt most the first 25 distinct valid inputs after validation and de-duplication are processedSet maxProfiles lower or use a paid plan
Profiles are processed sequentiallyRequests use an 8–15 second delay between profilesAllow time for completion

FAQ

How much does it cost to scrape LinkedIn profiles?

The Free plan charges $0.0039 per returned profile-record; Silver is $0.003822, Bronze $0.003861, Gold $0.003783, Platinum $0.003744, and Diamond $0.003705. 1,000 results = $3.90 on the Free plan.

What happens if the dataset is empty?

If validation leaves no valid targets, the run succeeds with an empty dataset and nothing is charged. If every valid target fails, the run fails and names the cause; successful partial runs remain Succeeded.

Does the Actor need LinkedIn cookies or an API key?

No. It uses public data served to social-preview bots and does not require a LinkedIn login, cookies, li_at, LinkedIn API key, external proxy key, or proxy credentials.

Why is a field null or incomplete?

Some information is not rendered anonymously. Work history can be limited to company stubs, while full dated work history, skills, certifications, recommendations, and contact email or phone are unavailable. Check parse_path, parse_confidence, and warnings.

The Actor collects public information that LinkedIn serves to anonymous social-preview bots. Whether a collection or use is legal or allowed depends on your use case, applicable law, and the source’s terms.

Usage statistics

This Actor creates a small, content-free summary at the end of each run, used only to monitor reliability and improve this Actor. No input values, credentials or scraped data are sent.

A copy of the exact record for your run is saved as USAGE_STATS in your own Apify key-value store.

To opt out, set disableUsageStats to true in the input. Nothing is sent then.

Full list of collected fields