LinkedIn Data API: profile, jobs, inbox and viewers
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
API surface
Fetch signed-in member (me)
GET
/v1/account/meosintReturns 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}osintLoads 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}/contactosintReturns 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}opendataHydrates 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/threadsosintPages 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-viewsopendataReturns 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.