LinkedIn Person profile API
API health
- 24h health
- 89%
- 24h average time
- 19.11 s
- Healthy / normal
- Available
- Limited
- Mostly down
Last 24 hours
Last 30 days
Look up one LinkedIn member by username or profile link for their headline, about section, current company, experience, education, and follower and connection counts. Email can be empty and does not imply consent to be contacted; the call never opens a connection or sends a message.
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.
Price $0.56 per 1,000 requests ($0.000556 per call). Failed calls and empty results are not charged. Synchronous. For slow jobs add "mode": "async" to the body, take the job_id and poll.
AI prompt
Paste this into your AI assistant. It already holds this endpoint's parameters, response fields and an example request, so the assistant can ask what you need and then write the scraper.
Please help me write a data collection script with the EveryInfra LinkedIn Person profile endpoint (linkedin/person_profile).
Endpoint contract:
- Request: POST https://api.everyinfra.com/api/v1/social with the header Authorization: Bearer <API key>. Read the key from the EVERYINFRA_API_KEY environment variable and never hard-code it.
- In the request body, set platform to linkedin and action to person_profile, and put the parameters inside params.
- Required parameters:
- username: 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.
- Optional parameters:
- location: 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: 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: Provides a compatibility identifier that holds company identifiers in company_profile or serves as a person query term in select person_profile lookups.
- Returns one object. Main fields: username, display_name, headline, about (Long-form About text of the profile (pe…), location, current_company, current_company_url (LinkedIn page URL of the current compan…), current_company_logo_url (Logo URL of the current company), follower_count, connection_count (Number of connections (person_profile,…), email (Email address), is_verified; 36 fields in total, full list at https://api.everyinfra.com/api/v1/social/catalog?platform=linkedin.
- Example request body:
{
"platform": "linkedin",
"action": "person_profile",
"params": {
"username": "williamhgates"
}
}
- Price: $0.56 per 1,000 requests; failed and empty results are not charged.
- For dozens or hundreds of targets, add "mode": "async" to the body: you get a job_id at once and poll GET https://api.everyinfra.com/api/v1/jobs/{job_id} for the result.
- On 422, fix the request using the suggested parameter names and allowed values in the error; on 429 or 503, wait for Retry-After and try again.
Before writing code, ask me which targets I need, how many, which fields, and what output format I want; then confirm the plan and the rough cost with me.Request parameters
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
Authorization | header | string | Yes | - | Bearer followed by your API key. Create it in the console; never put it in a URL or a code repository. |
platform | body | string | Yes | linkedin | Platform identifier, fixed value. |
action | body | string | Yes | person_profile | Capability identifier, fixed value. |
username | body.params | Not declared | Yes | - | 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 | body.params | Not declared | No | - | 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 | body.params | Not declared | No | - | 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 | body.params | Not declared | No | - | 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. |
Code samples
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"
}
}'[OpenAPI definition (JSON)]Samples read the key from the EVERYINFRA_API_KEY environment variable; copied code never contains your key.
Response example
Captured September 26, 2026 at 08:56 (UTC) by calling this API with the parameters in the code sample above. results and count are that call's real response 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.
{
"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": { … }
}Response fields
Business data is in results. The table lists the fields a record can contain; values the platform does not show are never made up.
| Field | Meaning |
|---|---|
username | Username (@handle). |
display_name | Display name; can differ from username. |
headline | Keeps the platform's own 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 | Keeps the platform's own meaning |
current_company_url | LinkedIn page URL of the current company. |
current_company_logo_url | Logo URL of the current company. |
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 | Keeps the platform's own meaning |
is_top_voice | Whether the profile carries the LinkedIn Top Voice badge. |
is_creator | Whether the profile runs in creator mode. |
is_influencer | Keeps the platform's own meaning |
open_to_work | Keeps the platform's own 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 | Keeps the platform's own 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. |
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.
Errors and billing
- 401
- Missing or invalid key. Authentication runs before parameter checks, so unauthenticated requests never see the parameter schema.
- 422
- Wrong parameter name or value. The error lists the parameters and allowed values this capability accepts and the closest match; it happens before any charge.
- 402
- Insufficient balance. Top up first.
- 429
- The account's per-minute request limit was reached (all of its API keys count together; a key's own lower limit applies first). Wait for Retry-After and try again; a rate package in the console raises the limit.
- 503
- Could not complete right now. Any charge for the call goes back to your balance automatically, and the billing receipt in the response states the actual outcome, including when it is not yet known. Do not resend blindly.
- 200 empty
- The request completed without data and is not charged (billing.reason = empty_result_refunded).
Official references
Used only to check objects and terms. They do not imply authorization or endorsement of EveryInfra by the platform.
- LinkedIn Official Documentation: Differences Between Full Profiles and External Public Versions ↗
Public versions do not present complete profile data; viewing a full profile may require logging in, and displayed sections remain subject to user settings. Consequently, `person_profile` cannot be represented as fetching anyone's complete profile, nor does official documentation on visibility serve as authorization for data collection.
Checked 2026-09-04
- LinkedIn User Agreement: Public Identity Profiles Remain Subject to Terms of Use ↗
Profile and network information remains governed by the User Agreement, access restrictions, and privacy requirements. Parameter and field descriptions on this site do not serve as proof of platform authorization or contact permission.
Checked 2026-09-04