LinkedIn Profile, Certifications & Company Data Extractor
Turn LinkedIn profile URLs into structured records with work history, education, certifications, honors, volunteer work, personal projects and current-employer company details, with no login required.
Input schema
Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.
| Field | Type | Required | Description |
|---|---|---|---|
profileUrls | array | required | Public LinkedIn profile URLs (https://www.linkedin.com/in/username) or bare usernames. Full URLs, 'in/username' shorthand, regional subdomains and URLs with tracking parameters are all accepted. |
enrichCompany | boolean | optional | Also read the current employer's own public LinkedIn page for employee count, size range, industry, headquarters, address, founded year, followers, website, logo, description, slogan, type and specialties. Uses the actor's free public access path; one fetch per unique company per run. |
includeStatusRows | boolean | optional | Add one structured status row when a run returns no profiles or only some of the requested profiles (for example a 404 or a privacy-restricted profile). Turn off for a dataset of profile records only. |
Download the published input schema
View complete JSON
{
"properties": {
"enrichCompany": {
"default": true,
"description": "Also read the current employer's own public LinkedIn page for employee count, size range, industry, headquarters, address, founded year, followers, website, logo, description, slogan, type and specialties. Uses the actor's free public access path; one fetch per unique company per run.",
"editor": "checkbox",
"prefill": true,
"title": "Enrich Current Company",
"type": "boolean"
},
"includeStatusRows": {
"default": true,
"description": "Add one structured status row when a run returns no profiles or only some of the requested profiles (for example a 404 or a privacy-restricted profile). Turn off for a dataset of profile records only.",
"editor": "checkbox",
"prefill": true,
"title": "Include Status Rows",
"type": "boolean"
},
"profileUrls": {
"description": "Public LinkedIn profile URLs (https://www.linkedin.com/in/username) or bare usernames. Full URLs, 'in/username' shorthand, regional subdomains and URLs with tracking parameters are all accepted.",
"editor": "stringList",
"items": {
"type": "string"
},
"minItems": 1,
"prefill": [
"https://www.linkedin.com/in/williamhgates"
],
"title": "Profile URLs or Usernames",
"type": "array"
}
},
"required": [
"profileUrls"
],
"schemaVersion": 1,
"title": "LinkedIn Profile, Certifications & Company Data Input",
"type": "object"
}
Output schema
Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.
| Field | Type | Required | Description |
|---|---|---|---|
results | string | optional | Dataset containing all scraped LinkedIn profile records. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "One record per requested LinkedIn profile: identity, About, current company and school, the public connections indicator, work/education links, every self-authored section LinkedIn renders to guests (certifications, recommendations, languages, services, publications, patents, courses, honors, organizations, volunteering, projects, skills, badges, websites), and optional current-employer firmographics.",
"properties": {
"results": {
"description": "Dataset containing all scraped LinkedIn profile records.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "LinkedIn profiles",
"type": "string"
}
},
"title": "LinkedIn Profile, Certifications & Company Data Extractor Output"
}
Dataset schema
Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.
Download the published dataset schema
View complete JSON
{
"actorSpecification": 1,
"views": {
"detailed": {
"display": {
"component": "table",
"properties": {
"certifications": {
"format": "object",
"label": "Certifications"
},
"connectionsCount": {
"format": "number",
"label": "Connections"
},
"connectionsText": {
"format": "text",
"label": "Connections (text)"
},
"currentCompany": {
"format": "object",
"label": "Current Company"
},
"currentSchool": {
"format": "object",
"label": "Current School"
},
"currentTitle": {
"format": "text",
"label": "Current Title"
},
"followersCount": {
"format": "number",
"label": "Followers"
},
"headline": {
"format": "text",
"label": "Headline"
},
"inputUrl": {
"format": "text",
"label": "Input URL"
},
"languages": {
"format": "object",
"label": "Languages"
},
"location": {
"format": "text",
"label": "Location"
},
"name": {
"format": "text",
"label": "Name"
},
"order": {
"format": "number",
"label": "Order"
},
"profilePicture": {
"format": "link",
"label": "Photo"
},
"profileUrl": {
"format": "link",
"label": "Profile URL"
},
"publications": {
"format": "object",
"label": "Publications"
},
"recommendations": {
"format": "object",
"label": "Recommendations"
},
"scrapedAt": {
"format": "text",
"label": "Scraped At"
},
"skills": {
"format": "object",
"label": "Skills"
},
"summary": {
"format": "text",
"label": "Summary"
}
}
},
"title": "Detailed",
"transformation": {
"fields": [
"name",
"headline",
"location",
"summary",
"profileUrl",
"profilePicture",
"currentTitle",
"currentCompany",
"currentSchool",
"followersCount",
"connectionsCount",
"connectionsText",
"certifications",
"recommendations",
"languages",
"publications",
"skills",
"inputUrl",
"order",
"scrapedAt"
]
}
},
"overview": {
"display": {
"component": "table",
"properties": {
"connectionsText": {
"format": "text",
"label": "Connections"
},
"followersCount": {
"format": "number",
"label": "Followers"
},
"headline": {
"format": "text",
"label": "Headline"
},
"location": {
"format": "text",
"label": "Location"
},
"name": {
"format": "text",
"label": "Name"
},
"profileUrl": {
"format": "link",
"label": "Profile URL"
},
"scrapedAt": {
"format": "text",
"label": "Scraped At"
}
}
},
"title": "Overview",
"transformation": {
"fields": [
"name",
"headline",
"location",
"profileUrl",
"followersCount",
"connectionsText",
"scrapedAt"
]
}
}
}
}
Key-value schema
Published key-value store definitions, when provided by this build.
This definition is not present in the default published build. See the published README for available documentation.
Published README
Read the full published documentation
LinkedIn Profile, Certifications & Company Data Extractor
Give this actor a list of public LinkedIn profile URLs (or just usernames) and it returns one structured record per person: identity, About text, current company and school, the public connection indicator, work and education links, every self-authored section LinkedIn shows to logged-out visitors, and firmographics for the person's current employer. No LinkedIn account, cookie, session token, or proxy setup is required.
What it does
- Reads the public guest view of each profile, plus the richer server-rendered view LinkedIn sends to link-preview crawlers when available
- Extracts certifications with credential IDs and verification links, honors and awards, test scores, organization memberships, volunteer work, projects, publications, patents, courses, instructor courses, language skills, services, recommendations received, public skill tokens, badges, and listed websites
- Reads the top-card layer for the current company link, current school, followers, and the public connections figure
- Optionally reads the current employer's own public LinkedIn page for company size, industry, headquarters, address, founded year, follower count, website, logo, description, slogan, organization type, and specialties
- Never invents data: a field LinkedIn withholds or masks is omitted from that record, and a profile that belongs to a different member is discarded rather than pushed
- Omits empty values recursively — no
null, empty string, or empty list reaches the dataset
Output per profile
name,headline,location,summaryheadlineRedacted—truewhen LinkedIn replaced a withheld headline with the current company in its public preview line (the replacement itself is not pushed as a headline)profileUrl,profilePicturecurrentTitle— current role title when LinkedIn exposes it publicly for this profileallTitles[]— titles published in the profile's structured data (masked entries removed)currentCompany— current employer withname,url,slug,companyIdwhen the company link is numeric. WithenrichCompanyon it also carriesemployeeCount,size,industry,website,headquarters,address,foundedYear,followersCount,description,slogan,organizationType,logoUrl, andspecialties[]currentSchool— school shown on the profile top card (name,url)currentPositions[],pastPositions[]—company,companyUrl,startDate,endDate,location,description; when LinkedIn renders the full Experience list, entries also carrytitle,dateRange, anddurationexperiences[]—currentPositionsandpastPositionscombinededucation[]andeducations[]— the same list under both keys (school,schoolUrl,startDate,endDate, plusdegree,fieldOfStudy,gpa,dateRangewhen LinkedIn's richer public view includes them)followersCount,connectionsCount(exact number when public),connectionsText(for example"500+"when only the capped indicator is public)recentArticles[]— recent posts or articles withtitle,url,publishedDate,text, andlikescertifications[]—name,issuer,issuerUrl,issueDate,credentialId,credentialUrlrecommendations[]—recommender,recommenderUrl,textlanguages[]—language,proficiencyservices[]—name,urlpublications[]—title,url,publisher,date,descriptionpatents[]—title,url,filedDate,number,descriptioncourses[]—title,numberinstructorCourses[]—title,url,durationhonorsAndAwards[]—title,issuer,date,descriptiontestScores[]—name,score,dateorganizations[]—name,position,descriptionvolunteerExperience[]—role,organization,descriptionprojects[]—title,dateRange,descriptionskills[]— public skill names when the profile exposes thembadges[],isTopVoice,isCreator— public profile badgeswebsites[]—label,urlfor personal or portfolio linksinputUrl— the value you supplied for this roworder— zero-based position in your input listscrapedAt— ISO 8601 timestamp of extraction
When LinkedIn serves only a sign-up preview for a profile, the row is built from the available preview metadata and contains the identity-level fields only.
Status rows
A run can add one status row (disable with includeStatusRows: false):
- No profiles readable:
_status: "no_data",_reason,_message,_help,scrapedAt - Some profiles readable:
_status: "partial_results",_reason,_failureBreakdown,_message,scrapedAt, alongside the successful rows
Failure reasons: auth_wall (profile hides itself from guests), not_found (confirmed 404),
blocked (all access paths failed without a 404), identity_mismatch (LinkedIn resolved the URL
to a different member), invalid_url, and error. Filter on _status if you want only profile
rows.
Input
| Field | Type | Default | Description |
|---|---|---|---|
profileUrls |
array | – | Required. Public LinkedIn profile URLs or bare usernames. Accepts full URLs, linkedin.com/in/name, in/name, regional subdomains, and URLs with query parameters. |
enrichCompany |
boolean | true |
Also read the current employer's public company page for firmographics. One fetch per unique company per run. |
includeStatusRows |
boolean | true |
Add one structured status row when a run yields no profiles or only some of the requested profiles. |
Example: several profiles
{
"profileUrls": [
"https://www.linkedin.com/in/williamhgates",
"satyanadella",
"in/reidhoffman"
]
}
Example: profile only, no employer enrichment
{
"profileUrls": ["https://www.linkedin.com/in/charlywargnier"],
"enrichCompany": false
}
Example: records only, no status rows
{
"profileUrls": ["https://www.linkedin.com/in/abdulmananraja"],
"includeStatusRows": false
}
Use cases
- Recruiting and candidate research — review public certifications, education, languages, and project history before an outreach
- Sales and CRM enrichment — append current role, employer, and company firmographics to a list of profile URLs
- Credential and award research — collect public certifications, honors, publications, and patents across a population
- Talent-market analysis — study the distribution of public skills, languages, and employers in a cohort
- Profile monitoring — refresh a saved URL list and compare current employer, school, and public sections over time
How access works
The actor selects the cheapest working public access path automatically: a direct browser-style request, then LinkedIn's public link-preview view, then an anti-bot proxy only if both free paths are blocked. For company pages it also tries a regional host and a public translation mirror before the proxy. You never configure a proxy, and you never supply a cookie, login, or API key.
Honest limits
- LinkedIn withholds the real headline, per-role titles, and degree/field for most logged-out profiles. The actor pushes them only when the public page actually renders them; otherwise the field is absent.
- The exact connection count is usually hidden. The public
500+form is returned asconnectionsText;connectionsCountappears only when an exact number is public. - Public skills are rare in the guest view, so
skillsis often absent. - Email addresses and phone numbers are not public. The actor never guesses or fabricates them.
- A profile whose owner hides it from logged-out visitors returns a status row, not data.
- Search by name and company-page listing are separate actors in this suite; this actor starts from profile URLs or usernames.
FAQ
Do I need a LinkedIn account or cookies? No. The actor never asks for LinkedIn credentials, session cookies, or tokens.
Does this work for ordinary profiles or only famous ones? It is built for everyday professional profiles. LinkedIn's public link-preview view serves the same server-rendered sections for ordinary accounts; the actor reads that view, not a cached snapshot.
Why are some fields missing on a particular profile? LinkedIn either hides that field from logged-out visitors or the profile owner never filled it in. The record omits it instead of returning a placeholder.
Can I get an email address or phone number? No. Those are not part of the public guest view, and this actor does not use third-party contact databases.
Does it support non-US profiles? Yes. Regional LinkedIn profile URLs are normalized to the canonical profile, and the public sections are read in the locale LinkedIn serves.
Is the data live? Yes. Every record is read from the live public page at run time.
Is this affiliated with LinkedIn? No. It reads publicly available pages and is not affiliated with or endorsed by LinkedIn.
Python quickstart
Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.
Source build 0lmeugxvN8unWYVXn. Documentation is regenerated from the default published build; private drafts are not included.