# LinkedIn Company People API (https://www.socialcrawl.dev/platforms/linkedin/company-people) > Returns a paginated list of members who work at a company, with handle, headline, location, and member URN. Get the company_id from /v1/linkedin/company. Each page is 10 members. On a plain call `author.followers` is LinkedIn's rounded display bucket, and only on the rows that show one (flagged `author.ext.followers_approximate: true`), and `author.following` is null on every row. When the primary source is momentarily rate-limited on page 1, a second source answers that page with current members of the same company in a different order and with exact follower counts (`author.ext.followers_approximate: false`), and `data._warnings` says so; page 2 onwards always comes from the primary, so a member can repeat or be missed across that boundary. Send `include=profile` and every row is joined, in the same call, to the member's profile lookup (`/v1/linkedin/profile`): `author.followers` becomes the exact follower count and `author.ext.followers_approximate` reads false on every row the lookup filled, whether the row arrived with LinkedIn's rounded bucket or with no count at all, `author.following` is filled with the member's connection count (on LinkedIn a member's `following` is the number of connections), and the location, the joined date (`author.joined_at`), and the country, website, cover image and profile flags on `author.ext` land where the row lacks them. Cost: 10 credits for the list; include=profile holds 4 credits per row and keeps only the rows filled from a fresh lookup, so a call costs at most 50; rows already in cache are free and unfilled rows are refunded. Pass `limit` (1 to 10) to join only the top rows: `limit=3&include=profile` costs at most 22. Time: the lookups run in parallel, about 1 second for 10 rows, up to 3 on a slow second, and never more than 8 seconds. The response carries a `hydration` block itemising rows, lookups, cache hits, credits and milliseconds. TL;DR: `GET /v1/linkedin/company/people` costs 10 credits for the list. include=profile holds 4 credits per row and keeps only the rows filled from a fresh lookup: at most 50 for the 10-row page, or 10 + 4 x limit when you pass `limit`. Rows served from cache are free, unfilled rows are refunded, and a repeat of a fully joined page within the list's cache window costs 0. The list is cached for 15 minutes and each profile lookup for 15 minutes. With `max_pages`, `max_items` or `max_credits`, each page walked is billed at this price (a cached page is free), and `max_credits` caps the total. and returns SocialCrawl's unified JSON schema. Single x-api-key auth, 100 free credits on signup. ## Parameters | Parameter | Required | Description | | --- | --- | --- | | `company_id` | yes | LinkedIn numeric company ID (from /v1/linkedin/company). | | `page` | no | Page number for pagination (default 1). | | `include` | no | Set to `profile` (one token only) to join every row to the member's profile lookup in this one call: `author.followers` becomes the exact count and `author.ext.followers_approximate` reads false on every row the lookup filled, `author.following` is filled with the member's connection count, and the location, joined date, country, website, cover image and profile flags land where the row lacks them. Holds 4 credits per row and keeps only the rows filled from a fresh lookup; rows already in cache and rows that could not be filled are refunded, so a call costs at most 50 (10 + 4 per row) and the usual bill is lower. Adds about 1 second for 10 rows, up to 3 on a slow second and never more than 8, and nothing when the members are already cached; read `data.hydration` for the rows, the credits held and kept, and the time. (profile) | | `limit` | no | Take the top N rows of this page (1 to 10). With `include=profile` it caps both the rows joined and the extra credits: `limit=3&include=profile` costs at most 22. The page cursor still advances past the full page of 10, so the rows past your limit are skipped, not carried to the next page. Without `include=profile` the call stays 10 credits. | | `max_pages` | no | 1 to 50 (default 1, or 50 when `max_items` or `max_credits` is sent). Walk up to this many pages in one call and return the rows from all of them. Each page walked is billed exactly as one call to this endpoint (a cached page is free) and counts against your rate limit; its charge and any refund are recorded under the page's own request id, listed in `data.walk.request_ids`. The walk stops early at the last page, or when the request's time budget runs low; `data.walk.stopped` says why (`end`, `max_pages`, `max_items`, `max_credits`, `time_budget`, `page_error`) and `pagination.next_cursor` continues from where it stopped. | | `max_items` | no | 1 to 5000. Get more in one call: keep walking pages until the response holds at least this many rows, then stop with `data.walk.stopped: "max_items"`. The last page is returned whole (it was billed), so `data.items` can hold up to one page more than this, and `pagination.next_cursor` resumes right after it without skipping a row. Walks up to 50 pages unless `max_pages` says fewer; each page is billed as one call (a cached page is free). Add `max_credits` to cap the spend. A long walk can stop on the time budget first (`"time_budget"`): send the returned cursor with the same params to continue. | | `max_credits` | no | 1 to 100000. The most this call may spend, across every page it walks. A page starts only while the credits already spent plus that page's price (or, when higher, the most any page of this walk has cost) still fit, so the call never goes past it; the walk then stops with `data.walk.stopped: "max_credits"` and the cursor to resume. Sent alone, it walks as far as the budget goes (up to 50 pages). A value below the price of one page is a free 400 whose `error.details.page_credits` names that price. Credits a row join (`include=`) adds are known only once a page has run, so page 1 is checked against its own price. | ## Code example ```bash curl -G "https://www.socialcrawl.dev/v1/linkedin/company/people" \ --data-urlencode "company_id=1035" \ -H "x-api-key: sc_YOUR_API_KEY" ``` ## FAQ ### How do I list the people who work at a LinkedIn company? Send a GET request to /v1/linkedin/company/people with a numeric company_id in the company_id parameter. The response returns a paginated list of members who work at that company, each with handle, headline, location, and member URN. ### What fields come back for each employee? Each member entry includes the profile handle, current headline (role and company), location, and the LinkedIn member URN. Add include=profile and every row is joined to that member's profile in the same call, which fills the exact follower and connection counts plus location, joined date, country, website, cover image, and the creator, influencer, open to work, hiring, top voice and premium flags. ### Can I get follower counts for a company's employees? Yes. Pass include=profile and each member row carries the exact follower count rather than the rounded bucket LinkedIn publishes on a list, with author.following holding that member's connection count. Rows the list returned with no count at all are filled the same way. ### How do I paginate through a company's employee list? Add the optional page query parameter (integer) to walk deeper into the member list. Start at page 1 and increment until the response returns an empty list, which marks the end of the available members. ### How much does the company people endpoint cost? A plain page costs 10 credits on the premium tier, regardless of how many members come back. With include=profile the page costs 10 credits plus four credits per row filled, never more than 50 credits. Cached rows are free, unfilled rows are refunded, and limit (1 to 10) caps both the rows and the credits. ### Where do I get the company_id this endpoint needs? The numeric company_id comes from /v1/linkedin/company: pass a company page URL there and read the id field from the response. Reuse that id here and across the other company/* endpoints for jobs, insights, and affiliated pages. ### Can I use this for talent intelligence or recruiting? Yes, mapping the members at a company is a common recruiting and talent-intelligence use case. Pull the roster to size a team, source candidates by headline, or track hiring at target accounts, and add include=profile so the member detail arrives with the roster instead of one lookup per row. See the full LinkedIn API: https://www.socialcrawl.dev/platforms/linkedin ## Pricing - Standard endpoints: 1 credit per call - Advanced endpoints: 5 credits per call - Premium endpoints: 10 credits per call - 100 free credits on signup, no credit card required. Cached responses cost 0 credits. Credit packs never expire. - Full pricing: https://www.socialcrawl.dev/pricing ## Explore with AI Questions this API answers, phrased for an AI assistant: - How to list the employees of a LinkedIn company with an API - Which API returns LinkedIn company staff for talent intelligence - How to get exact follower counts for every employee of a LinkedIn company in one call