LinkedIn Company Associated Members Scraper: Alumni Finder avatar

LinkedIn Company Associated Members Scraper: Alumni Finder

Pricing

from $4.99 / 1,000 results

Go to Apify Store
LinkedIn Company Associated Members Scraper: Alumni Finder

LinkedIn Company Associated Members Scraper: Alumni Finder

LinkedIn Company Associated Members Scraper: School Alumni Finder finds public LinkedIn company members by school or alumni affiliation. Extract names, job titles, companies, profile URLs, locations, and education details for recruitment, alumni networking, B2B lead generation, and talent sourcing.

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share

LinkedIn Company Associated Members Scraper: School Alumni Finder

Scrape LinkedIn school pages for their graduates instead of a company's employees — plus five live slicers (job title, location, current employer, past employer, industry), because LinkedIn hands out at most 1,000 rows per search no matter how large the school. Also fetches aggregated people facets, affiliated pages, and associated member profiles for company URLs, unchanged from the base actor.

What it does

  1. Takes a list of LinkedIn URLs — /company/, /showcase/, or /school/ all work, same as the base.
  2. For a /school/... URL, runs a schoolFilter search instead of the base's currentCompany search — the one query token this variant changes — and returns the people LinkedIn associates with that school as alumni, not employees.
  3. Optionally narrows the search by job title, location, current employer, past employer and/or industry — each is its own LinkedIn query filter, so combining them opens fresh 1,000-row windows instead of filtering client-side after the fact.
  4. alumniMode: false reproduces the base's own currentCompany employees search byte-for-byte — the identical GraphQL variables string the base sends today.

Input

Base fields (unchanged name/type/default/order):

FieldTypeDefaultDescription
urlsarray (one per line)Google/Amazon prefillCompany/showcase/school URLs. Required.
liAtstring""Your LinkedIn li_at session cookie. Required in this variant — see Honest limits.
getAffiliatedPagesbooleantrueFetch affiliated/showcase/subsidiary pages.
getAssociatedMembersProfilesbooleanfalseFetch member profile listings.
maxProfilesinteger (0–1000)0Profiles to fetch per URL.
proxyConfigurationobjectApify ResidentialStandard Apify proxy configuration.

New in this variant (appended after the base's six fields):

FieldTypeDefaultDescription
alumniModebooleantrueFor a /school/ URL, search alumni (schoolFilter) instead of employees (currentCompany). false keeps the base's original behaviour.
alumniSchoolsarray (one per line)[]Extra school pages/slugs/ids. In alumni mode their graduates are unioned into the same search. On a company page they ride as a "which of my employees also went to school X" knob instead.
alumniJobTitlestring""Keep only members whose current job title contains this text.
alumniLocationIdsarray (one per line)[]LinkedIn location ids. Copy them from a first run's facet_filter_values.Locations.
alumniCurrentEmployerIdsarray (one per line)[]LinkedIn company ids — keep only members who work there now. Alumni mode only (currentCompany is already the primary filter when alumniMode is off — see Honest limits).
alumniPastEmployerIdsarray (one per line)[]LinkedIn company ids — keep only members who worked there in the past.
alumniIndustryIdsarray (one per line)[]LinkedIn industry ids — keep only members currently in those industries.
includeFilterValueIdsbooleantrueAdd LinkedIn's own filter-value id next to every facet entry, in a separate facet_filter_values field, so a first run tells you exactly what to paste into the slicers above.

Output

One dataset row per URL — every base field, unchanged, in the same order, plus this variant's additions:

{
// ---- unchanged base fields ----
"company_name": "Stanford University",
"url": "https://www.linkedin.com/school/stanford-university",
"people_url": "https://www.linkedin.com/school/stanford-university/people/",
"Current company": [ { "name": "Google", "count": 4102 } ],
"Locations": [ { "name": "San Francisco Bay Area", "count": 88213 } ],
"Connections": [ { "name": "3rd+", "count": 361204 } ],
"School": [ { "name": "Stanford University", "count": 379264 } ],
"Current Function": [],
"Skill Explicit": [],
"Service categories": [],
"Field of Study": [],
"affiliated_pages": [ { "category": "…", "url": "…", "company": "…" } ],
"profiles": [
{
"profile_search_url": "", "profile_id": "…", "profile_network_distance": "3rd+",
"profile_fullname": "…", "profile_shared_connections_url": "", "profile_mutuals_co": "",
"profile_fsd_profile": "…", "profile_headline": "…", "profile_tracking_id": "…",
"profile_location": "…",
"profile_linkedin": "https://www.linkedin.com/in/…",
"profile_input_url": "https://www.linkedin.com/company/stanford-university", // stays wrong — base defect D7, see Honest limits
// ---- new in this variant, appended after the 12 base profile keys ----
"profile_public_identifier": "jane-doe", // "" when LinkedIn withholds it
"profile_navigation_url": "https://www.linkedin.com/in/jane-doe",
"profile_source_url": "https://www.linkedin.com/school/stanford-university" // the honest counterpart to profile_input_url
}
],
// "error": "…" // error rows only
// ---- new top-level fields in this variant ----
"search_mode": "alumni", // "alumni" | "employees" — request echo
"search_filter_key": "schoolFilter", // "schoolFilter" | "currentCompany" — request echo
"search_entity_id": "1792", // the numeric id actually sent
"search_entity_urn": "urn:li:fsd_school:1792",
"applied_filters": [
{ "parameter": "schoolFilter", "value": "1792" },
{ "parameter": "title", "value": "engineer" }
],
"matching_members_total": 21853, // LinkedIn's own totalResultCount for the query actually run
"unfiltered_members_total": 379264, // same field, same query, without the 5 knob filters
"facet_filter_values": { // omitted entirely when includeFilterValueIds is false
"School": [ { "name": "Stanford University", "count": 224, "value_id": "1792" } ],
"Locations": [ { "name": "…", "count": 0, "value_id": "90000084" } ]
}
}

A successful row can have 11–13 base keys depending on which of getAffiliatedPages / getAssociatedMembersProfiles were on (the base's own key instability — see Honest limits), plus the 7 or 8 new top-level keys above. Error rows keep the base's exact 14-key error shape plus the same new keys with neutral placeholder values ("" / 0 / []), because the search that would have populated them never ran.

Honest limits — read before relying on this for a full alumni list

  • 1,000 rows per search, hard ceiling. start + count above 1,000 returns 0 rows, no matter how large the school. Stanford has 379,264 LinkedIn-associated alumni — one search reaches 0.26% of them. The five slicers open additional 1,000-row windows (each filter combination gets its own), but none of them, alone or combined, was measured to reach more than ~30% of a school's population. matching_members_total is emitted so you can see how much of the population your slice actually covers. Do not expect "all alumni" from any single run.
  • Most rows on a free LinkedIn account come back anonymized. On the probe account, roughly 8 in 10 member rows returned "LinkedIn Member" with a …/search/results/people/headless URL instead of a real name and profile link — measured identically on the base actor's own currentCompany search, side by side, same run. This is an account-tier property of LinkedIn people search inherited from the base, not something this variant introduced or can engineer around. Whether a premium LinkedIn account improves the ratio is untested.
  • liAt is now required. The base actor shipped a hardcoded LinkedIn session cookie as a silent fallback whenever liAt was left blank — a committed credential and a security defect, not a feature. It has been removed. A blank liAt now fails the run cleanly with an explicit error instead of silently scraping under someone else's leaked session.
  • alumniCurrentEmployerIds only applies in alumni mode. When alumniMode is off, currentCompany is already occupied as the primary "this company's employees" filter — a second currentCompany filter on the same key would collide with it, so the field is ignored (with a log warning) rather than silently merged into the primary search.
  • Base defect D7 stays wrong, on purpose. profile_input_url is hardcoded to a /company/<slug> URL even when the input was a /school/<slug> page — that is the base's own behaviour and this variant does not repair it (Req 3a). profile_source_url is added beside it with the correct, unmodified input URL.
  • School-vanity id resolution reuses the base's own company resolver (organizationDashCompaniesByUniversalName), which is namespace-agnostic and was confirmed to answer for a school vanity name during the build (Stanford stanford-university → id 1792). alumniSchools entries follow the same path unless a bare numeric id is supplied directly, which skips resolution entirely.
  • Field-of-study / current-function / skill facets were never confirmed populated by an alumni search. They are empty in the base's own output today; nothing in this variant claims that changes.
  • Every base defect the base's own README/blueprint documents as "do not repair" (queryId discovery always probing /company/{slug}/people/ even for schools; a dead cookie misdiagnosed as a challenged IP, burning residential-proxy rotations) is preserved unchanged in this variant.

Notes

The only query-construction change from the base is swapping the literal currentCompany key for schoolFilter when alumniMode is on, and appending the optional extra (key:…,value:List(…)) tuples this variant adds. origin, count, start, includeFiltersInResponse, the queryId discovery/fallback chain, and the paging loop are all untouched from the base.