Skip to content

Repository files navigation

LinkdAPI Favicon

LinkdAPI Node.js - The best API for professional Data

npm VersionNode VersionsLicense: MITDownloadsTwitter Follow

🔑 Get Your API Key (100 free credits) • 📖 Full Documentation • 💬 Support

⚡ Zero Dependencies🚀 Native Fetch API🎯 Production Ready

A lightweight Node.js wrapper for LinkdAPI — the most advanced API for accessing professional profile and company data. With unmatched reliability, stability, and scalability, it's perfect for developers, analysts, and anyone building tools that work with professional networking data at scale.


📑 Table of Contents


Why LinkdAPI?

  • We deliver data reliably and efficiently without relying on complex workarounds.
  • Built for scale, stability, and accuracy, so your applications run smoothly.
  • Perfect for automation, data analysis, contact enrichment, and lead generation.

LinkdAPI Hero

Why LinkdAPI Beats Alternatives

FeatureLinkdAPISerpAPIScraping
Reliable Data Access✅ Yes❌ No❌ No
No Proxy Management✅ Yes❌ No❌ No
No Cookies Management✅ Yes❌ No❌ No
Structured JSON Data✅ Yes❌ HTML✅ Yes
Scalability✅ Built for scale❌ Rate-limited❌ Manual effort
Pricing Transparency✅ Clear pricing tiers✅ Pay-per-request❌ Hidden costs (proxies, CAPTCHAs)
API Reliability✅ High uptime✅ Good❌ Unstable (blocks)
Automation-Friendly✅ Full automation✅ Partial❌ Manual work needed
Support & Documentation✅ Dedicated support✅ Good docs❌ Community-based
Stability & Resilience✅ Optimized for reliability❌ Limited❌ High risk

📦 Installation

Install with npm:

npm install linkdapi

Or with yarn:

yarn add linkdapi

Note: Requires Node.js 18.0.0 or higher (uses native fetch API)


✨ Key Features

🔄 Full TypeScript Support

  • Type Definitions - Built-in TypeScript support
  • IntelliSense - Full IDE autocomplete
  • Type Safety - Catch errors at compile time

🚀 Performance Optimized

  • Built-in retry mechanism
  • Automatic request throttling
  • Zero external dependencies
  • Native fetch API

🛠️ Developer Friendly

  • Full type hints support
  • Comprehensive error handling
  • ESM and CommonJS support
  • Extensive documentation

🎯 Production Ready

  • Automatic retries with exponential backoff
  • Timeout configuration
  • Error recovery
  • Battle tested

🚀 Quick Start

ESM Usage

import{LinkdAPI}from'linkdapi';// Initialize the clientconstapi=newLinkdAPI({apiKey: 'your_api_key'});// Get profile overviewconstprofile=awaitapi.getProfileOverview('ryanroslansky');console.log(`Profile: ${profile.data.fullName}`);// Get company informationconstcompany=awaitapi.getCompanyInfo({name: 'google'});console.log(`Company: ${company.data.name}`);

CommonJS Usage

const{ LinkdAPI }=require('linkdapi');constapi=newLinkdAPI({apiKey: 'your_api_key'});asyncfunctionmain(){// Single requestconstprofile=awaitapi.getProfileOverview('ryanroslansky');console.log(`Profile: ${profile.data.fullName}`);// Fetch multiple profiles concurrentlyconstprofiles=awaitPromise.all([api.getProfileOverview('ryanroslansky'),api.getProfileOverview('satyanadella'),api.getProfileOverview('jeffweiner08')]);for(constprofileofprofiles){console.log(`Name: ${profile.data.fullName}`);}}main();

Advanced Async Pattern

import{LinkdAPI}from'linkdapi';asyncfunctionfetchProfileData(username: string){constapi=newLinkdAPI({apiKey: 'your_api_key'});// Get profile overview firstconstoverview=awaitapi.getProfileOverview(username);consturn=overview.data.urn;// Fetch multiple endpoints concurrentlyconst[details,experience,education,skills]=awaitPromise.all([api.getProfileDetails(urn),api.getFullExperience(urn),api.getEducation(urn),api.getSkills(urn)]);return{
overview,
details,
experience,
education,
skills
};}// Usageconstdata=awaitfetchProfileData('ryanroslansky');

⚡ Performance Benefits

The async nature of Node.js provides significant performance improvements when making multiple API calls:

ScenarioSequentialConcurrent (Promise.all)Improvement
Single Request~200ms~200msSame
10 Sequential Requests~2000ms~2000msSame
10 Concurrent Requests~2000ms~200ms10x faster
100 Concurrent Requests~20000ms~500ms40x faster

When to use Concurrent:

  • ✅ Scraping multiple profiles at once
  • ✅ Batch processing jobs or companies
  • ✅ Real-time data aggregation
  • ✅ Building high-performance APIs

When to use Sequential:

  • ✅ Simple scripts
  • ✅ Single requests
  • ✅ Learning/prototyping

📚 API Reference

All methods return Promises and support async/await.

🔹 Profile Endpoints (Click to expand)
// Profile InformationgetProfileOverview(username)// Basic profile infogetProfileDetails(urn)// Detailed profile datagetContactInfo(username)// Email, phone, websitesgetProfileAbout(urn)// About section & verificationgetFullProfile({username?,urn? })// Complete profile data in 1 request// Work & EducationgetFullExperience(urn)// Complete work historygetCertifications(urn)// Professional certificationsgetEducation(urn)// Education historygetSkills(urn)// Skills & endorsements// Social & EngagementgetSocialMatrix(username)// Connections & followers countgetRecommendations(urn)// Given & received recommendationsgetSimilarProfiles(urn)// Similar profile suggestionsgetProfileReactions(urn,cursor?)// All profile reactionsgetProfileInterests(urn)// Profile interestsgetProfileServices(urn)// Profile servicesgetProfileUrn(username)// Get URN from username
🔹 Company Endpoints (Click to expand)
// Company Search & InfocompanyNameLookup(query)// Search companies by namegetCompanyInfo({companyId?,name? })// Get company detailsgetSimilarCompanies(companyId)// Similar company suggestionsgetCompanyEmployeesData(companyId)// Employee statisticsgetCompanyJobs(companyIds,start?)// Active job listingsgetCompanyAffiliatedPages(companyId)// Subsidiaries & affiliatesgetCompanyPosts(companyId,start?)// Company postsgetCompanyId(universalName)// Get ID from universal namegetCompanyDetailsV2(companyId)// Extended company info
🔹 Job Endpoints (Click to expand)
// Job SearchsearchJobs({keyword?,// Job title, skills, or keywordslocation?,// City, state, or regiongeoId?,// Geographic IDcompanyIds?,// Specific company IDsjobTypes?,// full_time, part_time, contract, etc.experience?,// internship, entry_level, mid_senior, etc.regions?,// Region codestimePosted?,// any, 24h, 1week, 1monthsalary?,// any, 40k, 60k, 80k, 100k, 120kworkArrangement?,// onsite, remote, hybridstart? // Pagination})// Job Search V2 (comprehensive)searchJobsV2({keyword?,start?,sortBy?,datePosted?,experience?,jobTypes?,workplaceTypes?,salary?,companies?,industries?,locations?,functions?,titles?,benefits?,commitments?,easyApply?,verifiedJob?,under10Applicants?,fairChance?
})// Job DetailsgetJobDetails(jobId)// Detailed job informationgetJobDetailsV2(jobId)// All job statuses supportedgetSimilarJobs(jobId)// Similar job postingsgetPeopleAlsoViewedJobs(jobId)// Related jobsgetHiringTeam(jobId,start?)// Hiring team membersgetProfilePostedJobs(profileUrn,start?,count?)// Jobs by profile
🔹 Post Endpoints (Click to expand)
// PostsgetFeaturedPosts(urn)// Featured postsgetAllPosts(urn,cursor?,start?)// All posts with paginationgetPostInfo(urn)// Single post detailsgetPostComments(urn,start?,count?,cursor?)// Post commentsgetPostLikes(urn,start?)// Post likes/reactions
🔹 Comment Endpoints (Click to expand)
getAllComments(urn,cursor?)// All comments by profilegetCommentLikes(urns,start?)// Likes on specific comments
🔹 Search Endpoints (Click to expand)
// People SearchsearchPeople({keyword?,currentCompany?,firstName?,geoUrn?,industry?,lastName?,profileLanguage?,pastCompany?,school?,serviceCategory?,title?,start?
})// Company SearchsearchCompanies({keyword?,geoUrn?,companySize?,// "1-10", "11-50", "51-200", "201-500", "501-1000", "1001-5000", "5001-10,000", "10,001+"hasJobs?,industry?,start?
})// Post SearchsearchPosts({keyword?,authorCompany?,authorIndustry?,authorJobTitle?,contentType?,datePosted?,fromMember?,fromOrganization?,mentionsMember?,mentionsOrganization?,sortBy?,start?
})// Other SearchsearchServices({keyword?,geoUrn?,profileLanguage?,serviceCategory?,start? })searchSchools(keyword?,start?)
🔹 Article Endpoints (Click to expand)
getAllArticles(urn,start?)// All articles by profilegetArticleInfo(url)// Article details from URLgetArticleReactions(urn,start?)// Article likes/reactions
🔹 Services Endpoints (Click to expand)
getServiceDetails(vanityname)// Get service by VanityNamegetSimilarServices(vanityname)// Get similar services
🔹 Lookup Endpoints (Click to expand)
geoNameLookup(query)// Search locations & get geo IDstitleSkillsLookup(query)// Search skills & job titlesservicesLookup(query)// Search service categories
🔹 System (Click to expand)
getServiceStatus()// Check API service status

📖 Full documentation for all endpoints:linkdapi.com/docs

🚀 More endpoints coming soon! Check our roadmap

💡 Real-World Examples

Example 1: Bulk Profile Enrichment

import{LinkdAPI}from'linkdapi';asyncfunctionenrichLeads(usernames: string[]){constapi=newLinkdAPI({apiKey: 'your_api_key'});// Fetch all profiles concurrentlyconstprofiles=awaitPromise.all(usernames.map(username=>api.getProfileOverview(username).catch(err=>({error: err, username }))));constenrichedData=[];for(leti=0;i<usernames.length;i++){constprofile=profiles[i];if(profile.success){constdata=profile.data;enrichedData.push({username: usernames[i],name: data.fullName,headline: data.headline,location: data.location,company: data.company});}}returnenrichedData;}// Process 100 leads in seconds instead of minutesconstleads=['ryanroslansky','satyanadella','jeffweiner08'];constdata=awaitenrichLeads(leads);

Example 2: Company Intelligence Dashboard

import{LinkdAPI}from'linkdapi';asyncfunctiongetCompanyIntelligence(companyName: string){constapi=newLinkdAPI({apiKey: 'your_api_key'});// Get company infoconstcompanyInfo=awaitapi.getCompanyInfo({name: companyName});constcompanyId=companyInfo.data.id;// Fetch multiple data points concurrentlyconst[employees,similar,jobs,affiliates]=awaitPromise.all([api.getCompanyEmployeesData(companyId),api.getSimilarCompanies(companyId),api.getCompanyJobs(companyId),api.getCompanyAffiliatedPages(companyId)]);return{info: companyInfo,
employees,
similar,
jobs,
affiliates
};}constintelligence=awaitgetCompanyIntelligence('google');

Example 3: Job Market Analysis

import{LinkdAPI}from'linkdapi';asyncfunctionanalyzeJobMarket(role: string,locations: string[]){constapi=newLinkdAPI({apiKey: 'your_api_key'});// Search jobs in multiple locations concurrentlyconstresults=awaitPromise.all(locations.map(location=>api.searchJobs({keyword: role, location,timePosted: '1week'})));constanalysis: Record<string,any>={};for(leti=0;i<locations.length;i++){constresult=results[i];if(result.success){constjobs=result.data.jobs;analysis[locations[i]]={totalJobs: jobs.length,companies: [...newSet(jobs.map((j: any)=>j.company))],salaryRange: jobs.filter((j: any)=>j.salary).map((j: any)=>j.salary)};}}returnanalysis;}// Analyze "Software Engineer" jobs across 5 cities in parallelconstanalysis=awaitanalyzeJobMarket('Software Engineer',['San Francisco, CA','New York, NY','Austin, TX','Seattle, WA','Boston, MA']);

📈 Use Cases

🎯 Lead Generation & Sales

  • Profile Enrichment - Enhance lead data with professional profiles
  • Company Research - Deep dive into target companies
  • Contact Discovery - Find decision makers and key contacts
  • Market Intelligence - Analyze competitors and opportunities

📊 Data Analytics & Research

  • Market Analysis - Job market trends and salary insights
  • Talent Mapping - Identify skill gaps and hiring patterns
  • Content Analysis - Track engagement and viral posts
  • Network Analysis - Study professional connections

🤖 Automation & Integration

  • CRM Integration - Auto-update contact records
  • Recruiting Pipelines - Automated candidate sourcing
  • Brand Monitoring - Track company mentions and sentiment
  • API Development - Build applications using professional data

🔍 Verification & Compliance

  • Identity Verification - Validate professional credentials
  • Background Checks - Verify employment history
  • Email Validation - Confirm email-to-profile matches
  • Due Diligence - Research business partnerships

🔧 Error Handling

The SDK provides robust error handling with custom error classes:

import{LinkdAPI,HTTPError,NetworkError,TimeoutError}from'linkdapi';asyncfunctionfetchWithErrorHandling(){constapi=newLinkdAPI({apiKey: 'your_api_key'});try{constprofile=awaitapi.getProfileOverview('username');if(profile.success){console.log(`Success: ${profile.data}`);}else{console.log(`API Error: ${profile.message}`);}}catch(error){if(errorinstanceofHTTPError){// Handle HTTP errors (4xx, 5xx)console.error(`HTTP Error ${error.statusCode}: ${error.responseBody}`);}elseif(errorinstanceofTimeoutError){// Handle timeout errorsconsole.error(`Timeout: ${error.message}`);}elseif(errorinstanceofNetworkError){// Handle network errorsconsole.error(`Network Error: ${error.message}`);}else{// Handle unexpected errorsconsole.error(`Unexpected Error: ${error}`);}}}

Built-in Retry Mechanism

The client automatically retries failed requests with exponential backoff:

// Configure retry behaviorconstapi=newLinkdAPI({apiKey: 'your_api_key',maxRetries: 5,// Default: 3retryDelay: 2000,// Default: 1000 millisecondstimeout: 60000// Default: 30000 milliseconds});// Requests will be retried automatically on failureconstprofile=awaitapi.getProfileOverview('username');

🏁 Why Choose LinkdAPI Node.js SDK?

LinkdAPI is more than just an API wrapper—it's a complete solution for professional and company data access:

Performance First

  • Promise.all Support - Up to 40x faster for batch operations
  • Zero Dependencies - Lightweight and fast
  • Smart Retries - Automatic recovery from transient failures

🛡️ Production Ready

  • Type Safety - Full TypeScript support for better IDE experience
  • Error Recovery - Comprehensive error handling and retries
  • Battle Tested - Used by developers worldwide

🚀 Developer Experience

  • ESM & CommonJS - Works with any module system
  • Async/Await - Modern JavaScript patterns
  • Rich Documentation - Examples for every use case

Whether you're building tools to gather professional profiles, analyze company data, or automate recruiting workflows, LinkdAPI gives you the speed, reliability, and flexibility you need—without the hassle of complicated setups.


🔗 Resources

📚 Documentation & Learning

🛠️ Tools & Support


📜 License

MIT License – Free to use for personal and commercial projects.


🌟 Support the Project

If you find LinkdAPI useful, consider:

  • Starring the project on GitHub
  • 🐦 Following us on Twitter/X
  • 📢 Sharing with your network
  • 💡 Contributing ideas and feedback

Built with ❤️ for developers who need reliable access to professional data

WebsiteDocumentationTwitterSupport

About

Powerful, lightweight B2B Data API for enriching professional profiles, companies, and more... with enterprise-grade reliability.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages