# LinkedIn Person profile API (linkedin.person_profile)

- Canonical page: https://everyinfra.com/en/linkedin-api/person_profile
- Endpoint: POST https://api.everyinfra.com/api/v1/social with {"platform": "linkedin", "action": "person_profile", "params": {...}}
- Price: $0.000778 per call ($0.78 per 1,000 requests); failed calls and empty results are not charged
- Returns: single object
- Mode: sync; add "mode": "async" for slow tasks

LinkedIn Person profile reads one member's public profile from their `username` or profile link and returns the display name, headline, about section, location, current company, follower and connection counts, verification and Premium status, avatar, and email addresses when they are public. Recruiters use it to check a candidate's background, and sales teams use it to enrich a lead with the person's current role and company before they reach out.

`headline` and `about` are written by the member, so treat them as self-description rather than verified facts. `email` comes back only when it is public or authorized, so expect null most of the time; `emails` lists every address found, and `email` is the first of them. `display_name` can differ from `username`, and `avatar_url` can be a sized link that expires, so download the image if you need to keep it.

## Health

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

## Parameters

| name | type | required | default | description |
|---|---|---|---|---|
| username | not declared | yes | not declared | Specifies the username handle from a LinkedIn /in/ profile path or a full personal profile URL for person_profile, or an account path for followers. In the followers action, it returns the total follower count rather than a list of followers. |
| location | not declared | no | not declared | Specifies location text for person profiles in profile_search or job locations in jobs. When keyword in the jobs action is already a full search URL, the URL's embedded criteria take precedence and location is ignored. |
| locations | not declared | no | not declared | Accepts a location array as a compatibility alias. Prefer location: this array is not guaranteed to behave the same way, and it is not a way to run cross-country batch searches. |
| name | not declared | no | not declared | Provides a compatibility identifier that holds company identifiers in company_profile or serves as a person query term in select person_profile lookups. It cannot replace the required company or username parameters, nor does it guarantee exact matching against display names. |

## Response fields (items in `results`)

| field | meaning |
|---|---|
| username | Username (@handle). |
| display_name | Display name; can differ from username. |
| headline | platform-native meaning |
| about | Long-form About text of the profile (person_profile, profile_search). |
| location | Location description passed through as is; the format varies by platform. |
| current_company | platform-native meaning |
| current_company_url | LinkedIn page URL of the current company. |
| current_company_logo_url | Logo URL of the current company. |
| member_urn | platform-native meaning |
| current_company_id | platform-native meaning |
| follower_count | Followers. null means not disclosed, not 0. |
| connection_count | Number of connections (person_profile, profile_search). |
| 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. |
| is_verified | Whether the platform verified the account. null means it cannot be determined. |
| is_premium | platform-native meaning |
| is_top_voice | Whether the profile carries the LinkedIn Top Voice badge. |
| is_creator | Whether the profile runs in creator mode. |
| is_influencer | platform-native meaning |
| open_to_work | platform-native meaning |
| top_skills | Skill tags shown at the top of the profile. |
| top_education_school | School highlighted at the top of the profile. |
| creator_hashtags | Hashtags the creator chose for creator mode. |
| creator_website | External link the creator chose for creator mode. |
| primary_locale | Primary locale of the account (e.g. en-US). |
| account_created_at | Account creation time; null when the source omits it. |
| avatar_url | Avatar image link. Some platforms return sized CDN links that can expire. |
| background_picture_url | Profile background banner image URL. |
| url | Link to the record on the platform. |
| experience | Work-history list (person_profile, profile_search): each entry carries title, company, company page URL, date range and duration text, plus location, description, employment_type and skills when the source gives them. |
| education | Education list (person_profile, profile_search): each entry carries school, school page URL, date range and duration text. |
| featured | Profile Featured section list: each entry carries type, title, description, link and image; posts also carry like_count and comment_count. |
| first_name | First name (person_profile). |
| last_name | Last name (person_profile). |
| country | Country or region: a full name or an ISO code depending on the platform, not normalized. |
| city | City name in the platform's language, not normalized. |
| country_code | platform-native meaning |
| is_memorialized | Whether the account is memorialized (the person has died). |
| platform | Source platform identifier, the same as platform in the request (for example xiaohongshu, tiktok). |
| emails | Contact email addresses (a record can have several), passed through as is with duplicates removed. |

## 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": "person_profile",
  "params": {
    "username": "williamhgates"
  }
}'
```

```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": "person_profile",
        "params": {
            "username": "williamhgates",
        },
    },
    timeout=120,
)
print(response.status_code)
print(response.json())
```

## Response example

Real response to the example request above, captured 2026-09-26T08:56:04Z. `results` and `count` are real with personal information (names, handles, avatars, profile links, contact details) removed. `id`, `billing` and `quota` differ on every call, so only their shape is shown.

```text
{
  "id": "req_…",
  "platform": "linkedin",
  "action": "person_profile",
  "results": {
    "username": "williamhgates",
    "display_name": "•••",
    "headline": "Chair, Gates Foundation and Founder, Breakthrough Energy",
    "about": "Chair of the Gates Foundation. Founder of Breakthrough Energy. Co-founder of Microsoft. Voracious reader. Avid traveler. Active blogger.",
    "location": "Seattle, Washington, United States",
    "current_company": "Gates Foundation",
    "follower_count": 40680117,
    "connection_count": 8,
    "email": "•••",
    "is_verified": true,
    "is_premium": true,
    "avatar_url": "https://media.licdn.com/•••",
    "url": "https://linkedin.com/in/williamhgates",
    "platform": "linkedin"
  },
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}
```

## FAQ

### Where do I find the `username`?

Open the person's LinkedIn profile: the username is the part after /in/ in the address, such as williamhgates in linkedin.com/in/williamhgates. You can pass that full profile link instead. A display name does not identify a member, and `name` is only a search hint that may match a different person.

### Can I look someone up without knowing their username?

Not with this capability, which needs `username` or a profile link. LinkedIn Profile search finds people by current job title, optionally in a given location, and returns their profile links; pass the link of the right match here. It is not an exact lookup by name or email.

### Do `location`, `locations` and `name` filter the profile?

No. They are optional hints that can help locate the profile, and they never narrow or replace `username`. Once the profile is identified they play no part, so do not rely on them to confirm you have the right person; compare `headline` and `current_company` instead.

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