# LinkedIn Profile Comments Scraper No Cookies (`maximedupre/scrape-linkedin-profile-comments`) Actor

Collect public LinkedIn comments and reactions from profile activity, comments on recent profile posts, or a public post or article. Get activity text, authors, post context, engagement, dates, links, and media when shown. No login or cookies are needed.

- **URL**: https://apify.com/maximedupre/scrape-linkedin-profile-comments.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Social media, Marketing, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.05 / 1,000 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/actors/running/actors-in-store.md#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

### 💬 Scrape LinkedIn profile comments with full post context

For social media analysts, researchers, and developers, this Actor collects public LinkedIn comments and reactions from a profile's activity, or comments on a profile's recent posts and public post or article URLs. It saves structured rows with activity text, public author details, source-post context, engagement, dates, links, and media when shown. This gives you a usable dataset for reviewing public discussions and building your own analysis.

- Review comments made by a public profile with **[LinkedIn Profile Comments](https://apify.com/maximedupre/scrape-linkedin-profile-comments/examples/linkedin-profile-comments)**.
- Collect comments and reactions from a profile with **[LinkedIn Profile Activity](https://apify.com/maximedupre/scrape-linkedin-profile-comments/examples/linkedin-profile-activity)**.
- Track public reactions made by a profile with **[LinkedIn Reactions Scraper](https://apify.com/maximedupre/scrape-linkedin-profile-comments/examples/linkedin-reactions-scraper)**.
- Read comments from a public post or article with **[LinkedIn Post Comments](https://apify.com/maximedupre/scrape-linkedin-profile-comments/examples/linkedin-post-comments)**.
- Collect public LinkedIn comments from a chosen source with **[Scrape LinkedIn Comments](https://apify.com/maximedupre/scrape-linkedin-profile-comments/examples/scrape-linkedin-comments)**.

#### 📦 Public activity rows with source context

Each row has one shape. `activityType` tells you whether it is a comment or reaction. `sourceType` tells you whether it came from profile activity, comments on a profile's recent posts, or a direct post or article URL. Optional fields are left out when the public source does not show them.

**What the rows help you review**

- The activity text, action, link, time, author, and available reaction count.
- The source post or article, its author, text, time, engagement, and public media links.
- Public profile links, names, headlines, follower counts, and profile images when shown.

#### 🧭 Choose a source and start a focused run

**Run steps**

1. Choose `A profile's activity` to collect comments, reactions, or both made by the submitted profile.
2. Choose `A profile's recent posts` to collect comments on recent public posts attributed to the submitted profile.
3. Choose `A LinkedIn post or article` to collect comments from each public post or article URL you submit.
4. Set `Result type` when using profile activity. The other two choices return comments.
5. Add public profile URLs or usernames for the two profile choices. Add public post or article URLs for the direct post choice.
6. Add an optional date range for profile activity and set `Maximum results` when you want a collection cap.
7. Start the run, then open the default dataset to read the structured rows.

One collection setting applies to all sources in a run. Leave `Maximum results` empty to return all available results until the public sources are exhausted.

#### ⚙️ Input

Use sources that match the collection choice. Profile choices accept public LinkedIn profile URLs or usernames. The direct post choice accepts public LinkedIn post or article URLs.

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `findActivityFrom` | string | Selects profile activity, comments on a profile's recent posts, or comments on a direct post or article. |
| `resultType` | string | For profile activity, selects comments, reactions, or both. The other two choices return comments. |
| `activityDateRange` | object | Optionally limits profile activity to a date range. The other two choices ignore it. |
| `activityDateRange.from` | string | Keeps profile activity on or after a calendar date or relative value such as `30 days ago`. |
| `activityDateRange.to` | string | Keeps profile activity on or before a calendar date or relative value. An empty value includes activity through now. |
| `sources` | array<string> | One or more public LinkedIn profile URLs, usernames, post URLs, or article URLs that match the selected choice. |
| `maxItems` | integer | Stops after this many results across the run. Leave it empty to return all available results until the public sources are exhausted. |

**Default input example**

This is the public input from a successful current-beta default-input run:

```json
{
  "findActivityFrom": "profileActivity",
  "resultType": "comments",
  "sources": [
    "https://www.linkedin.com/in/williamhgates/"
  ],
  "maxItems": 100
}
```

#### 🧾 Output

All dataset rows use the same shape for comments and reactions. The tables below use readable dotted paths for nested fields. Optional fields are omitted when the public source does not provide them.

**Output fields**

| Field | Type | What it does |
| --- | --- | --- |
| `activityType` | string | Says whether the row is a `comment` or `reaction`. |
| `sourceType` | string | Says whether the activity came from `profileActivity`, `profilePost`, or `directPost`. |
| `activity` | object | Holds the collected public comment or reaction. |
| `activity.id` | string | Public identifier for the activity when shown. |
| `activity.url` | string | Public URL for the activity when shown. |
| `activity.action` | string | Action recorded for the activity, such as a reaction type or a comment action. |
| `activity.text` | string | Public text for the comment or other activity when available. |
| `activity.publishedAt` | string | Activity publication time in ISO 8601 format when available. |
| `activity.author` | object | Public identity details for the person who made the activity. |
| `activity.author.name` | string | Public display name of the activity author when available. |
| `activity.author.profileUrl` | string | Public LinkedIn profile URL of the activity author when available. |
| `activity.author.headline` | string | Public LinkedIn headline of the activity author when available. |
| `activity.author.followerCount` | integer | Public follower count of the activity author when available. |
| `activity.author.profileImageUrl` | string | Public profile image URL of the activity author when available. |
| `activity.engagement` | object | Holds public engagement totals for the activity when available. |
| `activity.engagement.reactionCount` | integer | Total public reactions on the activity when available. |
| `sourcePost` | object | Holds the public LinkedIn post or article linked to the activity. |
| `sourcePost.id` | string | Public identifier for the source post or article when shown. |
| `sourcePost.url` | string | Public URL for the source post or article when available. |
| `sourcePost.title` | string | Public title of the source article or post when available. |
| `sourcePost.content` | string | Public text of the source post or article when available. |
| `sourcePost.publishedAt` | string | Source post or article publication time in ISO 8601 format when available. |
| `sourcePost.author` | object | Public identity details for the source post or article author. |
| `sourcePost.author.name` | string | Public display name of the source post author when available. |
| `sourcePost.author.profileUrl` | string | Public LinkedIn profile URL of the source post author when available. |
| `sourcePost.author.headline` | string | Public LinkedIn headline of the source post author when available. |
| `sourcePost.author.followerCount` | integer | Public follower count of the source post author when available. |
| `sourcePost.author.profileImageUrl` | string | Public profile image URL of the source post author when available. |
| `sourcePost.engagement` | object | Holds public engagement totals for the source post or article. |
| `sourcePost.engagement.reactionCount` | integer | Total public reactions on the source post when available. |
| `sourcePost.engagement.commentCount` | integer | Total public comments on the source post when available. |
| `sourcePost.media` | array<object> | Lists public image and video links attached to the source post or article when available. |
| `sourcePost.media[].type` | string | Says whether the media link is an `image` or `video`. |
| `sourcePost.media[].url` | string | Public URL for the image or video. |

**Profile activity comment row**

This complete row is from a successful current-beta `profileActivity` run:

```json
{
  "activityType": "comment",
  "sourceType": "profileActivity",
  "activity": {
    "url": "https://www.linkedin.com/posts/williamhgates_imso-impressed-bydr-lina-findaswork-activity-7496954467196518400-UOUr?commentUrn=urn%3Ali%3Acomment%3A(urn%3Ali%3AugcPost%3A7496954243921408000%2C7496954594024034304)",
    "action": "commented on a post",
    "text": "Read more about Dr. Finda’s story: https://gatesnot.es/4qGc4aD",
    "author": {
      "name": "Bill Gates",
      "profileUrl": "https://www.linkedin.com/in/williamhgates",
      "headline": "Chair, Gates Foundation and Founder, Breakthrough Energy",
      "followerCount": 40613171,
      "profileImageUrl": "https://media.licdn.com/dms/image/v2/D5603AQF-RYZP55jmXA/profile-displayphoto-shrink_400_400/B56ZRi8g.aGsAg-/0/1736826818802"
    },
    "id": "urn:li:comment:(urn:li:ugcPost:7496954243921408000,7496954594024034304)",
    "publishedAt": "2026-08-22T15:41:01.896Z",
    "engagement": {
      "reactionCount": 40
    }
  },
  "sourcePost": {
    "id": "urn:li:activity:7496954467196518400",
    "url": "https://www.linkedin.com/posts/williamhgates_imso-impressed-bydr-lina-findaswork-activity-7496954467196518400-UOUr",
    "title": "I’m so impressed by Dr.",
    "content": "I’m so impressed by Dr. Lina Finda’s work to ensure that African communities have a voice in how the world fights malaria.",
    "publishedAt": "2026-08-22T15:40:31.604Z",
    "author": {
      "name": "Bill Gates",
      "profileUrl": "https://www.linkedin.com/in/williamhgates",
      "followerCount": 40613171,
      "profileImageUrl": "https://media.licdn.com/dms/image/v2/D5603AQF-RYZP55jmXA/profile-displayphoto-shrink_200_200/B56ZRi8g.aGsAY-/0/1736826818802",
      "headline": "Chair, Gates Foundation and Founder, Breakthrough Energy"
    },
    "engagement": {
      "reactionCount": 1890,
      "commentCount": 191
    },
    "media": [
      {
        "type": "video",
        "url": "https://dms.licdn.com/playlist/vid/v2/D4E05AQGWIetkMJAxmg/mp4-640p-30fp-crf28/B4EaAqIKePIUBg-/0/1787413218013"
      },
      {
        "type": "image",
        "url": "https://media.licdn.com/dms/image/v2/D4E05AQGWIetkMJAxmg/videocover-high/B4EaAqIKePIUBI-/0/1787413200480"
      }
    ]
  }
}
```

**Profile activity reaction row**

This complete row is another real row from the same successful current-beta `profileActivity` run:

```json
{
  "activityType": "reaction",
  "sourceType": "profileActivity",
  "activity": {
    "url": "https://www.linkedin.com/posts/rachelwellscareerexpert_bill-gates-says-some-jobs-should-be-off-limits-activity-7498326755087261696-qMeZ",
    "action": "liked this",
    "text": "Bill Gates advocates for \"human-reserved\" jobs, akin to nature reserves, to shield specific roles from AI displacement. In a recent essay, he argued that some professions should be deliberately protected from AI, arguing that not all tasks AI can perform should replace human workers. Human connection and development in specific fields remain irreplaceable. What jobs should be protected from AI? How is AI job loss already negatively impacting the economy? And which professionals are most vulnerable to the negative impact of AI-related job displacement? Read today's Forbes article. https://lnkd.in/e9ipNYey",
    "author": {
      "name": "Bill Gates",
      "profileUrl": "https://www.linkedin.com/in/williamhgates",
      "headline": "Chair, Gates Foundation and Founder, Breakthrough Energy",
      "followerCount": 40613171,
      "profileImageUrl": "https://media.licdn.com/dms/image/v2/D5603AQF-RYZP55jmXA/profile-displayphoto-shrink_200_200/B56ZRi8g.aGsAY-/0/1736826818802"
    }
  },
  "sourcePost": {
    "id": "urn:li:activity:7498326755087261696",
    "url": "https://www.linkedin.com/posts/rachelwellscareerexpert_bill-gates-says-some-jobs-should-be-off-limits-activity-7498326755087261696-qMeZ",
    "content": "Bill Gates advocates for \"human-reserved\" jobs, akin to nature reserves, to shield specific roles from AI displacement. In a recent essay, he argued that some professions should be deliberately protected from AI, arguing that not all tasks AI can perform should replace human workers. Human connection and development in specific fields remain irreplaceable. What jobs should be protected from AI? How is AI job loss already negatively impacting the economy? And which professionals are most vulnerable to the negative impact of AI-related job displacement? Read today's Forbes article. https://lnkd.in/e9ipNYey",
    "author": {
      "name": "Rachel Wells",
      "profileUrl": "https://uk.linkedin.com/in/rachelwellscareerexpert",
      "profileImageUrl": "https://media.licdn.com/dms/image/v2/D4D03AQHtIyYFWIQgAA/profile-displayphoto-scale_400_400/B4DZ9_8wgaJ8Ag-/0/1784558066338"
    },
    "engagement": {
      "reactionCount": 89,
      "commentCount": 26
    },
    "media": [
      {
        "type": "image",
        "url": "https://media.licdn.com/dms/image/sync/v2/D4E27AQELzViBT6ZTrA/articleshare-shrink_800/B4EaA9n8eGHkAc-/0/1787740277504"
      }
    ]
  }
}
```

**Profile post comment row**

This complete row is from a successful current-beta `profilePosts` run:

```json
{
  "activityType": "comment",
  "sourceType": "profilePost",
  "activity": {
    "id": "urn:li:comment:(urn:li:ugcPost:7499851761705218048,7500046009377583104)",
    "url": "https://www.linkedin.com/posts/williamhgates_happy-birthday-warren-buffett-warren-activity-7499851762841927680-vBlr?commentUrn=urn%3Ali%3Acomment%3A(urn%3Ali%3AugcPost%3A7499851761705218048%2C7500046009377583104)",
    "text": "Maybe the real measure of a life isn’t what you accumulate, but how many people become better because you were part of their journey. Warren seems to have mastered that investment too.",
    "publishedAt": "2026-08-31T04:25:12.753Z",
    "author": {
      "name": "Lovepreet Kaur",
      "profileUrl": "https://in.linkedin.com/in/lovepreet-kaur-81650b1bb",
      "profileImageUrl": "https://media.licdn.com/dms/image/v2/D5603AQFHRGkuZpQ8dg/profile-displayphoto-scale_400_400/B56ZgS9QmoHQAg-/0/1752664707482"
    },
    "engagement": {
      "reactionCount": 3
    }
  },
  "sourcePost": {
    "id": "urn:li:activity:7499851762841927680",
    "url": "https://www.linkedin.com/posts/williamhgates_happy-birthday-warren-buffett-warren-activity-7499851762841927680-vBlr",
    "title": "Happy birthday, Warren Buffett!​",
    "content": "Happy birthday, Warren Buffett! Warren turns 96 this month and I’ve been thinking about how to sum up almost 35 years of our friendship. It was a deep friendship from our very first conversation. And I’ve never stopped learning from him since. I think his jokes are all funny. His dietary habits are excellent. He once told me he looked at the data and figured out that first graders have the best actuarial odds, so he decided to eat like one. He was only half joking. He’s gifted at investing in people. Warren has always found time to nurture friendships like few other people I know. He’s one of the most patient people I’ve ever met. I’m still amazed by his ability to draw people in and he makes it fun to learn from him. He sticks to what he believes in. I once wrote him a letter about the example he set by sticking to what he believes in. That’s stuck with me for all these years. We never run out of things to talk or laugh about. And if there’s one thing Warren has taught me, it’s what friendship is really all about. In short, I’m a fan. Happy 96th birthday, my friend.",
    "publishedAt": "2026-08-30T15:33:20.767Z",
    "author": {
      "name": "Bill Gates",
      "profileUrl": "https://www.linkedin.com/in/williamhgates",
      "followerCount": 40613148,
      "profileImageUrl": "https://media.licdn.com/dms/image/v2/D5603AQF-RYZP55jmXA/profile-displayphoto-shrink_200_200/B56ZRi8g.aGsAY-/0/1736826818802"
    },
    "engagement": {
      "reactionCount": 29631,
      "commentCount": 1679
    },
    "media": [
      {
        "type": "image",
        "url": "https://media.licdn.com/dms/image/v2/D4E22AQHyp6wj776yNA/feedshare-image-high-res/B4EaBTTbuGHoAU-/0/1788103998721"
      },
      {
        "type": "image",
        "url": "https://media.licdn.com/dms/image/v2/D4E22AQEV4hwy1DGOOQ/feedshare-image-high-res/B4EaBTTbsfJMAU-/0/1788103998595"
      },
      {
        "type": "image",
        "url": "https://media.licdn.com/dms/image/v2/D4E22AQHpBBwc37UZ9g/feedshare-image-high-res/B4EaBTTbyCHEAU-/0/1788103998945"
      },
      {
        "type": "image",
        "url": "https://media.licdn.com/dms/image/v2/D4E22AQHwPKa8B2Hdlw/feedshare-image-high-res/B4EaBTTbwvHYAU-/0/1788103998815"
      },
      {
        "type": "image",
        "url": "https://media.licdn.com/dms/image/v2/D4E22AQEvbduEUvQE_A/feedshare-shrink_1280/B4EaBTTb2qIUAQ-/0/1788103999258"
      }
    ]
  }
}
```

**Direct post comment row**

This complete row is from a successful current-beta `directPost` run:

```json
{
  "activityType": "comment",
  "sourceType": "directPost",
  "activity": {
    "id": "urn:li:comment:(urn:li:ugcPost:7412204017461682176,7413833715291807745)",
    "url": "https://www.linkedin.com/posts/williamhgates_this-was-a-big-year-for-me-and-not-just-activity-7412204018489552896-hVKB?commentUrn=urn%3Ali%3Acomment%3A(urn%3Ali%3AugcPost%3A7412204017461682176%2C7413833715291807745)",
    "text": "What resonates most is not the milestones, but the gratitude. Careers often get summarized by titles and numbers, yet the real story is the people who shape the journey. Makes me reflect on what we choose to carry forward into the next chapter. How do others here think about legacy beyond metrics?",
    "publishedAt": "2026-01-05T06:48:20.095Z",
    "author": {
      "name": "Vinay Sharma",
      "profileUrl": "https://in.linkedin.com/in/vinayx1",
      "profileImageUrl": "https://media.licdn.com/dms/image/v2/D5603AQGqyJp6iDeANw/profile-displayphoto-scale_400_400/B56Zwihxy0GYAk-/0/1770105808910"
    },
    "engagement": {
      "reactionCount": 7
    }
  },
  "sourcePost": {
    "id": "urn:li:activity:7412204018489552896",
    "url": "https://www.linkedin.com/posts/williamhgates_this-was-a-big-year-for-me-and-not-just-activity-7412204018489552896-hVKB",
    "title": "This was a big year for me, and not just because I turned 70 or released my first memoir.",
    "content": "This was a big year for me, and not just because I turned 70 or released my first memoir. 2025 also marked 50 years since I started Microsoft with Paul Allen, and 25 years of work at the Gates Foundation with incredible partners. I’m deeply proud of what we have accomplished and optimistic about how we will continue saving and improving lives around the world. But none of these milestones—and all the amazing moments in between—would have happened or felt as special without my family, friends, and colleagues, or the incredible scientists, leaders, and communities I get to work with and learn from every day. I’m grateful for all of them, and excited about what comes next.",
    "publishedAt": "2025-12-31T18:52:30.079Z",
    "author": {
      "name": "Bill Gates",
      "profileUrl": "https://www.linkedin.com/in/williamhgates",
      "followerCount": 40613148,
      "profileImageUrl": "https://media.licdn.com/dms/image/v2/D5603AQF-RYZP55jmXA/profile-displayphoto-shrink_200_200/B56ZRi8g.aGsAY-/0/1736826818802"
    },
    "engagement": {
      "reactionCount": 30127,
      "commentCount": 1657
    },
    "media": [
      {
        "type": "image",
        "url": "https://media.licdn.com/dms/image/v2/D5622AQG-TtjUJu_PVw/feedshare-shrink_800/B56Zt1wQwGJgAk-/0/1767207146991"
      },
      {
        "type": "image",
        "url": "https://media.licdn.com/dms/image/v2/D5622AQEUVG3wBWGDbw/feedshare-shrink_800/B56Zt1wQwjJoAg-/0/1767207146756"
      },
      {
        "type": "image",
        "url": "https://media.licdn.com/dms/image/v2/D5622AQE-FwXPuT_KNw/feedshare-shrink_800/B56Zt1wQuzJ8Ag-/0/1767207144767"
      },
      {
        "type": "image",
        "url": "https://media.licdn.com/dms/image/v2/D5622AQHk-EP215P9qQ/feedshare-shrink_800/B56Zt1wQvmJMAg-/0/1767207145276"
      },
      {
        "type": "image",
        "url": "https://media.licdn.com/dms/image/v2/D5622AQExtUFOZP0v3Q/feedshare-shrink_800/B56Zt1wQvyJMAg-/0/1767207145206"
      }
    ]
  }
}
```

#### 💳 Pricing

**Charged events**

This Actor uses pay-per-event pricing. A saved comment row uses the `linkedin-comment` event. A saved reaction row uses the `linkedin-profile-reaction` event. The rate for each event can vary by Apify plan, so the amount depends on the number and type of rows saved. A run that saves no comment or reaction rows does not create either row event.

| Buyer-facing event | What it covers |
| --- | --- |
| Comment | One public comment saved to the dataset. |
| Profile reaction | One public reaction made by a submitted profile, saved with its source post context. |

#### 🔌 Integrations

**Video guide**

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

**Use the results**

Open the default dataset in Apify or use its standard API link to read the structured rows in your own scripts and data tools.

#### ❓ FAQ

##### How do I collect comments made by a profile?

Set `Find activity from` to `A profile's activity` and set `Result type` to `Comments`. Add the public profile URL or username as a source.

##### How do I get comments on a profile's recent posts?

Set `Find activity from` to `A profile's recent posts`. Add a public LinkedIn profile URL or username. This mode returns comments on the recent public posts attributed to that profile.

##### Can I collect reactions?

Yes. Use `A profile's activity` and choose `Reactions` or `Comments and reactions`. The profile posts and direct post choices return comments.

##### Can I use a public post or article URL?

Yes. Choose `A LinkedIn post or article` and add one or more public post or article URLs. Each matching source uses the same run settings.

##### Can I use more than one source in a run?

Yes. Add each public profile URL, username, post URL, or article URL as its own source item. One collection setting applies to all sources in that run.

##### Can I search by a person's name or by a keyword?

No. Add a public LinkedIn profile URL or username for the profile choices, or a public post or article URL for the direct post choice. The Actor does not discover arbitrary profiles or posts from free text.

##### What happens if a source is private or login gated?

Only public LinkedIn surfaces are in scope. Private, restricted, deleted, or login gated activity may not be available, and the Actor does not invent missing values.

##### What does leaving Maximum results empty do?

It returns all available results until the public sources are exhausted. Set a positive value when you want a cap across the whole run.

##### Do I need a LinkedIn login or cookies?

No. The Actor uses public LinkedIn profile and post surfaces and does not require customer login, cookies, or other source authentication.

##### Why is an optional field missing?

LinkedIn may not show every field on every public surface. When a field is not available, it is left out instead of being filled with an invented value.

### 📝 Changelog

**v0.0** (01-09-2026)

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~scrape-linkedin-profile-comments/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [LinkedIn Company Scraper](https://apify.com/maximedupre/linkedin-company-scraper) adds public company profile facts for account and post research.
- [LinkedIn Profile Comments & Reactions Scraper No Cookies](https://apify.com/scraping_solutions/linkedin-profile-comments-reactions-scraper-no-cookies) collects profile comments and reactions in a similar public-data workflow.
- [Linkedin Profile Comments Scraper (No Cookie)](https://apify.com/datadoping/linkedin-profile-comments-scraper) collects comments made by a LinkedIn profile from public activity.
- [LinkedIn Profile Comments Scraper ✅ (No Cookies)](https://apify.com/harvestapi/linkedin-profile-comments) provides another public profile comment workflow with engagement data.
- [LinkedIn Profile Comments Scraper](https://apify.com/khadinakbar/linkedin-profile-comments-scraper) collects comments from recent profile posts or direct post URLs.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `findActivityFrom` (type: `string`):

Choose where to look: a profile's public activity, comments on a profile's recent public posts, or comments on a public post or article.

## `resultType` (type: `string`):

This setting applies only to A profile's activity. Choose comments, reactions, or both. The other two choices return comments.

## `activityDateRange` (type: `object`):

Optional. Use this with A profile's activity to keep results within a date range. The other two choices ignore it. Set From, To, or both. Leave both empty for all available activity.

## `sources` (type: `array`):

Add one or more sources. For the two profile choices, use public LinkedIn profile URLs or usernames. For the direct post choice, use public LinkedIn post or article URLs. Put one source in each item.

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

Stop after this many results across the run. Leave it empty to return all available results until the public sources are exhausted.

## Actor input object example

```json
{
  "findActivityFrom": "profileActivity",
  "resultType": "comments",
  "sources": [
    "https://www.linkedin.com/in/williamhgates/"
  ],
  "maxItems": 100
}
```

# Actor output Schema

## `dataset` (type: `string`):

Open public LinkedIn comments and reactions with their activity, author, source post, and engagement data in the default dataset.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "findActivityFrom": "profileActivity",
    "resultType": "comments",
    "sources": [
        "https://www.linkedin.com/in/williamhgates/"
    ],
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/scrape-linkedin-profile-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 = {
    "findActivityFrom": "profileActivity",
    "resultType": "comments",
    "sources": ["https://www.linkedin.com/in/williamhgates/"],
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/scrape-linkedin-profile-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 '{
  "findActivityFrom": "profileActivity",
  "resultType": "comments",
  "sources": [
    "https://www.linkedin.com/in/williamhgates/"
  ],
  "maxItems": 100
}' |
apify call maximedupre/scrape-linkedin-profile-comments --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/scrape-linkedin-profile-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/7rOJwHOEoLxJStexM/builds/2G7HMulZ43P4ytVuV/openapi.json
