Profile API

Note

The use of this API is restricted to those developers approved by LinkedIn and subject to applicable data restrictions in their agreements.

The Profile API returns a member's LinkedIn profile, subject to the member's privacy settings.

Usage

You must use an access token to make an authenticated call on behalf of a user.

Note

You may only store data returned from the Profile API for the authenticated members with their permission. Please refer to this document for guidance on storing authenticated member data. You may never store data returned from the Profile API for members other than the authenticated member.

Retrieve Current Member's Profile

Permissions

This API requires one of the following permissions:

Permission Description
r_liteprofile Required to retrieve name and photo for the authenticated user. Please review Lite Profile Fields.
r_basicprofile Required to retrieve name, photo, headline, and vanity name for the authenticated user. Please review Basic Profile Fields. Note that the v2 r_basicprofile permission grants only a subset of fields provided in v1.
r_compliance [Private permission] Required to retrieve your activity for compliance monitoring and archiving. This is a private permission and access is granted to select developers.

Request

To identify and retrieve the current member's profile based on the access token, simply call:

GET https://api.linkedin.com/v2/me

Sample Response

{
   "firstName":{
      "localized":{
         "en_US":"Bob"
      },
      "preferredLocale":{
         "country":"US",
         "language":"en"
      }
   },
   "localizedFirstName": "Bob",
   "headline":{
      "localized":{
         "en_US":"API Enthusiast at LinkedIn"
      },
      "preferredLocale":{
         "country":"US",
         "language":"en"
      }
   },
   "localizedHeadline": "API Enthusiast at LinkedIn",
   "vanityName": "bsmith",
   "id":"yrZCpj2Z12",
   "lastName":{
      "localized":{
         "en_US":"Smith"
      },
      "preferredLocale":{
         "country":"US",
         "language":"en"
      }
   },
   "localizedLastName": "Smith",
   "profilePicture": {
        "displayImage": "urn:li:digitalmediaAsset:C4D00AAAAbBCDEFGhiJ"
   }
}

Retrieve Other Member's Profile

To retrieve another member's profile, you will need access to the Person ID, available only via certain limited access APIs and subject to member privacy settings.

GET https://api.linkedin.com/v2/people/(id:{person ID})

You can also retrieve multiple profiles at once:

GET https://api.linkedin.com/v2/people?ids=List((id:{Person ID1}),(id:{Person ID2}),(id:{Person ID3}))

Note

In order to make the sample calls above succeed, you must include X-RestLi-Protocol-Version:2.0.0 in your request header.

This API will only return data for members who haven't limited their Off-LinkedIn Visibility.

Field Selections

By default, only the Lite Profile Fields are returned for a profile request. See the Profile Fields document for a full list of supported fields.

To request more or less fields, you must have additional permissions that are only granted to select partners. Please refer to the field projections on proper syntax. Below is a sample request:

GET https://api.linkedin.com/v2/people/(id:{profile ID})?projection=(id,firstName,lastName)

Person ID

The id returned in the response is the unique identifier of the user. This should be stored and referenced where possible as LinkedIn APIs utilize both URNs and IDs. In our API documentation, we reference this id as person ID.

Note

Each member id is unique to the context of your application only. Sharing a person ID across applications will not work and result in a 404 error.

Public Profile URL

The vanityName from Basic Profile Fields is used to represent the public profile URL in the follow format: www.linkedin.com/in/{vanityName}.

New Location Display Name

The geoLocation from Location Fields is the new location field. As LinkedIn transitions through the Bing Geo location migration, we will try to maintain backwards compatibility with the legacy location and locationName field as much as possible.

Note

All use of the Microsoft Bing Maps location data is subject to Microsoft Bing Maps and MapPoint Web Service End User Terms of Use and Embedded Maps Service Terms of Use and the Microsoft Privacy Statement. By accessing any Microsoft Bing Maps location data, you are agreeing to be bound by these Microsoft terms.

To determine a member's profile location, refer to the geoLocation field. If the autoGenerated field is false, then the member's location has already migrated to Bing Geo taxonomy. This means that the most up-to-date display name is retrieved from geo field in geoLocation. If the field is true, then you can rely on either location or geo in geoLocation.

In order to get the display name from the geo URN value of geo field, please use the Geo API. Alternatively, you can utilize decoration in your Profile request:

GET https://api.linkedin.com/v2/me?projection=(geoLocation(geo~,autoGenerated))

GET https://api.linkedin.com/v2/people/(id:{person ID})?projection=(geoLocation(geo~,autoGenerated))
{
  "geoLocation": {
    "geo": "urn:li:geo:12345",
    "autoGenerated": false,
    "geo~": {
      "id": 12345,
      "defaultLocalizedName": {
        "locale": {
          "country": "US",
          "language": "en"
        },
        "value": "San Francisco Bay Area"
      }
    }
  }
}

Legacy Location Display Name

The location from Profile Fields contains several fields that are used to determine the member's displayed location nam

If the userSelectedGeoPlaceCode is present, then you will need to call Places API - GET to retrieve the name. To use the API, you will need to translate the countryCode to a countryURN by simply appending urn:li:country: in front of the code. See below for an example:

{
   "location":{
      "postalCode":"12345",
      "standardizedLocationUrn":"urn:li:standardizedLocationKey:(us,12345)",
      "userSelectedGeoPlaceCode":"1-1-0-23-30",
      "countryCode":"us"
   }
}
GET https://api.linkedin.com/v2/places/country=urn:li:country:us&placeCode=1-1-0-23-30

If the userSelectedGeoPlaceCode is NOT present, then you will need to call Regions API - FINDER standardizedLocation to retrieve the name. To use the API, you will input the standardizedLocationUrn value into the standardizedLocation parameter. See below for an example:

{
   "location":{
      "postalCode":"12345",
      "standardizedLocationUrn":"urn:li:standardizedLocationKey:(us,12345)",
      "countryCode":"us"
   }
}
GET https://api.linkedin.com/v2/regions?q=standardizedLocation&standardizedLocation=urn:li:standardizedLocationKey:(us,12345)

Once you make the appropriate request, you can simply retrieve the display location name from the value of the name field for each respective API.