Scrape and analyze public LinkedIn posts as structured JSON via the Apify LinkedIn Posts API.
One address for any MCP client. Your key stays in your Odel vault.

At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
| Access to | Read | Change |
|---|---|---|
| Full api access | Not stated: full_api_access | |
From the sign-in at console-backend.apify.com, as the endpoint publishes it. You approve it there.
Odel could not list its tools without signing in.
The most efficient, reliable, and developer-friendly way to use the LinkedIn Posts API.
Actor page: apify.com/johnvc/linkedin-posts-api Input schema: apify.com/johnvc/linkedin-posts-api/input-schema
Give it a public LinkedIn profile URL and it discovers that person's recent posts, or pass specific post URLs to fetch directly. You get back one clean JSON row per post: text, reactions, comments, shares, hashtags, media, and author details. It is built API-first and MCP-ready, so you can call it from Python or drive it as a tool from an AI agent.
Clone the repository
git clone https://github.com/johnisanerd/Apify-LinkedIn-Posts-API.git
cd Apify-LinkedIn-Posts-API
Install dependencies with UV
# Install UV if you do not have it:
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install project dependencies:
uv sync
Configure your API key
cp .env.example .env
# Edit .env and add your Apify API key
# Get your free API key at: https://apify.com?fpr=9n7kx3
Run the example
uv run python linkedin-posts-api-example.py
export APIFY_API_TOKEN="your_api_key_here"
uv run python linkedin-posts-api-example.py
A URL in, structured data out. You never touch collection infrastructure. Pass a profile URL (or specific post URLs) and get flat, predictable fields you can load straight into a sheet, a database, or a BI tool.
Two ways to collect. Discover a profile's recent posts (newest first, capped and optionally date-filtered), or fetch a known set of posts by URL, up to 1000 per run.
Pay per post. Billing is per post returned, with no per-run setup fee, so you only pay for what is delivered.
Reliable and predictable. Every post comes back with the same field shape, and a profile with no public posts returns a clear error row instead of failing the whole run.
MCP-ready. Call it as a tool from Claude, Cursor, and other AI agents (see the install sections below).
summary field on every row for quick scanning and AI use{
"profileUrls": ["https://www.linkedin.com/in/williamhgates"],
"maxPostsPerProfile": 5
}
{
"profileUrls": ["https://www.linkedin.com/in/williamhgates"],
"maxPostsPerProfile": 50,
"startDate": "2025-01-01",
"endDate": "2025-12-31"
}
{
"postUrls": [
"https://www.linkedin.com/posts/williamhgates_activity-7446904645010210816"
]
}
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
profileUrls | list[str] | one of these | - | Public LinkedIn /in/ profile URLs to discover posts from. Up to 25 per run. |
postUrls | list[str] | one of these | - | Specific LinkedIn post URLs to fetch directly. Up to 1000 per run. |
maxPostsPerProfile | int | No | 20 | Max posts per profile in discover mode (max 200). Caps cost. Ignored for post URLs. |
startDate | str | No | - | Only discover posts on or after this date (YYYY-MM-DD). Discover mode only. |
endDate | str | No | - | Only discover posts on or before this date (YYYY-MM-DD). Discover mode only. |
Supply at least one of profileUrls or postUrls.
Each post is returned as one JSON row:
{
"result_type": "post",
"postId": "7446904645010210816",
"postUrl": "https://www.linkedin.com/posts/williamhgates_activity-7446904645010210816",
"postType": "post",
"datePosted": "2025-06-01T12:00:00.000Z",
"text": "A few books shaped how I think about clean energy this year...",
"hashtags": ["cleanenergy", "books"],
"authorName": "williamhgates",
"authorHeadline": "Co-chair, Bill & Melinda Gates Foundation",
"authorUrl": "https://www.linkedin.com/in/williamhgates",
"authorFollowers": 37000000,
"numLikes": 12045,
"numComments": 843,
"numShares": 210,
"summary": "Post by williamhgates, 12,045 reactions, 843 comments, posted 2025-06-01"
}
The numShares field is returned when the post has shares.

Cowork is the desktop app's automation mode. To give it the LinkedIn Posts API as a tool, add the Apify MCP server as a connector.
claude_desktop_config.json directly).
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json{
"mcpServers": {
"apify": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-posts-api"
]
}
}
}
Download the desktop app and start a free trial: https://claude.ai/referral/uIlpa7nPLg More help: https://docs.apify.com/platform/integrations/claude-desktop

Claude Code is the command-line tool. Add the Actor's MCP server with one command:
claude mcp add --transport http apify \
"https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-posts-api"
To use a token instead of browser OAuth:
claude mcp add --transport http apify \
"https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-posts-api" \
--header "Authorization: Bearer YOUR_APIFY_TOKEN"
Then verify with claude mcp list, or run /mcp inside a session. Ask Claude Code to call the LinkedIn Posts API.
Try Claude Code free: https://claude.ai/referral/uIlpa7nPLg Claude Code MCP docs: https://code.claude.com/docs/en/mcp

On claude.ai you add Apify as a connector, then enable just this Actor's tool.
johnvc/linkedin-posts-api.https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-posts-api, using OAuth when prompted.Open Claude on the web: https://claude.ai/referral/uIlpa7nPLg

Cursor reads MCP servers from a project file at .cursor/mcp.json.
.cursor/mcp.json:{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-posts-api"
}
}
}
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-posts-api",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}
New to Cursor? Get it here: https://cursor.com/referral?code=XQP4VBLI3NNX

ChatGPT connects to the Apify MCP server through Developer mode (available on ChatGPT Pro, Plus, Business, Enterprise, and Education plans).
https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-posts-apiMore help: https://docs.apify.com/platform/integrations/mcp
Use the LinkedIn Posts API to power your content research, social listening, and engagement analytics with reliable, structured results.
Open a ready-to-send prompt about the LinkedIn Posts API in the AI of your choice:
Last Updated: 2026.09.22