how to enrich LinkedIn profiles from the command line
The LinkedIn enrichment market is dominated by Chrome extensions. Lusha, Kaspr, LeadIQ, and a dozen others all work the same way: you browse LinkedIn, click a button, and the extension reveals contact information.
It works. But it's slow, manual, and doesn't scale. You can't run a Chrome extension in a script. You can't pipe Chrome extension output to jq. You can't enrich 500 LinkedIn profiles while you sleep.
Here's how to do LinkedIn enrichment from the terminal instead.
The Problem with Chrome Extensions
Chrome extensions for LinkedIn enrichment have fundamental limitations:
- One at a time — You visit a profile, click the extension, copy the data. Repeat. For 50 profiles, that's 50 browser tabs and 50 clicks.
- Can't be scripted — There's no way to automate a Chrome extension in a shell script, cron job, or data pipeline.
- LinkedIn rate limiting — Browse too many profiles too fast and LinkedIn flags your account. Extensions encourage the exact behavior LinkedIn penalizes.
- Browser dependency — You need Chrome, the extension installed, and to be logged into LinkedIn. Can't run it on a server, in a container, or over SSH.
- Data stays in the browser — Getting data out of a Chrome extension into your actual workflow (database, CRM, spreadsheet) requires manual copy-paste or another integration.
CLI-Based LinkedIn Enrichment
A command-line approach solves all of these:
# Enrich a LinkedIn profile
$ enrich linkedin linkedin.com/in/patrickcollison
Name: Patrick Collison
Title: CEO & Co-founder
Company: Stripe
Location: San Francisco, CA
Industry: Financial Technology
LinkedIn: linkedin.com/in/patrickcollison
No browser. No extension. No clicking.
JSON Output for Scripting
$ enrich linkedin linkedin.com/in/patrickcollison --json
{
"name": "Patrick Collison",
"title": "CEO & Co-founder",
"company": "Stripe",
"location": "San Francisco, CA",
"industry": "Financial Technology",
"experience": [
{
"title": "CEO & Co-founder",
"company": "Stripe",
"duration": "15+ years"
}
],
"education": [
{
"school": "MIT",
"degree": "Computer Science"
}
]
}
Batch Enrichment
Got a list of LinkedIn URLs from a conference, a Sales Navigator export, or a scrape?
# Enrich a list of LinkedIn profiles
$ cat linkedin_urls.txt | while read url; do
enrich linkedin "$url" --json
done > enriched_profiles.jsonl
Or filter the results on the fly:
# Only keep C-level executives
$ cat linkedin_urls.txt | while read url; do
enrich linkedin "$url" --json
done | jq 'select(.title | test("CEO|CTO|CFO|COO|CMO"))'
Combine with Other Enrichment Types
LinkedIn enrichment pairs well with other enrichment types:
# Get a person's LinkedIn profile, then enrich their company
$ enrich linkedin linkedin.com/in/patrickcollison --json | \
jq -r '.company' | \
xargs enrich company --json
# Or go the other direction: start with an email, get LinkedIn
$ enrich email ceo@stripe.com --json | jq -r '.person.linkedin'
What Data You Get from LinkedIn Enrichment
LinkedIn enrichment typically returns:
| Data Point | Description |
|---|---|
| Full name | First and last name |
| Headline/Title | Current job title |
| Company | Current employer |
| Location | City, state, country |
| Industry | Professional industry |
| Experience | Past positions, companies, durations |
| Education | Schools, degrees, years |
| Skills | Listed professional skills |
| Summary | Profile summary/bio |
| Connections | Connection count range |
The exact fields depend on the profile's privacy settings and the data provider's coverage. Public profiles yield the most data.
Use Cases
Pre-Call Research
You have a sales call in 10 minutes. Pull up the person's LinkedIn profile data without opening a browser:
$ enrich linkedin linkedin.com/in/prospect-name --json | jq '{name, title, company, location}'
Instant context. No tab switching.
Recruiting Pipeline
Building a candidate pipeline? Enrich LinkedIn profiles to get structured data:
# Filter candidates by experience at specific companies
$ cat candidates.txt | while read url; do
enrich linkedin "$url" --json
done | jq 'select(.experience[].company | test("Google|Meta|Apple|Stripe"))'
Event Follow-Up
Collected LinkedIn URLs at a conference? Enrich them all and export to CSV:
$ cat conference_contacts.txt | while read url; do
enrich linkedin "$url" --json
done | jq -r '[.name, .title, .company, .location] | @csv' > contacts.csv
AI Agent Context
Give your AI agent rich context about people it's interacting with:
import subprocess, json
def get_linkedin_context(url):
result = subprocess.run(
["enrich", "linkedin", url, "--json"],
capture_output=True, text=True
)
return json.loads(result.stdout)
# Feed into agent context
profile = get_linkedin_context("linkedin.com/in/prospect")
agent_prompt = f"You're speaking with {profile['name']}, {profile['title']} at {profile['company']}..."
LinkedIn Enrichment Tools Compared
| Tool | Type | Batch Support | Scriptable | Starting Price |
|---|---|---|---|---|
| enrichcli | CLI | Yes | Yes | Free (50/day) |
| Lusha | Chrome Extension | No | No | $49/user/mo |
| Kaspr | Chrome Extension | No | No | $49/user/mo |
| LeadIQ | Chrome Extension | Via platform | No | $39/user/mo |
| Apify | Scraper | Yes | Yes | $49/mo |
| Unipile | API | Yes | Yes | Custom |
Chrome extensions are fine for occasional, one-off lookups. But the moment you need to process a list, automate a workflow, or integrate with other tools, you need a CLI or API.
Respecting LinkedIn's Terms
A note on compliance: enrichment tools don't scrape LinkedIn in real time. They maintain pre-built databases compiled from various public sources. When you run enrich linkedin, you're querying a database — not hitting LinkedIn's servers.
That said, how you obtained the LinkedIn URLs matters. If you scraped them in violation of LinkedIn's Terms of Service, the enrichment is the least of your concerns. Use LinkedIn data responsibly.
Getting Started
# Install
$ brew install enrichcli/tap/enrichcli
# Get your API key at app.enrichcli.com
# Enrich a LinkedIn profile
$ enrich linkedin linkedin.com/in/someone
# Enrich in batch
$ cat urls.txt | while read url; do enrich linkedin "$url" --json; done
50 free enrichments per day. No Chrome extension required.
start enriching data from the command line.
get started free50 free enrichments per day. no credit card required.