🔑 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.
- Why LinkdAPI?
- Why LinkdAPI Beats Alternatives
- 📦 Installation
- ✨ Key Features
- 🚀 Quick Start
- ⚡ Performance Benefits
- 📚 API Reference
- 💡 Real-World Examples
- 📈 Use Cases
- 🔧 Error Handling
- 🔗 Resources
- 📜 License
- 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.
| Feature | LinkdAPI | SerpAPI | Scraping |
|---|---|---|---|
| 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 |
Install with npm:
npm install linkdapiOr with yarn:
yarn add linkdapiNote: Requires Node.js 18.0.0 or higher (uses native
fetchAPI)
|
|
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}`);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();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');The async nature of Node.js provides significant performance improvements when making multiple API calls:
| Scenario | Sequential | Concurrent (Promise.all) | Improvement |
|---|---|---|---|
| Single Request | ~200ms | ~200ms | Same |
| 10 Sequential Requests | ~2000ms | ~2000ms | Same |
| 10 Concurrent Requests | ~2000ms | ~200ms | 10x faster |
| 100 Concurrent Requests | ~20000ms | ~500ms | 40x 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
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
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);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');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']);
|
|
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}`);}}}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');LinkdAPI is more than just an API wrapper—it's a complete solution for professional and company data access:
- Promise.all Support - Up to 40x faster for batch operations
- Zero Dependencies - Lightweight and fast
- Smart Retries - Automatic recovery from transient failures
- Type Safety - Full TypeScript support for better IDE experience
- Error Recovery - Comprehensive error handling and retries
- Battle Tested - Used by developers worldwide
- 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.
MIT License – Free to use for personal and commercial projects.
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
Website • Documentation • Twitter • Support
