# LinkedIn Post Scraper · No Cookies · $1.50/1k ✅ (`linkedintel/linkedin-post-scraper-no-cookies`) Actor

Scrape recent posts from any LinkedIn profile or company page. 27 fields per post incl reaction breakdowns. No cookies, no login. $1.50/1k pay-per-result.

- **URL**: https://apify.com/linkedintel/linkedin-post-scraper-no-cookies.md
- **Developed by:** [LinkedIntel](https://apify.com/linkedintel) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$1.50 / 1,000 post extracteds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## LinkedIn Post Scraper — No Login, Profile + Company Timelines

Scrape **recent posts from any LinkedIn profile or company page** — full post text, author info, engagement metrics, media, reposts, and reaction breakdowns. Clean structured JSON output. **No LinkedIn login, no cookies, no browser session, no account ban risk.**

Built for **content marketing intelligence, sales prospecting, competitive content analysis, social listening, employer brand monitoring, and influencer research**.

---

### How this compares to other LinkedIn post scrapers

We benchmarked the direct competitors on Apify Store. Here's the honest landscape:

| | supreme_coder/linkedin-post | get-leads/linkedin-scraper | bebity/linkedin-premium-actor | curious_coder/linkedin-* | **This actor** |
|---|---|---|---|---|---|
| **Pricing** | $1/1k + $0.002 actor-start-gb | $1.50/1k post-result | $29/month subscription | $39/month subscription | **$1.50/1k flat** |
| **Profile timelines** | URL-input only (one post at a time) | Yes | Yes | Sales Navigator only | ✅ Full timeline pagination |
| **Company timelines** | ❌ | Limited | Yes | ❌ | ✅ Full timeline pagination |
| **Fields per post** | ~12 | ~14 | ~10 | ~12 | **27** |
| **Reaction breakdown by type** (LIKE / EMPATHY / PRAISE / etc.) | ❌ | ❌ | ❌ | ❌ | ✅ |
| **Repost detection** | ❌ | Partial | ❌ | ❌ | ✅ |
| **Posted-at timestamp + ISO** | Partial | Yes | Yes | Yes | ✅ (ms + ISO + relative-day) |
| **School / Showcase page support** | ❌ | ❌ | ❌ | ❌ | ✅ |
| **No login / no cookies** | ✅ | ✅ | ❓ | ❌ | ✅ |
| **Source code visibility** | Public | Public | Public | Public | **Hidden (paid-tier protection)** |

**Bottom line:** This is the **richest LinkedIn post timeline scraper on the store** — 27 fields per post, reaction breakdowns, repost detection, and full profile + company timeline pagination at competitor price. Most competitors either need a URL per post (slow) or require a monthly subscription.

### What you get — 1 record type, 27 fields per post

For each post, the actor returns:

#### Post core (5 fields)
- `postUrn` — LinkedIn's `urn:li:activity:...` identifier
- `postUrl` — direct link to the post
- `text` — full post text
- `edited` — whether the post has been edited
- `sourceInput` / `sourceType` — what you input (URL / slug) and whether it's `profile` or `company`

#### Author (7 fields)
- `authorName`, `authorHeadline`
- `authorProfileUrl`, `authorProfilePictureUrl`
- `authorUrn`, `authorId`
- `authorType` (PERSON / COMPANY)

#### Timing (4 fields)
- `postedAtMs` — Unix milliseconds
- `postedAtIso` — ISO 8601 UTC
- `postedAtRelative` — LinkedIn's "1d", "3w", "5mo" string
- `postedAtFullDate` — vendor's full-date string

#### Engagement (4 fields)
- `totalReactions` — sum across all reaction types
- `commentsCount`
- `repostsCount`
- `reactionsBreakdown` — `{LIKE: 711, EMPATHY: 29, APPRECIATION: 23, INTEREST: 23, PRAISE: 15, ENTERTAINMENT: 3}`

#### Media (3 fields)
- `mediaType` (image / video / article / document)
- `mediaUrl`
- `mediaCount` — total media items attached

#### Repost detection (4 fields)
- `isRepost` — boolean
- `resharedText`, `resharedAuthor`, `resharedUrl` — when isRepost=true

Plus `scrapedAt` timestamp. **Total 27 fields.**

Plus a `diagnostic` record for any failed source, and a final `summary` record per run.

### Use cases (top 7)

#### 1. Content marketing intelligence — monitor competitor brand activity
Pull every recent post from competitor company pages. Track which content themes get traction (high `totalReactions`/`commentsCount`), what cadence they post at, what media types perform.

#### 2. Influencer research for sponsored content
Pull `profileUrls` of target influencers. Get reaction breakdowns to identify which posts performed best — useful for partnership scoring.

#### 3. Sales prospecting — find prospects via their posting activity
Identify decision-makers actively posting about your problem space. Combine with `LinkedIn Search Scraper` to surface them by keyword, then pull their full timelines here.

#### 4. Employer brand monitoring
Pull your own company page + key employee profiles. See what content lands, what doesn't, what employees are sharing.

#### 5. Account-Based Marketing (ABM) — multi-account content surveillance
Feed your target accounts list as `companyUrls`. Monthly cron extracts new posts. Detect product launches, funding rounds, hiring intent before the rest of the market.

#### 6. Recruiting — see what candidates publicly engage with
Combine `LinkedIn Profile Reactions Scraper` (what they react to) + this actor (what they post). Get a full picture of their professional interests.

#### 7. Trend research — see what's resonating in your niche
Pull recent posts from 10-20 industry leaders. Aggregate `reactionsBreakdown` per topic to detect emerging themes.

### How it works

1. Set `profileUrls` (LinkedIn profile URLs like `https://www.linkedin.com/in/williamhgates/`) and/or `companyUrls` (company URLs like `https://www.linkedin.com/company/microsoft/`). Bare usernames/slugs also accepted.
2. Set `maxPostsPerSource` (1-500, default 20). Vendor returns up to ~500 posts per source via cursor pagination.
3. The actor resolves each input → fetches the timeline → normalizes each post to 27 fields → pushes to dataset.

**Reposts:** if a profile reposts someone else's content, the `author` field shows the original poster (not the profile you requested). The `sourceInput` field captures what you asked for. To filter to original-only posts, filter by `authorUrn == <your-target-urn>` in your downstream pipeline.

**School & Showcase pages:** LinkedIn `/school/<slug>/` and `/showcase/<slug>/` URLs are supported via the same `companyUrls` input.

No login required. No cookies. The actor uses a managed data partnership for cookieless LinkedIn access — no account ban risk on your side, no session management.

### Example input

```json
{
  "profileUrls": [
    "https://www.linkedin.com/in/williamhgates/",
    "satyanadella"
  ],
  "companyUrls": [
    "https://www.linkedin.com/company/microsoft/",
    "openai"
  ],
  "maxPostsPerSource": 50
}
````

This run returns up to **200 records** (50 × 2 profiles + 50 × 2 companies). At $1.50/1k = **$0.30 total**.

### Pricing — pay only for results

**$1.50 per 1,000 posts. Pay-per-result.**

- ✅ No subscription
- ✅ No monthly minimum
- ✅ No per-run start fee
- ✅ No charge for failed sources or unresolvable profiles (clean diagnostic record)
- ✅ Apify's free tier ($5/month platform credit) covers ~3,300 posts to start

**Cheaper than alternatives when you account for hidden fees:**

- $0.0015/post matches get-leads (the established post-result rate)
- No $20-30 monthly subscription (bebity, curious\_coder)
- Far more data per post — 27 fields vs competitors' ~12-14 (1.9× richer at the same price)

### Combine with other LinkedIn actors

Build a complete LinkedIn intelligence pipeline:

- Feed `postUrn` from this actor into the **LinkedIn Post Comments Scraper** → full comment threads
- Feed `postUrn` from this actor into the **LinkedIn Post Reactions Scraper** → full reactor lists
- Feed `authorProfileUrl` (from reposts) into **LinkedIn Profile Reactions Scraper** → what those authors react to
- Feed `companyUrls` results into **LinkedIn Company Scraper** → full firmographics on each post-source

### FAQ

**Q: How many posts can I get per profile or company?**
LinkedIn's vendor API typically returns up to ~500 historical posts per source via cursor pagination. The `maxPostsPerSource` input caps at 500.

**Q: Why does my profile timeline include posts by other people?**
LinkedIn's `/posts/all` endpoint returns the profile's full activity feed — **both originals and reposts**. When the profile reposts someone, the `author` field shows the original poster. Filter by `authorUrn == <target-profile-urn>` if you only want originals.

**Q: Do you support hashtag pages or topic pages?**
No — this actor scrapes profile and company **timelines** only. For topic-based / keyword post discovery, use the **LinkedIn Search Scraper** with `entityType=POSTS`.

**Q: What about Pulse articles (long-form posts)?**
Not in this actor — Pulse articles are a separate LinkedIn content type. We'll be adding a dedicated **LinkedIn Pulse Article Scraper** soon (currently in development).

**Q: Are deleted or hidden posts returned?**
No — the vendor only returns publicly visible posts. Deleted posts disappear from the feed.

**Q: Do reactions and comment counts update in real-time?**
Counts are accurate as of scrape time. Re-run the actor to refresh.

**Q: Is this safe to use vs my LinkedIn account?**
Yes. No login, no cookies, no browser session. The actor never authenticates as you.

**Q: What's the difference between profile and company timelines?**
Profile timelines (`profileUrls`) return what an individual person posts/reposts. Company timelines (`companyUrls`) return what the official company page posts. Some companies have very active pages; some are dormant.

### Privacy & compliance

This actor scrapes **publicly accessible LinkedIn timeline content**. We do not access private profiles, gated content, or content requiring login. The data returned is the same data any logged-out visitor can see by viewing the profile/company page.

LinkedIn user content may be subject to LinkedIn's Terms of Use, applicable copyright laws, and platform rate limits. Customers are responsible for compliance with applicable data protection laws (GDPR, CCPA, etc.) when processing scraped data.

Not affiliated with, endorsed by, or sponsored by LinkedIn Corporation or Microsoft Corporation.

# Actor input Schema

## `profileUrls` (type: `array`):

List of LinkedIn profile URLs (https://www.linkedin.com/in/<username>/) or bare usernames. Provide at least one of profileUrls or companyUrls.

## `companyUrls` (type: `array`):

List of LinkedIn company URLs (https://www.linkedin.com/company/<slug>/) or bare slugs. Schools and showcase pages also supported.

## `maxPostsPerSource` (type: `integer`):

Hard cap on how many posts to scrape per profile/company. Default 20, max 500.

## Actor input object example

```json
{
  "profileUrls": [
    "https://www.linkedin.com/in/williamhgates/"
  ],
  "companyUrls": [],
  "maxPostsPerSource": 20
}
```

# 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 = {
    "profileUrls": [
        "https://www.linkedin.com/in/williamhgates/"
    ],
    "companyUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("linkedintel/linkedin-post-scraper-no-cookies").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 = {
    "profileUrls": ["https://www.linkedin.com/in/williamhgates/"],
    "companyUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("linkedintel/linkedin-post-scraper-no-cookies").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "profileUrls": [
    "https://www.linkedin.com/in/williamhgates/"
  ],
  "companyUrls": []
}' |
apify call linkedintel/linkedin-post-scraper-no-cookies --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=linkedintel/linkedin-post-scraper-no-cookies",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "LinkedIn Post Scraper · No Cookies · $1.50/1k ✅",
        "description": "Scrape recent posts from any LinkedIn profile or company page. 27 fields per post incl reaction breakdowns. No cookies, no login. $1.50/1k pay-per-result.",
        "version": "1.0",
        "x-build-id": "eMxvsREzo5Q51RAVd"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/linkedintel~linkedin-post-scraper-no-cookies/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-linkedintel-linkedin-post-scraper-no-cookies",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/linkedintel~linkedin-post-scraper-no-cookies/runs": {
            "post": {
                "operationId": "runs-sync-linkedintel-linkedin-post-scraper-no-cookies",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/linkedintel~linkedin-post-scraper-no-cookies/run-sync": {
            "post": {
                "operationId": "run-sync-linkedintel-linkedin-post-scraper-no-cookies",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "profileUrls": {
                        "title": "Profile URLs",
                        "type": "array",
                        "description": "List of LinkedIn profile URLs (https://www.linkedin.com/in/<username>/) or bare usernames. Provide at least one of profileUrls or companyUrls.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "companyUrls": {
                        "title": "Company URLs",
                        "type": "array",
                        "description": "List of LinkedIn company URLs (https://www.linkedin.com/company/<slug>/) or bare slugs. Schools and showcase pages also supported.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxPostsPerSource": {
                        "title": "Maximum posts per source",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Hard cap on how many posts to scrape per profile/company. Default 20, max 500.",
                        "default": 20
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
