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
LinkedIn
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).

Use cases

Common automations to pull LinkedIn data and push it into your outbound stack.

Automation
Make
Scheduled enrichment: profiles/jobs/posts → Sheets/Airtable/CRM.
Flow
  1. 1) Scheduler
  2. 2) HTTP (POST) to a LinkedIn endpoint
  3. 3) Parse JSON
  4. 4) Map fields → destination
Zapier
Trigger-based enrichment: new lead → fetch profile/post → append data to CRM.
Flow
  1. 1) Trigger (form/CRM row)
  2. 2) Webhooks by Zapier (POST)
  3. 3) Formatter / Code step (optional)
  4. 4) Create/Update in destination
Clay
Bulk enrichment inside Clay tables: profile URLs → structured rows.
Flow
  1. 1) Import URLs into Clay
  2. 2) Add API enrichment step
  3. 3) Map response → columns
  4. 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.
Actions
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
Up
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
Up
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
Up
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
Up
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.
Related
Group

Posts

Extract profiles from LinkedIn post engagement lists.

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.