Export your LinkedIn followers list as a CSV file with names, roles, and profile links.
linkedin_followers.csv file. 📋 LinkedIn
Followers copies the CSV text so you can paste it."name","role","profile_url" "Jane Doe","Senior Engineer @ Google","https://www.linkedin.com/in/janedoe" "John Smith","Product Manager @ Meta","https://www.linkedin.com/in/johnsmith"
These bookmarklets run entirely in your browser. Here is the full unminified source so you can verify exactly what they do.
function extractFollowers(doc) {
var links = doc.querySelectorAll(
'a[href*="miniProfileUrn"]:not([aria-hidden])'
);
if (!links.length) {
return { error: "no_cards", followers: [], skipped: 0 };
}
var followers = [];
var skipped = 0;
links.forEach(function (nameEl) {
var name = nameEl.textContent.trim();
if (!name) {
skipped++;
return;
}
// Walk up from the <a> to find the first ancestor whose next sibling is a <div> — that sibling is the role
var roleEl = null;
var node = nameEl;
while (node && node !== doc.body) {
var sibling = node.nextElementSibling;
if (sibling && sibling.tagName === "DIV") {
roleEl = sibling;
break;
}
node = node.parentElement;
}
var role = roleEl ? roleEl.textContent.trim() : "";
var url = nameEl.href.split("?")[0];
followers.push({ name: name, role: role, url: url });
});
if (!followers.length) {
return { error: "no_data", followers: [], skipped: skipped };
}
return { error: null, followers: followers, skipped: skipped };
}
function toCSV(followers) {
var rows = ['"name","role","profile_url"'];
followers.forEach(function (f) {
rows.push(
'"' +
f.name.replace(/"/g, '""') +
'","' +
f.role.replace(/"/g, '""') +
'","' +
f.url +
'"'
);
});
return rows.join("\n");
}
if (typeof module !== "undefined" && module.exports) {
module.exports = { extractFollowers, toCSV };
}
void (function () {
var result = extractFollowers(document);
if (result.error === "no_cards") {
alert("No follower cards found on this page.\nMake sure you are on the LinkedIn followers page.");
return;
}
if (result.error === "no_data") {
alert("Found cards but could not extract any data.\nLinkedIn may have changed their page structure.");
return;
}
if (result.skipped > 0) {
alert("Exported " + result.followers.length + " follower(s).\n" + result.skipped + " card(s) were skipped (could not find a profile link).");
}
var csv = toCSV(result.followers);
var blob = new Blob([csv], { type: "text/csv" });
var a = document.createElement("a");
a.href = URL.createObjectURL(blob);
a.download = "linkedin_followers.csv";
a.click();
})();
void (function () {
var result = extractFollowers(document);
if (result.error === "no_cards") {
alert("No follower cards found on this page.\nMake sure you are on the LinkedIn followers page.");
return;
}
if (result.error === "no_data") {
alert("Found cards but could not extract any data.\nLinkedIn may have changed their page structure.");
return;
}
if (result.skipped > 0) {
alert("Exported " + result.followers.length + " follower(s).\n" + result.skipped + " card(s) were skipped (could not find a profile link).");
}
var csv = toCSV(result.followers);
navigator.clipboard.writeText(csv).then(function () {
alert("Copied " + result.followers.length + " follower(s) to clipboard.");
});
})();