LinkedIn Company Associated Members Scraper: Alumni Finder
Pricing
from $4.99 / 1,000 results
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
Maintained by CommunityActor 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
- Takes a list of LinkedIn URLs —
/company/,/showcase/, or/school/all work, same as the base. - For a
/school/...URL, runs aschoolFiltersearch instead of the base'scurrentCompanysearch — the one query token this variant changes — and returns the people LinkedIn associates with that school as alumni, not employees. - 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.
alumniMode: falsereproduces the base's owncurrentCompanyemployees search byte-for-byte — the identical GraphQLvariablesstring the base sends today.
Input
Base fields (unchanged name/type/default/order):
| Field | Type | Default | Description |
|---|---|---|---|
urls | array (one per line) | Google/Amazon prefill | Company/showcase/school URLs. Required. |
liAt | string | "" | Your LinkedIn li_at session cookie. Required in this variant — see Honest limits. |
getAffiliatedPages | boolean | true | Fetch affiliated/showcase/subsidiary pages. |
getAssociatedMembersProfiles | boolean | false | Fetch member profile listings. |
maxProfiles | integer (0–1000) | 0 | Profiles to fetch per URL. |
proxyConfiguration | object | Apify Residential | Standard Apify proxy configuration. |
New in this variant (appended after the base's six fields):
| Field | Type | Default | Description |
|---|---|---|---|
alumniMode | boolean | true | For a /school/ URL, search alumni (schoolFilter) instead of employees (currentCompany). false keeps the base's original behaviour. |
alumniSchools | array (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. |
alumniJobTitle | string | "" | Keep only members whose current job title contains this text. |
alumniLocationIds | array (one per line) | [] | LinkedIn location ids. Copy them from a first run's facet_filter_values.Locations. |
alumniCurrentEmployerIds | array (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). |
alumniPastEmployerIds | array (one per line) | [] | LinkedIn company ids — keep only members who worked there in the past. |
alumniIndustryIds | array (one per line) | [] | LinkedIn industry ids — keep only members currently in those industries. |
includeFilterValueIds | boolean | true | Add 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 + countabove 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_totalis 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/headlessURL instead of a real name and profile link — measured identically on the base actor's owncurrentCompanysearch, 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. liAtis now required. The base actor shipped a hardcoded LinkedIn session cookie as a silent fallback wheneverliAtwas left blank — a committed credential and a security defect, not a feature. It has been removed. A blankliAtnow fails the run cleanly with an explicit error instead of silently scraping under someone else's leaked session.alumniCurrentEmployerIdsonly applies in alumni mode. WhenalumniModeis off,currentCompanyis already occupied as the primary "this company's employees" filter — a secondcurrentCompanyfilter 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_urlis 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_urlis 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 (Stanfordstanford-university→ id1792).alumniSchoolsentries 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.