LinkedIn People Finder by Role, Seniority & Network
Search LinkedIn people with structured filters for company, school, seniority, job function, years of experience, industry, and connection degree, using your own LinkedIn session.
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 |
|---|---|---|---|
searchQuery | string | required | Search keywords for finding people on LinkedIn. Examples: 'software engineer', 'John Smith', 'product manager Google' |
keywords | string | optional | Optional companion to Search Query. When both are set, they are combined with a space. Use this to keep a primary role in Search Query and add modifiers (industry buzzwords, tools) here. |
cookie | string | required | Your LinkedIn session cookie. Accepts either: (1) the li_at value from browser DevTools → Application → Cookies, or (2) full cookies JSON array exported from an extension like EditThisCookie. |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
searchQuery | string | required | Search keywords for finding people on LinkedIn. Examples: 'software engineer', 'John Smith', 'product manager Google' |
keywords | string | optional | Optional companion to Search Query. When both are set, they are combined with a space. Use this to keep a primary role in Search Query and add modifiers (industry buzzwords, tools) here. |
cookie | string | required | Your LinkedIn session cookie. Accepts either: (1) the li_at value from browser DevTools → Application → Cookies, or (2) full cookies JSON array exported from an extension like EditThisCookie. |
location | string | optional | Filter results by location (city, state, or country). Example: 'San Francisco Bay Area', 'New York', 'United Kingdom' |
currentCompany | string | optional | Filter by current company. Accepts a company name (e.g. 'Google') or a LinkedIn fsd_company URN/numeric ID. URN format produces the strict structured currentCompany filter; plain names are added to keywords. |
pastCompany | string | optional | Filter by past company. Accepts a company name or a LinkedIn fsd_company URN/numeric ID. |
school | string | optional | Filter by school or university attended. Accepts a school name or a LinkedIn fsd_school URN/numeric ID. Example: 'Stanford University', 'MIT', or '12345'. |
firstNameKeyword | string | optional | Filter by first name token. Adds a strict firstName filter to the search. |
lastNameKeyword | string | optional | Filter by last name token. Adds a strict lastName filter to the search. |
titleKeyword | string | optional | Filter by current job title keyword (e.g. 'Director of Engineering', 'CTO'). Different from Industry / Job Function — this is the free-text title. |
serviceCategory | string | optional | Filter by LinkedIn Services Marketplace category (e.g. 'Web Development', 'Marketing Strategy'). |
companyHeadcount | array | optional | Filter by employer company size. A=Self-employed, B=1-10, C=11-50, D=51-200, E=201-500, F=501-1,000, G=1,001-5,000, H=5,001-10,000, I=10,001+. |
followerOf | string | optional | Filter to people who follow a specific company. Accepts an fsd_company URN or numeric company ID. |
geoUrn | string | optional | Precise location filter using a LinkedIn geo URN or numeric geo ID (e.g. '103644278' for the United States). Use this for strict geographic filtering instead of the free-text Location field. |
connectionDegree | string | optional | Filter by connection degree to your account. |
industry | string | optional | Filter results by industry. Applied to both Voyager filters and the HTML search URL. |
seniorityLevel | string | optional | Filter results by seniority level. |
yearsOfExperience | string | optional | Filter results by years of total professional experience. 1=Less than 1 year, 2=1-2 years, 3=3-5 years, 4=6-10 years, 5=11-15 years, 6=16+ years. |
jobFunction | string | optional | Filter results by job function / department. |
openTo | array | optional | Filter people by what they are open to. Select one or more options. HIRING = open to hiring, GETTING_HIRED = open to new jobs, PROVIDING_SERVICES = open to providing freelance/consulting services, JOINING_A_NONPROFIT = open to joining a nonprofit. |
profileLanguages | array | optional | Filter by the language(s) the person's LinkedIn profile is written in. Use ISO 639-1 codes, e.g. ["en", "es", "fr", "de", "zh", "ar", "pt"]. |
contactOf | string | optional | Filter to show people who are connections of the specified LinkedIn member. Provide the member's URN (e.g. 'urn:li:member:123456') or numeric profile ID. |
talksAbout | string | optional | Filter to people who talk about the specified keyword or topic in their profile. This is appended to the search keywords. |
maxResults | integer | optional | Maximum number of profiles to return. |
proxyConfiguration | object | optional | Optional Apify proxy configuration. |
Download the published input schema
View complete JSON
{
"properties": {
"companyHeadcount": {
"description": "Filter by employer company size. A=Self-employed, B=1-10, C=11-50, D=51-200, E=201-500, F=501-1,000, G=1,001-5,000, H=5,001-10,000, I=10,001+.",
"editor": "select",
"items": {
"enum": [
"A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I"
],
"enumTitles": [
"Self-employed",
"1-10 employees",
"11-50 employees",
"51-200 employees",
"201-500 employees",
"501-1,000 employees",
"1,001-5,000 employees",
"5,001-10,000 employees",
"10,001+ employees"
],
"type": "string"
},
"title": "Company Headcount",
"type": "array"
},
"connectionDegree": {
"default": "",
"description": "Filter by connection degree to your account.",
"editor": "select",
"enum": [
"",
"F",
"S",
"O"
],
"enumTitles": [
"Any",
"1st degree",
"2nd degree",
"3rd+ degree"
],
"title": "Connection Degree",
"type": "string"
},
"contactOf": {
"description": "Filter to show people who are connections of the specified LinkedIn member. Provide the member's URN (e.g. 'urn:li:member:123456') or numeric profile ID.",
"editor": "textfield",
"title": "Contact Of (Member URN or Profile ID)",
"type": "string"
},
"cookie": {
"description": "Your LinkedIn session cookie. Accepts either: (1) the li_at value from browser DevTools → Application → Cookies, or (2) full cookies JSON array exported from an extension like EditThisCookie.",
"editor": "textarea",
"isSecret": true,
"title": "LinkedIn Cookie",
"type": "string"
},
"currentCompany": {
"description": "Filter by current company. Accepts a company name (e.g. 'Google') or a LinkedIn fsd_company URN/numeric ID. URN format produces the strict structured currentCompany filter; plain names are added to keywords.",
"editor": "textfield",
"title": "Current Company Filter",
"type": "string"
},
"firstNameKeyword": {
"description": "Filter by first name token. Adds a strict firstName filter to the search.",
"editor": "textfield",
"title": "First Name",
"type": "string"
},
"followerOf": {
"description": "Filter to people who follow a specific company. Accepts an fsd_company URN or numeric company ID.",
"editor": "textfield",
"title": "Followers of Company",
"type": "string"
},
"geoUrn": {
"description": "Precise location filter using a LinkedIn geo URN or numeric geo ID (e.g. '103644278' for the United States). Use this for strict geographic filtering instead of the free-text Location field.",
"editor": "textfield",
"title": "Location URN",
"type": "string"
},
"industry": {
"default": "",
"description": "Filter results by industry. Applied to both Voyager filters and the HTML search URL.",
"editor": "select",
"enum": [
"",
"Software Development",
"Financial Services",
"Healthcare",
"Education",
"Marketing and Advertising",
"Consulting",
"Hospitality",
"Real Estate",
"Manufacturing",
"Retail",
"Media",
"Government Administration",
"Non-profit Organization Management"
],
"enumTitles": [
"Any",
"Software Development",
"Financial Services",
"Healthcare",
"Education",
"Marketing and Advertising",
"Consulting",
"Hospitality",
"Real Estate",
"Manufacturing",
"Retail",
"Media",
"Government Administration",
"Non-profit Organization Management"
],
"title": "Industry",
"type": "string"
},
"jobFunction": {
"default": "",
"description": "Filter results by job function / department.",
"editor": "select",
"enum": [
"",
"ARTS_AND_DESIGN",
"BUSINESS_DEVELOPMENT",
"COMMUNITY_AND_SOCIAL_SERVICES",
"CONSULTING",
"EDUCATION",
"ENGINEERING",
"ENTREPRENEURSHIP",
"FINANCE",
"HEALTHCARE_SERVICES",
"HUMAN_RESOURCES",
"INFORMATION_TECHNOLOGY",
"LEGAL",
"MANAGEMENT",
"MARKETING",
"MEDIA_AND_COMMUNICATION",
"MILITARY_AND_PROTECTIVE_SERVICES",
"OPERATIONS",
"PRODUCT_MANAGEMENT",
"PROGRAM_AND_PROJECT_MANAGEMENT",
"PURCHASING",
"QUALITY_ASSURANCE",
"REAL_ESTATE",
"RESEARCH",
"SALES",
"SUPPORT"
],
"enumTitles": [
"Any",
"Arts and Design",
"Business Development",
"Community and Social Services",
"Consulting",
"Education",
"Engineering",
"Entrepreneurship",
"Finance",
"Healthcare Services",
"Human Resources",
"Information Technology",
"Legal",
"Management",
"Marketing",
"Media and Communication",
"Military and Protective Services",
"Operations",
"Product Management",
"Program and Project Management",
"Purchasing",
"Quality Assurance",
"Real Estate",
"Research",
"Sales",
"Support"
],
"title": "Job Function",
"type": "string"
},
"keywords": {
"description": "Optional companion to Search Query. When both are set, they are combined with a space. Use this to keep a primary role in Search Query and add modifiers (industry buzzwords, tools) here.",
"editor": "textfield",
"title": "Extra Keywords",
"type": "string"
},
"lastNameKeyword": {
"description": "Filter by last name token. Adds a strict lastName filter to the search.",
"editor": "textfield",
"title": "Last Name",
"type": "string"
},
"location": {
"description": "Filter results by location (city, state, or country). Example: 'San Francisco Bay Area', 'New York', 'United Kingdom'",
"editor": "textfield",
"title": "Location Filter",
"type": "string"
},
"maxResults": {
"default": 25,
"description": "Maximum number of profiles to return.",
"editor": "number",
"maximum": 100,
"minimum": 1,
"prefill": 25,
"title": "Max Results",
"type": "integer"
},
"openTo": {
"description": "Filter people by what they are open to. Select one or more options. HIRING = open to hiring, GETTING_HIRED = open to new jobs, PROVIDING_SERVICES = open to providing freelance/consulting services, JOINING_A_NONPROFIT = open to joining a nonprofit.",
"editor": "select",
"items": {
"enum": [
"HIRING",
"GETTING_HIRED",
"PROVIDING_SERVICES",
"JOINING_A_NONPROFIT"
],
"enumTitles": [
"Open to Hiring",
"Open to New Jobs",
"Open to Providing Services",
"Open to Joining a Nonprofit"
],
"type": "string"
},
"title": "Open To",
"type": "array"
},
"pastCompany": {
"description": "Filter by past company. Accepts a company name or a LinkedIn fsd_company URN/numeric ID.",
"editor": "textfield",
"title": "Past Company Filter",
"type": "string"
},
"profileLanguages": {
"description": "Filter by the language(s) the person's LinkedIn profile is written in. Use ISO 639-1 codes, e.g. [\"en\", \"es\", \"fr\", \"de\", \"zh\", \"ar\", \"pt\"].",
"editor": "stringList",
"items": {
"type": "string"
},
"title": "Profile Languages",
"type": "array"
},
"proxyConfiguration": {
"description": "Optional Apify proxy configuration.",
"editor": "proxy",
"title": "Proxy Configuration",
"type": "object"
},
"school": {
"description": "Filter by school or university attended. Accepts a school name or a LinkedIn fsd_school URN/numeric ID. Example: 'Stanford University', 'MIT', or '12345'.",
"editor": "textfield",
"title": "School Filter",
"type": "string"
},
"searchQuery": {
"description": "Search keywords for finding people on LinkedIn. Examples: 'software engineer', 'John Smith', 'product manager Google'",
"editor": "textfield",
"prefill": "software engineer",
"title": "Search Query",
"type": "string"
},
"seniorityLevel": {
"default": "",
"description": "Filter results by seniority level.",
"editor": "select",
"enum": [
"",
"Entry level",
"Associate",
"Mid-Senior level",
"Director",
"Executive"
],
"enumTitles": [
"Any",
"Entry level",
"Associate",
"Mid-Senior level",
"Director",
"Executive"
],
"title": "Seniority Level",
"type": "string"
},
"serviceCategory": {
"description": "Filter by LinkedIn Services Marketplace category (e.g. 'Web Development', 'Marketing Strategy').",
"editor": "textfield",
"title": "Service Category",
"type": "string"
},
"talksAbout": {
"description": "Filter to people who talk about the specified keyword or topic in their profile. This is appended to the search keywords.",
"editor": "textfield",
"title": "Talks About (Keyword / Topic)",
"type": "string"
},
"titleKeyword": {
"description": "Filter by current job title keyword (e.g. 'Director of Engineering', 'CTO'). Different from Industry / Job Function — this is the free-text title.",
"editor": "textfield",
"title": "Job Title",
"type": "string"
},
"yearsOfExperience": {
"default": "",
"description": "Filter results by years of total professional experience. 1=Less than 1 year, 2=1-2 years, 3=3-5 years, 4=6-10 years, 5=11-15 years, 6=16+ years.",
"editor": "select",
"enum": [
"",
"1",
"2",
"3",
"4",
"5",
"6"
],
"enumTitles": [
"Any",
"Less than 1 year",
"1-2 years",
"3-5 years",
"6-10 years",
"11-15 years",
"16+ years"
],
"title": "Years of Experience",
"type": "string"
}
},
"required": [
"searchQuery",
"cookie"
],
"schemaVersion": 1,
"title": "LinkedIn People Search Scraper 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 |
|---|---|---|---|
profiles | string | optional | Dataset containing all scraped LinkedIn profiles from the search. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "LinkedIn profiles matching a structured people search, with name, headline, current company, seniority-related badges, and profile URL.",
"properties": {
"profiles": {
"description": "Dataset containing all scraped LinkedIn profiles from the search.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "LinkedIn Profiles",
"type": "string"
}
},
"title": "LinkedIn People Finder by Role, Seniority & Network 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": {
"overview": {
"display": {
"component": "table",
"properties": {
"connectionDegree": {
"format": "text",
"label": "Connection"
},
"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",
"connectionDegree",
"profileUrl",
"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 People Finder by Role, Seniority & Network
Search LinkedIn people search with your own session — well beyond a plain keyword box. Combine free-text search with structured filters for company, school, seniority, job function, years of experience, company size, industry, and more, and get back one row per matching profile.
What this actor does
- Runs a LinkedIn people search using your own session cookie, combining a free-text query with any number of structured filters
- Passes structured filters to LinkedIn: company, school and location IDs, industry, job function, seniority level, years of experience, employer headcount, connection degree, profile language and "open to" status
- Adds free-text values (a location name, company or school names, a topic, first/last name and job title) to the search keywords, so they narrow results the way typing them into LinkedIn's search box would
- Can narrow to people who follow a given company or are connections of a specific member, using their numeric IDs or URNs
- Flags when a result card shows an "Open to Work" or Premium marker or a verified indicator
- Fields LinkedIn doesn't expose for a given profile (for example a profile picture or mutual-connections count) are left off that record
Output per profile
name— the person's full nameprofileUrl— their canonical LinkedIn profile URLheadline— their LinkedIn headline, as writtenlocation— the location shown on their profileconnectionDegree— their connection degree to your account (1st,2nd,3rd+), when LinkedIn shows onecurrentCompany— their current employer as{name}, plusslugandurlwhen LinkedIn supplies a structured company link; usually derived from a headline such as "Engineer at Acme"currentTitle— their current job title, usually the part of the headline before "at …"industryName— the industry LinkedIn associates with the profile, when availableeducationCount— how many education entries appear on their profile, when greater than zeroopenToWork— true when the result shows an "Open to Work" marker (omitted otherwise)premium,premiumStatus— true when the result shows a Premium marker (omitted otherwise)verifiedStatus— true when the result card carries a verified indicator (omitted otherwise)profilePicture,profileImageUrl— the profile photo URL, when visible to your accountmutualConnections— the mutual-connections text LinkedIn shows for that profile, when availablescrapedAt— when the actor fetched the record
industryName and educationCount only come through on some result layouts, so many rows won't have them.
Cookie notice row
If the cookie input is empty, or LinkedIn reports the session as expired or invalid, the run doesn't fail. Instead the dataset gets a single notice row with _status: "no_data", _reason (cookie-missing or cookie-invalid), _message, _help (how to export a fresh cookie) and scrapedAt, and no profiles. A cookie value that can't be parsed at all fails the run.
Input
| Field | Type | Default | Description |
|---|---|---|---|
searchQuery |
string | – | Free-text search keywords. Required. |
keywords |
string | – | Extra keywords combined with searchQuery with a space; handy for adding modifiers without editing your main query. |
cookie |
string | – | Your LinkedIn session cookie — either the li_at value or a full cookie JSON export. Required. |
location |
string | – | Free-text location, e.g. San Francisco Bay Area; added to the search keywords. Use geoUrn for a strict location filter. |
geoUrn |
string | – | A LinkedIn geo URN or numeric geo ID (e.g. 103644278 for the United States) for a strict location filter. |
currentCompany |
string | – | Current employer, by name or LinkedIn company URN/ID. A URN applies a strict structured filter; a plain name is added to the search keywords. |
pastCompany |
string | – | Past employer, by name or LinkedIn company URN/ID. Works like currentCompany: an ID applies the filter, a name is added to the keywords. |
school |
string | – | School or university attended. A school URN/ID applies the school filter; a name is added to the keywords. |
firstNameKeyword |
string | – | First name; sent as a first-name filter and added to the keywords. |
lastNameKeyword |
string | – | Last name; sent as a last-name filter and added to the keywords. |
titleKeyword |
string | – | Job title text, e.g. Director of Engineering; sent as a title filter and added to the keywords. |
serviceCategory |
string | – | LinkedIn Services Marketplace category, e.g. Web Development; sent as a filter and added to the keywords. |
companyHeadcount |
array | – | Employer size bucket(s), from self-employed up to 10,001+ employees. |
followerOf |
string | – | Restrict to people who follow a given company. Needs a company URN or numeric ID; a plain name is ignored. |
connectionDegree |
string | "" (any) |
F (1st degree), S (2nd degree), or O (3rd+ degree). |
industry |
string | "" (any) |
One of 13 industries, e.g. Software Development, Healthcare. |
seniorityLevel |
string | "" (any) |
Entry level, Associate, Mid-Senior level, Director, or Executive. |
yearsOfExperience |
string | "" (any) |
Total professional experience bucket, from less than 1 year up to 16+ years. |
jobFunction |
string | "" (any) |
Department/function, e.g. ENGINEERING, SALES, MARKETING. |
openTo |
array | – | What the person has flagged as open to: HIRING, GETTING_HIRED, PROVIDING_SERVICES, JOINING_A_NONPROFIT. |
profileLanguages |
array | – | ISO 639-1 language code(s) the profile is written in, e.g. ["en", "es"]. |
contactOf |
string | – | Restrict to connections of a specific LinkedIn member (member URN or numeric profile ID). |
talksAbout |
string | – | A keyword/topic to look for on the person's profile; appended to the search keywords. |
maxResults |
integer | 25 |
Maximum profiles to return (1–100). |
proxyConfiguration |
object | – | Optional Apify proxy configuration. |
Example: role + company + connection degree
{
"searchQuery": "product manager",
"cookie": "YOUR_LI_AT_COOKIE",
"currentCompany": "Airbnb",
"connectionDegree": "F",
"maxResults": 25
}
Example: senior engineers by function, seniority, and company size
{
"searchQuery": "engineering",
"cookie": "YOUR_LI_AT_COOKIE",
"jobFunction": "ENGINEERING",
"seniorityLevel": "Director",
"companyHeadcount": ["G", "H", "I"],
"maxResults": 50
}
Example: people open to freelance work in a given industry
{
"searchQuery": "brand designer",
"cookie": "YOUR_LI_AT_COOKIE",
"industry": "Marketing and Advertising",
"openTo": ["PROVIDING_SERVICES"],
"maxResults": 30
}
Use cases
- Recruiting and sourcing — build a candidate shortlist filtered by seniority, function, and years of experience
- Sales prospecting — find decision-makers at companies of a specific size and industry
- Talent mapping — see how many people with a given title work at a target company or came from a specific school
- Freelance/agency hiring — search for people who've flagged themselves as
PROVIDING_SERVICESin a niche - Alumni and network outreach — find people from a specific school or who follow your company page
FAQ
Why does this actor need a LinkedIn cookie?
People search is only available to logged-in LinkedIn users, so a valid session cookie (li_at or a full cookie export) is required. Without one, or with an expired one, the run returns only the cookie notice row described above.
Will my results match what I'd see searching manually? Closely, but not identically — LinkedIn personalizes search results based on your account's own network, location, and plan, so the same query can return different people from different accounts.
What's the difference between currentCompany as a name versus a URN?
A company URN or numeric ID applies LinkedIn's strict structured company filter. A plain company name is instead folded into the free-text search keywords, which is usually accurate for well-known company names but less exact than a URN.
Why is connectionDegree sometimes missing from a result?
LinkedIn only shows a connection-degree badge for profiles it places in your visible network graph; some results simply don't carry one.
Why don't all profiles have a profilePicture?
Some LinkedIn users restrict their photo to connections only; the actor returns the picture URL only when the search response actually includes one.
Can I combine many filters at once? Yes — every filter is sent with the same search, and the more you combine, the narrower (and often smaller) the result set. LinkedIn decides how strictly each filter is honoured for your account, so spot-check results when you stack many of them.
How many profiles can I get per run?
Up to maxResults, capped at 100 per run.
Is this affiliated with LinkedIn? No. This is an independent, third-party actor that uses your own LinkedIn session to run a people search; it 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 CrEkFHlcagPwfg7e7. Documentation is regenerated from the default published build; private drafts are not included.