# LinkedIn Employees API (linkedin.employees)

- Canonical page: https://everyinfra.com/en/linkedin-api/employees
- Endpoint: POST https://api.everyinfra.com/api/v1/social with {"platform": "linkedin", "action": "employees", "params": {...}}
- Price: $0.000792 per call ($0.79 per 1,000 requests); failed calls and empty results are not charged
- Returns: list, default 20, max 200 per call
- Mode: sync; add "mode": "async" for slow tasks

LinkedIn Employees lists a public sample of the people who work at one company, given the company's LinkedIn short name or /company/ page link in `company`. Each row carries the person's name, headline, location with country, country code and city, profile link, avatar, Premium and influencer flags, whether they have marked themselves open to work, and contact details where available. Sales teams use it to map the people at a target account, recruiters to source candidates, and analysts to see where a company's staff are based.

The list is a sample, not a full roster, so do not use its length as headcount. `headline` is the short line each person writes about themselves. `open_to_work` marks people who have publicly flagged that they are looking for a job, and `email` comes back only when public or authorized, which means it is null for most rows.

## Health

- Live health (24h percent, hourly and daily trends): https://api.everyinfra.com/api/v1/social/availability?platform=linkedin&action=employees

## Parameters

| name | type | required | default | description |
|---|---|---|---|---|
| company | not declared | yes | not declared | Specifies the LinkedIn company short name or /company/ profile URL for company_profile and employees, rather than an arbitrary legal business name. The employees action expands short names into full company URLs to return a public employee sample, which does not guarantee a complete roster of current staff. |
| limit | integer (1–200) | no | 20 | The most rows to return in this call, an integer from 1 to 200. The default applies when you leave it out, and a call can return fewer rows. Larger values return 422 before any charge. |

## Response fields (items in `results`)

| field | meaning |
|---|---|
| id | The record's unique ID on the platform. Unique only within one platform; IDs can repeat across platforms. |
| url | Link to the record on the platform. |
| name | Name of the object itself, for account, product and business capabilities. |
| headline | platform-native meaning |
| location | Location description passed through as is; the format varies by platform. |
| country | Country or region: a full name or an ISO code depending on the platform, not normalized. |
| country_code | platform-native meaning |
| city | City name in the platform's language, not normalized. |
| avatar_url | Avatar image link. Some platforms return sized CDN links that can expire. |
| is_premium | platform-native meaning |
| is_influencer | platform-native meaning |
| open_to_work | platform-native meaning |
| company_url | Link to the company page. |
| email | Email address. On person_profile and profile_search it is a work address inferred from public information and then validated; on employees it is present only when the source gives one. May be empty, and it does not mean the person agreed to marketing contact. |
| phone | Contact phone number, passed through without format normalization. |
| is_creator | Whether the profile runs in creator mode. |
| is_top_voice | Whether the profile carries the LinkedIn Top Voice badge. |
| is_memorialized | Whether the account is memorialized (the person has died). |
| account_created_at | Account creation time; null when the source omits it. |
| primary_locale | Primary locale of the account (e.g. en-US). |
| postal_code | Postal code of the profile location (employees; only when the source gives it). |
| member_urn | platform-native meaning |
| first_name | First name (person_profile). |
| last_name | Last name (person_profile). |
| company_id | platform-native meaning |
| platform | Source platform identifier, the same as platform in the request (for example xiaohongshu, tiktok). |

## Example

```bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "linkedin",
  "action": "employees",
  "params": {
    "company": "google"
  }
}'
```

```python
import os
import requests

response = requests.post(
    "https://api.everyinfra.com/api/v1/social",
    headers={"Authorization": f"Bearer {os.environ['EVERYINFRA_API_KEY']}"},
    json={
        "platform": "linkedin",
        "action": "employees",
        "params": {
            "company": "google",
        },
    },
    timeout=120,
)
print(response.status_code)
print(response.json())
```

## Response example

Real response to the example request above, captured 2026-10-24T18:28:34Z. `results` and `count` are real with personal information (names, handles, avatars, profile links, contact details) removed; the list keeps the first 2 of 20. `id`, `billing` and `quota` differ on every call, so only their shape is shown.

```text
{
  "id": "req_…",
  "platform": "linkedin",
  "action": "employees",
  "results": [
    {
      "id": "•••",
      "url": "https://linkedin.com/•••",
      "name": "•••",
      "headline": "•••",
      "location": "•••",
      "country": "United States",
      "country_code": "US",
      "city": "Mountain View, California",
      "avatar_url": "",
      "is_premium": true,
      "is_influencer": false,
      "open_to_work": false,
      "company_url": "https://www.linkedin.com/company/google",
      "is_creator": false,
      "is_top_voice": false,
      "is_memorialized": false,
      "account_created_at": "2004-04-26T01:31:42+00:00",
      "primary_locale": "en_US",
      "member_urn": "•••",
      "first_name": "•••",
      "last_name": "•••",
      "company_id": "1441",
      "platform": "linkedin"
    },
    {
      "id": "•••",
      "url": "https://linkedin.com/•••",
      "name": "•••",
      "headline": "•••",
      "location": "•••",
      "country": "United Kingdom",
      "country_code": "GB",
      "city": "London, England",
      "avatar_url": "https://media.licdn.com/•••",
      "is_premium": false,
      "is_influencer": false,
      "open_to_work": false,
      "company_url": "https://www.linkedin.com/company/google",
      "is_creator": true,
      "is_top_voice": false,
      "is_memorialized": false,
      "account_created_at": "2006-02-01T02:16:53+00:00",
      "primary_locale": "en_US",
      "member_urn": "•••",
      "first_name": "•••",
      "last_name": "•••",
      "company_id": "1441",
      "platform": "linkedin"
    }
  ],
  "count": 20,
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}
```

## FAQ

### Is this a complete list of a company's employees?

No. It returns a public sample of employees, not the full roster. For headcount, use the employee count reported by LinkedIn Company profile, and treat this list as a view of roles and locations rather than a count of staff.

### How do I group employees by country or city?

Use `country_code` rather than `country`, which can be a full name or an ISO code depending on the record. `city` is written in the platform's language and not normalized, so map city names before counting, and fall back to `location`, the raw place text, when `city` is empty.

### How do I read someone's full profile?

When `url` is the person's /in/ profile link, pass it to the LinkedIn Person profile capability, which accepts a full profile link and returns the about section, current company, follower and connection counts and more. `headline` here is only the short line the person wrote about themselves.

## Also

- Capability catalog (no key): https://api.everyinfra.com/api/v1/social/catalog?platform=linkedin
- OpenAPI: https://everyinfra.com/openapi.json · Agents guide: https://everyinfra.com/agents.md
