InsightSocial API
How-to

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
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.

Response (shortened)
{
  "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
}
FieldWhat it holds
data.items[].authorOne member in the shared author shape: name, handle, avatar, profile URL.
author.bioThe member's LinkedIn headline, usually their role and employer.
author.locationWhere the member says they are, such as United States or Seattle, WA.
author.followersFollower count. Filled on only a few rows, and then approximate (followers_approximate: true, for example 9000).
author.ext.is_premium, is_top_voiceWhether the member has LinkedIn Premium and the Top Voice badge.
data.totalHow 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.

Python: read up to 10 pages
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/experiences when current employment matters.
  • Follower counts are sparse. followers was null on 8 of 10 rows in our test, and approximate on the other 2. null means unknown, not zero. Add include=profile to get the exact follower count and the connection count (following) for every row, at a higher price.
  • No join date. following and joined_at are null on a plain call.
  • limit skips 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/people with current_company and title to 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.total per company each month to track how many members list it, alongside GET /v1/linkedin/company/employees-count.

On this page