LinkedIn Enrichment API: Extract Profile Data for Marketing and Sales Automation
Need LinkedIn data for your sales automation? Compare enrichment APIs that extract profiles, job titles, company info, and recent posts to power personalized outreach at scale.
You have a spreadsheet with 10,000 email addresses. That's technically a lead list. But without knowing who these people are, what they do, or where they work, it's just data. You can't personalize outreach to an email address. You can't prioritize leads without context. You can't even segment properly.
This is where LinkedIn enrichment APIs come in. They transform minimal contact data into rich profiles: job titles, company information, career history, recent posts, and more. That context turns a cold email into a relevant conversation starter.
In this guide, I'll compare the top LinkedIn enrichment APIs, show you how to integrate them into your sales stack, and help you understand when enrichment is enough versus when you need full personalization.
What is LinkedIn Data Enrichment?
LinkedIn data enrichment is the process of adding professional profile information to your existing contact records. You start with what you have (an email, a name and company, or a LinkedIn URL) and get back a complete professional profile.
Input options:
- Email address (resolved to LinkedIn profile)
- Full name + company name
- LinkedIn profile URL
- LinkedIn Sales Navigator URL
Output data:
- Full name and profile photo
- Current job title and company
- Work history and career progression
- Education and certifications
- Skills and endorsements
- Location and contact information
- Recent posts and activity
- Company data (size, industry, funding)
The goal is to fill in the gaps in your CRM, lead scoring models, or outreach templates. Instead of sending "Hi there," you can send "Hi Sarah, saw you just joined Acme Corp as VP of Sales."
Enrichment vs. Scraping vs. Personalization
These terms get conflated, but they serve different purposes:
| Approach | What It Does | Output |
|---|---|---|
| Scraping | Extracts data from LinkedIn profiles you visit | Raw profile data (JSON/CSV) |
| Enrichment | Adds LinkedIn data to existing contacts | Enhanced contact records |
| Personalization | Generates custom messages from profile data | Ready-to-send outreach copy |
Scraping (covered in our LinkedIn scraper guide) requires you to have profile URLs already. You're extracting data from known profiles.
Enrichment works in reverse. You have minimal data (just an email) and want to find and pull the full LinkedIn profile. The API does the matching.
Personalization (covered in our LinkedIn personalization API guide) goes further. It takes profile data and generates unique outreach messages. You get copy, not just data.
What Data Can LinkedIn Enrichment APIs Return?
The specific fields vary by provider, but here's what a comprehensive enrichment response typically includes:
Profile Basics
{
"full_name": "Sarah Chen",
"headline": "VP of Sales | Building high-performance revenue teams",
"location": "San Francisco Bay Area",
"profile_url": "https://linkedin.com/in/sarahchen",
"profile_image_url": "https://media.licdn.com/..."
}These fundamentals power personalization, CRM hygiene, and basic segmentation.
Professional Experience
{
"current_position": {
"title": "VP of Sales",
"company": "Acme Corp",
"start_date": "2024-03",
"description": "Leading a team of 45 AEs and SDRs..."
},
"experience": [
{
"title": "Director of Sales",
"company": "Previous Inc",
"start_date": "2021-06",
"end_date": "2024-02"
}
]
}Experience data enables:
- Seniority-based lead scoring
- "Congratulations on the new role" outreach triggers
- ICP matching based on career trajectory
Education and Skills
{
"education": [
{
"school": "Stanford University",
"degree": "MBA",
"field": "Business Administration"
}
],
"skills": ["Sales Leadership", "Revenue Operations", "SaaS", "Enterprise Sales"]
}Useful for alumni-based outreach and skill-based targeting.
Contact Information
{
"email": "sarah.chen@acmecorp.com",
"phone": "+1-555-0123",
"twitter": "@sarahchen_sales"
}Not all enrichment APIs include contact finding. Some specialize in it; others focus purely on profile data.
Company Data
{
"company": {
"name": "Acme Corp",
"industry": "Enterprise Software",
"size": "201-500 employees",
"website": "https://acmecorp.com",
"linkedin_url": "https://linkedin.com/company/acmecorp"
}
}Company enrichment enables firmographic filtering: target only Series B+ companies, or exclude enterprises, or focus on specific industries.
Recent Activity
{
"recent_posts": [
{
"text": "Just wrapped our best Q1 ever. Here's what we learned...",
"date": "2026-01-05",
"engagement": {"likes": 234, "comments": 45}
}
]
}Activity data is gold for personalization. Reference what they're actually talking about, not just their static profile.
Top LinkedIn Enrichment APIs Compared
Here's how the major enrichment providers stack up:
| API | Input Types | Key Data | Starting Price | Best For |
|---|---|---|---|---|
| Proxycurl | URL, email | Full profile + company | $0.01/profile | High-volume enrichment |
| Evaboot | URL | Profile + verified email | $9/month | Sales Navigator users |
| Apify | Email, URL | Profile + email finder | Pay-per-use | Developer workflows |
| Lix | URL | Profile + company | $49/month | API-first teams |
| Captain Data | URL, email | Profile + intent signals | $99/month | GTM automation |
| Kaspr | LinkedIn ID | Contact info | Usage-based | Phone number finding |
| People Data Labs | Email, name | Profile + demographics | $0.28/profile | Enterprise data needs |
| personalize.marketing | URL | Profile + personalized message | Free tier available | Enrichment + personalization |
Proxycurl
Proxycurl bills itself as a LinkedIn API alternative. It offers comprehensive profile data extraction with good documentation.
Strengths:
- High rate limits (432,000 profiles/day at default tier)
- Clean REST API with Python and JavaScript examples
- Company enrichment alongside people data
- Email lookup from LinkedIn URL
Considerations: Data only, no message generation. You'll need separate tooling for personalization.
Pricing: Starts at $0.01/profile with volume discounts.
Evaboot
Evaboot focuses on Sales Navigator users. Their API enriches profile URLs with verified emails and clean data.
Strengths:
- Optimized for Sales Navigator exports
- Email verification included
- GDPR/CCPA compliant approach
- Chrome extension + API access
Considerations: Primarily URL-based input; email-to-profile matching is limited.
Pricing: Starts at $9/month for 100 credits.
Apify
Apify's LinkedIn Data Enrichment API runs on their actor platform. It handles email-to-profile resolution plus standard URL enrichment.
Strengths:
- Email to LinkedIn profile matching
- Email finder from name + company
- Integrates with n8n, Make, Zapier
- Pay-per-use pricing
Considerations: Runs on Apify's platform, which adds a layer of complexity for direct API users.
Pricing: Usage-based; varies by actor and volume.
Lix
Lix offers a developer-focused API for profile and company enrichment.
Strengths:
- Clean API documentation
- Both people and company endpoints
- Good for building internal tools
Considerations: Smaller player; less community support than larger alternatives.
Pricing: Starts at $49/month.
Captain Data
Captain Data positions itself as a GTM automation platform with enrichment as one component.
Strengths:
- Intent signals beyond basic profile data
- Visual workflow builder
- CRM sync capabilities
- Multi-source enrichment
Considerations: More complex than pure enrichment APIs; pricing reflects the broader platform.
Pricing: Starts at $99/month.
Kaspr
Kaspr specializes in contact information: emails and phone numbers from LinkedIn profiles.
Strengths:
- Strong phone number accuracy
- Chrome extension for manual use
- API for automation
- Good coverage in US/Europe
Considerations: Contact data focus; less comprehensive profile enrichment.
Pricing: Usage-based.
People Data Labs
People Data Labs is an enterprise data provider with LinkedIn as one source among many.
Strengths:
- Massive database (1.5B+ profiles)
- Multiple input matching options
- Demographic data beyond LinkedIn
Considerations: Higher cost ($0.28/profile); designed for enterprise scale.
Pricing: $0.28/profile with volume agreements.
How to Choose the Right LinkedIn Enrichment API
Data Accuracy and Freshness
Profile data gets stale fast. People change jobs, get promoted, update headlines. Ask providers:
- How often is data refreshed?
- What's the typical data age?
- How do they handle profile changes?
Some APIs cache aggressively for speed; others fetch live data. The trade-off is cost versus freshness.
Rate Limits and Scale
If you're enriching thousands of profiles daily, rate limits matter:
| Provider | Typical Rate Limit |
|---|---|
| Proxycurl | 432,000/day (default) |
| Evaboot | Varies by plan |
| Apify | Actor-dependent |
| Captain Data | Plan-dependent |
For high-volume use cases, confirm the provider can handle your throughput without throttling.
Pricing Model
Enrichment APIs use different pricing structures:
- Per-profile: Pay for each enrichment (Proxycurl, PDL)
- Credit-based: Monthly credits that roll over or expire (Evaboot, Lix)
- Subscription: Flat fee with usage limits (Captain Data)
Calculate your expected volume and compare total cost, not just per-unit pricing.
GDPR/CCPA Compliance
If you're enriching EU contacts or California residents, verify the provider's compliance approach:
- Do they only process publicly available B2B data?
- What's their data retention policy?
- Can they handle deletion requests?
Providers like Evaboot explicitly advertise GDPR/CCPA compliance. Others require more due diligence.
Integration Options
How will the API fit your workflow?
- Direct API: REST endpoints for custom integration
- Code examples: Python, JavaScript, or other language guides
- No-code: Zapier, Make, n8n connectors
- Native CRM: HubSpot, Salesforce integrations
Choose based on your team's technical capabilities and existing stack.
Integrating LinkedIn Enrichment into Your Stack
CRM Enrichment
The most common use case: keeping contact records current.
HubSpot workflow:
- New contact created (or existing contact updated)
- Trigger enrichment API call via webhook
- Update contact properties with returned data
- Score lead based on enriched attributes
# Pseudo-code for HubSpot enrichment workflow
def enrich_hubspot_contact(contact_id, linkedin_url):
# Call enrichment API
enriched = enrichment_api.get_profile(linkedin_url)
# Update HubSpot contact
hubspot.contacts.update(contact_id, {
"jobtitle": enriched["current_position"]["title"],
"company": enriched["current_position"]["company"],
"linkedin_bio": enriched["headline"]
})
return enrichedLead Scoring Workflows
Enrichment data powers more accurate lead scoring:
def calculate_lead_score(enriched_profile):
score = 0
# Seniority scoring
title = enriched_profile["current_position"]["title"].lower()
if "vp" in title or "director" in title:
score += 30
elif "manager" in title:
score += 20
elif "head" in title:
score += 25
# Company size scoring
company_size = enriched_profile["company"]["size"]
if "500" in company_size or "1000" in company_size:
score += 20
# Recent activity scoring
if enriched_profile.get("recent_posts"):
score += 10 # Active on LinkedIn = more reachable
return scoreOutreach Automation
Connect enrichment to your outreach sequence:
- Enrich leads before importing to outreach tool
- Use enriched fields in personalization tokens
- Segment sequences based on enriched attributes
For no-code automation, connect your enrichment API to Make or Zapier, then route to your outreach platform.
Enrichment vs. Personalization: When to Use Which
This distinction matters for building efficient workflows.
When Enrichment Is Enough
Use pure enrichment when you need:
- CRM data hygiene: Keeping records accurate
- Lead scoring: Automated qualification
- Segmentation: Building targeted lists
- Research: Understanding your audience
You're storing the data for later use, not immediately generating outreach.
When You Need Personalization
Use personalization APIs when you need:
- Ready-to-send messages: Outreach at scale
- Unique copy per recipient: Avoiding spam detection
- Referenced content: Mentioning specific posts or achievements
Personalization goes beyond data. It generates the actual message.
The Combined Approach
For maximum efficiency, combine both:
- Enrich first: Build a database of qualified leads with full profile data
- Personalize at send time: Generate unique messages when you're ready to reach out
This separates data collection from outreach execution. You can enrich thousands of profiles, then personalize in batches as your campaign progresses.
Tools like personalize.marketing combine both steps: you provide a profile URL, and get back enriched data plus a personalized message in one call. For teams that want simplicity, this eliminates the middleware. For details, see our LinkedIn Personalization API guide.
LinkedIn Enrichment Best Practices
Refresh Data Regularly
According to LinkedIn's own research, professionals change jobs every 2-3 years on average. Senior roles turn over faster. If your enriched data is 6+ months old, it's likely stale.
Schedule periodic re-enrichment:
- High-value accounts: Monthly
- Active pipeline: Quarterly
- General database: Annually
Cross-Reference Multiple Sources
No single enrichment API has perfect accuracy. For critical data points (like email addresses), consider:
- Using multiple providers and comparing results
- Verifying emails before sending campaigns
- Flagging mismatches for manual review
Verify Emails Before Outreach
Enriched emails aren't automatically verified. Sending to invalid addresses hurts your sender reputation.
Run enriched emails through a verification service before importing to your outreach tool. Most enrichment APIs offer this as an add-on or separate endpoint.
Respect Rate Limits
Hammering an API with requests gets you throttled or banned. Build rate limiting into your integration:
import time
from ratelimit import limits, sleep_and_retry
@sleep_and_retry
@limits(calls=100, period=60) # 100 calls per minute
def enrich_profile(url):
return enrichment_api.get(url)Handle Missing Data Gracefully
Not every profile has every field. Some people don't list education. Others have private profiles. Build your workflows to handle gaps:
def get_safe_field(profile, field, default=""):
try:
return profile[field]
except (KeyError, TypeError):
return defaultCommon LinkedIn Enrichment Challenges
Official API Access Restrictions
LinkedIn's official API requires Partner Program approval. Most applications are rejected. Even approved partners face strict rate limits and usage restrictions.
This is why third-party enrichment APIs exist. They use alternative methods (browser automation, proxy networks) to access public profile data.
Data Accuracy Issues
Common accuracy problems:
- Stale job titles: Person changed roles but data wasn't refreshed
- Wrong email matches: Email-to-profile resolution isn't 100%
- Incomplete profiles: Some users don't fill out all sections
- Private profiles: Limited or no data available
Mitigation: Use providers with live data fetching, verify critical fields, and build tolerance for gaps.
Rate Limiting and Blocks
Aggressive enrichment can trigger LinkedIn's anti-automation measures. Third-party APIs handle this for you, but be aware:
- Sudden volume spikes can cause issues
- Some providers route through residential proxies for safety
- Costs increase with rate limit headroom
Privacy Compliance
Enriching EU residents? GDPR applies. California? CCPA. Key requirements:
- Only process publicly available B2B data
- Have a legitimate business interest
- Provide opt-out mechanisms
- Honor deletion requests
- Document your data processing activities
Choose providers that explicitly address compliance. "We only scrape public data" isn't sufficient documentation.
Frequently Asked Questions
What's the difference between enrichment and scraping?
Scraping extracts data from profiles you already have URLs for. Enrichment starts with minimal data (like an email) and finds/returns the full profile. Enrichment APIs handle the matching; scraping assumes you already know which profiles to extract.
Is LinkedIn enrichment GDPR compliant?
It can be, if done correctly. GDPR allows processing of publicly available B2B data under legitimate interest, but you need proper documentation, opt-out mechanisms, and data handling procedures. Choose providers that explicitly address GDPR compliance.
How much does LinkedIn enrichment cost per profile?
Prices range widely:
- Budget options: $0.009-0.02/profile (Scrapingdog, Proxycurl at volume)
- Mid-range: $0.05-0.10/profile (most providers)
- Premium: $0.28+/profile (People Data Labs, enterprise providers)
Volume discounts are common. Annual contracts reduce per-profile costs.
Can I enrich from just an email address?
Yes, but accuracy varies. Email-to-LinkedIn matching works best for business emails (firstname.lastname@company.com). Personal emails (Gmail, Yahoo) have lower match rates. Expect 60-80% match rates for B2B emails.
How often should I refresh enriched data?
Depends on your use case:
- Active sales opportunities: Monthly
- Marketing database: Quarterly
- General CRM hygiene: Annually
- Triggered refresh: When bounce rates increase or engagement drops
Key Takeaways
LinkedIn enrichment APIs transform minimal contact data into actionable intelligence:
- Start with what you have. Email, name + company, or LinkedIn URL all work as inputs.
- Choose based on your needs. High-volume teams need different solutions than occasional users.
- Data alone isn't outreach. Enrichment gives you information; personalization gives you messages.
- Keep data fresh. Job changes happen constantly. Stale data leads to embarrassing outreach.
- Stay compliant. GDPR and CCPA apply to enriched B2B data. Choose compliant providers.
For teams that want enrichment and personalization in a single workflow, personalize.marketing handles both. You provide a profile URL, and get back enriched data plus a ready-to-send personalized message.
Related guides in the LinkedIn Cluster: