# LinkedIn Comments Scraper (`chronometrica/linkedin-comments-scraper`) Actor

Extract clean, deduplicated comments visible on public LinkedIn posts, with original author profile URLs, reactions, timestamps, optional author details, and clear per-post coverage. No login or cookies.

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

## Pricing

from $2.00 / 1,000 linkedin comments

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/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 Comments Scraper

### 💬 What does LinkedIn Comments Scraper do?

LinkedIn Comments Scraper extracts clean, deduplicated comment data from
public LinkedIn post pages. Paste your own public LinkedIn post or feed URLs.
No LinkedIn login, cookies, account, or API key is required.

Each saved row is one visible top-level comment. It can include the original
public author profile URL, text, reactions, publish time, stable IDs, direct
comment links, mentions, and optional public author details. The `OUTPUT`
record explains invalid URLs, duplicate inputs, missing public rows, partial
coverage, failed inputs, and charge limits.

Use it for audience research, brand monitoring, content research, campaign
review, spreadsheets, and automated data pipelines.

With LinkedIn Comments Scraper, you can:

- 💬 Collect comments visible on known public LinkedIn posts.
- 🔗 Use your own copied public post or feed URLs.
- 🆔 Save post URNs, activity IDs, UGC post IDs, and public comment IDs.
- 👤 Collect public author names, original profile links, and profile images.
- 🔎 Add public author IDs, headlines, locations, and organizations when needed.
- 🏷️ Identify public profile mentions and comments by the post author.
- ❤️ Capture public reaction counts when LinkedIn shows them.
- 🕒 Save a UTC publish time when available.
- 🧹 Save repeated public comment IDs once.
- 🚦 Get one result for each input with counts, completeness, and a stop reason.
- 📦 Export rows as JSON, JSONL, CSV, Excel, XML, RSS, or HTML.
- ⚙️ Run through the Apify API, SDKs, webhooks, schedules, and integrations.

Each dataset row represents one public LinkedIn comment shown directly on one
input post during one run. Results are saved as they are collected.

This Actor reads public LinkedIn post pages. It does not sign in, use a
customer LinkedIn account, collect private data, or claim that a limited
public preview is a complete comment thread.

The scope is explicit. The Actor collects top-level comments shown directly
on a public post page. It does not offer a reply setting because LinkedIn does
not expose reply threads reliably on public pages.

### ✅ Clean and predictable runs

- Paste 1–100 public `/posts/` or `/feed/update/` URLs. The form shows this
  limit before the run starts.
- Equivalent post URLs are collected once. Repeated public comment IDs are
  also saved once.
- Each input gets a clear result. An unsupported URL is not reported as an
  empty post.
- Set 1–1,000 rows per post, or turn on `collectAllAvailable` to remove the
  numeric result limit.
- The Actor does not use or change your LinkedIn session. A run cannot sign
  your LinkedIn account out.
- One saved comment uses one comment event. Duplicate inputs, empty results,
  and failed inputs do not use a comment event.
- Coverage fields show whether the public page exposed and saved the displayed
  comment count.

### 📦 What LinkedIn comment data can I extract?

| Data group          | Example fields                                                                         |
| ------------------- | -------------------------------------------------------------------------------------- |
| 🔗 Post identity    | `inputUrl`, `inputType`, `postUrl`, `postUrn`, `activityId`, `ugcPostId`               |
| 💬 Comment identity | `commentId`, `commentUrl`                                                              |
| 👤 Author details   | `authorName`, `authorUrl`, `authorId`, `authorUrn`, `authorHeadline`, `authorLocation` |
| 📝 Comment details  | `text`, `mentions`, `publishedAt`, `isPostAuthor`                                      |
| ❤️ Public signals   | `reactionsCount`                                                                       |
| 🕒 Observation      | `observedAt`                                                                           |

Missing public values stay `null`. The Actor does not guess missing values or
change a missing reaction count to zero.

### ⚙️ Can I use this Actor through an API?

Yes. You can run LinkedIn Comments Scraper in Apify Console or use it through:

- Apify API
- Python SDK
- JavaScript SDK
- Webhooks
- Scheduled runs
- Apify integrations

This makes it easy to send comment rows to spreadsheets, databases,
warehouses, dashboards, AI analysis tools, and internal services.

### 🎯 Why scrape LinkedIn comments?

| Use case                  | How comment data helps                                     |
| ------------------------- | ---------------------------------------------------------- |
| 🔍 Audience research      | Find public questions, opinions, and repeated language.    |
| 📣 Brand monitoring       | Review public response to products, news, and campaigns.   |
| 💡 Content planning       | Find objections, follow-up topics, and useful ideas.       |
| 🧑 Author research        | Connect comments with public author profiles when shown.   |
| 🤖 Text analysis          | Send clean comment text to your own analysis workflow.     |
| 🧱 Data pipeline building | Load comment observations into databases and applications. |

The Actor collects public source data. It does not add sentiment labels or
guess a person's intent.

### 💵 Pricing event

When pay-per-result pricing is active, one unique saved comment row uses one
`linkedin-comment` result event. Empty posts, duplicate posts, failed URLs,
and inputs with no public comment rows use no result event. Repeated public
comment IDs are saved and billed once.

When `includeAuthorDetails` is on, each unique saved comment author with useful
extra public profile data uses one `linkedin-comment-author-detail` event.
Repeated comments by the same author use one author-detail event. Missing
profile details use no author-detail event.

Check the **Pricing** tab in Apify for the current price and billing model. Use
`maxComments`, `collectAllAvailable`, and Apify's maximum charge setting to
control result volume before a run. Start with a small limit when you test a
new post.

### 🚀 How do I use LinkedIn Comments Scraper?

1. Create or sign in to your Apify account.
2. Open **LinkedIn Comments Scraper**.
3. Add one or more known public LinkedIn post or feed URLs.
4. Set the maximum comment rows to save from each post.
5. Turn on **Remove the result limit** only when you need every available row.
6. Click **Start**.
7. Open **Output** to inspect the rows and run summary.
8. Download the dataset or send it to another tool.

### ⬇️ Input

```json
{
  "startUrls": [
    "https://www.linkedin.com/posts/timferriss_how-to-become-dramatically-more-productive-activity-7386884213343428608-wrF3"
  ],
  "maxComments": 100,
  "collectAllAvailable": false
}
```

#### 🔗 Supported URLs

Use public LinkedIn URLs with a `/posts/` or `/feed/update/` path.

The Actor removes query strings and fragments from the clean `postUrl`. It
normalizes the host and uses the typed post ID when available. Equivalent URL
forms with the same typed ID are collected once. Each duplicate input still
gets an explained result in `OUTPUT`.

Profile, company, search, event, article, and LinkedIn Jobs URLs are not
supported as inputs. Exact comment and reply links are not supported. This
Actor does not discover posts. Give it the post URLs that you want to check.

#### 🎛️ Input settings

| Setting                | What it controls                                                                                                                                                      |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `startUrls`            | Add 1–100 known public LinkedIn post or feed URLs. Equivalent targets are collected once.                                                                             |
| `maxComments`          | Saves 1–1,000 visible comment rows from each post. The default is 100. `collectAllAvailable` can remove this limit.                                                   |
| `includeAuthorDetails` | Requests public IDs, headlines, locations, and organizations for every unique comment author. Successful author details use a separate event. The default is `false`. |
| `collectAllAvailable`  | Ignores `maxComments` and saves every comment row exposed by the public page. It is off by default and can greatly increase cost.                                     |

### ⬆️ Output sample

The sample below follows the exact public field order. Public values vary by
post, region, and run time.

```json
{
  "inputUrl": "https://www.linkedin.com/posts/example_public-post-activity-7386884213343428608-demo",
  "inputType": "post_url",
  "postUrl": "https://www.linkedin.com/posts/example_public-post-activity-7386884213343428608-demo",
  "postUrn": "urn:li:activity:7386884213343428608",
  "activityId": "7386884213343428608",
  "ugcPostId": null,
  "commentId": "7386916967833726976",
  "commentUrl": "https://www.linkedin.com/feed/update/urn:li:activity:7386884213343428608?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7386884213343428608%2C7386916967833726976%29&dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287386916967833726976%2Curn%3Ali%3Aactivity%3A7386884213343428608%29",
  "authorName": "Example Author",
  "authorUrl": "https://www.linkedin.com/in/example-author",
  "authorType": "person",
  "authorId": null,
  "authorUrn": null,
  "authorPublicIdentifier": "example-author",
  "authorImageUrl": "https://media.licdn.com/example-author-image",
  "authorHeadline": null,
  "authorLocation": null,
  "authorCurrentOrganizations": [],
  "isPostAuthor": false,
  "text": "This is an example public comment.",
  "mentions": [],
  "publishedAt": "2025-10-23T00:10:47.413Z",
  "reactionsCount": 1,
  "observedAt": "2026-08-15T00:13:20.959Z"
}
```

#### 📊 Run summary

The `OUTPUT` record contains:

- `actorName`: stable Actor output name;
- `schemaVersion`: public output contract version;
- `startedAt` and `finishedAt`: run times;
- `inputCount`: number of submitted input URLs;
- `uniqueTargetCount`: number of unique valid posts planned;
- `successfulInputs`: number of posts read successfully;
- `failedInputs`: number of invalid or failed inputs;
- `duplicateInputs`: number of inputs that resolved to an earlier post;
- `notAttemptedInputs`: number of inputs skipped after the charge limit;
- `savedRows`: number of unique saved comment rows;
- `authorProfileRequests`: number of unique public author pages requested;
- `authorDetailEvents`: number of unique saved authors that produced an author-detail event;
- `rowsWithAuthorDetails`: number of comment rows that received author details;
- `datasetId`: ID of the result dataset;
- `stopReason`: why the run stopped;
- `inputResults`: one ordered result for every submitted URL.

Each `inputResults` item contains:

```json
{
  "inputUrl": "https://www.linkedin.com/posts/example_public-post-activity-7386884213343428608-demo",
  "inputType": "post_url",
  "postUrl": "https://www.linkedin.com/posts/example_public-post-activity-7386884213343428608-demo",
  "postUrn": "urn:li:activity:7386884213343428608",
  "activityId": "7386884213343428608",
  "ugcPostId": null,
  "duplicateOf": null,
  "status": "partial",
  "statusReason": "LinkedIn exposed fewer public comment rows than its shown count.",
  "pageCommentCount": 48,
  "publicRowsOnPage": 10,
  "savedRows": 10,
  "isPublicPageComplete": false,
  "isComplete": false,
  "stopReason": "public_preview_exhausted"
}
```

Input-level failures do not create fake comment rows. If every input fails,
the run fails with a safe public message.

### 🎯 Input results and completeness

The dataset contains comment observations only. Input status and post-level
counts stay in `OUTPUT`, where they cannot be mistaken for comment measures.

Use these fields together for each input:

| Field                  | Meaning                                                                                             |
| ---------------------- | --------------------------------------------------------------------------------------------------- |
| `pageCommentCount`     | The public comment count when available and when public count sources agree.                        |
| `publicRowsOnPage`     | The unique comment rows read before the visible save limit, or `null` if no page was read.          |
| `savedRows`            | The number of comment rows saved for this input.                                                    |
| `isPublicPageComplete` | `true` when the public page exposed at least its shown public count.                                |
| `isComplete`           | `true` when the dataset saved at least the shown public count.                                      |
| `stopReason`           | The visible setting, public preview, public row end, zero count, charge limit, duplicate, or error. |

LinkedIn can show a count of 48 comments but expose only 10 rows to a public
visitor. The input result uses `pageCommentCount: 48`, `publicRowsOnPage: 10`,
`savedRows: 10`, `isPublicPageComplete: false`, and `isComplete: false`.

If the public page exposes all 48 rows but `maxComments` is 10,
`isPublicPageComplete` is `true` and `isComplete` is `false`.

When `collectAllAvailable` is on, the Actor ignores `maxComments`. It still
stops when the public source ends, the maximum charge is reached, time runs
out, or the source fails.

`publishedAt` contains a UTC time only when the public information supports
one.

`postUrn` keeps the exact typed parent URN from the comment. `activityId`
contains only an activity ID. `ugcPostId` contains only a UGC post ID. These
values can differ. The Actor does not move an ID from one type into another.

`commentUrl` opens the source comment when LinkedIn provides a valid comment
identity. The current live release checks require a source ID and matching URL
for every test comment. If LinkedIn does not provide that identity,
`commentId` and `commentUrl` stay `null`. The Actor does not create comment IDs
or comment links.

`authorPublicIdentifier` is the name in the public profile link. Use
`authorUrl` to collect that person with LinkedIn Profile Scraper.

Input statuses are `ok`, `empty`, `partial`, `duplicate`, `invalid_url`,
`failed`, or `not_attempted`. Check `statusReason` for a short explanation.
`partial` means that the Actor saved fewer rows than the known public comment
count. The visible `maxComments` setting, a public preview limit, or the run
charge limit can cause this result. `collectAllAvailable` removes only the
numeric result limit.

### 🔒 Public source boundary

LinkedIn Comments Scraper reads public LinkedIn post pages. It also reads
public author profile pages when `includeAuthorDetails` is on.

When author details are on, the Actor requests every unique public comment
author profile in the saved comment set. Public details can still be missing.

It does not:

- use a LinkedIn account supplied by you;
- open private posts or account-only comment lists;
- collect private profiles or contact details;
- search LinkedIn for posts;
- collect posts, jobs, profiles, or company pages as result rows;
- bypass access controls;
- promise every comment in LinkedIn's displayed total.

### ⚠️ Limits and interpretation

- LinkedIn often shows only a small public comment preview.
- A displayed comment count can be greater than the public rows available.
- `maxComments` is a result maximum, not a result promise.
- `collectAllAvailable` removes the numeric result limit. It does not change
  what LinkedIn exposes publicly.
- Post-level counts and completeness are in `OUTPUT`, not repeated on rows.
- If public comment-count sources disagree, `pageCommentCount` is `null`.
- Comment order and public availability can change between runs.
- Private, deleted, missing, or account-limited posts can fail.
- Author details, reaction counts, and publish times can be missing. Missing
  values stay `null`.
- Public profile and image links can change or expire.
- Rows represent comments shown directly on the public post page. The Actor
  does not collect or rebuild reply threads.
- Results are public-page snapshots. Use scheduled runs to observe changes.
- LinkedIn can change its public pages. A later change can require an Actor
  update.

### ❓ FAQ

#### Does this Actor need a LinkedIn login or API key?

No. It reads public LinkedIn post pages without a customer LinkedIn account.
It does not use or change your LinkedIn browser session.

#### Can I paste my own LinkedIn post URL?

Yes. Paste a public LinkedIn `/posts/` or `/feed/update/` URL. The Actor
validates each URL and gives unsupported URLs an `invalid_url` result instead
of treating them as empty posts.

#### What are the run limits?

One run accepts up to 100 post URLs. `maxComments` accepts 1–1,000 visible
comment rows per post. Turn on `collectAllAvailable` to remove that numeric
limit. LinkedIn can still expose fewer public rows. Check the input result for
the exact stop reason.

#### Can I remove the result limit?

Yes. Turn on `collectAllAvailable`. The Actor then ignores `maxComments` and
saves every comment row that LinkedIn exposes on the public page. Collection
still stops at public source end, maximum charge, timeout, or failure.

#### Does it collect every comment on a post?

Not always. LinkedIn can show a larger total while exposing only a limited
public preview. Check `pageCommentCount`, `publicRowsOnPage`, `savedRows`,
`isPublicPageComplete`, and `isComplete` before you treat the result as a full
comment list.

#### Why did I receive fewer rows than requested?

The post may expose fewer public comments than your setting. LinkedIn may also
limit the public preview, or the post may be unavailable. The Apify maximum
charge can also stop a run. Check `OUTPUT` and the input stop reason.

#### What does `isComplete` mean?

It is `true` only when the dataset saved at least the public comment count shown
for the post. It is `false` when the visible setting, a public preview, or the
maximum charge leaves rows out. It is `null` when LinkedIn does not show a
public count.

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

LinkedIn did not show that value publicly at run time. The Actor does not guess
the value or replace a missing count with zero.

#### How are duplicates handled?

Equivalent inputs with the same typed post ID are collected once. An activity
ID and a UGC post ID are different types, even when their digits match.
Repeated public comment IDs are also saved once. `OUTPUT` explains duplicate inputs.
The current live test posts contain a numeric ID for each visible comment. If a
future page row has no source ID, it stays in the dataset with `commentId: null`
and `commentUrl: null`. The Actor does not use text or row position as an ID.

#### Does it collect replies?

No. It collects top-level comments shown directly on the public post page. It
does not offer a reply setting because public LinkedIn pages do not expose
reply threads reliably.

#### What happens when a post has no public comment rows?

The input creates no fake comment row and no result event. Its `OUTPUT` result
shows whether the post was empty, unavailable, or failed.

### 🏆 Best practices

- 🎯 Start with 10 to 25 rows for a new post.
- 🧾 Check `OUTPUT` before you treat a small or empty dataset as an error.
- 🚦 Use the five count and completeness fields before you claim full coverage.
- 🆔 Use the post IDs to match comments with LinkedIn Post Scraper results.
- 👤 Use `authorUrl` to collect a person with LinkedIn Profile Scraper.
- 🕒 When you collect the same post more than once, choose the result you need.
- 🔗 Use `commentUrl` to open the source comment.
- 🔁 Use scheduled runs when you want public comment snapshots over time.

### 🛟 Support

For help, include the Apify run ID, one public post URL, the result you
expected, and the observed dataset or `OUTPUT` result. State whether the issue
affects one row or the whole run. Do not send LinkedIn account details or
private links.

### ⚖️ Responsible use

This Actor collects information that LinkedIn exposes on public post pages at
run time. You are responsible for using the data lawfully and for following
privacy, data-protection, research, LinkedIn, and Apify rules. Do not use public
comments to harass people, infer sensitive traits, or make high-impact choices
about individuals.

### 🔗 Related LinkedIn Actors

Continue the same workflow on this platform or compare public data across
platforms.

#### Continue on LinkedIn

- [LinkedIn Post Scraper](https://apify.com/chronometrica/linkedin-post-scraper)
  — collect public post text, authors, media, dates, and engagement.
- [LinkedIn Profile Scraper](https://apify.com/chronometrica/linkedin-profile-scraper)
  — collect public profile identity, headlines, and visible profile facts.

#### Compare comments across platforms

- [Facebook Comments Scraper](https://apify.com/chronometrica/facebook-comments-scraper)
  — collect public comments, replies, authors, dates, and reactions.
- [Instagram Comments Scraper](https://apify.com/chronometrica/instagram-comments-scraper)
  — collect public comments, authors, dates, likes, and reply counts.
- [TikTok Comments Scraper](https://apify.com/chronometrica/tiktok-comments-scraper)
  — collect public comments, replies, authors, likes, and thread links.
- [YouTube Comments Scraper](https://apify.com/chronometrica/youtube-comments-scraper)
  — collect public comments, replies, authors, likes, pins, and creator
  hearts.
- [Reddit Comments Scraper](https://apify.com/chronometrica/reddit-comments-scraper)
  — collect public thread comments, replies, authors, scores, and dates.
- [Snapchat Comments Scraper](https://apify.com/chronometrica/snapchat-comments-scraper)
  — collect public comments and replies from Snapchat Spotlight posts.

# Actor input Schema

## `startUrls` (type: `array`):

Paste 1–100 public LinkedIn post or feed URLs. Equivalent post URLs are collected once.

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

The most visible comment rows to save from each post. Choose 1–1,000. Default: 100. The advanced option below can remove this limit.

## `includeAuthorDetails` (type: `boolean`):

Request public profile details for every unique comment author. Successful author details use a separate billing event and can increase runtime and cost.

## `collectAllAvailable` (type: `boolean`):

Ignore Maximum comments. This may cost much more. The run still stops when the public source ends, the charge limit is reached, time runs out, or the source fails.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.linkedin.com/posts/timferriss_how-to-become-dramatically-more-productive-activity-7386884213343428608-wrF3"
  ],
  "maxComments": 100,
  "includeAuthorDetails": false,
  "collectAllAvailable": false
}
```

# Actor output Schema

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

No description

## `output` (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 = {
    "startUrls": [
        "https://www.linkedin.com/posts/timferriss_how-to-become-dramatically-more-productive-activity-7386884213343428608-wrF3"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("chronometrica/linkedin-comments-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 = { "startUrls": ["https://www.linkedin.com/posts/timferriss_how-to-become-dramatically-more-productive-activity-7386884213343428608-wrF3"] }

# Run the Actor and wait for it to finish
run = client.actor("chronometrica/linkedin-comments-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 '{
  "startUrls": [
    "https://www.linkedin.com/posts/timferriss_how-to-become-dramatically-more-productive-activity-7386884213343428608-wrF3"
  ]
}' |
apify call chronometrica/linkedin-comments-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,chronometrica/linkedin-comments-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/JAiOQLafIjVzNR7nw/builds/lNrtOyZ0fpSQdvcI0/openapi.json
