Get the employees of a LinkedIn company
List the LinkedIn members who work at a company, with headline, location and profile URL, by company ID. 100 credits per page of 10.
To list a company's employees on LinkedIn, call GET /v1/linkedin/company/people with the company's numeric company_id. It returns the members who list the company as their employer, 10 a page, each with name, headline, location, profile picture, profile URL and premium and Top Voice flags, plus the total number of such members. A plain page costs 100 credits.
Cost
Metered at 100–500 credits a page. A plain page of 10 costs 100 credits, so 10 pages (100 people) cost 1,000 credits. Adding include=profile joins each row to the member's profile, so the call holds up to 500 credits when it starts and you're charged what it used. Send dry_run=1 for a free quote. Asking for the same page again within 6 hours is answered from the shared cache for 2 credits. Failed calls and empty results are free.
How do I find the company ID?
Call GET /v1/linkedin/company (50 credits) with the company page URL, for example https://www.linkedin.com/company/microsoft/. It returns the numeric company ID that this endpoint needs. Microsoft's is 1035.
If you only know the company's website, GET /v1/linkedin/company/by-domain looks the page up from the domain.
Make the request
curl "https://api.insightsocial.app/v1/linkedin/company/people?company_id=1035" \
-H "x-api-key: $INSIGHTSOCIAL_API_KEY"What comes back
A real response from 2026-10-14 for Microsoft (company_id=1035), shortened: one person instead of 10, long URLs and the cursor cut, and the member replaced with a placeholder.
{
"success": true,
"endpoint": "/v1/linkedin/company/people",
"schema_version": "2",
"data": {
"items": [
{
"author": {
"id": "ACoAAAF7Yz…",
"username": "example_user",
"display_name": "Example User",
"avatar_url": "https://media.licdn.com/dms/image/v2/…",
"bio": "Software Engineer @ Microsoft",
"verified": false,
"followers": null,
"followers_approximate": null,
"following": null,
"url": "https://www.linkedin.com/in/example_user",
"location": "United States",
"joined_at": null,
"ext": { "urn": "ACoAAAF7Yz…", "is_top_voice": false, "is_premium": true }
}
}
],
"total": 89216,
"truncated": null
},
"pagination": { "next_cursor": "v2c.s9XmZtLY…", "has_more": true, "page_size": 10 },
"unavailable": ["items[].author.following", "items[].author.joined_at"],
"credits_used": 100
}| Field | What it holds |
|---|---|
data.items[].author | One member in the shared author shape: name, handle, avatar, profile URL. |
author.bio | The member's LinkedIn headline, usually their role and employer. |
author.location | Where the member says they are, such as United States or Seattle, WA. |
author.followers | Follower count. Filled on only a few rows, and then approximate (followers_approximate: true, for example 9000). |
author.ext.is_premium, is_top_voice | Whether the member has LinkedIn Premium and the Top Voice badge. |
data.total | How many members list the company. 89,216 for Microsoft here. |
How do I get more than 10 people?
Send pagination.next_cursor back as cursor, with the same company_id, and stop when pagination.has_more is false. Each plain page is 100 credits.
import os
import requests
BASE = "https://api.insightsocial.app/v1"
HEADERS = {"x-api-key": os.environ["INSIGHTSOCIAL_API_KEY"]}
params = {"company_id": "1035"}
people = []
for _ in range(10):
body = requests.get(f"{BASE}/linkedin/company/people", params=params, headers=HEADERS, timeout=120).json()
people += [item["author"] for item in body["data"]["items"]]
if not body["pagination"]["has_more"]:
break
params["cursor"] = body["pagination"]["next_cursor"]A large company has tens of thousands of members, so set a page limit before you start. See Pagination for the full rules.
What are the limits?
- Self-reported employer. The list is members who list the company on their profile. Headlines are the member's own text and can name a different employer: one row in our Microsoft test had a headline naming another company. Check
GET /v1/linkedin/profile/experienceswhen current employment matters. - Follower counts are sparse.
followerswasnullon 8 of 10 rows in our test, and approximate on the other 2.nullmeans unknown, not zero. Addinclude=profileto get the exact follower count and the connection count (following) for every row, at a higher price. - No join date.
followingandjoined_atarenullon a plain call. limitskips rows.limit(1 to 10) keeps the top N rows of a page, but the cursor still moves past all 10, so the skipped rows are not on the next page.- No filters. You can't filter by title or location here. Use
GET /v1/linkedin/search/peoplewithcurrent_companyandtitleto narrow the list.
What can I build with it?
- Account-based prospecting. List the people at a target account, then filter headlines for the roles you sell to.
- Hiring and talent research. See which roles a company's members list and where they are based.
- Org snapshots. Store
data.totalper company each month to track how many members list it, alongsideGET /v1/linkedin/company/employees-count.
Related
GET /v1/linkedin/company/peoplereference: every parameter and field.GET /v1/linkedin/company: look up a company and get itscompany_id.GET /v1/linkedin/search/people: search members across LinkedIn with filters.- LinkedIn endpoints: everything the API covers on LinkedIn.
Read on-screen text from TikTok and Instagram posts
Get the text burned into a TikTok video or shown on an Instagram post's images, read by OCR, from the post URL. 50 credits per post.
Get the people who reacted to or reposted a LinkedIn post
List who reacted to a LinkedIn post, with each reaction type, and who reposted it, by post URL. 100 credits a page of reactors, 50 a page of reposts.