LinkedIn Profile API
Look up a public LinkedIn person by handle or entityId and get structured JSON — name, headline, experience, education, metrics — without running your own browser farm.
GET /v1/linkedin/profiles3 credits per profile URL Up to 50 profiles per request Max 150 credits
About this endpoint
GET /v2/linkedin/profiles takes exactly one of handle or entityId. Do not send both. Branch on data.lookupStatus before you write — found vs not_found. When found, data.profile covers public identity fields (handle, display name, headline, bio, location and images), experience and education blocks, languages, selected resume sections, and follower/connection metrics when supplied. Use the v2 profile posts, recommendations, similar-people, and interests routes when you need those separate sections. Company /company/… pages belong on GET /v1/linkedin/companies; post permalinks belong on GET /v1/linkedin/posts.
Pricing is 3 credits per completed lookup, including a verified miss. For many /in/… URLs, call GET /v2/linkedin/profiles/batch (repeatable url, up to 50; 3 credits per completed profile URL, 150 credits maximum authorization). Technical failures and unstarted work cost zero. Check meta.creditsCharged on the response. Live data can be served within a documented freshness window, including cache hits.
LinkedIn Profile API FAQ
How do I fetch a LinkedIn person profile via API?
Call GET /v2/linkedin/profiles with your Social Fetch API key (x-api-key) and either handle or entityId (for example ?handle=williamhgates). Read data.lookupStatus and data.profile in the JSON response. See the API docs for parameters.
How much does the LinkedIn Profile API cost?
3 credits per completed lookup, including a verified miss. Batch URLs on GET /v2/linkedin/profiles/batch at 3 credits per completed profile URL (up to 50 URLs, 150 credits maximum authorization). Technical failures and unstarted work cost zero. Always trust meta.creditsCharged.
Can I look up multiple LinkedIn profiles in one request?
Not on GET /v2/linkedin/profiles — that route is one person. Pass multiple url query values on GET /v2/linkedin/profiles/batch, up to 50. The batch response returns a results array plus a summary of found, not_found, and errored counts.
What fields does the LinkedIn profile response include?
Public person fields when available: handle, display name, headline, bio, location, avatar, current company, experience, education, languages, and follower/connection metrics. Coverage follows what is publicly visible on the profile page — gated or logged-in-only sections are out of scope.
LinkedIn person profile vs company page endpoint?
Use GET /v2/linkedin/profiles for a person handle or entityId. Company pages use GET /v1/linkedin/companies. School and other organization pages use GET /v2/linkedin/organizations/resolve then GET /v2/linkedin/organizations. Passing a company URL into the person profile route will not return a company card.
Do I need LinkedIn partner API access for this?
No. Social Fetch returns public LinkedIn person profile data for enrichment-style lookups. LinkedIn's official partner APIs are separate and require LinkedIn's access programs and member authorization.
What happens when a LinkedIn profile is not found?
A completed miss still returns HTTP 200. Check data.lookupStatus and only upsert when it is found. Keep meta.requestId so you can retry or escalate failed enrichment rows.
Other LinkedIn endpoints
- ProfileGET /v2/linkedin/profiles
- ProfilesGET /v2/linkedin/profiles/batch
- Resolve personGET /v2/linkedin/people/resolve
- Profile postsGET /v2/linkedin/people/{entityId}/posts
- Profile commentsGET /v2/linkedin/people/{entityId}/comments
- Employment historyGET /v2/linkedin/people/{entityId}/employment-history
- RecommendationsGET /v2/linkedin/people/{entityId}/recommendations
- InterestsGET /v2/linkedin/people/{entityId}/interests