Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

32 Commits

Repository files navigation

LinkdAPI Favicon

LinkdAPI Python - The best API for professional Data

PyPI VersionPython VersionsLicense: MITDownloadsTwitter Follow

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

⚡ Now with Async Support!🚀 Up to 40x Faster🎯 Production Ready

A lightweight Python 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 pip:

pip install linkdapi

✨ Key Features

🔄 Dual Client Support

  • Sync Client - Simple and straightforward
  • Async Client - High-performance concurrent requests
  • Same API interface for both

🚀 Performance Optimized

  • Built-in retry mechanism
  • Connection pooling
  • Automatic request throttling
  • Up to 40x faster for batch operations

🛠️ Developer Friendly

  • Full type hints support
  • Comprehensive error handling
  • Context manager support
  • Extensive documentation

🎯 Production Ready

  • Automatic retries with exponential backoff
  • Connection keepalive
  • Timeout configuration
  • Error recovery

🚀 Quick Start

Synchronous Usage

fromlinkdapiimportLinkdAPI# Initialize the clientclient=LinkdAPI("your_api_key")
# Get profile overviewprofile=client.get_profile_overview("ryanroslansky")
print(f"Profile: {profile['data']['fullName']}")
# Get company informationcompany=client.get_company_info(name="google")
print(f"Company: {company['data']['name']}")

Async Usage

For better performance with multiple requests, use the async client:

importasynciofromlinkdapiimportAsyncLinkdAPIasyncdefmain():
# Use async context manager (recommended)asyncwithAsyncLinkdAPI("your_api_key") asapi:
# Single requestprofile=awaitapi.get_profile_overview("ryanroslansky")
print(f"Profile: {profile['data']['fullName']}")
# Fetch multiple profiles concurrentlyprofiles=awaitasyncio.gather(
api.get_profile_overview("ryanroslansky"),
api.get_profile_overview("satyanadella"),
api.get_profile_overview("jeffweiner08")
)
forprofileinprofiles:
print(f"Name: {profile['data']['fullName']}")
# Run the async functionasyncio.run(main())

Advanced Async Pattern

importasynciofromlinkdapiimportAsyncLinkdAPIasyncdeffetch_profile_data(username: str):
"""Fetch complete profile data including posts and connections."""asyncwithAsyncLinkdAPI("your_api_key") asapi:
# Get profile overview firstoverview=awaitapi.get_profile_overview(username)
urn=overview['data']['urn']
# Fetch multiple endpoints concurrentlyresults=awaitasyncio.gather(
api.get_profile_details(urn),
api.get_full_experience(urn),
api.get_education(urn),
api.get_skills(urn),
return_exceptions=True# Handle errors gracefully
)
return {
"overview": overview,
"details": results[0],
"experience": results[1],
"education": results[2],
"skills": results[3]
}
# Usagedata=asyncio.run(fetch_profile_data("ryanroslansky"))

⚡ Performance Benefits

The async client provides significant performance improvements when making multiple API calls:

ScenarioSync ClientAsync ClientImprovement
Single Request~200ms~200msSame
10 Sequential Requests~2000ms~2000msSame
10 Concurrent Requests~2000ms~200ms10x faster
100 Concurrent Requests~20000ms~500ms40x faster

When to use Async:

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

When to use Sync:

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

📚 API Reference

All methods are available in both LinkdAPI (sync) and AsyncLinkdAPI (async) classes.

🔹 Profile Endpoints (Click to expand)
# Profile Informationget_profile_overview(username) # Basic profile infoget_profile_details(urn) # Detailed profile dataget_contact_info(username) # Email, phone, websitesget_profile_about(urn) # About section & verificationget_full_profile(username=None, urn=None) # Complete profile data in 1 request# Work & Educationget_full_experience(urn) # Complete work historyget_certifications(urn) # Professional certificationsget_education(urn) # Education historyget_skills(urn) # Skills & endorsements# Social & Engagementget_social_matrix(username) # Connections & followers countget_recommendations(urn) # Given & received recommendationsget_similar_profiles(urn) # Similar profile suggestionsget_profile_reactions(urn, cursor='') # All profile reactionsget_profile_interests(urn) # Profile interestsget_profile_services(urn) # Profile services
🔹 Company Endpoints (Click to expand)
# Company Search & Infocompany_name_lookup(query) # Search companies by nameget_company_info(company_id=None, name=None) # Get company detailsget_similar_companies(company_id) # Similar company suggestionsget_company_employees_data(company_id) # Employee statisticsget_company_jobs(company_ids, start=0) # Active job listingsget_company_affiliated_pages(company_id) # Subsidiaries & affiliates
🔹 Job Endpoints (Click to expand)
# Job Searchsearch_jobs(
keyword=None, # Job title, skills, or keywordslocation=None, # City, state, or regiongeo_id=None, # geographic IDcompany_ids=None, # Specific company IDsjob_types=None, # full_time, part_time, contract, etc.experience=None, # internship, entry_level, mid_senior, etc.regions=None, # Region codestime_posted='any', # any, 24h, 1week, 1monthsalary=None, # any, 40k, 60k, 80k, 100k, 120kwork_arrangement=None, # onsite, remote, hybridstart=0# Pagination
)
# Job Detailsget_job_details(job_id) # Detailed job informationget_similar_jobs(job_id) # Similar job postingsget_people_also_viewed_jobs(job_id) # Related jobs
🔹 Post Endpoints (Click to expand)
# Postsget_featured_posts(urn) # Featured postsget_all_posts(urn, cursor='', start=0) # All posts with paginationget_post_info(urn) # Single post detailsget_post_comments(urn, start=0, count=10, cursor='') # Post commentsget_post_likes(urn, start=0) # Post likes/reactions
🔹 Comment Endpoints (Click to expand)
get_all_comments(urn, cursor='') # All comments by profileget_comment_likes(urns, start=0) # Likes on specific comments
🔹 Search Endpoints (Click to expand)
# People Searchsearch_people(
keyword=None,
current_company=None,
first_name=None,
geo_urn=None,
industry=None,
last_name=None,
profile_language=None,
past_company=None,
school=None,
title=None,
start=0
)
# Company Searchsearch_companies(
keyword=None,
geo_urn=None,
company_size=None,
has_jobs=None,
industry=None,
start=0
)
# Post Searchsearch_posts(
keyword=None,
author_company=None,
author_industry=None,
content_type=None,
date_posted=None,
from_member=None,
sort_by='relevance',
start=10
)
# Other Searchsearch_services(keyword=None, geo_urn=None, start=0)
search_schools(keyword=None, start=0)
🔹 Article Endpoints (Click to expand)
get_all_articles(urn, start=0) # All articles by profileget_article_info(url) # Article details from URLget_article_reactions(urn, start=0) # Article likes/reactions
🔹 Services Endpoints (Click to expand)
get_service_details(vanityname) # Get service by VanityNameget_similar_services(vanityname) # Get similar services
🔹 Lookup Endpoints (Click to expand)
geo_name_lookup(query) # Search locations & get geo IDstitle_skills_lookup(query) # Search skills & job titlesservices_lookup(query) # Search service categories
🔹 System (Click to expand)
get_service_status() # 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

importasynciofromlinkdapiimportAsyncLinkdAPIasyncdefenrich_leads(usernames: list):
"""Enrich a list of usernames with profile data."""asyncwithAsyncLinkdAPI("your_api_key") asapi:
# Fetch all profiles concurrentlytasks= [api.get_profile_overview(username) forusernameinusernames]
profiles=awaitasyncio.gather(*tasks, return_exceptions=True)
enriched_data= []
forusername, profileinzip(usernames, profiles):
ifisinstance(profile, dict) andprofile.get('success'):
data=profile['data']
enriched_data.append({
'username': username,
'name': data.get('fullName'),
'headline': data.get('headline'),
'location': data.get('location'),
'company': data.get('company')
})
returnenriched_data# Process 100 leads in seconds instead of minutesleads= ['ryanroslansky', 'satyanadella', 'jeffweiner08', ...]
data=asyncio.run(enrich_leads(leads))

Example 2: Company Intelligence Dashboard

importasynciofromlinkdapiimportAsyncLinkdAPIasyncdefget_company_intelligence(company_name: str):
"""Get comprehensive company data for analysis."""asyncwithAsyncLinkdAPI("your_api_key") asapi:
# Get company infocompany_info=awaitapi.get_company_info(name=company_name)
company_id=company_info['data']['id']
# Fetch multiple data points concurrentlyresults=awaitasyncio.gather(
api.get_company_employees_data(company_id),
api.get_similar_companies(company_id),
api.get_company_jobs(company_id),
api.get_company_affiliated_pages(company_id),
return_exceptions=True
)
return {
'info': company_info,
'employees': results[0],
'similar': results[1],
'jobs': results[2],
'affiliates': results[3]
}
intelligence=asyncio.run(get_company_intelligence("google"))

Example 3: Job Market Analysis

fromlinkdapiimportAsyncLinkdAPIimportasyncioasyncdefanalyze_job_market(role: str, locations: list):
"""Analyze job market across multiple locations."""asyncwithAsyncLinkdAPI("your_api_key") asapi:
# Search jobs in multiple locations concurrentlytasks= [
api.search_jobs(keyword=role, location=location, time_posted='1week')
forlocationinlocations
]
results=awaitasyncio.gather(*tasks)
analysis= {}
forlocation, resultinzip(locations, results):
ifresult.get('success'):
jobs=result['data']['jobs']
analysis[location] = {
'total_jobs': len(jobs),
'companies': list(set([j['company'] forjinjobs])),
'salary_range': [j.get('salary') forjinjobsifj.get('salary')]
}
returnanalysis# Analyze "Software Engineer" jobs across 5 cities in parallelanalysis=asyncio.run(analyze_job_market(
"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

Both sync and async clients provide robust error handling:

importhttpxfromlinkdapiimportAsyncLinkdAPIasyncdeffetch_with_error_handling():
asyncwithAsyncLinkdAPI("your_api_key") asapi:
try:
profile=awaitapi.get_profile_overview("username")
ifprofile.get('success'):
print(f"Success: {profile['data']}")
else:
print(f"API Error: {profile.get('message')}")
excepthttpx.HTTPStatusErrorase:
# Handle HTTP errors (4xx, 5xx)print(f"HTTP Error {e.response.status_code}: {e.response.text}")
excepthttpx.RequestErrorase:
# Handle network errorsprint(f"Network Error: {str(e)}")
exceptExceptionase:
# Handle unexpected errorsprint(f"Unexpected Error: {str(e)}")

Built-in Retry Mechanism

The async client automatically retries failed requests with exponential backoff:

# Configure retry behaviorasyncwithAsyncLinkdAPI(
api_key="your_api_key",
max_retries=5, # Default: 3retry_delay=2.0, # Default: 1.0 secondstimeout=60.0# Default: 30.0 seconds
) asapi:
# Requests will be retried automatically on failureprofile=awaitapi.get_profile_overview("username")

🏁 Why Choose LinkdAPI Python SDK?

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

Performance First

  • Async/Await Support - Up to 40x faster for batch operations
  • Connection Pooling - Efficient resource management
  • Smart Retries - Automatic recovery from transient failures

🛡️ Production Ready

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

🚀 Developer Experience

  • Dual APIs - Choose sync or async based on your needs
  • Context Managers - Proper resource cleanup
  • 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