# LinkedIn Posts Search Scraper (`coregent/linkedin-posts-search-scraper`) Actor

Search public LinkedIn posts by keyword, phrase or hashtag. Get full text, author, publish time, reactions, comments, media, hashtags, mentions, reposts and search position - with the search source on every row. No LinkedIn login or cookies.

- **URL**: https://apify.com/coregent/linkedin-posts-search-scraper.md
- **Developed by:** [Delowar Munna](https://apify.com/coregent) (community)
- **Stats:** 6 total users, 5 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 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.
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

![LinkedIn Posts Search Scraper](https://raw.githubusercontent.com/coregentdevspace/linkedin-posts-search-scraper-assets/main/thumbnail-linkedin-posts-search-scraper.png "LinkedIn Posts Search Scraper")

**Search public LinkedIn posts by keyword, "exact phrase" or #hashtag, and export each matching post as clean structured data.** Every row includes the full text, the author (person or company page), the exact publish time, reactions and comments, media, hashtags, @-mentions, article cards and repost / quote-post context. It also records which query found the post, its position in the results, and where the result came from.

**No LinkedIn login, no cookies, no browser extension.** You never share a LinkedIn account with this Actor.

***

### What you can do with it

- **Market intelligence**: see who is talking about "AI agents", "zero trust" or "customer data platform", and what they say.
- **Brand and competitor monitoring**: find public posts that mention your brand, product or competitors.
- **Buyer-intent discovery**: search phrases like `"looking for a CRM"` or `"any recommendations"`.
- **Hiring signals**: `"we are hiring" data engineers`.
- **Creator and executive discovery**: find the people and company pages publishing on a topic, then enrich them with a profile scraper.
- **Monitoring**: schedule the same search daily or weekly with a `PAST_24_HOURS` / `PAST_WEEK` date window.

The workflow it enables:

```text
Topic / keyword → matching posts → authors & companies → profiles → work emails → monitoring
```

***

### Quick answers

| Question | Answer |
|---|---|
| **What can I search?** | Plain keywords (`AI agents`), exact phrases in double quotes (`"looking for CRM"`), and hashtags (`#cybersecurity`). Up to 100 queries per run. |
| **Do I need a LinkedIn login or cookies?** | No. The Actor only reads public posts that anyone can open without signing in. |
| **Is this LinkedIn's own search?** | **No, and the Actor says so on every row.** LinkedIn's post search only works for signed-in users. This Actor finds public LinkedIn posts through a **public web search index**, then opens each post's public LinkedIn page and reads it there. Every row carries `searchSource: "WEB_INDEX"`. |
| **What does `searchSource` mean?** | Where the result was discovered. `WEB_INDEX` = a public web search index of LinkedIn post pages. The post data itself (text, author, counts, media) always comes from the post's own public LinkedIn page. |
| **How many results per query?** | Up to `maxResultsPerQuery` (1–1,000). Broad topics easily reach hundreds. Niche topics have fewer public posts, and the run stops when the index has no more. `coverageStatus` tells you which of the two happened. |
| **Relevance or recency?** | `RELEVANCE` puts the search index's own top results first, then goes deeper through newest-first date slices. `RECENCY` returns the newest posts first, working through date slices from newest to oldest. Neither is LinkedIn's in-app ranking. |
| **Can I search hashtags?** | Yes: `#cybersecurity`. `hashtags` is returned without the `#`. |
| **Can I filter by date?** | Yes: past 24 hours / week / month / year, or a custom range. Every post's exact publish time is checked, so posts outside the window are dropped and not charged. |
| **Can I filter by author or company?** | Yes. `authors` (profile URLs or slugs) and `authorCompanies` (company pages) keep only posts written by them. `mentionedOrganizations` keeps posts that @-mention or name an organization. |
| **Are company posts included?** | Yes. `author.type` is `PERSON` or `COMPANY`. |
| **Media and article cards?** | Yes: images, native and embedded videos (with duration where shown), documents / carousels (title, page count, cover), and link / article cards (URL, title, publisher). |
| **Reposts and quote posts?** | Yes. They are never flattened into the reposter's own post: `isQuotePost` / `isRepost` are set, `quoteText` holds the reposter's comment, and `originalPost` holds the original author, text and media. |
| **Why do results differ from what I see when I'm signed in to LinkedIn?** | Signed-in search is personalised (your network, language, history) and includes posts that are not public. This Actor sees only public posts that a search index has picked up, so coverage varies by query. |
| **How does pricing work?** | You pay per post delivered. See [Pricing](#pricing). |
| **Can I schedule it?** | Yes. Use Apify Schedules with a date window that matches the schedule (e.g. daily + `PAST_24_HOURS`). |
| **API / MCP?** | Yes. Run it from the Apify API, any Apify client, integrations (Make, Zapier, n8n) or as a tool for AI agents through Apify's MCP server. |

***

### Input examples

#### Minimal

```json
{
    "queries": ["AI agents"],
    "maxResultsPerQuery": 100
}
```

#### Several queries, newest first, last month

```json
{
    "queries": ["AI agents", "AI governance", "#cybersecurity"],
    "maxResultsPerQuery": 200,
    "sortBy": "RECENCY",
    "datePosted": "PAST_MONTH"
}
```

#### Buyer intent, text and image posts only

```json
{
    "queries": ["\"looking for CRM\"", "\"recommend a CRM\""],
    "maxResultsPerQuery": 500,
    "sortBy": "RECENCY",
    "datePosted": "PAST_MONTH",
    "contentTypes": ["TEXT", "IMAGE"]
}
```

#### Posts by specific people

Author filters keep only posts written by the listed profiles. Put the author's name in the query too, so the search finds their posts in the first place.

```json
{
    "queries": ["\"Aishwarya Srinivasan\" AI", "\"Armand Ruiz\" AI agents"],
    "authors": ["https://www.linkedin.com/in/aishwarya-srinivasan", "armand-ruiz"],
    "maxResultsPerQuery": 30
}
```

#### Posts by company pages

```json
{
    "queries": ["Palo Alto Networks AI security", "AMD AI"],
    "authorCompanies": ["https://www.linkedin.com/company/palo-alto-networks", "amd"],
    "maxResultsPerQuery": 20
}
```

#### Posts that mention organizations

```json
{
    "queries": ["zero trust"],
    "mentionedOrganizations": ["Microsoft", "Okta"],
    "maxResultsPerQuery": 30
}
```

#### Custom date range

```json
{
    "queries": ["#ai"],
    "datePosted": "CUSTOM",
    "postedAfter": "2026-09-01",
    "postedBefore": "2026-09-30",
    "maxResultsPerQuery": 300
}
```

#### Input fields

| Field | Default | Notes |
|---|---|---|
| `queries` | `["AI agents"]` | Keywords, `"exact phrases"`, `#hashtags`. Identical queries are merged. |
| `maxResultsPerQuery` | `100` | 1–1,000 posts saved per query. |
| `sortBy` | `RELEVANCE` | `RELEVANCE` or `RECENCY`. |
| `datePosted` | `ANY_TIME` | `ANY_TIME`, `PAST_24_HOURS`, `PAST_WEEK`, `PAST_MONTH`, `PAST_YEAR`, `CUSTOM`. |
| `postedAfter` / `postedBefore` | empty | `YYYY-MM-DD` (UTC), used with `CUSTOM`. |
| `authors` | `[]` | Profile URLs or slugs. Posts written by these people. |
| `authorCompanies` | `[]` | Company page URLs, slugs or exact page names. Posts published by these pages. |
| `mentionedOrganizations` | `[]` | Posts that @-mention or name one of these (up to 10). Also added to the search. |
| `contentTypes` | `[]` (all) | `TEXT` (text-only), `IMAGE`, `VIDEO`, `ARTICLE`, `DOCUMENT`, `REPOST`, `QUOTE_POST`. |
| `includeMedia` | `true` | Media objects per post. |
| `includeTopComments` | `false` | Up to 3 top comments shown publicly on the post. A preview, not full threads. |
| `includeRawData` | `false` | Raw structured data + search hit under `raw`. |
| `deduplicateAcrossQueries` | `false` | Return each post once per run instead of once per query. |
| `proxyConfiguration` | Apify Proxy | See [Proxy policy](#-proxy-policy). |

**How filters combine:** query AND date AND authors AND author companies AND mentioned organizations AND content types. Inside one filter, the values are OR'ed: `"contentTypes": ["IMAGE", "VIDEO"]` means image **or** video.

`authors` and `authorCompanies` **filter** the posts found for your queries; they do not search for everything a person has posted. To collect one person's full post history, use a LinkedIn profile posts scraper instead.

***

### Output

One row per matching post, in the **Posts** tab of the dataset. Export it as JSON, CSV, Excel or HTML.

#### Posts: table view

![LinkedIn Posts Search Scraper: Posts table view](https://raw.githubusercontent.com/coregentdevspace/linkedin-posts-search-scraper-assets/main/linkedin-posts-search-scraper-output-posts-table-view.png "LinkedIn Posts Search Scraper: Posts table view")

#### Posts: sample record (JSON)

A real row from a default run (query `AI agents`). This one is a company-page video post:

```json
{
    "rowType": "post",
    "query": "AI agents",
    "queryIndex": 0,
    "position": 16,
    "searchSource": "WEB_INDEX",
    "searchSemantics": "WEB_INDEX",
    "coverageStatus": "LIMIT_REACHED",
    "postId": "urn:li:activity:7514324003319267328",
    "urn": "urn:li:activity:7514324003319267328",
    "activityId": "7514324003319267328",
    "postUrl": "https://www.linkedin.com/posts/amd_as-small-open-models-advance-so-does-the-activity-7514324003319267328-znbM",
    "postType": "POST",
    "contentTypes": [
        "VIDEO"
    ],
    "text": "As small open models advance, so does the potential for AI agents to work together.\n\nAMD SVP and GM of the Computing and Graphics Group, Jack Huynh envisions agents multiplying individual impact, from one agent assisting with a task to teams working on a much larger scale.\n\nWatch Jack share his perspective on what comes next for agentic AI.",
    "publishedAt": "2026-10-09T14:00:51.778Z",
    "author": {
        "name": "AMD",
        "type": "COMPANY",
        "headline": null,
        "profileUrl": "https://www.linkedin.com/company/amd/",
        "publicIdentifier": "amd",
        "followersCount": 2628419,
        "profilePictureUrl": "https://media.licdn.com/dms/image/v2/D560BAQFCdxxVA_xhqQ/company-logo_100_100/B56ZnuIjafHUAU-/0/1760636844195/amd_logo?e=2147483647&v=beta&t=7sw3BjNNNSGV0P6imSg3j1KA9Z07vLBQjTYIMB-k8zI"
    },
    "engagement": {
        "reactionsCount": 62,
        "commentsCount": 3,
        "repostsCount": null
    },
    "hashtags": [],
    "mentions": [
        {
            "name": "Jack Huynh",
            "type": "PERSON",
            "url": "https://www.linkedin.com/in/jackhuynh/",
            "publicIdentifier": "jackhuynh"
        }
    ],
    "media": [
        {
            "type": "VIDEO",
            "url": "https://dms.licdn.com/playlist/vid/v2/D4E10AQEkqAIHFuu16g/mp4-720p-30fp-crf28/B4EaEg9ztBIwBk-/0/1791554447270?e=2147483647&v=beta&t=rdE3_2JwV3T5dOwOiRvv8MMTDR-5dpvnLUQgSr-U8ts",
            "thumbnailUrl": "https://media.licdn.com/dms/image/v2/D4E10AQEkqAIHFuu16g/videocover-high/B4EaEg9ztBIwAo-/0/1791554442170?e=2147483647&v=beta&t=260S9BnCHKWz_zQgFfcTyao7hoEe2uPE0OfHvhSXF1c",
            "title": null,
            "width": 720,
            "height": 1280,
            "durationSeconds": 42
        }
    ],
    "article": null,
    "isRepost": false,
    "isQuotePost": false,
    "quoteText": null,
    "originalPost": null,
    "matchedFilters": {
        "query": true
    },
    "scrapedAt": "2026-10-10T15:23:41.430Z"
}
```

#### Field notes

- **`position`**: the post's place in the results for that query, in discovery order. Positions 1–10 are the search index's own ranking. Posts dropped by a filter or unavailable keep their number, so a filtered run can have gaps (1, 2, 5, …). Results are never re-ranked locally.
- **`coverageStatus`**: `LIMIT_REACHED` (your `maxResultsPerQuery` was filled), `INDEX_LIMITED` (the public index had no more matching posts), `NO_RESULTS`, or `PROVIDER_LIMITED` (the search stopped early: a provider error, the per-query search budget, or filters that kept almost nothing; the run summary's `stopReason` says which). Queries over 200 posts save results in batches as they go; rows from an early batch have `coverageStatus: null`, and the query's final coverage is in the run summary (`queries[]`).
- **`postType`**: `POST`, `REPOST`, `QUOTE_POST`, or `ARTICLE` (a post sharing a link / article card). Image, video and document are listed in `contentTypes` and `media` rather than as post types.
- **`author.headline`**: LinkedIn does not show a person's headline on public post pages, so it is usually `null`. Use `author.profileUrl` with a profile scraper to get it.
- **`engagement.repostsCount`**: always `null`. LinkedIn does not show repost counts to signed-out visitors, and the Actor never estimates missing numbers.
- **`publishedAt`**: the exact publish time from the post page. If a page omits it, the time is taken from the post ID, which encodes the creation time.

#### Web-index coverage, explained

Each query is searched in a public web index of LinkedIn post pages. Results arrive at most 10 per request, so the Actor goes deeper by slicing time into date windows (newest first) and searching each one. That gives depth to hundreds of posts on broad topics. It also means:

- coverage depends on which public posts the index has picked up. A very new post may not be indexed yet.
- `RECENCY` is newest-first by date window. Within a window, posts are sorted by their exact creation time, but an index can date a page slightly differently from LinkedIn, so the order across windows is close to chronological, not guaranteed.
- you never get posts that are only visible to signed-in users.

#### Run summary

Each run saves a `RUN_SUMMARY` record in the default key-value store. It includes queries run, succeeded and failed; posts saved; duplicates skipped; posts filtered out (and by which filter); posts that were not public; per-query status (`SUCCESS`, `NO_RESULTS`, `PARTIAL_RESULT`, `RATE_LIMITED`, `BLOCKED`, `PROVIDER_ERROR`) with coverage; and the search source used. Failed queries are also saved as `RETRY_INPUT`, a ready-to-use input for a re-run. One failed query never fails the whole run.

***

### Pricing

This Actor uses **pay-per-event** pricing. You pay **only for posts delivered to your dataset**:

- **Post result**: charged once per unique post saved for a query.

You are **not** charged for search requests, retries, pagination, duplicates, posts removed by your filters, posts that turn out not to be public, failed queries, or the run summary. A run that finds nothing costs nothing in results.

The same post found by two different queries is saved, and charged, once per query, because each row keeps its own query and position. Turn on `deduplicateAcrossQueries` to get and pay for each post only once per run.

Current prices are on the **Pricing** tab of this Actor's page, and the per-post price can differ by Apify plan. This README deliberately doesn't quote figures, so it never shows an outdated price. Your Apify per-run spending limit is respected: the Actor stops searching once it has found as many posts as your limit can pay for, and saves them.

***

#### 🚦 Proxy policy

Post pages are fetched from LinkedIn's public site. Use **Apify Datacenter** proxy (the default) or **no proxy** for normal runs. Both work for public LinkedIn post pages at this Actor's conservative concurrency.

**Apify Residential proxy is not supported.** The Actor fails at startup if `apifyProxyGroups` includes `RESIDENTIAL`. Reason: in pay-per-event Actors, residential bandwidth is billed to the developer, not the run user, so a single bandwidth-heavy run could exceed the per-result revenue.

If you genuinely need residential routing, supply your own residential provider via the proxy editor's **Custom proxy URLs** field. That traffic goes through your provider, not Apify, and is unaffected:

```
http://user:pass@proxy.iproyal.com:12321
http://user:pass@proxy.brightdata.com:22225
http://user:pass@proxy.oxylabs.io:7777
```

***

### Limitations

- **Public posts only.** Posts limited to connections, groups or signed-in users are never returned.
- **Index-based discovery.** Coverage depends on what the public web index has picked up, and varies by query. The Actor never claims a complete result set; it reports `INDEX_LIMITED` when the index runs out.
- **Filters narrow, they don't widen the search.** `authors`, `authorCompanies`, `contentTypes` and `mentionedOrganizations` are checked on each post the search finds. If a filter keeps fewer than about one post per search request after the first few requests, the query stops early with `PROVIDER_LIMITED` (`stopReason: filter-yield-too-low`) rather than paging through posts that won't match. Rare combinations can return few or no posts; widen the query or loosen the filter.
- **No author title or industry filters.** Public post pages do not show a person's headline or industry, so these cannot be verified reliably and are not offered.
- **Repost counts are not public** (`repostsCount` is `null`).
- **Top comments are a preview** (up to 3 that LinkedIn shows publicly), not full threads.
- Results can differ from LinkedIn's signed-in, personalised search.

***

### Works well with

- **LinkedIn Profile Scraper**: pass `author.profileUrl` to get headlines, experience and more.
- **LinkedIn Profile Posts Scraper**: once you know the person, collect everything they post.
- **LinkedIn Company Employees Scraper** and **Work Email Finder**: go from the companies you discovered to the people behind them.

***

### Compliance and privacy

This Actor is an unofficial tool and is not affiliated with, endorsed by or sponsored by LinkedIn. It processes publicly available professional content only and does not log in, collect credentials or bypass any privacy setting. Public posts can contain personal data. You are responsible for processing results lawfully (for example under GDPR / CCPA) and in line with LinkedIn's terms and your own use case.

# Actor input Schema

## `queries` (type: `array`):

One search per line. Plain keywords (AI agents), "exact phrases" in double quotes, or #hashtags. Each query is searched separately and every row keeps the query that found it. Up to 100 queries per run; identical queries are merged.

## `maxResultsPerQuery` (type: `integer`):

Maximum number of posts saved (and charged) for each query. Typical values: 20, 50, 100, 500, 1000. Large values need a broad query - niche topics have fewer public posts.

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

RELEVANCE: the search index's own ranking first, then deeper results in newest-first date slices. RECENCY: newest posts first (date-sliced newest to oldest).

## `datePosted` (type: `string`):

Only return posts published in this window. CUSTOM uses the 'Posted after' / 'Posted before' dates below. Dates are verified against each post's exact publish time.

## `postedAfter` (type: `string`):

Earliest publish date (YYYY-MM-DD, UTC). Used with Date posted = Custom range.

## `postedBefore` (type: `string`):

Latest publish date (YYYY-MM-DD, UTC, inclusive). Used with Date posted = Custom range.

## `authors` (type: `array`):

Keep only posts written by these people. LinkedIn profile URLs (https://www.linkedin.com/in/janesmith) or profile slugs (janesmith). Filters the posts found for your queries; it does not widen the search, so include the author's name in the query (e.g. "Jane Smith" AI).

## `authorCompanies` (type: `array`):

Keep only posts published by these LinkedIn company pages. Company URLs (https://www.linkedin.com/company/canva), slugs (canva) or exact page names (Canva).

## `mentionedOrganizations` (type: `array`):

Keep only posts that mention at least one of these organizations, either as an @-mention or by name in the post text. The names are also added to the search to find more matching posts. Up to 10.

## `contentTypes` (type: `array`):

Keep only posts of these types. TEXT = text-only posts (no media). Leave empty for all types.

## `includeMedia` (type: `boolean`):

Return image, video, document and article-card media objects for each post.

## `includeTopComments` (type: `boolean`):

Add up to 3 top comments that LinkedIn shows publicly on the post page. A preview only - not full comment threads.

## `includeRawData` (type: `boolean`):

Add the post page's raw structured data and the search hit (title, snippet) under `raw`. For advanced users.

## `deduplicateAcrossQueries` (type: `boolean`):

By default the same post can appear once per query that found it (and is charged once per query). Turn on to return each post only once per run, under the first query that found it.

## `proxyConfiguration` (type: `object`):

Proxy used to fetch public LinkedIn post pages. Apify Datacenter proxy is used by default. Apify Residential is not supported; bring your own residential provider via Custom proxy URLs if you need one.

## Actor input object example

```json
{
  "queries": [
    "AI agents"
  ],
  "maxResultsPerQuery": 20,
  "sortBy": "RELEVANCE",
  "datePosted": "ANY_TIME",
  "postedAfter": "",
  "postedBefore": "",
  "authors": [],
  "authorCompanies": [],
  "mentionedOrganizations": [],
  "contentTypes": [],
  "includeMedia": true,
  "includeTopComments": false,
  "includeRawData": false,
  "deduplicateAcrossQueries": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

One row per public LinkedIn post found for each query: query lineage, search position, search source and coverage, full text, author, publish time, engagement, hashtags and post type.

# 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 = {
    "queries": [
        "AI agents"
    ],
    "maxResultsPerQuery": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("coregent/linkedin-posts-search-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 = {
    "queries": ["AI agents"],
    "maxResultsPerQuery": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("coregent/linkedin-posts-search-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 '{
  "queries": [
    "AI agents"
  ],
  "maxResultsPerQuery": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call coregent/linkedin-posts-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,coregent/linkedin-posts-search-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/BbSBQuJ6Fy9WwpPxr/builds/OGqTokMefRkYYw9ma/openapi.json
