Linkedin inMaps discontinued : how to visualize your professional network now?

 /!\ Some functions of the Linkedin API mentioned in the following article were depreciated. This tutorial is no longer relevant.  /!\ 

One of the cool not-so-known feature of Linkedin was the ability to visualize your professional network. This was provided via inMaps and allowed everyone to get a feel of the communities and influencers in his own network. On August 31 this service will be discontinued but you can still visualize your Linkedin network.

Collect your data

First step first. We need to collect the information about our connections and their relationships. The good news is that Linkedin has a nice API anyone can use. The bad news is that this API only allows us to see our connections and the connections between them. Just like with inMaps, we will not be able to see the individuals we are not connected to.

We are going to need to register a new application with Linkedin to be able to use its API. Simply go here and sign in with your account (you do have an account, right?).

Signing in on Linkedin.

Signing in on Linkedin.

Choose “Add New Application”. Fill in your information. Choose “r_network” in the User Agreement section. In the OAuth url fields, enter “http://127.0.0.1:8001”. Copy the information about your API Key, Secret Key, OAuth User Token and OAuth User Secret. We’ll need this soon.

Register a new application.

Register a new application.

Save.

For the rest of the tutorial, we are going to need Python. If you do not have it yet, install it.

Start a local https server with Python : python -m HTTPServer 8001

Now it is time to start interacting with Linkedin. thankfully, Thomas Cabrol from Dataiku already went through the trouble to write some code : we are just going to use it. First, we’ll need a script for authentification.

Go ahead and create on your computer a file that contains the script above. You will need to replace “your-consumer-key-here” and “your-consumer-secret-here” by your API Key and your Secret Key. Now run the linkedin-1-oauth.py script : python linkedin-1-oauth.py Copy/paste the link provided by the application in your browser. Login and authorize your application to access your data. You should be redirected to your local server and see a chain of characters. Notice the digits after “oauth_verifier”. Copy them. Now go back to your python script. Hit “y”, as you have authorized your application. Enter your oauth_verifier. You should now see more information. credentials edited Copy the values for the “oauth_token” and “oauth_token_secret”. It is time to open our second script.

Just like for the first one, copy/paste the content in a text editor. Replace the values for CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN and OAUTH_TOKEN_SECRET. Replace “Thomas Cabrol” by your name.

Before you visualize the data, there is some cleaning up to do. Manually remove via a text editor or Excel all the lines that include Mr “private private”. Finally, run the last script.

The result of our work is a csv file titled linkedin.csv. It is kind of underwhelming compared to what Linkedin offered out of the box via inMaps. Don’t worry though we are going to transform this csv file in a nice graph.

Visualize your Linkedin network with Gephi

There are various ways to visualize our csv file. We are going to use Gephi, an open-source graph visualization tool.

In the next screen, simply choose ok. You can see that I have 1265 contacts. My contacts and I are linked through 4895 relationships.

ok gephi

The initial result is somewhat disappointing. It is hard to see anything in the maelstrom of nodes and edges.

initial network

Thankfully, Gephi comes with several layout algorithms. On the left side of the screen, select “ForceAtlas 2”. Let’s put “6” in the scaling line. Hit “run”, the nodes should start changing position. The more relationships two nodes have with each other the closer they will be displayed.

intermediate graph

You should see a few communities appear. I was not satisfied with these results saw I went an extra mile. To better understand the communities I’m linked to I :

  • activated the “Show node labels” to see who each node represented ;
  • ran the modularity algorithm in the Statistics panel (on the right). I went to the partition window (select Window > Partition) and choose to color the nodes according to their “Modularity class” ;
  • finally, I activated the degree range filter on the right panel ;

Part of the appeal of Gephi is that it offers so much customization options. The changes enabled me to produce this graph:

linkedin graph

I can see in that picture the different communities I’m a part of. For example, the Neo4j folks I know are in the bottom of the screen.

We could actually load the data in our csv file into a Neo4j graphdatabase easily in one single query :

LOAD CSV FROM ‘https://gist.githubusercontent.com/jvilledieu/91d131c04e45ef34f85b/raw/48d742425afaf4dbda56f9762ffcbf2b2797763e/linkedin.csv’ AS line
MERGE (p1:PERSON { name: line[0] })
MERGE (p2:PERSON { name: line[1] })
CREATE (p1)-[:IS_LINKED]->(p2)

Alternatively, we can use the Chrome Developer Tools to build a Neo4j database of our Linkedin graph. Now we can simply start Linkurious and visualize it. I can for example choose to focus on the contacts Sébastien Heymann (my co-founder) and I share. Once the data is plugged into Neo4j, I just have to look up Sébastien via Linkurious and expand his relationships :

The contacts Sébastien Heymann and Jean Villedieu share.

The contacts Sébastien Heymann and Jean Villedieu share.

As Linkedin inMaps is shut down, it is getting harder to visualize your Linkedin network. With a little help from Python and Gephi though, you can achieve very interesting results. It would be even better if Linkedin’s API provided us with more access to the data. I’d love to see who I share schools with, who are my contacts in a specific industry, etc. And you, what questions do you want to ask to your Linkedin graph?

Tags: , , , ,

26 Responses to “Linkedin inMaps discontinued : how to visualize your professional network now?”

  1. craigtutterow September 8, 2014 at 8:59 pm #

    Nice post and sad news. For those still interested in an automated way of visualizing and analyzing their LinkedIn network, check out http://socilab.com

    This is a web app (free/open-source) that visualizes one’s LinkedIn network using d3.js. It also calculates a number of metrics used in social network analysis and gives users the ability to download their network data. The source code is up on github as well.

  2. Adam September 29, 2014 at 3:16 pm #

    Fantastic post Jean – thank you! Does this work for Company accounts as well?

    • jean September 29, 2014 at 4:41 pm #

      Good question! I would have to try it.

  3. Danice Brown October 6, 2014 at 7:52 pm #

    Hi all! Trying to run this script using a new version of Python (3.4), and it is returning a few errors. Anyone know if this script has been updated anywhere? I’m pretty new to Python so I’m not sure how to do it myself….Thanks!

  4. Alf October 22, 2014 at 2:42 am #

    I get this error, running “python3 -m http.server 8001″ then :

    linkedin-1-oauth.py”, line 35
    print “Request Token:”
    ^
    SyntaxError: invalid syntax

    Any ideas?

  5. Robert November 24, 2014 at 4:29 pm #

    Hello and thanks a lot for the writeup.
    I am trying to run this from a Mac machine and am running into a few problems:
    a) In the API registration page the http://127.0.0.1:8001 URLs for the oAuth fields are NOT ACCEPTED 🙁
    b) The server on the MAC has to be started as: python -m SimpleHTTPServer 8001
    c) The linkedin-1-oauth.py code ends with the following error:

    Imac27RJA-2:linkedin graph Bob$ python linkedin-1-oauth.py
    Traceback (most recent call last):
    File “linkedin-1-oauth.py”, line 73, in
    l.dance()
    File “linkedin-1-oauth.py”, line 65, in dance
    self.request_token()
    File “linkedin-1-oauth.py”, line 33, in request_token
    raise Exception(“Invalid response %s.” % resp[‘status’])
    Exception: Invalid response 401.

    With the credentials being correct.

    Ideas ? Thanks

    • Robert November 24, 2014 at 4:45 pm #

      Ooops sorry. Update 🙂
      a) this is true but you can get around this by using bit.ly to shorten the http://127.0.0.1:8001 URL into another one that you’ll use in the API Oauth URL fields
      b) is true
      c) I had bungled the values, very sorry

      BUT

      Once I go to the URL to auth the app I do not get the oauth_verifier but am just redirected to the local 127.0.0.1:8001 page which simply shows the local file directory listing, hence I do not have the PIN you describe.

      Help please

      • Tyler Mitchell December 5, 2014 at 1:03 am #

        Hope you figured it out by now Robert, but I just did and thought I’d let you know too. After you paste the URL into the browser it will redirect you to a new URL. At the end of the URL is the PIN. Confusing for first time oauth users, to be sure!
        i.e. “70177” here http://127.0.0.1:8001/?oauth_token=75…..96&oauth_verifier=70177/

        —-
        (speaking of oauth challenges – I couldn’t log in with twitter or others to leave comments here, hopefully just me)

        • Robert December 5, 2014 at 7:40 am #

          Thanks Tyler but no it does not work for me. I am redicrected to a plain URL on my local webserver without any parameters and a listing of my local files only. No worries though. Found another code that works in just one step but found out Linkedin only doles out the first 10 random common links between me and any of my contacts ! Must have restricted the API maybe. Take care.

  6. peter comb November 27, 2014 at 3:56 pm #

    anybody get this working I am using latest Python and had it failing with import on oauth2. I down loaded this and saved it to the python lib directory but now getting
    file “c:\python34\lib\oauth2\__init__.py” line 105
    except unicodedecodeError, le:

  7. David Laxer May 19, 2015 at 4:20 pm #

    Hi,

    I’m getting an exception trying to connect to LinkedIn.
    Any ideas?

    /Users/davidlaxer/anaconda/bin/python2 /Users/davidlaxer/workspace/LinkedInGraph/Authorization.py
    Traceback (most recent call last):
    File “/Users/davidlaxer/workspace/LinkedInGraph/Authorization.py”, line 79, in
    l.dance()
    File “/Users/davidlaxer/workspace/LinkedInGraph/Authorization.py”, line 71, in dance
    self.request_token()
    File “/Users/davidlaxer/workspace/LinkedInGraph/Authorization.py”, line 37, in request_token
    resp, content = client.request(request_token_url, “POST”)
    File “/Users/davidlaxer/anaconda/lib/python2.7/site-packages/oauth2/__init__.py”, line 682, in request
    connection_type=connection_type)
    File “/Users/davidlaxer/anaconda/lib/python2.7/site-packages/httplib2/__init__.py”, line 1570, in request
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
    File “/Users/davidlaxer/anaconda/lib/python2.7/site-packages/httplib2/__init__.py”, line 1317, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
    File “/Users/davidlaxer/anaconda/lib/python2.7/site-packages/httplib2/__init__.py”, line 1252, in _conn_request
    conn.connect()
    File “/Users/davidlaxer/anaconda/lib/python2.7/site-packages/httplib2/__init__.py”, line 1044, in connect
    raise SSLHandshakeError(e)
    httplib2.SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)

    Process finished with exit code 1

  8. jeremie May 27, 2015 at 7:46 am #

    Hi, it doesn’t seem to be possible any more to give a local address to register a new app…

    I tried Socilab as it gives you the possibility to download your matrix of contacts with the interconnection, but limited to 500×500 size.

    The option in Linkedin to download your data is nice, but you don’t get the matrix of inter-connection.

    Any ideas? Thanks.

  9. sj September 26, 2015 at 6:46 pm #

    Can I no longer import 1st degree connections even after authorization?

    • Dennis Jaheruddin February 5, 2016 at 10:48 pm #

      It seems like Linkedin now prevents users and app developers to use the network information. The only way around this seems to be the socilab solution (for legacy reasons they are allowed to keep using that information up to 500 connections), and I guess this article should be updated with a warning on top to prevent people from wasting time on int.

      • Marisa March 15, 2016 at 8:34 pm #

        Hi Dennis, I used to download my linkedin connections using socilab. However, now it is only possible to “visualize” first orde connections. Do you know an alternative to this? Many thanks

  10. Laurence March 10, 2017 at 8:49 pm #

    Hello,

    I dont’ have the option to select r_networks in the Default Scope section. I only have the following options:
    – r_basicprofile
    – r_emailaddress
    – rw_company_admin
    – w_share

    Does this mean we can’t download our network information anymore?

    Thanks!

    • Edward March 15, 2017 at 7:22 pm #

      Same here, I enabled r_basicprofile, and tried to run everything, but get the following error:
      Exception: Invalid response 403.

      Does it work any more?

      • R R. May 26, 2017 at 3:44 pm #

        Same Here… is there a way to fix this?

Trackbacks/Pingbacks

  1. Social Graph - Year in Review (Preparation) - spatialguru.com - December 18, 2014

    […] pulled this visualization of my LinkedIn social graph together in just a few minutes while working through a tutorial.  What about other social networks?  Give me your […]

  2. Herramientas que te permitirán entender qué información compartes en Internet « Christian Ariza - February 19, 2015

    […] LinkedIn dejó de soportar,  hace relativamente poco, InMaps, una herramienta que permitía visualizar la red social y detectar comunidades, algo interesante especialmente por la naturaleza de las conexiones.  Con algo de conocimiento de programación, usando el API de LinkedIn y Gephi, podemos hacerlo. […]

  3. How to visualize a LinkedIn network | DL-UAT - March 15, 2015

    […] So far the only solution that I have found that may work, is a combination of Python & Gephi as suggested here. […]

  4. This is Your Life! (brought to you by LinkedIn & Python & Gephi) :: Peter Eliason - April 3, 2015

    […] I begin, I need to give the majority of the credit for this experience to the author of this post on Linkurio. The author goes by the pseudonym, Jean, and that’s all I’m able to find out. Thank […]

  5. It’s All Who You Node: Visualizing Your LinkedIn Community – Jay Gordon - July 30, 2016

    […] are other tools out there, you’ve just got to do some digging around. For all you tech heads, here you’ll find a method of using Python and a tool called Gephi to pull the LinkedIn data and do […]

Leave a Reply

Subscribe to our newsletter

Receive monthly updates about Linkurious and graph related news.

Follow us