LinkedIn API
Fetch LinkedIn data in bulk: profiles, jobs, posts, and search results. Most endpoints return data immediately (no async task).
Bulk
api_key (legacy)
limit_per_input
v1
Stable
api_key in query is supported for legacy integrations. For new integrations, prefer Authorization: Bearer <token> when available on your account.
Auth
Legacy: api_key in query string.
Prefer Bearer auth when enabled on your account.
Batching
Use limit_per_input to control how many results are returned per input item
(when supported by the endpoint).
Input format
Most endpoints accept {"items": [...]}.
Some accept [{ "url": "..." }] (see Posts).
Navigation
Use cases
Common automations to pull LinkedIn data and push it into your outbound stack.
Make
Scheduled enrichment: profiles/jobs/posts → Sheets/Airtable/CRM.
Flow
- 1) Scheduler
- 2) HTTP (POST) to a LinkedIn endpoint
- 3) Parse JSON
- 4) Map fields → destination
Zapier
Trigger-based enrichment: new lead → fetch profile/post → append data to CRM.
Flow
- 1) Trigger (form/CRM row)
- 2) Webhooks by Zapier (POST)
- 3) Formatter / Code step (optional)
- 4) Create/Update in destination
Clay
Bulk enrichment inside Clay tables: profile URLs → structured rows.
Flow
- 1) Import URLs into Clay
- 2) Add API enrichment step
- 3) Map response → columns
- 4) Push to sequences/export
Group
Actions
Run LinkedIn actions via API: send invites, messages, and engage with posts. Use responsibly to avoid account restrictions.
rate limits apply
requires active session
v1
Operational
Actions require a valid LinkedIn session (usually via the Chrome extension).
Keep volumes low and add delays between requests.
POST
LinkedIn Action
/api/v1/linkedin/action
One endpoint, multiple action types. Choose action by type.
Request
| Part | Field | Type | Notes |
|---|---|---|---|
| Query | api_key | string | Required (legacy) |
| Body | type | string | invite | message | like | comment |
| Body | payload | object | Depends on type |
Response
{
"ok": true,
"type": "invite",
"result": { "...": "..." }
}
Exact fields depend on LinkedIn response and availability.
Safety defaults
Recommended automation limits:
- Invites: 10–30/day
- Messages: 20–60/day (depending on account)
- Likes/Comments: keep natural, add delays
- Always add sleep 10–60s between actions
POST
Invite
type: invite
Send a connection invite to a profile.
Body example
{
"type": "invite",
"payload": {
"profile_url": "https://www.linkedin.com/in/username/",
"message": "Hey! Quick question about your role at {company} — can I connect?"
}
}
Notes
Keep invite notes short. If no message needed, omit message.
POST
Message
type: message
Send a message to an existing connection (or thread, if supported by your setup).
Body example
{
"type": "message",
"payload": {
"profile_url": "https://www.linkedin.com/in/username/",
"text": "Hey {first_name} — saw your post about {topic}. Quick question: are you open to…"
}
}
Notes
If messaging by thread is supported in your implementation, you can also accept a thread_id.
POST
Like
type: like
Like a LinkedIn post by URL.
Body example
{
"type": "like",
"payload": {
"post_url": "https://www.linkedin.com/posts/..."
}
}
Notes
Keep engagement natural. Combine with comment only occasionally.
POST
Comment
type: comment
Comment on a LinkedIn post by URL.
Body example
{
"type": "comment",
"payload": {
"post_url": "https://www.linkedin.com/posts/...",
"text": "This is solid — especially the point about {insight}. Curious: how do you measure {metric}?"
}
}
Notes
Avoid repetitive templates. Short, contextual comments perform best.
POST
Get Post Likers
/list/search/create
Extract profiles from a LinkedIn post engagement list (likers), with optional enrichment fields.
Body example
{
"url": "https://www.linkedin.com/posts/.../",
"with_emails": true,
"max": 100,
"page": 1
}
Notes
Use page for pagination and max to limit results.
Group
Search URLs
Extract people from LinkedIn search URLs (useful for saved searches and quick exports).
POST
Get People by Search URL
/linkedin/search
Provide a LinkedIn people search URL and get back structured people results with optional enrichment fields.
Body example
{
"url": "https://www.linkedin.com/search/results/people/?keywords=sales-man",
"with_emails": true,
"max": 100,
"page": 1
}
Notes
Use page for pagination and max to limit results.
For best accuracy, use clean search URLs without extra tracking params.