LinkedIn is the world’s largest professional network with over 850 million members worldwide. As a business networking and recruitment site, LinkedIn allows members to create profiles representing their professional identities, interests, and careers. One of LinkedIn’s most useful features for businesses is the ability to retrieve contact details of other members via LinkedIn’s contacts API.
What is the LinkedIn Contacts API?
The LinkedIn Contacts API is a web service that allows authenticated applications to retrieve contact details of LinkedIn members with their permission. This includes information like email addresses, phone numbers, Twitter handles, as well as profile fields such as first name, last name, headline, location, industry, skills, and more.
With the Contacts API, businesses can build services that let LinkedIn members easily share their professional details. For example, an applicant tracking system could use the API to let candidates import their LinkedIn profiles. Or a CRM tool could automatically capture lead contact info from LinkedIn for sales reps. The API opens up many possibilities to streamline business workflows leveraging LinkedIn data.
Key Capabilities
Here are some of the key things the LinkedIn Contacts API allows an authenticated app to do:
- Retrieve member profile fields like name, headline, location, etc.
- Get contact details like email address, phone numbers, Twitter handle
- Access work history, education, skills, certifications, volunteering and more
- Look up connections, groups and interests
- Search profiles based on criteria like name, company, title, keywords
The Contacts API provides ample flexibility to access relevant data on LinkedIn members. And it uses OAuth 2.0 to handle authentication and authorization in a secure manner.
How to Get Started with the LinkedIn Contacts API
To start retrieving LinkedIn contact details, you will need to follow these steps:
1. Get a LinkedIn Developer Account
First, you need to sign up for a LinkedIn Developer Program account at linkedin.com/developers. This is free and provides access to LinkedIn’s suite of APIs and SDKs.
2. Register Your App
Once signed up, you can register a new app within the LinkedIn Developer Portal. This will generate a Client ID and Client Secret which are needed to authenticate against the APIs.
3. Implement OAuth 2.0 Flow
The Contacts API leverages OAuth 2.0 for secure authentication and authorization. Your app needs to implement the OAuth flow to get access tokens for LinkedIn API calls. This involves redirecting users to LinkedIn to log in and authorize data access.
4. Make API Calls
Finally, you can start calling the Contacts API endpoints to retrieve member data. The primary endpoints you will use are:
- /v2/clientAwareMemberHandles – lookup member profile data
- /v2/emailAddress – retrieve member email addresses
- /v2/phoneNumbers – get member phone numbers
There are many more endpoints to get other profile fields, work experience, connections, etc. Refer to the LinkedIn API documentation for details.
Sample API Request
Here is sample Python code making a call to the clientAwareMemberHandles endpoint to retrieve member data:
```python import requests api_url = "https://api.linkedin.com/v2/clientAwareMemberHandles" headers = { "Authorization": "Bearer" } params = { "q": "John Smith", "projection": "(elements*(primary,type,handle~))" } response = requests.get(api_url, headers=headers, params=params) print(response.json()) ```
This searches for the member “John Smith” and returns back profile details including name, headline, and public identifier.
Output
The Contacts API will return profile data in JSON format like this:
```json { "elements": [ { "primary": true, "type": "PROFILE", "handle~": { "emailAddress": "[email protected]", "firstName": "John", "headline": "Software Engineer at ACME Inc.", "lastName": "Smith", "profileId": "ACoAAAKen_MBbEefG1234ZvzRUXQwWeHjjJb4xY" } } ] } ```
This provides John’s email, name, headline and other fields. The profileId is LinkedIn’s unique identifier for the member.
Retrieving Email Addresses
To specifically get just the email address, you can call the /emailAddress endpoint instead:
```python api_url = "https://api.linkedin.com/v2/emailAddress" headers = { "Authorization": "Bearer" } params = { "q": "[email protected]" } response = requests.get(api_url, headers=headers, params=params) print(response.json()) ```
This will return back:
```json { "elements": [ { "handle~": { "emailAddress": "[email protected]" }, } ] } ```
So with a simple API call, you can retrieve the member’s email address without needing to parse a larger profile response.
Use Cases
Here are some examples of how the LinkedIn Contacts API could be used:
- Enriching CRM data – Fetch LinkedIn profile data to add more context to leads/contacts in a CRM system.
- Pre-populating forms – Retrieve member info to auto-fill online forms, reducing tedious data entry.
- Building Chrome extensions – Create browser extensions that show LinkedIn data when on another site.
- Directory services – Build custom staff directories driven by LinkedIn profile data.
- Business intelligence – Analyze connections, groups, interests, and other data for business insights.
Limitations
While powerful, the Contacts API does have some limitations to be aware of:
- Rate limits – API calls are rate limited to ensure availability.
- User authorization – Users must authorize each app before their data can be accessed.
- Data freshness – Profile data may not be completely up-to-date.
- Partial data access – Applications are not granted full profile access.
So you need to employ caching, graceful throttling, and understand you may not get 100% of profile fields. Plan your app’s Contacts API usage carefully.
LinkedIn API Versions
It’s worth noting that LinkedIn actually provides two versions of its APIs:
- V1 APIs – Original REST APIs with simple endpoints.
- V2 APIs – Newer GraphQL based APIs with more advanced options.
The V2 GraphQL APIs are more flexible and capable, but do require reworking code for the different structure. Check the LinkedIn documentation for details on migrating.
Conclusion
The LinkedIn Contacts API provides powerful access to LinkedIn profile data for authorized apps. It enables looking up member handles, email addresses, phone numbers and a wide range of other fields. With the right usage, it can add professional context to many business applications. Be sure to thoroughly understand the capabilities, limitations and migration options before integrating the API into your software.
Here is a summary of the key points:
- Provides apps access to LinkedIn profile data via API
- Enables getting email address, name, headline, and more
- Uses OAuth 2.0 for secure authentication
- Rate limits, user authorization, and data freshness limitations exist
- Powerful for enriching CRM, forms, directories, extensions etc
- Migrating to newer V2 GraphQL API is recommended
With robust LinkedIn integration via the Contacts API, businesses can create more powerful applications and unlock professional insights.