LinkedIn: Community & Network icon

LinkedIn Data API: profile, jobs, inbox and viewers

LinkedIn · Identity

LinkedIn: Community & Network organizes its data API around the signed-in member. The session bootstrap lands on /v1/account/me (plainId, MiniProfile, premiumSubscriber); the profile tab then loads /v1/profiles/{profileId} and the contact sheet at /v1/profiles/{profileId}/contact (emailAddress, phoneNumbers, weChatHandle). Jobs hydrate from /v1/jobs/postings/{jobId}, the inbox pages /v1/messages/threads, and Who Viewed My Profile reads /v1/analytics/profile-views. Every call carries a session cookie plus a CSRF token header mirrored from it.

LinkedIn: Community & Network (package com.linkedin.android, app version 6.1.1) is LinkedIn's Android client for member profiles, the home feed, jobs, messaging and who-viewed-my-profile. Its data API is organized around a signed-in member record (plainId, MiniProfile with firstName, lastName, occupation, publicIdentifier), full profile resources, a relationship-gated contact card (emailAddress, phoneNumbers, weChatHandle), job postings (formattedLocation, jobState, workRemoteAllowed), paged inbox threads (unreadCount, participants) and profile-view cards (viewedAt, referrer). Calls ride on a signed-in session cookie with a mirrored CSRF token header, plus an installation id and a client-tracking JSON blob (clientVersion, osName).

Screenshots

  • LinkedIn: Community & Network screenshot 1
  • LinkedIn: Community & Network screenshot 2
  • LinkedIn: Community & Network screenshot 3
  • LinkedIn: Community & Network screenshot 4
  • LinkedIn: Community & Network screenshot 5
  • LinkedIn: Community & Network screenshot 6

API surface

  • Fetch signed-in member (me)

    GET /v1/account/me osint

    Returns the signed-in member record that every other screen hangs off: numeric plainId, MiniProfile (name, headline, public vanity id) and public contact handles.

    Auth: Signed-in session cookie; CSRF token header mirrored from the session cookie; installation-id header; client-tracking JSON header (clientVersion, osName).

    • plainId
    • premiumSubscriber
    • realByEmerald
    • miniProfile
    • entityUrn
    • objectUrn
    • firstName
    • lastName
    • occupation
    • publicIdentifier
    • trackingId
    • publicContactInfo
    • twitterHandles

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/account/me HTTP/1.1
    Accept: application/json
    X-CSRF-Token: <csrf-token>
    X-Client-Id: <installation-id>
    X-Client-Track: {"osName":"Android","clientVersion":"6.1.1","osVersion":"13","deviceModel":"Google_Pixel"}
    Cookie: session=<session-token>
    {
      "plainId": 123456789,
      "premiumSubscriber": false,
      "realByEmerald": true,
      "miniProfile": {
        "entityUrn": "urn:li:fs_miniProfile:ACoAAExample01",
        "objectUrn": "urn:li:member:123456789",
        "firstName": "Alex",
        "lastName": "Rivera",
        "occupation": "Product Manager at Example Corp",
        "publicIdentifier": "alex-rivera",
        "trackingId": "aq1b2c3d4e5=="
      },
      "publicContactInfo": {
        "twitterHandles": [{"name": "alexrivera"}]
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the app's signed-in member bootstrap flow.
    • Field set matches the member record bound to the Me tab.
  • Fetch member profile

    GET /v1/profiles/{profileId} osint

    Loads the full identity profile (name, headline, industry, geo, summary, WeChat name-card URL) used by the profile tab and /in/{publicIdentifier} deep links.

    Auth: Signed-in session cookie; CSRF token header mirrored from the session; installation-id and client-tracking headers.

    • entityUrn
    • firstName
    • lastName
    • maidenName
    • headline
    • summary
    • industryName
    • industryUrn
    • locationName
    • geoCountryName
    • geoLocationName
    • address
    • phoneticFirstName
    • phoneticLastName
    • student
    • versionTag
    • weChatNameCardURL
    • miniProfile
    • publicIdentifier

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/profiles/ACoAAExample01 HTTP/1.1
    Accept: application/json
    X-CSRF-Token: <csrf-token>
    X-Client-Id: <installation-id>
    Cookie: session=<session-token>
    {
      "entityUrn": "urn:li:fs_profile:ACoAAExample01",
      "firstName": "Alex",
      "lastName": "Rivera",
      "maidenName": "",
      "headline": "Product Manager at Example Corp",
      "summary": "Building identity products.",
      "industryName": "Software Development",
      "industryUrn": "urn:li:fs_industry:4",
      "locationName": "San Francisco Bay Area",
      "geoCountryName": "United States",
      "geoLocationName": "San Francisco, California, United States",
      "address": "San Francisco, CA",
      "phoneticFirstName": "Alex",
      "phoneticLastName": "Rivera",
      "student": false,
      "versionTag": "1234567890",
      "weChatNameCardURL": "",
      "miniProfile": {
        "publicIdentifier": "alex-rivera",
        "occupation": "Product Manager at Example Corp"
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the profile screen's data binding.
    • Public profile deep links resolve through the same resource.
  • Fetch profile contact info

    GET /v1/profiles/{profileId}/contact osint

    Returns the profile's private contact card — email, phones, websites, Twitter handles and WeChat QR — shown on the contact-info sheet after a connection is accepted.

    Auth: Signed-in session cookie; CSRF token header. The contact payload is gated by the viewer's relationship to the profile.

    • entityUrn
    • emailAddress
    • address
    • connectedAt
    • phoneNumbers
    • number
    • extension
    • type
    • websites
    • twitterHandles
    • weChatContactInfo
    • name
    • weChatHandle
    • qr
    • qrCodeImageUrl
    • birthDateOn
    • birthdayVisibilitySetting

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/profiles/ACoAAExample01/contact HTTP/1.1
    Accept: application/json
    X-CSRF-Token: <csrf-token>
    Cookie: session=<session-token>
    {
      "entityUrn": "urn:li:fs_profileContactInfo:ACoAAExample01",
      "emailAddress": "[email protected]",
      "address": "San Francisco, CA",
      "connectedAt": 1609459200000,
      "phoneNumbers": [
        {"number": "+15555550100", "extension": "", "type": "MOBILE"}
      ],
      "websites": [{"url": "https://example.com"}],
      "twitterHandles": [{"name": "alexrivera"}],
      "weChatContactInfo": {
        "name": "Alex Rivera",
        "weChatHandle": "alex_rivera",
        "qr": "weixin://contacts/profile/alex_rivera",
        "qrCodeImageUrl": "https://cdn.example.com/wechat/qr.png"
      },
      "birthDateOn": {"month": 4, "day": 12},
      "birthdayVisibilitySetting": "CONNECTIONS"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the contact-info sheet shown after a connection is accepted.
    • Payload visibility varies with the viewer's relationship to the profile.
  • Fetch job posting

    GET /v1/jobs/postings/{jobId} opendata

    Hydrates a single job card (title, location, listing state, remote flag, apply/save state and company urn) for the jobs tab and job-view deep links.

    Auth: Signed-in session cookie; CSRF token header; client-tracking header.

    • entityUrn
    • title
    • formattedLocation
    • listedAt
    • closedAt
    • jobState
    • listingType
    • workRemoteAllowed
    • talkToRecruiterEnabled
    • sourceDomain
    • applyingInfo
    • savingInfo
    • companyDetails
    • company
    • companyResolutionResult

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/jobs/postings/4123456789 HTTP/1.1
    Accept: application/json
    X-CSRF-Token: <csrf-token>
    Cookie: session=<session-token>
    {
      "entityUrn": "urn:li:fs_normalized_jobPosting:4123456789",
      "title": "Staff Product Manager",
      "formattedLocation": "San Francisco, CA",
      "listedAt": 1759276800000,
      "closedAt": 0,
      "jobState": "LISTED",
      "listingType": "PREMIUM",
      "workRemoteAllowed": true,
      "talkToRecruiterEnabled": true,
      "sourceDomain": "example.com",
      "applyingInfo": {"applied": false},
      "savingInfo": {"saved": false},
      "companyDetails": {
        "company": "urn:li:fs_miniCompany:1337",
        "companyResolutionResult": {"name": "Example Corp"}
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the job detail card flow.
    • Saved and applied job lists query the same posting resource.
  • List messaging conversations

    GET /v1/messages/threads osint

    Pages the signed-in inbox (thread urn, participants' MiniProfiles, unread counts, mute/archive/block flags) that powers the messaging tab.

    Auth: Signed-in session cookie; CSRF token header. Collection paging via start/count.

    • elements
    • entityUrn
    • backendUrn
    • name
    • read
    • muted
    • archived
    • blocked
    • unreadCount
    • totalEventCount
    • withNonConnection
    • notificationStatus
    • participants
    • miniProfile
    • paging
    • start
    • count
    • total

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/messages/threads?start=0&count=20 HTTP/1.1
    Accept: application/json
    X-CSRF-Token: <csrf-token>
    Cookie: session=<session-token>
    {
      "elements": [
        {
          "entityUrn": "urn:li:fs_conversation:2-YWM5YzA=",
          "backendUrn": "urn:li:messagingThread:2-YWM5YzA=",
          "name": "Alex Rivera, Sam Lee",
          "read": false,
          "muted": false,
          "archived": false,
          "blocked": false,
          "unreadCount": 2,
          "totalEventCount": 18,
          "withNonConnection": false,
          "notificationStatus": "ACTIVE",
          "participants": [
            {
              "miniProfile": {
                "firstName": "Sam",
                "lastName": "Lee",
                "publicIdentifier": "sam-lee",
                "occupation": "Recruiter at Example Corp"
              }
            }
          ]
        }
      ],
      "paging": {"start": 0, "count": 20, "total": 42}
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the inbox conversation list flow.
    • Collection paging follows an offset/count convention.
  • List who-viewed-my-profile cards

    GET /v1/analytics/profile-views opendata

    Returns the Who Viewed My Profile cards (viewer MiniProfile or obfuscated viewer, viewedAt, referrer, InMail CTA) shown on the Me / analytics tab.

    Auth: Signed-in session cookie; CSRF token header. Viewer identity is full or obfuscated depending on subscription tier.

    • elements
    • viewedAt
    • referrer
    • pendingInvitee
    • showInMailCta
    • openProfile
    • viewer
    • profile
    • occupation
    • insights
    • timeRange
    • paging

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/analytics/profile-views?start=0&count=10 HTTP/1.1
    Accept: application/json
    X-CSRF-Token: <csrf-token>
    Cookie: session=<session-token>
    {
      "elements": [
        {
          "viewedAt": 1759276800000,
          "referrer": "SEARCH",
          "pendingInvitee": false,
          "showInMailCta": true,
          "openProfile": true,
          "viewer": {
            "type": "FULL",
            "profile": {
              "firstName": "Sam",
              "lastName": "Lee",
              "publicIdentifier": "sam-lee"
            },
            "occupation": {"name": "Recruiter at Example Corp"}
          },
          "insights": [{"text": "Works at Example Corp"}]
        }
      ],
      "metadata": {"timeRange": {"start": 1756684800000, "end": 1759276800000}},
      "paging": {"start": 0, "count": 10, "total": 27}
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the Who Viewed My Profile analytics screen.
    • Viewer identity resolves to a full or obfuscated profile depending on subscription tier.

Data categories

  • user-profile
  • contact-info
  • jobs
  • messaging
  • profile-views
  • network

Where teams use this data

  • Recruiter sourcing copilots

    Sourcing tools fetch member profiles, profile contact info and job postings to assemble candidate shortlists — headline, industry, location and contact channels in one record.

  • Personal CRM sync

    Founder and sales CRMs mirror messaging threads and the who-viewed-my-profile feed, turning profile visits and unread conversations into follow-up tasks.

  • Job-market monitoring

    Market-research pipelines track job postings over time — listed/closed dates, remote eligibility, hiring company — to map which industries are hiring where.

Frequently asked questions

What does the LinkedIn Android data API cover?

Six resource groups: the signed-in member record at /v1/account/me, full profiles at /v1/profiles/{profileId}, a relationship-gated contact card under the profile, job postings at /v1/jobs/postings/{jobId}, the paged inbox at /v1/messages/threads, and Who Viewed My Profile cards at /v1/analytics/profile-views.

How does the app authenticate those endpoints?

Every call requires a signed-in session cookie. State-changing style protection comes from a CSRF token header whose value mirrors the session, and the client also stamps an installation id plus a client-tracking JSON blob carrying clientVersion and osName.

Which profile fields does the API return?

The profile resource includes firstName, lastName, headline, summary, industryName, locationName, geoCountryName, address, phonetic names, versionTag and weChatNameCardURL, plus a nested MiniProfile (publicIdentifier, occupation). The contact subresource adds emailAddress, phoneNumbers, websites, twitterHandles and weChatContactInfo (weChatHandle, qr, qrCodeImageUrl).

Where do jobs and inbox threads fit in?

Job cards are posting records at /v1/jobs/postings/{jobId} (title, formattedLocation, jobState, workRemoteAllowed, companyDetails). Messaging uses /v1/messages/threads, an offset-paged collection of conversation records with entityUrn, participants, unreadCount and notificationStatus.

Topics

  • linkedin api
  • linkedin profile api
  • linkedin member endpoint
  • linkedin job postings api
  • linkedin messaging api
  • who viewed my profile api
  • linkedin contact info fields
  • linkedin session cookie auth
  • linkedin mini profile
  • linkedin android data api

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

Get a quote