# LinkedIn Company Posts Scraper (No Cookies or Login Required) (`curly/linkedin-company-posts-scraper`) Actor

Enter LinkedIn company slugs or URLs, choose how many recent posts to return per company, and get text, dates, media, reactions, comments, reposts, and links. No cookies, login, or proxy setup. ($0.50 USD per 1,000 results)

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

## Pricing

$0.50 / 1,000 post results

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 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

## LinkedIn Company Posts Scraper (No Cookies or Login Required)

Scrape the latest public posts from LinkedIn company pages. Paste company URLs or slugs and get structured post text, dates, media, engagement, hashtags, mentions, and canonical links.

No LinkedIn cookies, account, login, or proxy setup is required. Proxies and retry handling are included.

### Quick start

1. Paste one LinkedIn company URL or slug per line. A slug is the part after `/company/` in a LinkedIn URL—for example, `openai`.
2. Set **Maximum results per URL** to the number of posts you want from each company, from 1 to 10.
3. Click **Start** and download the results as JSON, CSV, Excel, XML, or another supported dataset format.

That is the entire setup. The Actor automatically validates URLs, removes duplicates, and uses the included proxies.

#### Input

The only input is **LinkedIn company URLs or slugs**:

```json
{
  "companies": [
    "https://www.linkedin.com/company/openai",
    "microsoft"
  ],
  "maxResultsPerUrl": 5
}
```

Accepted values:

- A full company page URL such as `https://www.linkedin.com/company/openai`
- A localized LinkedIn URL such as `https://de.linkedin.com/company/openai`
- A company slug—the part after `/company/`—such as `openai`

You can enter up to 100 companies per run and request from 1 to 10 posts from each company. The result limit applies separately to every URL or slug. Duplicate URLs and slugs are processed once. Personal profiles, post URLs, search URLs, and non-LinkedIn URLs are rejected.

### What you get

Each dataset item represents one LinkedIn company post and can include:

- Post ID, canonical URL, text, and publication time
- Company ID, name, URL, and slug
- Content type: text, image, video, document, article, poll, or event
- Media URLs, thumbnails, titles, and alt text
- Linked article metadata
- Hashtags, mentions, and external URLs
- Reaction, comment, and repost counts when publicly visible
- Repost status and original author when available

Example result:

```json
{
  "post_id": "urn:li:activity:7353401029384757248",
  "post_url": "https://www.linkedin.com/posts/openai_example-activity-7353401029384757248-abcd",
  "company_id": "11130470",
  "company_name": "OpenAI",
  "company_url": "https://www.linkedin.com/company/openai",
  "company_slug": "openai",
  "text": "An example public company update.",
  "published_at": "2026-07-24T16:30:00.000Z",
  "content_type": "image",
  "is_repost": false,
  "original_author": null,
  "media": [
    {
      "type": "image",
      "url": "https://media.licdn.com/example.jpg",
      "thumbnail_url": null,
      "title": null,
      "alt_text": "Example image"
    }
  ],
  "article": null,
  "hashtags": ["AI"],
  "mentions": [],
  "external_urls": [],
  "reaction_count": 1250,
  "comment_count": 84,
  "repost_count": 61,
  "scraped_at": "2026-07-28T12:00:00.000Z",
  "source": "linkedin_company_post"
}
```

Fields that LinkedIn does not expose publicly are returned as `null` or an empty array instead of being guessed.

### Price

The price is **$0.0005 per stored post** — **$0.50 per 1,000 results**. You pay for returned dataset items, not failed or duplicate company inputs.

### Run with the API

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/curly~linkedin-company-posts-scraper/run-sync-get-dataset-items?format=json" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"companies":["openai","https://www.linkedin.com/company/microsoft"],"maxResultsPerUrl":5}'
```

The same input works with the Apify API client, schedules, webhooks, and integrations.

### Limits and responsible use

- LinkedIn's public no-login company surface currently exposes up to 10 recent posts per company.
- Some engagement or media fields may be unavailable for individual posts.
- Public page availability can vary by company, country, and time.
- Use the Actor only for lawful purposes and comply with applicable privacy, data protection, and platform rules.

### FAQ

#### Do I need LinkedIn cookies or an account?

No. The Actor accesses public company pages without your LinkedIn credentials.

#### Do I need to configure a proxy?

No. Proxy access is included and configured automatically.

#### Can it scrape personal profile posts?

No. This Actor is intentionally limited to posts from public LinkedIn company pages.

#### How many posts does it return?

Choose any value from 1 to 10 in **Maximum results per URL**. The limit applies separately to every company. LinkedIn's public no-login company surface currently exposes at most 10 recent posts per company.

#### Why is a field `null`?

LinkedIn does not expose every field on every public post. Missing values remain explicit rather than being inferred.

# Actor input Schema

## `companies` (type: `array`):

Paste one company page URL or slug per line. A slug is the part after /company/ (for example, openai). This is the only input required; duplicate companies are processed once.

## `maxResultsPerUrl` (type: `integer`):

Set the maximum number of recent public posts returned from each company URL or slug.

## Actor input object example

```json
{
  "companies": [
    "https://www.linkedin.com/company/openai"
  ],
  "maxResultsPerUrl": 10
}
```

# Actor output Schema

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

No description

## `runSummary` (type: `string`):

No description

## `failedInputs` (type: `string`):

No description

# 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 = {
    "companies": [
        "https://www.linkedin.com/company/openai"
    ],
    "maxResultsPerUrl": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("curly/linkedin-company-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 = {
    "companies": ["https://www.linkedin.com/company/openai"],
    "maxResultsPerUrl": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("curly/linkedin-company-posts-scraper").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 '{
  "companies": [
    "https://www.linkedin.com/company/openai"
  ],
  "maxResultsPerUrl": 10
}' |
apify call curly/linkedin-company-posts-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/V3N8eEB617SXAJHOD/builds/RHkxlVpKubHA3lsvq/openapi.json
