# LinkedIn Comment Replies & Reactions \[NO COOKIES] ✅ (`unseenuser/comment-reactions-and-replies`) Actor

Extract every reply and reaction on any LinkedIn comment - go beyond top-level engagement to map the full thread. Find the warmest leads in viral comment threads. No login, no cookies. Built for B2B sales teams, ABM researchers, and sentiment analysts.

- **URL**: https://apify.com/unseenuser/comment-reactions-and-replies.md
- **Developed by:** [Unseen User](https://apify.com/unseenuser) (community)
- **Categories:** Lead generation, Automation, Social media
- **Stats:** 5 total users, 3 monthly users, 100.0% runs succeeded, 3 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

$5.00 / 1,000 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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Comment Deep-Dive Scraper - Replies + Reactions for One Comment (No Login)

Pull every reply AND every reactor for a single LinkedIn comment. Built for community managers, journalists, and crisis-monitoring teams who need full per-comment context.

This Actor combines two HarvestAPI endpoints in a single run - saving you the work of calling two separate actors and merging the results. One input, one structured output, one Apify run.

### Free plan limit

Free Apify users get up to **50 results per run**. Paying users are not affected and receive results normally.

This limit was set by the Actor developer, not by Apify. To remove it and receive unlimited results, upgrade to any paid Apify plan: https://apify.com/pricing

When a free plan run hits the cap, the Actor finishes successfully (status `SUCCEEDED`) and the run's status message explains what happened. No error is raised, so the first 50 results are fully usable as normal.

### 🎯 Use Cases

- **Community management** - drill into a controversial or important comment to understand the full thread
- **Crisis monitoring** - when one comment goes negative on your CEO's post, get the full picture instantly
- **Journalism** - investigate viral threads or contested statements at depth
- **Academic research** - analyze conversation dynamics around a specific comment
- **Customer-feedback intelligence** - surface comments on your product posts that drove the most response
- **Influencer analysis** - identify which of your commenters drove the most secondary engagement
- **Legal evidence preservation** - capture the full state of a thread (replies + reactors) for litigation hold

### 🚀 Quick Start

1. Click **Try for free** on this Actor's page
2. Enter one or more LinkedIn comment URLs in `comment_urls` (one per line)
3. Run the Actor
4. Download the combined output as JSON, CSV, or XLSX, or pull via Apify API

### ⚙️ Inputs

**Required**
- **LinkedIn comment URLs** (`comment_urls`) - One LinkedIn comment URL per line. Each URL must contain a `commentUrn` parameter. Tip: on LinkedIn, click the timestamp of the specific comment you want to analyze - the URL in your browser then contains `commentUrn=...`. Duplicates are removed automatically. **One dataset row per URL.**

**Filters** (defaults are fine for most users)
- **Fetch replies** (`include_replies`) - Default `true`.
- **Fetch reactions** (`include_reactions`) - Default `true`.
- **Max number of replies per comment** (`max_replies`) - Default `100`, max `5000`.
- **Max number of reactions per comment** (`max_reactions`) - Default `500`, max `5000`.
- **Sort replies by** (`sort_replies_by`) - `date` (default) or `relevance`. Hint only; underlying API uses token-based pagination.

### 💰 Pricing

Pay-per-event model on Apify. Each comment processed consumes at least 2 HarvestAPI calls (one for replies, one for reactions, plus extra calls per page when paginating). In bulk mode each URL is billed independently. See exact per-event pricing on the Actor's Apify page.

### 📦 Output Structure

**One dataset row per result.** Every reply and every reactor is its own row. A `type` field tells you what kind of row it is.

#### `type: "reply"` (one per reply)

```json
{
  "type": "reply",
  "comment_url": "https://www.linkedin.com/feed/update/...",
  "parent_reply_id": null,
  "id": "urn:li:comment:(...)",
  "linkedin_url": "https://www.linkedin.com/feed/...",
  "text": "Great point!",
  "created_at": "2026-05-20T10:23:00Z",
  "author_name": "Jane Doe",
  "author_position": "Engineer at Acme",
  "author_linkedin_url": "https://linkedin.com/in/janedoe",
  "author_picture_url": "https://...",
  "is_post_author": false,
  "num_sub_comments": 0,
  "pinned": false,
  "edited": false,
  "reaction_type_counts": [{ "type": "LIKE", "count": 5 }],
  "scraped_at": "2026-05-25T12:34:56.789Z"
}
````

**Nested replies**: LinkedIn's "N replies" count on a comment includes sub-replies (replies-to-replies). The Actor fetches them too: top-level replies have `parent_reply_id: null`, sub-replies have `parent_reply_id: "<id of the reply they nest under>"`. Build the tree client-side by joining on `id` -> `parent_reply_id`.

#### `type: "reaction"` (one per reactor)

```json
{
  "type": "reaction",
  "comment_url": "https://www.linkedin.com/feed/update/...",
  "id": "urn:li:fsd_reaction:...",
  "reaction_type": "LIKE",
  "reactor_name": "Om More",
  "reactor_position": "PM at Acme",
  "reactor_linkedin_url": "https://linkedin.com/in/ACoAA...",
  "reactor_picture_url": "https://...",
  "scraped_at": "2026-05-25T12:34:56.789Z"
}
```

#### `type: "error"` (one per invalid input)

If a URL fails validation, the run does **not** crash. A single row with the structured error is written and processing continues with the remaining URLs.

```json
{
  "type": "error",
  "comment_url": "https://example.com/foo?commentUrn=bar",
  "error_type": "invalid_input",
  "error_code": "NOT_LINKEDIN_URL",
  "error_description": "URL must be a linkedin.com URL (got hostname: example.com).",
  "error_how_to_fix": "Use a URL from linkedin.com. This Actor only supports LinkedIn comments.",
  "scraped_at": "2026-05-25T12:34:56.789Z"
}
```

Stable error codes: `MISSING_COMMENT_URL`, `MALFORMED_URL`, `NOT_LINKEDIN_URL`, `MISSING_COMMENT_URN`, `NOTHING_TO_FETCH`, `MISSING_API_KEY`.

#### `type: "fetch_error"` (one per failed upstream call)

If HarvestAPI fails for one part of a comment but the other part succeeds, a `fetch_error` row is emitted for the failed part. The successful part's rows are still pushed.

```json
{
  "type": "fetch_error",
  "source": "replies",
  "comment_url": "https://www.linkedin.com/feed/update/...",
  "error": {
    "type": "upstream",
    "code": "REPLIES_FETCH_FAILED",
    "description": "HarvestAPI /linkedin/post-comment-replies returned 500 ...",
    "how_to_fix": "Re-run the Actor."
  },
  "scraped_at": "2026-05-25T12:34:56.789Z"
}
```

### 🔧 Technical Details

- **Endpoints**: 2 HarvestAPI endpoints called in parallel per run
  - `GET /linkedin/post-comment-replies` - token-based pagination
  - `GET /linkedin/comment-reactions` - `page` parameter pagination
- **Concurrency**: 2 (both endpoints in parallel)
- **Retries**: 3 with exponential backoff (1s, 2s, 4s) on `429`, `502`, `503`, `504`. Non-retryable HTTP errors (e.g. `401`, `404`) fail immediately with no retries.
- **Output**: streamed via Apify dataset
- **Format**: JSON, CSV, XLSX, or via Apify API

### 📋 Schemas

This Actor ships with the schemas Apify uses to present inputs and outputs:

| Schema | File | Purpose |
|---|---|---|
| Input | `.actor/INPUT_SCHEMA.json` | Drives the input form. Grouped into "What to fetch" and "Advanced settings". |
| Dataset | `.actor/dataset_schema.json` | Documents every field returned and its type. |
| Key-value store | `.actor/key_value_store_schema.json` | Declares the standard `INPUT` / `OUTPUT` keys. This Actor writes substantive results to the dataset, not the key-value store. |
| Live-view OpenAPI | *(not applicable)* | This Actor does not run an embedded web server, so no live-view OpenAPI schema is provided. |

### ❓ FAQ

**Q: Why combine two endpoints into one actor?**
A: For workflows where you always want both data sources together. If you want only ONE of these endpoints, use the dedicated single-purpose actor for that endpoint instead.

**Q: Do I need a HarvestAPI account?**
A: No. UnseenUser holds the HarvestAPI credentials. You only need an Apify account.

**Q: What if LinkedIn sends a cease-and-desist?**
A: Notify UnseenUser within 48 hours via the Apify profile contact form (apify.com/UnseenUser) and cease using this Actor immediately.

**Q: Can I use this data to train AI?**
A: No. LinkedIn's Terms explicitly prohibit AI training on LinkedIn data, and post authors retain copyright. See Section G of the Actor-Specific Addendum.

**Q: Why are reactor profile URLs in opaque ID format?**
A: This is by LinkedIn's design - the Reactions pop-up does not expose readable slugs. The reactor's name, position, and pictureUrl are still returned. To get a readable URL for a specific reactor, resolve it one at a time via the Profile endpoint (not in bulk - see Addendum Section F).

***

## 🛡️ Actor-Specific Terms of Service Addendum

This addendum supplements the Master Terms of Service V4.0. By running this Actor, you accept both the Master ToS and this addendum.

### A. Architectural Disclosure

This Actor is a software wrapper. It accepts your input parameters, calls TWO HarvestAPI endpoints in parallel (`/linkedin/post-comment-replies` + `/linkedin/comment-reactions`), combines the results into a structured output, and returns the combined data to you on the Apify platform. UnseenUser does not store, log, or substantively process the data returned. The data flows from HarvestAPI through Apify's runtime directly to you.

### B. Nature of Data Returned

This Actor returns: all replies to a specific LinkedIn comment (with full author info, reply timestamps, nested reaction counts) + the complete reactor list for the same comment (LIKE, CELEBRATE, SUPPORT, LOVE, INSIGHTFUL, FUNNY with reactor identity).

Where the Actor's output includes individual people's names, photos, contact details, or content authored by them, that data constitutes personal data subject to GDPR, CCPA, Israeli Privacy Protection Law, and equivalent privacy laws in your downstream processing - but only in your hands as the data controller, not in UnseenUser's hands as the software vendor.

### C. Permitted Use Cases

- Community management - drill into a controversial or important comment to understand the full thread
- Crisis monitoring - when one comment goes negative on your CEO's post, get the full picture instantly
- Journalism - investigate viral threads or contested statements at depth
- Academic research - analyze conversation dynamics around a specific comment
- Customer-feedback intelligence - surface comments on your product posts that drove the most response
- Influencer analysis - identify which of your commenters drove the most secondary engagement
- Legal evidence preservation - capture the full state of a thread (replies + reactors) for litigation hold

### D. Specifically Prohibited Uses

In addition to Master ToS Section 4 prohibitions, you may NOT:

- Build cold-DM tools targeting commenters who engaged with sensitive content
- Republish individuals' replies outside the original LinkedIn context for commercial purposes
- Build "who reacted to this comment" databases for sale
- Use reaction data to identify and harass individuals whose views you disagree with
- Track reactions to bereavement, illness, or layoff comments to identify vulnerable people for commercial targeting
- Aggregate reply/reactor data across many comments to profile individuals without consent
- Use sensitive engagement (e.g., LOVE on a layoff post by HR personnel) to make inferences for hiring or commercial decisions about named individuals

### E. Platform Terms of Service Considerations

LinkedIn restricts engagement-data extraction more aggressively than profile data - reactions and comments are "real-time pulse" data LinkedIn considers strategic. The Reactions endpoint specifically returns profile URLs in opaque profile ID format (e.g. `linkedin.com/in/ACoAAA8BYqEBCGLg...`) rather than human-readable slugs - this is by LinkedIn's design and not a bug. If LinkedIn issues a cease-and-desist, notify UnseenUser within 48 hours via the Apify profile contact form (apify.com/UnseenUser).

### F. Reactor Identity - Opaque IDs by LinkedIn Design

Per LinkedIn's design, the Comment Reactions endpoint returns profile URLs in opaque profile ID format (e.g., `https://linkedin.com/in/ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc`). The reactor's name, position, and pictureUrl are still returned, but the readable profile URL slug is NOT available from this endpoint alone.

You may NOT resolve these opaque IDs to readable profile URLs at scale by calling the Profile endpoint for every reactor. This pattern:

- Drives up costs significantly (additional API call per reactor)
- Creates the type of aggregation profile that LinkedIn specifically targets in litigation
- Risks tripping LinkedIn's anti-scraping detection
- May violate GDPR data minimization principles

If you need readable URLs for a specific reactor (e.g., for journalism or due diligence), resolve them one at a time as needed, not in bulk.

### G. Comment-Thread Copyright

Each reply is independently copyrighted by its author. The same fair-use / non-republication rules apply as with parent comments:

- Quote with attribution: typically fair use
- Aggregate metrics: no copyright issue
- Republish verbatim in commercial products: NOT permitted
- Use for AI training without proper licensing: NOT permitted

### H. Reactor Lists - Heightened Privacy Concern

A reactor list tied to a specific comment is PERSONAL DATA mapping individuals to their expressed opinions. This is more sensitive than a like-count because it names individuals. Use with care:

- Don't aggregate reactor lists across many comments to profile individuals
- Don't sell or share reactor lists as a commodity
- Don't use reactor lists for cold outreach in jurisdictions requiring prior opt-in (EU, Israel, Canada, Germany particularly)
- A "list of people who reacted with LOVE to a CEO's controversial comment" is intelligence - but using it for commercial outreach without compliant consent is non-compliant under GDPR/Israeli/CCPA frameworks

### I. Sensitive-Engagement Patterns

Some comments attract particularly sensitive engagement:

- Replies disagreeing with layoff announcements - repliers may be the laid-off employees themselves
- Comments on illness disclosures - repliers often share their own health situations
- Crisis-comment threads - repliers reveal political/social views in heated discussion
- Bereavement-post comments - replies contain intimate emotional content

Do NOT use this Actor to harvest engagement on such threads for downstream commercial use without explicit consent of the engagers. Public visibility on LinkedIn does NOT equal lawful basis for downstream commercial processing under GDPR/CCPA/Israeli Privacy Law.

### J. Reaction-Type Semantic Sensitivity

LinkedIn reaction types each carry meaning beyond a binary like:

- `LIKE` - neutral acknowledgment
- `CELEBRATE` - strong positive endorsement
- `SUPPORT` - emotional/moral solidarity
- `LOVE` - strong personal connection
- `INSIGHTFUL` - intellectual agreement
- `FUNNY` - humor reaction (can be inappropriate on serious posts)

The reaction type itself is meaningful behavioral data. Aggregating these patterns to label individuals (e.g., "always reacts FUNNY to layoff posts" → flagged as a problematic employee) is high-sensitivity automated decision-making under GDPR Article 22, requiring specific lawful basis.

### K. Litigation Evidence Use

This Actor's combined output (replies + reactors) is useful for litigation evidence preservation. If you use it for this purpose:

- Document chain of custody (when scraped, by whom, parameters used)
- Preserve the raw JSON output, not just summaries
- Note that LinkedIn data is not authoritative evidence by itself - you may need to authenticate via LinkedIn's compliance team or a forensic process for court use
- Be aware that retaining personal data for litigation purposes still requires GDPR Article 6(1)(f) lawful basis (legitimate interest in establishing/defending legal claims under Article 6(1)(f) and Recital 47)

### L. Cross-Endpoint Aggregation Limit

While this Actor combines two endpoints in one run (replies + reactors for one comment), do NOT aggregate the combined output across many comments to build broader profiles. Specifically:

- A list of repliers + reactors for ONE comment: bounded, useful
- A list of repliers + reactors across MANY comments by the same author: profile-building, high risk
- A list of repliers + reactors across MANY comments by MANY authors involving the same individuals: data broker territory

The line between "comment-thread analysis" (permitted) and "people search database" (prohibited) is drawn around aggregation across multiple comment threads involving the same individuals.

***

For full Master Terms of Service, see UnseenUser's Apify profile: https://apify.com/UnseenUser

### Related scrapers

Build the complete LinkedIn engagement intelligence pipeline:

- [LinkedIn Post Comments & Reactions Scraper](https://apify.com/unseenuser/linkedin-post-comment-reaction-extractor-no-cookies) - top-level commenters (use this first to find viral comments)
- [LinkedIn Profile Scraper + Email Enrichment](https://apify.com/unseenuser/LinkedIn-Profile) - enrich the replies with verified emails
- [LinkedIn User Activity Scraper](https://apify.com/unseenuser/LinkedIn-user-comments-reactions) - research what each replier engages with elsewhere

[See all 18 scrapers by unseenuser ->](https://apify.com/unseenuser)

### Topics

linkedin comment replies scraper, linkedin comment thread scraper, linkedin comment reactions, scrape linkedin replies, linkedin thread analysis, viral comment scraper, b2b warm leads linkedin, linkedin sentiment analysis, deep engagement scraper

# Actor input Schema

## `comment_urls` (type: `array`):

One LinkedIn comment URL per line. Each URL must contain a 'commentUrn' parameter. Tip: on LinkedIn, click the timestamp of the specific comment you want to analyze - the URL in your browser address bar then contains 'commentUrn=...'. Duplicates are removed automatically. One dataset row is produced per URL.

## `include_replies` (type: `boolean`):

Get every reply to each comment.

## `include_reactions` (type: `boolean`):

Get every reactor (LIKE, CELEBRATE, SUPPORT, LOVE, INSIGHTFUL, FUNNY).

## `max_replies` (type: `integer`):

Upper bound on how many replies to fetch per comment. The Actor stops automatically when this many have been collected (or when the comment has no more replies).

## `max_reactions` (type: `integer`):

Upper bound on how many reactions to fetch per comment. The Actor stops automatically when this many have been collected (or when the comment has no more reactions).

## `sort_replies_by` (type: `string`):

Order in which replies are returned. Note: the underlying API uses token-based pagination, so this is a hint only.

## Actor input object example

```json
{
  "comment_urls": [
    "https://www.linkedin.com/feed/update/urn:li:activity:7408723748973056001?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7408723748973056001%2C7408723949095772161%29"
  ],
  "include_replies": true,
  "include_reactions": true,
  "max_replies": 100,
  "max_reactions": 500,
  "sort_replies_by": "date"
}
```

# 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 = {
    "comment_urls": [
        "https://www.linkedin.com/feed/update/urn:li:activity:7408723748973056001?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7408723748973056001%2C7408723949095772161%29"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("unseenuser/comment-reactions-and-replies").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 = { "comment_urls": ["https://www.linkedin.com/feed/update/urn:li:activity:7408723748973056001?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7408723748973056001%2C7408723949095772161%29"] }

# Run the Actor and wait for it to finish
run = client.actor("unseenuser/comment-reactions-and-replies").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 '{
  "comment_urls": [
    "https://www.linkedin.com/feed/update/urn:li:activity:7408723748973056001?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7408723748973056001%2C7408723949095772161%29"
  ]
}' |
apify call unseenuser/comment-reactions-and-replies --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=unseenuser/comment-reactions-and-replies",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "LinkedIn Comment Replies & Reactions [NO COOKIES] ✅",
        "description": "Extract every reply and reaction on any LinkedIn comment - go beyond top-level engagement to map the full thread. Find the warmest leads in viral comment threads. No login, no cookies. Built for B2B sales teams, ABM researchers, and sentiment analysts.",
        "version": "0.0",
        "x-build-id": "jU0h1MX19fcyPWhzU"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/unseenuser~comment-reactions-and-replies/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-unseenuser-comment-reactions-and-replies",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/unseenuser~comment-reactions-and-replies/runs": {
            "post": {
                "operationId": "runs-sync-unseenuser-comment-reactions-and-replies",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/unseenuser~comment-reactions-and-replies/run-sync": {
            "post": {
                "operationId": "run-sync-unseenuser-comment-reactions-and-replies",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "comment_urls"
                ],
                "properties": {
                    "comment_urls": {
                        "title": "LinkedIn comment URLs",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "One LinkedIn comment URL per line. Each URL must contain a 'commentUrn' parameter. Tip: on LinkedIn, click the timestamp of the specific comment you want to analyze - the URL in your browser address bar then contains 'commentUrn=...'. Duplicates are removed automatically. One dataset row is produced per URL.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "include_replies": {
                        "title": "Fetch replies",
                        "type": "boolean",
                        "description": "Get every reply to each comment.",
                        "default": true
                    },
                    "include_reactions": {
                        "title": "Fetch reactions",
                        "type": "boolean",
                        "description": "Get every reactor (LIKE, CELEBRATE, SUPPORT, LOVE, INSIGHTFUL, FUNNY).",
                        "default": true
                    },
                    "max_replies": {
                        "title": "Max number of replies per comment",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Upper bound on how many replies to fetch per comment. The Actor stops automatically when this many have been collected (or when the comment has no more replies).",
                        "default": 100
                    },
                    "max_reactions": {
                        "title": "Max number of reactions per comment",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Upper bound on how many reactions to fetch per comment. The Actor stops automatically when this many have been collected (or when the comment has no more reactions).",
                        "default": 500
                    },
                    "sort_replies_by": {
                        "title": "Sort replies by",
                        "enum": [
                            "date",
                            "relevance"
                        ],
                        "type": "string",
                        "description": "Order in which replies are returned. Note: the underlying API uses token-based pagination, so this is a hint only.",
                        "default": "date"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
