The LinkedIn “Endorsing” Problem and Solution

The Problem.

I use LinkedIn to connect with people that I think have integrity. I want to show them my support by endorsing their skills, but I’ve accrued too many connections to afford the time.


The Solution.

Using 2 programming languages, one program, and two program extensions: I can endorse them all.

That’s a long list of requirements so if you have a better way, I guess you should go for it! Oh wait, you don’t. Neither does anyone who’s willing to share it. You can go Google your life away now.

Still here? Sweet! Here’s what we’ll need:

If you think that you’re technical enough to get set up with just this list and the source code, visit or clone my GitHub repository here.

Note: Due to LinkedIn frequently updating their website’s User Interface, the code snippets below may have become outdated. The snippets below were last updated on Jan 10, 2018.

Scrape Your Connection’s URLs

First and foremost, we’re going to scrape URLs to your connection’s profiles into a CSV file using the Chrome console (Or Firefox). Open this web page and paste the following into the console.

This Javascript code reports all of your connection’s profiles URLs back to the console! It first scrolls down the page for one minute because LinkedIn developers used a lazy loading AJAX technique on this page.


Right click on the console output, and click “Save As”. Go to the file and clean up anything in it that isn’t a URL or a newline character. Then, create a new CSV file in the root of you iMacros directory and paste the data into the CSV file. Save it!


Write an iMacros Script to Iterate the Profiles

Open the iMacros extension and paste the following into a new macro. LIC.csv is the name of my CSV file.

This code will navigate from one profile page to another, after waiting on each page for 15 seconds. During those 15 seconds, Javascript code will execute to do the actual endorsing – which leads me to the next part.

Write JS for GreaseMonkey to Endorse each Connection

Create a new user script and make the include and match patterns this:*

Then paste the following code into the user script.

This code scrolls to the bottom of the page for 9 seconds – again, this page uses the lazy loading AJAX technique. Then, it expands an area containing the skills and their respective endorsing buttons. Once exposed, the top 40 skills that aren’t already endorsed, are endorsed. Only 40 can be endorsed at a time without violating LinkedIn’s AJAX request limitation. To endorse the next 40 skills in your connections list, just run the script again. Most people won’t have over 40 skills listed.

Run the iMacros Script and Watch the Magic.

Count the lines in your CSV file, and loop the iMacros script that many times. Once it starts looping, you can watch your connections receive your unfettered love for them.screenshot_2017-02-19_17-05-59


This concludes today’s LinkedIn lecture! 😉