LinkedIn Company Employees Scraper: Work History & Job Tenure
Pricing
$19.99/month + usage
LinkedIn Company Employees Scraper: Work History & Job Tenure
LinkedIn Company Employees Scraper: Work History & Job Tenure extracts employee profiles from LinkedIn company pages. It collects names, job titles, profile URLs, locations, and profile details. Ideal for lead generation, recruitment research, B2B prospecting, and company workforce analysis.
Pricing
$19.99/month + usage
Rating
0.0
(0)
Developer
ScraperForge
Maintained by CommunityActor stats
0
Bookmarked
12
Total users
2
Monthly active users
20 days ago
Last modified
Categories
Share
Extract public employee profiles from any LinkedIn company page, plus each person's job history — past employers, role dates, and how long they've been in their current seat — read straight out of the public profile page LinkedIn already serves. No login, no cookies, no LinkedIn credentials.
What it does
- Takes a list of LinkedIn company page URLs (or plain company-name keywords) and discovers employee profile URLs from the company's public page.
- Fetches each public profile and extracts name, headline, location, current company, and — new in this variant — every job on the profile with company, location, start/end dates, and a masking flag.
- Optionally filters the results by minimum tenure in the current role or by past-employer name, so you only keep the people you actually want.
Input
| Field | Type | Default | Description |
|---|---|---|---|
urls | array (one per line) | ["https://www.linkedin.com/company/google"] | Full LinkedIn company URLs or plain keywords/company names for discovery. Required. |
max_employees | integer (1–10,000) | 10 | Cap on employee profiles discovered and scraped per URL/keyword. |
proxyConfiguration | object | Apify Residential (US) | Standard Apify proxy configuration. |
include_work_history | boolean | true | Pull every job LinkedIn shows on the public profile into work_history[], plus the current role's start date and tenure text. LinkedIn masks older roles on roughly two out of three public profiles — masked entries are returned with is_masked: true instead of being silently dropped. |
min_years_in_current_role | integer (0–50) | 0 | Keep only people who have been in their current job at least this many years, counted from the start date printed on their profile. 0 keeps everyone. People whose start date LinkedIn hides are always kept unless only_full_work_history is also on. |
past_employer_keywords | array (one per line) | [] | Keep only people whose earlier jobs mention one of these company names. Case-insensitive, partial match. Leave empty to keep everyone. |
only_full_work_history | boolean | false | Keep only people whose work history is fully readable (not masked, has a current-role start date). Off by default so nobody disappears without asking. |
Output
One dataset row per employee profile — every base field, unchanged, plus this variant's additions:
{// ---- unchanged base fields ----"company_url": "https://www.linkedin.com/company/microsoft","profile_url": "https://www.linkedin.com/in/satyanadella","fullname": "Satya Nadella","first_name": "Satya","last_name": "Nadella","headline": "Chairman and CEO at Microsoft","public_identifier": "/in/satyanadella","profile_picture_url": "https://media.licdn.com/...","location": { "country": "United States", "city": "Redmond", "full": "Redmond, Washington, United States", "country_code": "US" },"is_creator": false,"is_influencer": false,"is_premium": false,"created_timestamp": 1755212345,"show_follower_count": true,"current_company": "Microsoft","companies_detected": [ { "name": "Microsoft", "slug": "microsoft", "url": "https://www.linkedin.com/company/microsoft" } ],"personal_website": "","recommendations_received": [],"other_contact_details": { "course_links": [] },"contact_elements": { "profile_identity": {}, "auth_points": {}, "learning_content": {}, "platform": {}, "language": {} },// ---- new in this variant ----"work_history": [{"title": "Chairman and CEO","company_name": "Microsoft","company_url": "https://www.linkedin.com/company/microsoft","company_location": "Greater Seattle Area","start_date": "2014-02","end_date": null,"is_current": true,"duration_text": "Feb 2014 - Present 12 years 7 months","description": "...","is_masked": false}],"current_role_title": "Chairman and CEO","current_role_start_date": "2014-02","current_role_duration_text": "Feb 2014 - Present 12 years 7 months","past_companies": ["Sun Microsystems"],"work_history_masked": false}
work_history is [] when include_work_history is off. current_role_start_date / current_role_duration_text
are null when LinkedIn hides them. work_history_masked is true when any entry in work_history[] came
back with LinkedIn's own asterisk masking.
Error rows (profile blocked/unreachable) keep the base's exact shape: { profile_url, error, created_timestamp }.
Honest limits — read before relying on complete work histories
- Full multi-job work history with dates is reliably readable on roughly 1 in 3 public profiles.
LinkedIn serves a masked "teaser" layout on the rest, where past-role titles, company names and
descriptions come back as literal asterisk runs (e.g.
"***** ******"). Those entries are still returned — withis_masked: true— rather than dropped, so you can see why a field is blank instead of it looking like missing data. - The current employer's name, URL and location are readable on essentially every profile, masked or not — only the deeper job history (older roles, exact dates) is affected by masking.
duration_textis the tenure string LinkedIn itself prints (e.g.); it is only available on the un-masked layout and is never computed or guessed from dates."Feb 2014 - Present 12 years 7 months"min_years_in_current_role,past_employer_keywordsandonly_full_work_historyare post-fetch filters applied after each profile is scraped — LinkedIn has no logged-out role/tenure/company search facet at company-page discovery time (the/people/and/about/sub-pages, and/search/results/people/, all redirect to a login wall when accessed without a session).- No skills, certifications, volunteering, honors, publications, recommendations, open-to-work badge or recently-changed-jobs signal are included — none of these exist on a logged-out LinkedIn profile page.
- Employee discovery from a company's public page is inherently limited (a handful of named "Employees at X" card entries plus recent post authors) and can vary between runs of the identical input, since LinkedIn's own page doesn't expose a stable full employee directory without a login.
Notes
Zero new HTTP requests: every added field is read out of the same profile HTML the base scraper already downloads for each employee. No LinkedIn login, cookies, or credentials are used anywhere.