ProfileStub

A person as a Sales Navigator search card describes them.

Returned bysales.search.peoplesales.search.employeesSearchPage.results

Fields #

FieldTypeNotes
public_identifierstringOnly when the card carried a vanity URL, which is not always.
urnstringThe opaque member id. Always present, and what to enrich by.
member_idinteger
urlstringLinkedIn serves /in/<opaque urn> as happily as /in/<vanity>.
first_namestring
last_namestring
full_namestring
headlinestringOften absent on a search card; the current position is what renders instead.
summarystringThe profile blurb. Present on roughly half of measured cards.
locationstringA rendered string ("Helsinki, Finland"). The search card carries no structured place, so neither does this.
avatar_urlstring
premiumboolean
open_linkbooleanThe member accepts messages from outside their network. Their setting, not anything about the account that searched.
memorializedbooleanThe account belongs to someone who has died.
opted_out_of_data_sharingbooleanThe member's own third-party data opt-out. It is on the record because honouring it is your obligation as much as ours, and you cannot honour a flag you cannot see.
current_positionsPosition[]
past_positionsPosition[]
educationsEducation[]Only from decorations that carry it.
skillsstring[]Only from decorations that carry it.
connectionsintegerOnly from decorations that carry it.
profileProfileThe full record, present only when the search ran with enrich: true.
emailsEmailFindingsThe work email lookup, present when the search was submitted with find_emails. On the ROW rather than inside profile, and present even when both flags were sent: a search card already carries the name and the current employer, which is everything a lookup needs, so addresses do not depend on enrichment and you never have to buy a record you did not want in order to reach them.
scraped_atstring (RFC 3339)When this record was taken. On every record, because "never cached" is only a credible claim if the record says when it was fetched.

Absent is not null: a field we did not get is omitted rather than sent as an empty string, so you can tell "LinkedIn does not have this" from "this person left it blank".

Sample #

JSON
{
  "urn": "ACwAAAyHg0MB",
  "member_id": 219386421,
  "url": "https://www.linkedin.com/in/ACwAAAyHg0MB",
  "full_name": "Elina Virtanen",
  "headline": "Head of Engineering",
  "location": "Helsinki, Finland",
  "premium": true,
  "open_link": false,
  "memorialized": false,
  "opted_out_of_data_sharing": false,
  "current_positions": [
    {
      "title": "Head of Engineering",
      "current": true,
      "company_name": "Supercell",
      "company_id": 1042569,
      "tenure_months": 41
    }
  ],
  "emails": {
    "status": "catch_all",
    "email": "[email protected]",
    "pattern": "{first}.{last}@{domain}",
    "domain": "supercell.com",
    "checked_at": "2026-09-01T10:00:13Z"
  },
  "scraped_at": "2026-09-01T10:00:12Z"
}