# LinkedIn Profile Posts Scraper (No Cookies) ✅ Bulk (`crustapi/linkedin-profile-posts-scraper`) Actor

Scrape the latest posts and articles from any public LinkedIn profile. Get text, likes, dates, and links as JSON or CSV. No cookies, no LinkedIn account, $1.35 per 1,000 posts.

- **URL**: https://apify.com/crustapi/linkedin-profile-posts-scraper.md
- **Developed by:** [CrustAPI](https://apify.com/crustapi) (community)
- **Categories:** Lead generation, Social media, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.35 / 1,000 posts

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## What is LinkedIn Profile Posts Scraper?

Pull the latest posts and articles from any public LinkedIn profile. Paste profile URLs or usernames, click Start, and download every post as a clean table.

- 👤 Most recent posts from any public person's profile
- 📋 Track a whole list of people in one run
- 📝 Full post text, hashtags, dates, and links, plus the headline when the item is an article
- 👍 Engagement on every post: like count, comment count, and reaction-type breakdown
- 🔑 No LinkedIn account, no cookies, nothing to get restricted
- ⚡ Powered by a live API, a few seconds per profile
- 📦 Export as JSON, CSV, Excel, HTML, or XML

### What data do I get?

| Field | Example |
|---|---|
| Post text | Full body text of the post |
| Article headline | Title when the item is a published article, blank on ordinary feed posts |
| Likes | 15,405 |
| Comment count | 479 |
| Reaction types | LIKE, PRAISE, EMPATHY |
| Date published | 2026-06-02T19:41:31.000+00:00 (ISO 8601) |
| Post URL | Direct link to the post or article |
| Post type | post, image, video, article |
| Author | Name and profile URL when the post carries them. The name is often blank on a person's own feed, where the author is the profile you searched |
| Image | Image URL when the post has one |
| Hashtags | Every hashtag in the post, as a list |
| Profile, Profile URL | Which profile the post came from, on every row, so multi-profile runs stay sortable |

### Pricing

**$1.35 per 1,000 posts** ($0.00135 per post), plus a small Apify compute fee. Comments cost nothing extra. Inaccessible profiles are never charged.

| Run | Actor cost |
|---|---|
| 100 profiles x 10 posts | $1.35 |
| 1,000 profiles x 10 posts | $13.50 |

### How it works

1. Paste profile URLs or usernames, one per line. Both `https://www.linkedin.com/in/satyanadella` and `satyanadella` work.
2. Set **Max posts per profile**. **Include comments** re-checks each post's comment count on the post's own page, so it is slower. It returns counts only, never comment text.
3. Click **Start**, then download JSON, CSV, or Excel.

Schedule it weekly to monitor prospects, executives, or creators, and webhook new posts anywhere.

### Output sample

```json
{
  "profile": "satyanadella",
  "profileUrl": "https://www.linkedin.com/in/satyanadella",
  "text": "How do we build a frontier intelligence ecosystem? ...",
  "headline": null,
  "datePublished": "2026-06-02T19:41:31.000+00:00",
  "url": "https://www.linkedin.com/feed/update/urn:li:activity:7334562171556294656",
  "postType": "post",
  "authorName": null,
  "authorUrl": "https://www.linkedin.com/in/satyanadella",
  "likes": 15405,
  "comments": 479,
  "reactionTypes": ["LIKE", "PRAISE", "EMPATHY"],
  "image": "https://media.licdn.com/dms/image/.../feedshare-shrink_800/...",
  "hashtags": []
}
```

Sales teams open with what a prospect posted this week. Recruiters read candidates before outreach. Marketers study what top voices in a niche publish and how it performs.

### FAQ

**Which fields can come back empty?** `headline` is filled only when the item is a published article, so ordinary feed posts leave it blank. `authorName` is often blank on a person's own feed, where the author is the profile you searched, and that profile is on every row as `profile` and `profileUrl`. LinkedIn does not publish a share or repost count, so there is no shares field.

**Is this legal?** The actor only reads publicly visible posts, the same pages you can open in a logged-out browser. No login, no private data.

**Do I need a LinkedIn account?** No. Nothing runs through an account, so there is nothing to restrict.

**Can I use the API?** Yes, runs and results are fully accessible through the Apify API and all Apify integrations (Zapier, Make, Google Sheets, webhooks).

### More from CrustAPI

| Actor | What it does |
|---|---|
| LinkedIn Company Posts Scraper | Latest posts from any company page |
| LinkedIn Company Scraper | Size, industry, HQ, employee count, numeric IDs |
| LinkedIn Jobs Scraper | Every job listing for any title and city |
| LinkedIn Profile Scraper + Email Finder | Public profiles plus verified work emails |
| Google Maps Scraper | Every business in any area |

Need volume beyond Apify, like monitoring millions of profiles? See [crustapi.com/wholesale](https://crustapi.com/wholesale).

### Support and feedback

We ship improvements weekly, and user reports drive the roadmap. Something broken or missing?

- Open an issue on this actor's **Issues** tab in Apify Console
- Or email us at <support@crustapi.com>

***

*This actor is an independent tool built by CrustAPI. It is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation. LinkedIn is a registered trademark of LinkedIn Corporation, and all other trademarks belong to their owners.*

# Actor input Schema

## `profiles` (type: `array`):

LinkedIn profile URLs or plain usernames, one per line. Both work: `https://www.linkedin.com/in/satyanadella` or just `satyanadella`.

## `maxPostsPerProfile` (type: `integer`):

Cap how many recent posts to pull from each profile.

## `includeComments` (type: `boolean`):

Also collect public comments on each post. Slower, same price per post.

## Actor input object example

```json
{
  "profiles": [
    "satyanadella"
  ],
  "maxPostsPerProfile": 10,
  "includeComments": false
}
```

# Actor output Schema

## `results` (type: `string`):

One row per post: text, link, date published, likes, comment count and reaction types.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "profiles": [
        "satyanadella"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("crustapi/linkedin-profile-posts-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "profiles": ["satyanadella"] }

# Run the Actor and wait for it to finish
run = client.actor("crustapi/linkedin-profile-posts-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "profiles": [
    "satyanadella"
  ]
}' |
apify call crustapi/linkedin-profile-posts-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crustapi/linkedin-profile-posts-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/dsTP6uGhgr0o9mkit/builds/5bujWRGSLzPx85OKe/openapi.json
