st.retrieveProfileViewers

This action allows you to retrieve the list of people who recently viewed your own LinkedIn profile, as shown on your profile viewers page.

💡 This action is verified against LinkedIn's SDUI layout of the profile viewers page.

Constraints

⏺️ Root Start: allowed.

⬆️ Parent Actions: N/A.

⬇️ Child Actions: N/A.

Parameters

json
{
  "actionType": "st.retrieveProfileViewers",
  "label": "viewers1",
  "limit": 50,
  "since": "2026-08-01T00:00:00Z"
}
  • label (optional) – custom label for tracking this action in workflow completion.
  • limit (optional) – number of viewers to retrieve. Defaults to 20, with a maximum value of 300.
  • since (optional) – ISO 8601 timestamp. Only viewers seen at or after it are returned, and the action stops reading the list once it reaches older views. Combine it with limit: whichever boundary is hit first ends the retrieval.
  • then is not supported.

💡 since is matched against viewedAt, which is an estimate derived from the relative age LinkedIn displays (see the note below the result fields). A boundary that falls inside the displayed unit – for example a since in the middle of an hour when LinkedIn only says 6h – can therefore include or exclude a view near the edge. A viewer whose relative age could not be parsed at all is kept rather than dropped, since nothing proves it is older than the boundary.

💡 LinkedIn itself decides how much of your viewer history it shows. On an account without LinkedIn Premium, LinkedIn shows only part of the list, and the action returns what is visible – which can be fewer viewers than the requested limit. That is a successful result, not an error: there is no noPremium error and no truncation flag in the response.

Result options

This action always completes successfully.

json
{
  "actionType": "st.retrieveProfileViewers",
  "label": "viewers1",
  "success": true,
  "data": [
    {
      "viewerType": "identified",
      "viewedAt": "2026-08-11T07:20:00.000Z",
      "viewedAgo": "6h",
      "name": "Nicolai Elmqvist",
      "publicUrl": "https://www.linkedin.com/in/elmqvist",
      "urn": "urn:li:member:123456789",
      "headline": "Turn live event audiences into video creators",
      "connectionDegree": 2,
      "avatarUrl": "https://media.licdn.com/dms/image/profile-photo.jpg"
    },
    {
      "viewerType": "anonymous",
      "viewedAt": "2026-08-11T01:20:00.000Z",
      "viewedAgo": "12h",
      "description": "Business Strategist in the Computer and Network Security industry from Washington DC-Baltimore Area",
      "searchUrl": "https://www.linkedin.com/search/results/people/?keywords=Business+Strategist&origin=WHO_VIEWED_ME&industry=118&geoUrn=90000097"
    },
    {
      "viewerType": "anonymous",
      "viewedAt": "2026-08-11T09:20:00.000Z",
      "viewedAgo": "4h",
      "description": "Someone at Example Company",
      "searchUrl": "https://www.linkedin.com/search/results/people/?keywords=&origin=WHO_VIEWED_ME&currentCompany=71168977"
    }
  ]
}
  • label – included only if specified in the action parameters.
  • data – array of profile viewers, in the order LinkedIn shows them. An empty array is a legal, successful result: it means the profile viewers page rendered and there were no viewers to read from it.

Every item contains:

  • viewerType – how much LinkedIn revealed about the viewer. Enum with possible values:
    • identified – the viewer is shown with their profile.
    • anonymous – the viewer browsed privately, so LinkedIn withholds their profile and describes them only by the criteria it chose to disclose, such as a role, an industry and a region, or just a company.
  • viewedAt – estimated timestamp of the view, in ISO 8601. null when LinkedIn's relative time could not be recognized.
  • viewedAgo – normalized relative age of the view, such as 6h, 3d, 2w, or 1mo. null when LinkedIn's relative time could not be recognized.

Type-specific fields:

  • identified:
    • name – name of the viewer. Always present.
    • publicUrlpublic LinkedIn URL of the viewer. Always present.
    • urn – stable LinkedIn member URN of the viewer, in the form urn:li:member:<id>. Unlike the public URL, it does not change when the viewer edits their vanity name, so it is the better identifier to store. It is not always available: LinkedIn exposes it only for some viewers, so expect null on part of the list and fall back to publicUrl when it is missing.
    • headline – headline of the viewer. null when LinkedIn did not show it.
    • connectionDegree – your connection degree with the viewer as a number: 1, 2, or 3, where 3 also covers 3rd+. null when the degree badge is absent or not recognized.
    • avatarUrl – URL of the viewer's profile picture. null when LinkedIn did not show it.
  • anonymous:
    • description – verbatim description line shown by LinkedIn, for example "Business Strategist in the Computer and Network Security industry from Washington DC-Baltimore Area" or "Someone at Example Company". Always present.
    • searchUrl – LinkedIn people-search URL that LinkedIn itself offers for this anonymous viewer, carrying the criteria it disclosed. Always present. Open it to look for the viewer among matching people, or pass it to st.searchPeople as customSearchUrl.

Linked API deliberately returns these two fields as LinkedIn produced them, without splitting the description into position, industry, location, or company name. Those parts are stated in prose whose wording differs per interface language, so parsing them would silently produce wrong values on a language we have not verified. The criteria are also available in machine-readable form as the query parameters of searchUrl, so parse them there if you need them.

💡 viewedAt is an estimate. It is calculated as the moment the action ran minus the relative age LinkedIn displayed, so it is only as accurate as the unit LinkedIn showed: 6h means ±1 hour, 2mo means ±1 month. Months are counted as 30 days and weeks as 7 days. viewedAgo is the normalized relative age parsed from LinkedIn's own wording rather than the string LinkedIn displayed, so it is language-independent: a German account showing "vor 3 Tagen" returns 3d.