st.openPersonPage
This action allows you to open a person page to retrieve their basic information and perform additional person-related actions if needed.
In the Node SDK this is linkedapi.fetchPerson – the call is below, under Parameters.
In the Python SDK this is linkedapi.fetch_person – the call is below, under Parameters.
In the CLI this is linkedin person fetch – the command is below, under Parameters.
Constraints
⏺️ Root Start: allowed, when
personUrlparameter is provided.
⬆️ Parent Actions: st.doForPeople, nv.openPersonPage.
⬇️ Child Actions: st.sendMessage, st.syncConversation, nv.syncConversation, st.checkConnectionStatus, st.sendConnectionRequest, st.withdrawConnectionRequest, st.removeConnection, st.retrievePersonExperience, st.retrievePersonEducation, st.retrievePersonSkills, st.endorsePersonSkill, st.retrievePersonLanguages, st.retrievePersonPosts, st.retrievePersonComments, st.retrievePersonReactions, nv.openPersonPage.
Parameters
{
"actionType": "st.openPersonPage",
"label": "person1",
"personUrl": "https://www.linkedin.com/in/person1",
"basicInfo": true,
"then": { ... }
}In AI assistants, the MCP server runs this action as the fetch_person tool.
In the SDK this is the fetchPerson method. It always returns basic information: basicInfo, like label and then, exists only in workflow JSON. It takes the other parameters below and returns the result below in data.
Each retrieve… flag of fetchPerson adds one child action, and its data comes back under its own property of data:
| Flag | Child action | Configuration | Property of data |
|---|---|---|---|
retrieveExperience | st.retrievePersonExperience | – | experiences |
retrieveEducation | st.retrievePersonEducation | – | education |
retrieveSkills | st.retrievePersonSkills | – | skills |
retrieveLanguages | st.retrievePersonLanguages | – | languages |
retrievePosts | st.retrievePersonPosts | postsRetrievalConfig: limit, since | posts |
retrieveComments | st.retrievePersonComments | commentsRetrievalConfig: limit, since | comments |
retrieveReactions | st.retrievePersonReactions | reactionsRetrievalConfig: limit, since | reactions |
A configuration object takes effect only with its flag set to true, and takes the parameters of its child action – their defaults and limits are on the child's page. For example, the 50 most recent posts since a date:
const workflow = await linkedapi.fetchPerson.execute({
personUrl: "https://www.linkedin.com/in/person1",
retrievePosts: true,
postsRetrievalConfig: { limit: 50, since: "2026-01-01T00:00:00Z" }
});from linkedapi import FetchPersonParams
workflow = linkedapi.fetch_person.execute(
FetchPersonParams(
person_url="https://www.linkedin.com/in/person1",
retrieve_posts=True,
posts_retrieval_config={"limit": 50, "since": "2026-01-01T00:00:00Z"},
)
)When a child action fails, its error comes back in errors and the rest of data is still returned.
In the CLI this is linkedin person fetch:
linkedin person fetch <url> [flags]| Arg | Required | Description |
|---|---|---|
url | yes | LinkedIn profile URL |
| Flag | Type | Description |
|---|---|---|
--experience | boolean | Include work experience |
--education | boolean | Include education history |
--skills | boolean | Include skills |
--languages | boolean | Include languages |
--posts | boolean | Include recent posts |
--comments | boolean | Include recent comments |
--reactions | boolean | Include recent reactions |
--posts-limit | integer | Max posts to retrieve (requires --posts) |
--posts-since | string | Posts since ISO timestamp (requires --posts) |
--comments-limit | integer | Max comments to retrieve (requires --comments) |
--comments-since | string | Comments since ISO timestamp (requires --comments) |
--reactions-limit | integer | Max reactions to retrieve (requires --reactions) |
--reactions-since | string | Reactions since ISO timestamp (requires --reactions) |
label(optional) – custom label for tracking this action in workflow completion.personUrl(required for root start, forbidden for parent start) – public or hashed LinkedIn URL of the person.basicInfo(optional, default:false) – when set totrue, the action includes basic person information in the results.then(optional) – object or array of child actions to be executed within this action.
Result options
- Successful page opening with
basicInfoset totrue:
{
"actionType": "st.openPersonPage",
"label": "person1",
"success": true,
"data": {
"name": "John Doe",
"urn": "urn:li:member:123456789",
"publicUrl": "https://www.linkedin.com/in/person1",
"hashedUrl": "https://www.linkedin.com/in/SInQBmjJ015eLr8",
"headline": "Software Engineer at TechCorp",
"location": "San Francisco, USA",
"countryCode": "US",
"position": "Software Engineer",
"about": "Software Engineer with 8+ years of experience building scalable web applications.",
"companyName": "TechCorp",
"companyHashedUrl": "https://www.linkedin.com/company/12345678",
"followersCount": 37,
"avatarUrl": "https://media.licdn.com/dms/image/v2/D5603AQE/profile-displayphoto-shrink_100_100/0/1700000000000",
"viewerState": { "connectionDegree": "2nd" },
"then": { ... }
}
}label– included only if specified in the action parameters.data– basic information about the person and results of child actions execution.name– full name of the person.urn– URN of the person, ornullif LinkedIn does not expose it.publicUrl– public LinkedIn URL of the person.hashedUrl– hashed LinkedIn URL of the person.headline– headline of the person.location– free-form string indicating the person's location.countryCode– two-character code of the person's country.position– current job position of the person.about– "About" section text from the person's profile.companyName– name of the person's current company.companyHashedUrl– hashed LinkedIn URL of the person's current company.followersCount– number of followers the person has.avatarUrl– URL of the person's profile photo, ornullif the person has no photo.viewerState– how your account relates to the person, see viewer state.connectionDegree–1st,2nd, or3rd+, as LinkedIn shows it next to the name, ornullif LinkedIn does not show it.
then– results of child actions execution.
- Successful page opening with
basicInfoset tofalse:
{
"actionType": "st.openPersonPage",
"label": "person1",
"success": true,
"data": {
"then": { ... }
}
}label– included only if specified in the action parameters.data.then– results of child actions execution.
- Failed page opening:
{
"actionType": "st.openPersonPage",
"label": "person1",
"success": false,
"error": {
"type": "personNotFound",
"message": "The provided URL is not an existing LinkedIn person."
}
}label– included only if specified in the action parameters.error.type– enum with the following possible values:personNotFound– provided URL is not an existing LinkedIn person.personLikelyChangedPublicUrl– the provided URL no longer opens, but this person appeared in your account's network events before, so they most likely changed their public URL. Retry with their hashed URL.selfProfileNotAllowed– action cannot be performed on your own profile.