# LinkedIn Posts Scraper — Search, Comments, Reactions & Authors (`scrapepilot/linkedin-posts-scraper-search-comments-reactions-authors`) Actor

Search and scrape public LinkedIn posts by keywords, hashtags, authors, or companies without cookies or account login. Extract full post content, author profiles, likes, shares, reactions, and nested comment threads with 100% genuine live data.

- **URL**: https://apify.com/scrapepilot/linkedin-posts-scraper-search-comments-reactions-authors.md
- **Developed by:** [Scrape Pilot](https://apify.com/scrapepilot) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.30 / 1,000 scraped linkedin posts

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🚀 LinkedIn Posts Search Scraper (No Cookies, No Login, No Personal API Keys)

Search and extract **100% genuine public LinkedIn posts**, author profiles, social engagement metrics, high-resolution media, nested comments, and reaction statistics without sharing cookies, logging into accounts, or purchasing expensive third-party API keys.

***

### 🎯 Primary Focus Keywords & Use Cases

- **LinkedIn Posts Search Scraper** • **Scrape LinkedIn Posts Without Login** • **LinkedIn Posts API**
- **LinkedIn Comment Scraper** • **LinkedIn Reaction Scraper** • **LinkedIn Social Listening & Sentiment**
- **LinkedIn Recruiter & Hiring Posts Scraper** • **B2B Outreach & Lead Generation** • **LinkedIn Hashtag & Keyword Monitor**

***

### 🌟 Why Choose This LinkedIn Posts Search Scraper?

- 🛡️ **Zero Login & Zero Cookies Required**: Never risk your personal or business LinkedIn account being banned or restricted. Operates completely through public search discovery and guest endpoints.
- ⚡ **Ultra-Fast & Fresh Live Data**: Extract real-time posts directly from LinkedIn with zero stale caching.
- 🔍 **Advanced Boolean Query Support**: Search with boolean operators (`AND`, `OR`, `NOT`) to pinpoint exact posts, hiring announcements, industry insights, and outreach targets.
- 🏢 **Company & Author Filtering**: Segment post searches by author companies (e.g. Google, Microsoft, Amazon) or direct author profile URLs.
- 💬 **Full Comments & Reactions Extraction**: Retrieve complete nested comment threads (comment author, publication date, text, likes) and categorized engagement counts.
- 📊 **Multi-Format Export**: Export your datasets instantly in CSV, JSON, Excel (XLSX), or connect directly via Apify REST API, webhooks, and integrations.

***

### ⚡ Scraper Modes & Pay-Per-Event (PPE) Tiered Pricing

Apify provides volume discounts based on your subscription tier (Starter, Bronze, Silver, Gold). You only pay for successful records extracted:

| Event Name / Action | Event ID | No Discount (Starter) | Bronze Discount | Silver Discount | Gold Discount | Description |
| :--- | :---: | :---: | :---: | :---: | :---: | :--- |
| **Scraped LinkedIn Post** | `post` | **$2.00** / 1k | **$1.77** / 1k | **$1.53** / 1k | **$1.30** / 1k | Successfully extracted public post with full text, author, engagement, and media. |
| **Author Main Profile** | `main-profile` | **$2.00** / 1k | **$1.87** / 1k | **$1.73** / 1k | **$1.60** / 1k | Basic author profile data extracted alongside post record. |
| **Author Full Profile Enrichment** | `full-profile` | **$4.20** / 1k | **$3.80** / 1k | **$3.40** / 1k | **$3.00** / 1k | Complete profile work experience, headline, skills, and background information. |
| **Scraped Reaction Item** | `reaction` | **$2.50** / 1k | **$2.23** / 1k | **$1.97** / 1k | **$1.70** / 1k | Individual post reaction metric entry extracted and pushed to dataset. |
| **Scraped Comment Item** | `comment` | **$2.50** / 1k | **$2.17** / 1k | **$1.83** / 1k | **$1.50** / 1k | Individual post comment thread entry extracted and pushed to dataset. |
| **Zero Result Search Query** | `zero-result-query` | **$1.00** / 1k | **$1.00** / 1k | **$1.00** / 1k | **$1.00** / 1k | Completed search query that produced zero results across all pages. |
| **Actor Start** | `apify-actor-start` | **$0.04** / run | **$0.04** / run | **$0.04** / run | **$0.04** / run | Run initialization, proxy allocation, and worker startup compute fee. |

> 🛡️ **Budget Safety & Spending Protection**: Users can specify a monthly spending limit in their Apify Console run configuration. If the spending limit is reached, the Actor stops scraping gracefully without failing your build.

***

### 📥 Input Parameters

| Parameter | Type | Required | Default | Description |
| :--- | :---: | :---: | :---: | :--- |
| `searchQueries` | `array` | **Yes** | `["Hiring software engineer"]` | List of search queries or keywords. Supports boolean operators (`AND`, `OR`, `NOT`). |
| `authorUrls` | `array` | No | `[]` | List of LinkedIn profile or company URLs to restrict post author discovery. |
| `authorsCompanies` | `array` | No | `[]` | List of company names where authors work (e.g. `["Google", "Microsoft"]`). |
| `authorsCompanyPublicIdentifiers` | `array` | No | `[]` | List of company public slugs (e.g. `["google", "microsoft"]`). |
| `postedLimit` | `string` | No | `"all"` | Timeframe filter: `"all"`, `"1h"`, `"24h"`, `"week"`, `"month"`, `"3months"`, `"6months"`, `"year"`. |
| `postedLimitDate` | `string` | No | `null` | Scrape posts from now up to and including this date (e.g. `"2025-01-01"` or timestamp). |
| `sortBy` | `string` | No | `"relevance"` | Sort results by `"relevance"` or `"date"` (newest first). |
| `maxPosts` | `integer` | No | `100` | Max posts per search query. Set to `0` to scrape all available posts (up to 400-500). |
| `startPage` | `integer` | No | `1` | Results page number to begin scraping from. |
| `scrapePages` | `integer` | No | `5` | Number of search pages to paginate if `maxPosts` is 0. |
| `scrapeComments` | `boolean` | No | `false` | Enable to extract comments as separate dataset items and nested arrays. |
| `maxComments` | `integer` | No | `10` | Maximum comments to extract per post. |
| `scrapeReactions` | `boolean` | No | `false` | Enable to extract reaction entries as separate dataset items. |
| `maxReactions` | `integer` | No | `10` | Maximum reactions to extract per post. |
| `proxy` | `object` | No | `{ "useApifyProxy": true }` | Apify Residential Proxy configuration. |

***

### 💡 Sample Input Configurations

#### 1. Finding Tech Hiring Posts from Top Tech Companies

```json
{
  "searchQueries": [
    "Hiring software engineer",
    "Hiring full stack developer"
  ],
  "authorsCompanies": [
    "Google",
    "Microsoft",
    "Amazon"
  ],
  "postedLimit": "month",
  "sortBy": "relevance",
  "maxPosts": 50,
  "scrapeComments": true,
  "maxComments": 5,
  "scrapeReactions": true,
  "maxReactions": 5
}
```

#### 2. Social Listening & AI Market Intel

```json
{
  "searchQueries": [
    "AI agents b2b",
    "enterprise LLM deployment"
  ],
  "postedLimit": "week",
  "sortBy": "relevance",
  "maxPosts": 50,
  "scrapeComments": true,
  "maxComments": 10
}
```

#### 3. Monitoring Executive Posts

```json
{
  "searchQueries": [
    "Artificial Intelligence"
  ],
  "authorUrls": [
    "https://www.linkedin.com/in/satyanadella"
  ],
  "postedLimit": "all",
  "maxPosts": 10
}
```

***

### 📤 Sample Output Data

#### Post Record (`type: "post"`)

```json
{
  "type": "post",
  "id": "7513195125095936000",
  "linkedinUrl": "https://www.linkedin.com/posts/jayesh-choudhary-72444518b_microsoft-hiring-softwareengineer-activity-7513195125095936000-Rp0D",
  "content": "New Microsoft Job - Software Engineer!\n\n🆔 Job ID: 200058734\n🗓️ Posted: Oct 05, 2026\n🧑‍💻 Role: Software Engineer II\n📝 Eligibility: Bachelor's in CS, IT or related field\n💻 Skills: C / C++ / C# / Java / JavaScript / Python\n🎓 Experience: 2+ Years\n\n🔗 Apply Here: https://lnkd.in/daBXSgZm\n\n#Microsoft #Hiring #SoftwareEngineer",
  "author": {
    "universalName": null,
    "publicIdentifier": "jayesh-choudhary-72444518b",
    "type": "profile",
    "name": "Jayesh Choudhary",
    "linkedinUrl": "https://in.linkedin.com/in/jayesh-choudhary-72444518b",
    "info": "98,715 followers",
    "website": null,
    "websiteLabel": null,
    "avatar": {
      "url": "https://media.licdn.com/dms/image/v2/D4D03AQGLhF_YrnIvBQ/profile-displayphoto-scale_200_200/B4DZ_qwvYHHEAg-/0/1786350075051?e=2147483647&v=beta&t=eAsS--H4TssnMSkUH-Lq5k6ef8bdS9LNgv_5hxnwIqg",
      "width": 674,
      "height": 674,
      "expiresAt": null
    }
  },
  "postedAt": {
    "timestamp": 1791285306237,
    "date": "2026-10-06T11:15:06.237Z",
    "postedAgoShort": "1w",
    "postedAgoText": "1 week ago • Visible to anyone on or off LinkedIn"
  },
  "postImages": [
    "https://media.licdn.com/dms/image/v2/D4D22AQEb78m-eZIjYw/feedshare-image-high-res/B4DaE6F2lkLEAY-/0/1791975975502"
  ],
  "socialContent": {
    "hideCommentsCount": false,
    "hideReactionsCount": false,
    "hideSocialActivityCounts": false,
    "hideShareAction": true,
    "hideSendAction": true,
    "hideRepostsCount": false,
    "hideViewsCount": false,
    "hideReactAction": false,
    "hideCommentAction": false,
    "shareUrl": "https://www.linkedin.com/posts/jayesh-choudhary-72444518b_microsoft-hiring-softwareengineer-activity-7513195125095936000-Rp0D",
    "showContributionExperience": false,
    "showSocialDetail": true
  },
  "engagement": {
    "likes": 204,
    "comments": 69,
    "shares": 0,
    "reactions": [
      {
        "type": "LIKE",
        "count": 204
      }
    ]
  },
  "comments": [
    {
      "authorName": "Roshani Kumari",
      "content": "Cfbr",
      "postedDate": "2026-10-07T03:25:10.658Z",
      "likes": 2
    }
  ],
  "authorName": "Jayesh Choudhary",
  "authorTitle": "98,715 followers",
  "likesCount": 204,
  "commentsCount": 69,
  "sharesCount": 0,
  "postedDate": "2026-10-06T11:15:06.237Z",
  "searchQuery": "Hiring software engineer",
  "scrapedAt": "2026-10-16T15:06:06.707Z"
}
```

#### Comment Record (`type: "comment"`)

```json
{
  "type": "comment",
  "id": "7513195125095936000-comment-1",
  "postId": "7513195125095936000",
  "authorName": "Roshani Kumari",
  "authorTitle": "LinkedIn Commenter",
  "content": "Cfbr",
  "likesCount": 2,
  "commentsCount": 0,
  "sharesCount": 0,
  "postedDate": "2026-10-07T03:25:10.658Z",
  "linkedinUrl": "https://www.linkedin.com/posts/jayesh-choudhary-72444518b_microsoft-hiring-softwareengineer-activity-7513195125095936000-Rp0D",
  "postLinkedinUrl": "https://www.linkedin.com/posts/jayesh-choudhary-72444518b_microsoft-hiring-softwareengineer-activity-7513195125095936000-Rp0D",
  "searchQuery": "Hiring software engineer",
  "scrapedAt": "2026-10-16T15:06:06.707Z"
}
```

#### Reaction Record (`type: "reaction"`)

```json
{
  "type": "reaction",
  "id": "7513195125095936000-reaction-1",
  "postId": "7513195125095936000",
  "authorName": "Jayesh Choudhary",
  "authorTitle": "Reaction: LIKE",
  "content": "Reaction LIKE: 204 reactions",
  "likesCount": 204,
  "commentsCount": 0,
  "sharesCount": 0,
  "postedDate": "2026-10-06T11:15:06.237Z",
  "linkedinUrl": "https://www.linkedin.com/posts/jayesh-choudhary-72444518b_microsoft-hiring-softwareengineer-activity-7513195125095936000-Rp0D",
  "postLinkedinUrl": "https://www.linkedin.com/posts/jayesh-choudhary-72444518b_microsoft-hiring-softwareengineer-activity-7513195125095936000-Rp0D",
  "reactionType": "LIKE",
  "count": 204,
  "searchQuery": "Hiring software engineer",
  "scrapedAt": "2026-10-16T15:06:06.707Z"
}
```

***

### ⚡ Best Practices & Pro Tips

1. **Segment Broad Queries**: LinkedIn displays up to 400-500 posts per search query. To extract thousands of posts, divide broad queries into smaller specific sub-queries (e.g. `"Hiring Python"`, `"Hiring React"`, `"Hiring DevOps"`).
2. **Target Specific Timeframes**: Set `postedLimit: "24h"` or `"week"` for real-time outreach and finding fresh active job openings where recruiters are currently reviewing applicants.
3. **Use Apify Residential Proxies**: When running high-volume extractions (over 500 posts per run), always enable Apify Residential Proxies (`RESIDENTIAL` group) to avoid rate limiting and ensure maximum reliability.

***

### ❓ Frequently Asked Questions

##### Q: Do I need a LinkedIn account or login cookies?

**A:** No! This Actor operates 100% publicly without requiring cookies, account passwords, or personal credentials.

##### Q: Can I search for hashtag posts like `#hiring` or `#AI`?

**A:** Yes, you can include hashtags and keyword combinations directly in `searchQueries`.

##### Q: Can I export results to Google Sheets, CRM, or Airtable?

**A:** Yes! Apify datasets can be exported to CSV, JSON, or synced automatically using Apify Integrations (Make, Zapier, Webhooks).

***

*Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation. LinkedIn® is a registered trademark of LinkedIn Corporation.*

# Actor input Schema

## `searchQueries` (type: `array`):

List of search queries to find posts on LinkedIn (e.g. 'b2b sales', 'Hiring software engineer', 'AI agents'). Supports boolean operators (AND, OR, NOT).

## `authorUrls` (type: `array`):

Optional list of LinkedIn profile or company URLs of users who posted or re-posted content (e.g. https://www.linkedin.com/in/satyanadella, https://www.linkedin.com/company/google).

## `authorsCompanies` (type: `array`):

Filter posts created by authors working at specific companies (e.g. 'Google', 'Microsoft', 'Amazon', 'Meta').

## `authorsCompanyPublicIdentifiers` (type: `array`):

Company public slugs or identifiers (e.g. 'google', 'microsoft', 'amazon', 'meta').

## `postedLimit` (type: `string`):

Fetch posts no older than selected timeframe.

## `postedLimitDate` (type: `string`):

Scrape posts from now up to and including this date (e.g. '2025-01-01' or '2025-01-01T00:00:00Z').

## `sortBy` (type: `string`):

Sort search results by relevance or newest publication date first.

## `maxPosts` (type: `integer`):

Maximum number of posts to scrape per search query. Set to 0 to scrape all available posts (up to 400-500 per query).

## `startPage` (type: `integer`):

Results page number to begin scraping from (default 1).

## `scrapePages` (type: `integer`):

Number of search pages to paginate through if maxPosts is set to 0.

## `scrapeComments` (type: `boolean`):

Enable to extract comments on posts. Comments will also be charged as separate comment events.

## `maxComments` (type: `integer`):

Maximum number of comments to extract per post (default 10).

## `scrapeReactions` (type: `boolean`):

Enable to extract engagement reactions to posts.

## `maxReactions` (type: `integer`):

Maximum number of reaction entries to extract per post.

## `proxy` (type: `object`):

Proxy configuration. Residential proxies are recommended for high-volume searches.

## Actor input object example

```json
{
  "searchQueries": [
    "Hiring software engineer"
  ],
  "postedLimit": "all",
  "sortBy": "relevance",
  "maxPosts": 100,
  "startPage": 1,
  "scrapePages": 5,
  "scrapeComments": false,
  "maxComments": 10,
  "scrapeReactions": false,
  "maxReactions": 10,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Collection of extracted LinkedIn post records stored in the default dataset.

# 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 = {
    "searchQueries": [
        "Hiring software engineer"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapepilot/linkedin-posts-scraper-search-comments-reactions-authors").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 = { "searchQueries": ["Hiring software engineer"] }

# Run the Actor and wait for it to finish
run = client.actor("scrapepilot/linkedin-posts-scraper-search-comments-reactions-authors").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 '{
  "searchQueries": [
    "Hiring software engineer"
  ]
}' |
apify call scrapepilot/linkedin-posts-scraper-search-comments-reactions-authors --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapepilot/linkedin-posts-scraper-search-comments-reactions-authors"
        }
    }
}
```

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/EMgff4G1Tl8d6rGA3/builds/qjuUf5PMaVJpjHXLf/openapi.json
