# LinkedIn Post Comments Scraper | Replies & Authors (`crawlkite/linkedin-post-comments`) Actor

Extract LinkedIn post comments and comment replies with author details and engagement. Filter dates, optionally enrich authors and export JSON, CSV or Excel.

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

## Pricing

from $1.35 / 1,000 post comment 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 Post Comments Scraper | Replies & Authors

Extract LinkedIn post comments and comment replies with author details and engagement. Filter dates, optionally enrich authors and export JSON, CSV or Excel.

### Key benefits

- No customer cookies or login required for supported public-data operations.
- Structured records for research, engagement analysis and data workflows.
- Bounded pagination, request and spending controls.
- Export JSON, CSV or Excel from the run dataset.

### How it works

1. Add your targets using the Input tab or JSON below.
2. Set a small result limit and maximum run spending.
3. Start the actor and inspect Output and the run SUMMARY.
4. Export results or use the Apify API to retrieve the dataset.

Post inputs return root comments with up to five available nested reply previews. For a specific comment URL, scrapeReplies returns the selected comment and its replies as individual billed rows; with the toggle off, the target comment is returned with available previews. Main mode adds a separate author-enrichment event.

### Example input

```json
{
  "posts": [
    "https://www.linkedin.com/feed/update/urn:li:activity:7348831781036400646/"
  ],
  "maxItems": 5,
  "profileScraperMode": "short"
}
```

### Input options

| Field | Meaning |
|---|---|
| `posts` | LinkedIn post or comment URLs to process. Comment URLs retain their comment identifiers. |
| `maxItems` | Maximum returned records per input target. Zero continues within page, request and spending limits. |
| `postedLimit` | Keep available records within this age window. Results depend on source availability. |
| `scrapeReplies` | For a comment URL, return the selected comment and its replies as individual results, within the item limit. Otherwise retain available nested reply previews. |
| `profileScraperMode` | Use short for supplied actor details, or main to request separately charged main-profile enrichment. |

A zero result limit means available results within page, request, spending and trial caps; it is not an unlimited-volume guarantee. Free-plan trial runs are restricted to two source requests and two primary records. Additional requests may be needed for reply previews and enrichment.

### Data and output example

Fields retain their nested structure and can be absent or empty. The shortened example below uses fictional values to illustrate structure. It is not a real result or a promise of complete fields.

```json
[
  {
    "id": "example-comment",
    "commentary": "Illustrative comment text",
    "actor": {
      "name": "Example Author"
    },
    "createdAt": "2026-11-02T10:00:00.000Z",
    "engagement": {
      "likes": 2,
      "comments": 0
    },
    "replies": []
  }
]
```

### CrawlKite pricing

The actor's Pricing tab is authoritative. Enrichment and enabled engagement have separate billing events. See each event's unit below; request counts and returned item counts are different.

| Billing event / unit | Free | Starter | Scale | Business |
|---|---:|---:|---:|---:|
| Post comment result / 1,000 | $1.8 | $1.8 | $1.8 | $1.35 |
| Main profile details / 1,000 | $1.8 | $1.8 | $1.8 | $1.35 |

#### Price comparison

| Event / unit | Plan | HarvestAPI | CrawlKite | Lower by |
|---|---|---:|---:|---:|
| Post comment result / 1,000 | Free | $2 | $1.8 | 10% |
| Post comment result / 1,000 | Starter | $2 | $1.8 | 10% |
| Post comment result / 1,000 | Scale | $2 | $1.8 | 10% |
| Post comment result / 1,000 | Business | $1.5 | $1.35 | 10% |
| Main profile details / 1,000 | Free | $2 | $1.8 | 10% |
| Main profile details / 1,000 | Starter | $2 | $1.8 | 10% |
| Main profile details / 1,000 | Scale | $2 | $1.8 | 10% |
| Main profile details / 1,000 | Business | $1.5 | $1.35 | 10% |

Checked 2026-11-02 against [the corresponding public actor pricing](https://apify.com/harvestapi/linkedin-post-comments/pricing). The comparison covers the four plans listed and individual billing events; total costs depend on results and selected options. Higher-plan rates currently follow our Business rates. This is a price comparison, not a guarantee of identical coverage, speed or data values.

### API example

Keep your Apify token in an environment variable.

```bash
curl -X POST 'https://api.apify.com/v2/acts/crawlkite~linkedin-post-comments/runs' \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"posts":["https://www.linkedin.com/feed/update/urn:li:activity:7348831781036400646/"],"maxItems":5,"profileScraperMode":"short"}'
```

Use the API tab for SDK examples and run/dataset endpoints.

### FAQ

**Why are there fewer results than a visible counter?** Availability, deleted records, filters, source pagination and your run caps can reduce output. Nested reply previews are not separate records.

**Can I resume?** Run state tracks targets, cursors and delivered IDs. Use the platform's resume/resurrection controls for the same input; start a fresh run when changing input.

**Are failed lookups billed as successful records?** Successful output rows trigger their configured events. No separate actor-start fee is configured. Review SUMMARY and Pricing for the events used.

### Responsible use

Use collected data for a clear purpose, respect privacy and applicable requirements, and retain only the fields your workflow needs.

### Support

Open an issue and share the affected run with the developer so we can inspect the error. Never put tokens, cookies or database credentials in a public issue.

### More CrawlKite LinkedIn tools

- [linkedin profile scraper](https://apify.com/crawlkite/linkedin-profile-scraper)
- [linkedin company](https://apify.com/crawlkite/linkedin-company)
- [linkedin profile posts](https://apify.com/crawlkite/linkedin-profile-posts)
- [linkedin post search](https://apify.com/crawlkite/linkedin-post-search)
- [linkedin profile search](https://apify.com/crawlkite/linkedin-profile-search)
- [LinkedIn Company Posts Scraper | Comments & Reactions](https://apify.com/crawlkite/linkedin-company-posts)
- [LinkedIn Post Reactions Scraper | Likes & Profiles](https://apify.com/crawlkite/linkedin-post-reactions)
- [LinkedIn Profile Comments Scraper | Comment History](https://apify.com/crawlkite/linkedin-profile-comments)
- [LinkedIn Profile Reactions Scraper | Activity & Posts](https://apify.com/crawlkite/linkedin-profile-reactions)

# Actor input Schema

## `posts` (type: `array`):

LinkedIn post or comment URLs to process. Comment URLs retain their comment identifiers.

## `maxItems` (type: `integer`):

Maximum returned records per input target. Zero continues within page, request and spending limits.

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

Keep available records within this age window. Results depend on source availability.

## `scrapeReplies` (type: `boolean`):

For a comment URL, return the selected comment and its replies as individual results, within the item limit. Otherwise retain available nested reply previews.

## `profileScraperMode` (type: `string`):

Use short for supplied actor details, or main to request separately charged main-profile enrichment.

## `maxRequests` (type: `integer`):

Stop before exceeding this request count.

## `maxResults` (type: `integer`):

Total primary result cap across all targets.

## `maxPages` (type: `integer`):

Upper pagination bound. Request and spending limits also apply.

## Actor input object example

```json
{
  "posts": [
    "https://www.linkedin.com/posts/microsoft-events_microsoft-build-has-arrived-in-seattle-and-ugcPost-7329991434395160578-GnK7?utm_source=share&utm_medium=member_desktop&rcm=ACoAACzazy4B3ajZsA0WxWr6m4S77iItYbYCLZM",
    "https://www.linkedin.com/feed/update/urn:li:activity:7320867199693246465/",
    "https://www.linkedin.com/feed/update/urn:li:ugcPost:7396563121059872768?commentUrn=urn%3Ali%3Acomment%3A%28ugcPost%3A7396563121059872768%2C7396565439390076928%29&dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287396565439390076928%2Curn%3Ali%3AugcPost%3A7396563121059872768%29"
  ],
  "maxItems": 10,
  "profileScraperMode": "short",
  "maxRequests": 10000,
  "maxResults": 100000,
  "maxPages": 100
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "posts": [
        "https://www.linkedin.com/posts/microsoft-events_microsoft-build-has-arrived-in-seattle-and-ugcPost-7329991434395160578-GnK7?utm_source=share&utm_medium=member_desktop&rcm=ACoAACzazy4B3ajZsA0WxWr6m4S77iItYbYCLZM",
        "https://www.linkedin.com/feed/update/urn:li:activity:7320867199693246465/",
        "https://www.linkedin.com/feed/update/urn:li:ugcPost:7396563121059872768?commentUrn=urn%3Ali%3Acomment%3A%28ugcPost%3A7396563121059872768%2C7396565439390076928%29&dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287396565439390076928%2Curn%3Ali%3AugcPost%3A7396563121059872768%29"
    ],
    "maxItems": 10,
    "scrapeReplies": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlkite/linkedin-post-comments").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 = {
    "posts": [
        "https://www.linkedin.com/posts/microsoft-events_microsoft-build-has-arrived-in-seattle-and-ugcPost-7329991434395160578-GnK7?utm_source=share&utm_medium=member_desktop&rcm=ACoAACzazy4B3ajZsA0WxWr6m4S77iItYbYCLZM",
        "https://www.linkedin.com/feed/update/urn:li:activity:7320867199693246465/",
        "https://www.linkedin.com/feed/update/urn:li:ugcPost:7396563121059872768?commentUrn=urn%3Ali%3Acomment%3A%28ugcPost%3A7396563121059872768%2C7396565439390076928%29&dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287396565439390076928%2Curn%3Ali%3AugcPost%3A7396563121059872768%29",
    ],
    "maxItems": 10,
    "scrapeReplies": False,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlkite/linkedin-post-comments").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 '{
  "posts": [
    "https://www.linkedin.com/posts/microsoft-events_microsoft-build-has-arrived-in-seattle-and-ugcPost-7329991434395160578-GnK7?utm_source=share&utm_medium=member_desktop&rcm=ACoAACzazy4B3ajZsA0WxWr6m4S77iItYbYCLZM",
    "https://www.linkedin.com/feed/update/urn:li:activity:7320867199693246465/",
    "https://www.linkedin.com/feed/update/urn:li:ugcPost:7396563121059872768?commentUrn=urn%3Ali%3Acomment%3A%28ugcPost%3A7396563121059872768%2C7396565439390076928%29&dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287396565439390076928%2Curn%3Ali%3AugcPost%3A7396563121059872768%29"
  ],
  "maxItems": 10,
  "scrapeReplies": false
}' |
apify call crawlkite/linkedin-post-comments --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlkite/linkedin-post-comments"
        }
    }
}
```

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/iiqqXzKhdv87D9LXh/builds/SXkuWLJiL8psVYBad/openapi.json
