{
  "data": {
    "id": "PMjjgrE6QguMnaiyI",
    "actId": "I4oTw7vyuPTBhJ8UF",
    "userId": "NL4ThgItAwaoBlffQ",
    "startedAt": "2026-10-17T06:41:45.072Z",
    "finishedAt": "2026-10-17T06:41:49.169Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 3985,
      "runTimeSecs": 3.985,
      "computeUnits": 0.004427777777777778,
      "imageSizeBytes": 331254272
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "zifX0mkAFMHe8CatY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"LinkedIn Post Scraper Input\",\n  \"description\": \"Scrape public LinkedIn posts, a profile's recent posts, comments and video metadata - no login or cookie needed.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"required\": [],\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"What to scrape. \\\"Auto\\\" uses the URLs you provide; the actor picks the right pipeline automatically.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"auto\",\n        \"postUrls\",\n        \"profilePosts\"\n      ],\n      \"enumTitles\": [\n        \"Auto (from the URLs you provide)\",\n        \"Scrape specific post URLs\",\n        \"Scrape a profile's recent posts\"\n      ],\n      \"default\": \"auto\",\n      \"prefill\": \"postUrls\"\n    },\n    \"profileUrl\": {\n      \"title\": \"Profile URL\",\n      \"type\": \"string\",\n      \"description\": \"(mode=profilePosts or auto) LinkedIn profile URL, e.g. https://www.linkedin.com/in/williamhgates, or just the username.\",\n      \"editor\": \"textfield\",\n      \"prefill\": \"https://www.linkedin.com/in/satyanadella\"\n    },\n    \"postUrl\": {\n      \"title\": \"Post URL\",\n      \"type\": \"string\",\n      \"description\": \"(mode=postUrls or auto) A LinkedIn post link, feed-update link, activity URN or bare activity ID. No login needed.\",\n      \"editor\": \"textfield\",\n      \"prefill\": \"https://www.linkedin.com/posts/nvidia_ai-is-technology-that-is-built-and-improved-activity-7508569677040893954-sffp\"\n    },\n    \"postUrls\": {\n      \"title\": \"Post URLs\",\n      \"type\": \"array\",\n      \"description\": \"(mode=postUrls) A list of LinkedIn post links, feed-update links, activity URNs or bare activity IDs. Combined with Post URL if both are set.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"maxPosts\": {\n      \"title\": \"Max Posts\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of posts to return. Cookieless profile feeds are capped by LinkedIn at the newest ~8 public posts; with the optional cookie the feed paginates up to this limit.\",\n      \"editor\": \"number\",\n      \"default\": 10,\n      \"prefill\": 1,\n      \"minimum\": 1,\n      \"maximum\": 200\n    },\n    \"postedLimit\": {\n      \"title\": \"Posted Within\",\n      \"type\": \"string\",\n      \"description\": \"Keep only posts published within this window. \\\"Any time\\\" keeps everything.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"1h\",\n        \"24h\",\n        \"week\",\n        \"month\",\n        \"3months\",\n        \"6months\",\n        \"year\"\n      ],\n      \"enumTitles\": [\n        \"Any time\",\n        \"Past hour\",\n        \"Past 24 hours\",\n        \"Past week\",\n        \"Past month\",\n        \"Past 3 months\",\n        \"Past 6 months\",\n        \"Past year\"\n      ],\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"postedAfter\": {\n      \"title\": \"Posted After (date)\",\n      \"type\": \"string\",\n      \"description\": \"Optional. Keep posts published on or after this date. Format: 2026-01-31 or full ISO 8601.\",\n      \"editor\": \"textfield\"\n    },\n    \"postedBefore\": {\n      \"title\": \"Posted Before (date)\",\n      \"type\": \"string\",\n      \"description\": \"Optional. Keep posts published on or before this date. Format: 2026-01-31 or full ISO 8601.\",\n      \"editor\": \"textfield\"\n    },\n    \"maxComments\": {\n      \"title\": \"Max Comments per Post\",\n      \"type\": \"integer\",\n      \"description\": \"How many top comments to include per post. LinkedIn shows ~10 comments to logged-out visitors and the cookie path adds commenter profile URLs to those same first ~10 - a documented source ceiling either way.\",\n      \"editor\": \"number\",\n      \"default\": 10,\n      \"prefill\": 10,\n      \"minimum\": 1,\n      \"maximum\": 10\n    },\n    \"includeVideoTranscript\": {\n      \"title\": \"Include Video Transcript\",\n      \"type\": \"boolean\",\n      \"description\": \"When on, video posts include the full spoken transcript (can make rows large).\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"scrapeInteractors\": {\n      \"title\": \"Scrape Likers & Commenters (needs cookie)\",\n      \"type\": \"boolean\",\n      \"description\": \"Optional extra. Requires the LinkedIn Cookie field and adds the first page of commenters with profile URLs/headlines. Cookieless runs always include engagement counts and the top comments.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"scrapeReactions\": {\n      \"title\": \"Include Likers List (needs cookie)\",\n      \"type\": \"boolean\",\n      \"description\": \"With Scrape Likers & Commenters on, also include the first page of likers (name/headline/profile URL). Requires the optional cookie. LinkedIn's liker pagination endpoint is not available to visitors, so this is the visible first page only.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"maxInteractors\": {\n      \"title\": \"Max Likers + Commenters per Post\",\n      \"type\": \"integer\",\n      \"description\": \"Cap applied separately to the likers list and the commenters list of each post when interactor scraping is enabled.\",\n      \"editor\": \"number\",\n      \"default\": 50,\n      \"prefill\": 50,\n      \"minimum\": 1,\n      \"maximum\": 600\n    },\n    \"cookie\": {\n      \"title\": \"LinkedIn Cookie (optional)\",\n      \"type\": \"string\",\n      \"description\": \"Optional and never required - the actor works without any login. If supplied, it unlocks extra data: profile feeds paginate past the ~10-post cookieless ceiling up to Max Posts, and every post gains reaction-type breakdowns, reposts/views counts and the first page of likers/commenters. Accepts the li_at value, a raw cookie header, or a full cookies JSON array.\",\n      \"editor\": \"textfield\",\n      \"isSecret\": true\n    },\n    \"cookies\": {\n      \"title\": \"LinkedIn Cookies (JSON array, optional)\",\n      \"type\": \"array\",\n      \"description\": \"Full browser cookie export for linkedin.com as a JSON array of {name, value} objects (Cookie-Editor extension -> Export -> JSON). Same effect as the Cookie field - merged with it when both are set. Optional and never required.\",\n      \"editor\": \"json\",\n      \"isSecret\": true\n    },\n    \"language\": {\n      \"title\": \"Language\",\n      \"type\": \"string\",\n      \"description\": \"Language hint sent to LinkedIn. Affects localized content where available.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"en\",\n        \"es\",\n        \"fr\",\n        \"de\",\n        \"pt\",\n        \"it\",\n        \"nl\",\n        \"pl\",\n        \"tr\",\n        \"ar\",\n        \"zh\",\n        \"ja\",\n        \"ko\",\n        \"ru\",\n        \"sv\",\n        \"da\",\n        \"no\",\n        \"fi\",\n        \"cs\",\n        \"ro\",\n        \"hu\",\n        \"el\",\n        \"he\",\n        \"hi\",\n        \"id\",\n        \"ms\",\n        \"th\",\n        \"vi\",\n        \"uk\"\n      ],\n      \"enumTitles\": [\n        \"English\",\n        \"Spanish\",\n        \"French\",\n        \"German\",\n        \"Portuguese\",\n        \"Italian\",\n        \"Dutch\",\n        \"Polish\",\n        \"Turkish\",\n        \"Arabic\",\n        \"Chinese\",\n        \"Japanese\",\n        \"Korean\",\n        \"Russian\",\n        \"Swedish\",\n        \"Danish\",\n        \"Norwegian\",\n        \"Finnish\",\n        \"Czech\",\n        \"Romanian\",\n        \"Hungarian\",\n        \"Greek\",\n        \"Hebrew\",\n        \"Hindi\",\n        \"Indonesian\",\n        \"Malay\",\n        \"Thai\",\n        \"Vietnamese\",\n        \"Ukrainian\"\n      ],\n      \"default\": \"en\",\n      \"prefill\": \"en\"\n    },\n    \"includeReposts\": {\n      \"title\": \"Include Reposts\",\n      \"type\": \"boolean\",\n      \"description\": \"When off, reposts/reshared posts are excluded from the output.\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"minReactions\": {\n      \"title\": \"Minimum Reactions\",\n      \"type\": \"integer\",\n      \"description\": \"Skip posts that received fewer than this many reactions. 0 keeps everything.\",\n      \"editor\": \"number\",\n      \"default\": 0,\n      \"prefill\": 0,\n      \"minimum\": 0\n    },\n    \"minComments\": {\n      \"title\": \"Minimum Comments\",\n      \"type\": \"integer\",\n      \"description\": \"Skip posts that received fewer than this many comments. 0 keeps everything.\",\n      \"editor\": \"number\",\n      \"default\": 0,\n      \"prefill\": 0,\n      \"minimum\": 0\n    },\n    \"mediaTypes\": {\n      \"title\": \"Media Types\",\n      \"type\": \"array\",\n      \"description\": \"Restrict output to specific post media types. Leave empty to keep all. Cookieless runs detect text, image, video and repost posts.\",\n      \"editor\": \"select\",\n      \"items\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"text\",\n          \"image\",\n          \"video\",\n          \"article\",\n          \"document\",\n          \"carousel\",\n          \"poll\",\n          \"event\",\n          \"repost\"\n        ],\n        \"enumTitles\": [\n          \"Text\",\n          \"Image\",\n          \"Video\",\n          \"Article\",\n          \"Document\",\n          \"Carousel\",\n          \"Poll\",\n          \"Event\",\n          \"Repost\"\n        ]\n      },\n      \"default\": [],\n      \"uniqueItems\": true\n    }\n  }\n}",
    "readme": "# LinkedIn Public Post Scraper — Profile Feeds, Comments & Video\n\nCollect public LinkedIn posts without logging in. Give the actor one or more post links, or a profile URL, and it returns the post text, the author and their follower count, reaction and comment totals, the comments LinkedIn shows to logged-out visitors, images, videos with duration and (optionally) the full video transcript. No account, no cookie, no browser session.\n\n## Ways to use it\n\n1. **Specific posts** — paste any LinkedIn post link (`linkedin.com/posts/...`), a feed-update link (`/feed/update/urn:li:activity:...`, also `ugcPost`), or just the numeric activity ID. Country subdomains (`uk.linkedin.com/...`) work too.\n2. **A profile's recent posts** — provide a profile URL and the actor reads the profile's public activity feed, then opens each post it finds for the full record.\n\nSet `mode` to force one pipeline, or leave it on `Auto` and the actor figures it out from the URLs you supply.\n\n## What each row contains\n\n- `postId`, `postUrl`, `postedAt` (ISO 8601), `inputUrl`, `scrapedAt`\n- `authorName`, `authorProfileUrl`, `authorAvatar`, `authorFollowers`\n- `content` — the full post text, exactly as published\n- `hashtags` — pulled out of the text\n- `reactionsCount`, `commentsCount`\n- `comments` — the newest comments visible to logged-out visitors: `authorName`, `text`, `postedAt`, and `reactionsCount` when the comment has likes\n- `mediaType` — `text`, `image`, `video` or `repost`\n- `mediaUrls` / `mediaItems` — image links, or the MP4 link plus its poster frame for videos\n- `videoDuration` (e.g. `PT1M14S`), `videoTranscript` when you turn it on\n- `isRepost` and `repostOf` (original author and reshared text) for reshares\n\nOptional extras with a session cookie for people who still want them: `likers` (first visible page), `commenters` (with profile URLs), `reactionBreakdown`, `repostsCount` and `viewsCount` — plus profile feeds that paginate past the logged-out ceiling. See the cookie note below.\n\n## Examples\n\nA single post:\n\n```json\n{\n  \"mode\": \"postUrls\",\n  \"postUrl\": \"https://www.linkedin.com/posts/nvidia_ai-is-technology-that-is-built-and-improved-activity-7508569677040893954-sffp\",\n  \"maxPosts\": 1\n}\n```\n\nA batch of posts with quality filters:\n\n```json\n{\n  \"mode\": \"postUrls\",\n  \"postUrls\": [\n    \"https://www.linkedin.com/posts/nvidia_ai-is-technology-that-is-built-and-improved-activity-7508569677040893954-sffp\",\n    \"urn:li:activity:7469496437156925441\"\n  ],\n  \"minReactions\": 25,\n  \"includeReposts\": false,\n  \"postedLimit\": \"month\"\n}\n```\n\nA profile's latest posts with their top comments:\n\n```json\n{\n  \"mode\": \"profilePosts\",\n  \"profileUrl\": \"https://www.linkedin.com/in/mohamed-rhioui\",\n  \"maxPosts\": 10,\n  \"maxComments\": 10\n}\n```\n\n## Input reference\n\n| Field | What it does | Default |\n|---|---|---|\n| `mode` | `auto`, `postUrls`, or `profilePosts` | `auto` |\n| `profileUrl` | Profile URL or bare username (profile-feed mode) | – |\n| `postUrl` / `postUrls` | One or many post links, feed-update links, URNs, or activity IDs | – |\n| `maxPosts` | Upper bound on returned posts | `10` (max 200) |\n| `postedLimit` | Any time / past hour / 24h / week / month / 3 / 6 months / year | Any time |\n| `postedAfter`, `postedBefore` | Exact date window (`2026-01-31` or ISO 8601) | – |\n| `maxComments` | Top comments kept per post (LinkedIn caps this at 10) | `10` |\n| `includeVideoTranscript` | Add the spoken transcript of video posts | `false` |\n| `includeReposts` | Keep or drop reshares | `true` |\n| `minReactions`, `minComments` | Skip low-engagement posts | `0` |\n| `mediaTypes` | Restrict to text / image / video / repost (and other legacy categories) | all |\n| `language` | Language hint for localized content | `en` |\n| `scrapeInteractors` | Optional cookie-only extra: add `commenters` (with profile URLs/headlines) | `false` |\n| `scrapeReactions` | With `scrapeInteractors`, also add the first page of `likers` | `false` |\n| `maxInteractors` | Cap per likers list and per commenters list | `50` |\n| `cookie` | Optional. Unlocks feed pagination + reaction breakdowns/likers/commenters | empty |\n| `cookies` | Optional. Same as `cookie`, as a browser cookie-export JSON array | – |\n\n## Comments and limits, honestly\n\n- **Public posts only.** Posts that LinkedIn reserves for signed-in members, or that were deleted, are skipped and the run still finishes with the posts it could read.\n- **Profile feeds show a preview, not an archive — unless you bring a cookie.** Without one, LinkedIn's logged-out activity page lists only the newest few public posts (usually 8). There is no pagination for visitors who are not signed in. With your own session cookie the actor paginates the profile feed up to `maxPosts`.\n- **Comments are the visible pageful.** Logged-out post pages embed roughly the ten most recent comments, and the cookie path adds commenter profile URLs to those same first ~10. LinkedIn's \"more comments\" pagination is not available to visitors.\n- **Likers and reaction-type breakdowns are account-scoped.** LinkedIn shows those lists only to signed-in members. If you paste a session cookie from your own browser, the actor adds the first visible page of likers, the reaction-type breakdown, reposts/views counts and commenter profiles. LinkedIn often rejects sessions coming from a server IP, so treat cookie extras as best-effort. Everything in the output still works with no cookie at all.\n- **Repost flags survive both page versions.** Reshares are detected from the full-page `sharedContent` block or from the lighter page's \"reposted this\" header, whichever LinkedIn serves.\n\n## FAQ\n\n**Do I need a LinkedIn account or cookie?** No. The actor reads the same public pages a logged-out visitor sees.\n\n**How current is the data?** Every run fetches the pages live. `scrapedAt` tells you when each row was captured.\n\n**Which post link formats are accepted?** `linkedin.com/posts/...` share links, `/feed/update/urn:li:activity:...` and `urn:li:ugcPost:...` links, bare activity IDs, and country subdomains such as `uk.linkedin.com`.\n\n**Can it scrape company pages or keyword-search LinkedIn?** Those surfaces are login-gated at the publicly visible layer, so this actor focuses on profiles and individual posts.\n\n**Why did a specific URL return nothing?** Either the post is member-only/removed, or it does not exist. The run log lists each URL with the reason.\n\n**Do I need a proxy?** No. The actor selects its own connection and escalates only when a page request is challenged.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "linkedin-profile-feed-scraper-with-likers",
      "title": "LinkedIn Public Post Scraper - Profile Feeds, Comments & Video",
      "description": "Scrape public LinkedIn posts by URL or from a profile's activity feed: post text, author and follower count, reactions and comment counts, top comments, image/video media and transcripts. Cookieless; optional likers and commenters with a cookie.",
      "version": "1.1",
      "buildTag": "latest",
      "defaultMemoryMbytes": 1024,
      "environmentVariables": {},
      "dockerfile": "../Dockerfile",
      "readme": "# LinkedIn Public Post Scraper — Profile Feeds, Comments & Video\n\nCollect public LinkedIn posts without logging in. Give the actor one or more post links, or a profile URL, and it returns the post text, the author and their follower count, reaction and comment totals, the comments LinkedIn shows to logged-out visitors, images, videos with duration and (optionally) the full video transcript. No account, no cookie, no browser session.\n\n## Ways to use it\n\n1. **Specific posts** — paste any LinkedIn post link (`linkedin.com/posts/...`), a feed-update link (`/feed/update/urn:li:activity:...`, also `ugcPost`), or just the numeric activity ID. Country subdomains (`uk.linkedin.com/...`) work too.\n2. **A profile's recent posts** — provide a profile URL and the actor reads the profile's public activity feed, then opens each post it finds for the full record.\n\nSet `mode` to force one pipeline, or leave it on `Auto` and the actor figures it out from the URLs you supply.\n\n## What each row contains\n\n- `postId`, `postUrl`, `postedAt` (ISO 8601), `inputUrl`, `scrapedAt`\n- `authorName`, `authorProfileUrl`, `authorAvatar`, `authorFollowers`\n- `content` — the full post text, exactly as published\n- `hashtags` — pulled out of the text\n- `reactionsCount`, `commentsCount`\n- `comments` — the newest comments visible to logged-out visitors: `authorName`, `text`, `postedAt`, and `reactionsCount` when the comment has likes\n- `mediaType` — `text`, `image`, `video` or `repost`\n- `mediaUrls` / `mediaItems` — image links, or the MP4 link plus its poster frame for videos\n- `videoDuration` (e.g. `PT1M14S`), `videoTranscript` when you turn it on\n- `isRepost` and `repostOf` (original author and reshared text) for reshares\n\nOptional extras with a session cookie for people who still want them: `likers` (first visible page), `commenters` (with profile URLs), `reactionBreakdown`, `repostsCount` and `viewsCount` — plus profile feeds that paginate past the logged-out ceiling. See the cookie note below.\n\n## Examples\n\nA single post:\n\n```json\n{\n  \"mode\": \"postUrls\",\n  \"postUrl\": \"https://www.linkedin.com/posts/nvidia_ai-is-technology-that-is-built-and-improved-activity-7508569677040893954-sffp\",\n  \"maxPosts\": 1\n}\n```\n\nA batch of posts with quality filters:\n\n```json\n{\n  \"mode\": \"postUrls\",\n  \"postUrls\": [\n    \"https://www.linkedin.com/posts/nvidia_ai-is-technology-that-is-built-and-improved-activity-7508569677040893954-sffp\",\n    \"urn:li:activity:7469496437156925441\"\n  ],\n  \"minReactions\": 25,\n  \"includeReposts\": false,\n  \"postedLimit\": \"month\"\n}\n```\n\nA profile's latest posts with their top comments:\n\n```json\n{\n  \"mode\": \"profilePosts\",\n  \"profileUrl\": \"https://www.linkedin.com/in/mohamed-rhioui\",\n  \"maxPosts\": 10,\n  \"maxComments\": 10\n}\n```\n\n## Input reference\n\n| Field | What it does | Default |\n|---|---|---|\n| `mode` | `auto`, `postUrls`, or `profilePosts` | `auto` |\n| `profileUrl` | Profile URL or bare username (profile-feed mode) | – |\n| `postUrl` / `postUrls` | One or many post links, feed-update links, URNs, or activity IDs | – |\n| `maxPosts` | Upper bound on returned posts | `10` (max 200) |\n| `postedLimit` | Any time / past hour / 24h / week / month / 3 / 6 months / year | Any time |\n| `postedAfter`, `postedBefore` | Exact date window (`2026-01-31` or ISO 8601) | – |\n| `maxComments` | Top comments kept per post (LinkedIn caps this at 10) | `10` |\n| `includeVideoTranscript` | Add the spoken transcript of video posts | `false` |\n| `includeReposts` | Keep or drop reshares | `true` |\n| `minReactions`, `minComments` | Skip low-engagement posts | `0` |\n| `mediaTypes` | Restrict to text / image / video / repost (and other legacy categories) | all |\n| `language` | Language hint for localized content | `en` |\n| `scrapeInteractors` | Optional cookie-only extra: add `commenters` (with profile URLs/headlines) | `false` |\n| `scrapeReactions` | With `scrapeInteractors`, also add the first page of `likers` | `false` |\n| `maxInteractors` | Cap per likers list and per commenters list | `50` |\n| `cookie` | Optional. Unlocks feed pagination + reaction breakdowns/likers/commenters | empty |\n| `cookies` | Optional. Same as `cookie`, as a browser cookie-export JSON array | – |\n\n## Comments and limits, honestly\n\n- **Public posts only.** Posts that LinkedIn reserves for signed-in members, or that were deleted, are skipped and the run still finishes with the posts it could read.\n- **Profile feeds show a preview, not an archive — unless you bring a cookie.** Without one, LinkedIn's logged-out activity page lists only the newest few public posts (usually 8). There is no pagination for visitors who are not signed in. With your own session cookie the actor paginates the profile feed up to `maxPosts`.\n- **Comments are the visible pageful.** Logged-out post pages embed roughly the ten most recent comments, and the cookie path adds commenter profile URLs to those same first ~10. LinkedIn's \"more comments\" pagination is not available to visitors.\n- **Likers and reaction-type breakdowns are account-scoped.** LinkedIn shows those lists only to signed-in members. If you paste a session cookie from your own browser, the actor adds the first visible page of likers, the reaction-type breakdown, reposts/views counts and commenter profiles. LinkedIn often rejects sessions coming from a server IP, so treat cookie extras as best-effort. Everything in the output still works with no cookie at all.\n- **Repost flags survive both page versions.** Reshares are detected from the full-page `sharedContent` block or from the lighter page's \"reposted this\" header, whichever LinkedIn serves.\n\n## FAQ\n\n**Do I need a LinkedIn account or cookie?** No. The actor reads the same public pages a logged-out visitor sees.\n\n**How current is the data?** Every run fetches the pages live. `scrapedAt` tells you when each row was captured.\n\n**Which post link formats are accepted?** `linkedin.com/posts/...` share links, `/feed/update/urn:li:activity:...` and `urn:li:ugcPost:...` links, bare activity IDs, and country subdomains such as `uk.linkedin.com`.\n\n**Can it scrape company pages or keyword-search LinkedIn?** Those surfaces are login-gated at the publicly visible layer, so this actor focuses on profiles and individual posts.\n\n**Why did a specific URL return nothing?** Either the post is member-only/removed, or it does not exist. The run log lists each URL with the reason.\n\n**Do I need a proxy?** No. The actor selects its own connection and escalates only when a page request is challenged.\n",
      "input": {
        "title": "LinkedIn Post Scraper Input",
        "description": "Scrape public LinkedIn posts, a profile's recent posts, comments and video metadata - no login or cookie needed.",
        "type": "object",
        "schemaVersion": 1,
        "required": [],
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "What to scrape. \"Auto\" uses the URLs you provide; the actor picks the right pipeline automatically.",
            "editor": "select",
            "enum": [
              "auto",
              "postUrls",
              "profilePosts"
            ],
            "enumTitles": [
              "Auto (from the URLs you provide)",
              "Scrape specific post URLs",
              "Scrape a profile's recent posts"
            ],
            "default": "auto",
            "prefill": "postUrls"
          },
          "profileUrl": {
            "title": "Profile URL",
            "type": "string",
            "description": "(mode=profilePosts or auto) LinkedIn profile URL, e.g. https://www.linkedin.com/in/williamhgates, or just the username.",
            "editor": "textfield",
            "prefill": "https://www.linkedin.com/in/satyanadella"
          },
          "postUrl": {
            "title": "Post URL",
            "type": "string",
            "description": "(mode=postUrls or auto) A LinkedIn post link, feed-update link, activity URN or bare activity ID. No login needed.",
            "editor": "textfield",
            "prefill": "https://www.linkedin.com/posts/nvidia_ai-is-technology-that-is-built-and-improved-activity-7508569677040893954-sffp"
          },
          "postUrls": {
            "title": "Post URLs",
            "type": "array",
            "description": "(mode=postUrls) A list of LinkedIn post links, feed-update links, activity URNs or bare activity IDs. Combined with Post URL if both are set.",
            "editor": "stringList",
            "items": {
              "type": "string"
            }
          },
          "maxPosts": {
            "title": "Max Posts",
            "type": "integer",
            "description": "Maximum number of posts to return. Cookieless profile feeds are capped by LinkedIn at the newest ~8 public posts; with the optional cookie the feed paginates up to this limit.",
            "editor": "number",
            "default": 10,
            "prefill": 1,
            "minimum": 1,
            "maximum": 200
          },
          "postedLimit": {
            "title": "Posted Within",
            "type": "string",
            "description": "Keep only posts published within this window. \"Any time\" keeps everything.",
            "editor": "select",
            "enum": [
              "",
              "1h",
              "24h",
              "week",
              "month",
              "3months",
              "6months",
              "year"
            ],
            "enumTitles": [
              "Any time",
              "Past hour",
              "Past 24 hours",
              "Past week",
              "Past month",
              "Past 3 months",
              "Past 6 months",
              "Past year"
            ],
            "default": "",
            "prefill": ""
          },
          "postedAfter": {
            "title": "Posted After (date)",
            "type": "string",
            "description": "Optional. Keep posts published on or after this date. Format: 2026-01-31 or full ISO 8601.",
            "editor": "textfield"
          },
          "postedBefore": {
            "title": "Posted Before (date)",
            "type": "string",
            "description": "Optional. Keep posts published on or before this date. Format: 2026-01-31 or full ISO 8601.",
            "editor": "textfield"
          },
          "maxComments": {
            "title": "Max Comments per Post",
            "type": "integer",
            "description": "How many top comments to include per post. LinkedIn shows ~10 comments to logged-out visitors and the cookie path adds commenter profile URLs to those same first ~10 - a documented source ceiling either way.",
            "editor": "number",
            "default": 10,
            "prefill": 10,
            "minimum": 1,
            "maximum": 10
          },
          "includeVideoTranscript": {
            "title": "Include Video Transcript",
            "type": "boolean",
            "description": "When on, video posts include the full spoken transcript (can make rows large).",
            "default": false,
            "prefill": false
          },
          "scrapeInteractors": {
            "title": "Scrape Likers & Commenters (needs cookie)",
            "type": "boolean",
            "description": "Optional extra. Requires the LinkedIn Cookie field and adds the first page of commenters with profile URLs/headlines. Cookieless runs always include engagement counts and the top comments.",
            "default": false,
            "prefill": false
          },
          "scrapeReactions": {
            "title": "Include Likers List (needs cookie)",
            "type": "boolean",
            "description": "With Scrape Likers & Commenters on, also include the first page of likers (name/headline/profile URL). Requires the optional cookie. LinkedIn's liker pagination endpoint is not available to visitors, so this is the visible first page only.",
            "default": false,
            "prefill": false
          },
          "maxInteractors": {
            "title": "Max Likers + Commenters per Post",
            "type": "integer",
            "description": "Cap applied separately to the likers list and the commenters list of each post when interactor scraping is enabled.",
            "editor": "number",
            "default": 50,
            "prefill": 50,
            "minimum": 1,
            "maximum": 600
          },
          "cookie": {
            "title": "LinkedIn Cookie (optional)",
            "type": "string",
            "description": "Optional and never required - the actor works without any login. If supplied, it unlocks extra data: profile feeds paginate past the ~10-post cookieless ceiling up to Max Posts, and every post gains reaction-type breakdowns, reposts/views counts and the first page of likers/commenters. Accepts the li_at value, a raw cookie header, or a full cookies JSON array.",
            "editor": "textfield",
            "isSecret": true
          },
          "cookies": {
            "title": "LinkedIn Cookies (JSON array, optional)",
            "type": "array",
            "description": "Full browser cookie export for linkedin.com as a JSON array of {name, value} objects (Cookie-Editor extension -> Export -> JSON). Same effect as the Cookie field - merged with it when both are set. Optional and never required.",
            "editor": "json",
            "isSecret": true
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language hint sent to LinkedIn. Affects localized content where available.",
            "editor": "select",
            "enum": [
              "en",
              "es",
              "fr",
              "de",
              "pt",
              "it",
              "nl",
              "pl",
              "tr",
              "ar",
              "zh",
              "ja",
              "ko",
              "ru",
              "sv",
              "da",
              "no",
              "fi",
              "cs",
              "ro",
              "hu",
              "el",
              "he",
              "hi",
              "id",
              "ms",
              "th",
              "vi",
              "uk"
            ],
            "enumTitles": [
              "English",
              "Spanish",
              "French",
              "German",
              "Portuguese",
              "Italian",
              "Dutch",
              "Polish",
              "Turkish",
              "Arabic",
              "Chinese",
              "Japanese",
              "Korean",
              "Russian",
              "Swedish",
              "Danish",
              "Norwegian",
              "Finnish",
              "Czech",
              "Romanian",
              "Hungarian",
              "Greek",
              "Hebrew",
              "Hindi",
              "Indonesian",
              "Malay",
              "Thai",
              "Vietnamese",
              "Ukrainian"
            ],
            "default": "en",
            "prefill": "en"
          },
          "includeReposts": {
            "title": "Include Reposts",
            "type": "boolean",
            "description": "When off, reposts/reshared posts are excluded from the output.",
            "default": true,
            "prefill": true
          },
          "minReactions": {
            "title": "Minimum Reactions",
            "type": "integer",
            "description": "Skip posts that received fewer than this many reactions. 0 keeps everything.",
            "editor": "number",
            "default": 0,
            "prefill": 0,
            "minimum": 0
          },
          "minComments": {
            "title": "Minimum Comments",
            "type": "integer",
            "description": "Skip posts that received fewer than this many comments. 0 keeps everything.",
            "editor": "number",
            "default": 0,
            "prefill": 0,
            "minimum": 0
          },
          "mediaTypes": {
            "title": "Media Types",
            "type": "array",
            "description": "Restrict output to specific post media types. Leave empty to keep all. Cookieless runs detect text, image, video and repost posts.",
            "editor": "select",
            "items": {
              "type": "string",
              "enum": [
                "text",
                "image",
                "video",
                "article",
                "document",
                "carousel",
                "poll",
                "event",
                "repost"
              ],
              "enumTitles": [
                "Text",
                "Image",
                "Video",
                "Article",
                "Document",
                "Carousel",
                "Poll",
                "Event",
                "Repost"
              ]
            },
            "default": [],
            "uniqueItems": true
          }
        }
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "LinkedIn Post Scraper Output",
        "description": "One record per public LinkedIn post: text, author and follower count, engagement counts, top comments, media and video metadata, hashed from logged-out pages.",
        "properties": {
          "results": {
            "type": "string",
            "description": "Dataset with scraped LinkedIn posts",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "categories": [
        "SOCIAL_MEDIA",
        "LEAD_GENERATION",
        "AUTOMATION"
      ],
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Overview",
              "transformation": {
                "fields": [
                  "authorName",
                  "postedAt",
                  "mediaType",
                  "reactionsCount",
                  "commentsCount",
                  "postUrl",
                  "scrapedAt"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "authorName": {
                    "label": "Author",
                    "format": "text"
                  },
                  "postedAt": {
                    "label": "Posted At",
                    "format": "text"
                  },
                  "mediaType": {
                    "label": "Media Type",
                    "format": "text"
                  },
                  "reactionsCount": {
                    "label": "Reactions",
                    "format": "number"
                  },
                  "commentsCount": {
                    "label": "Comments",
                    "format": "number"
                  },
                  "postUrl": {
                    "label": "Post URL",
                    "format": "link"
                  },
                  "scrapedAt": {
                    "label": "Scraped At",
                    "format": "text"
                  }
                }
              }
            },
            "detailed": {
              "title": "Detailed",
              "transformation": {
                "fields": [
                  "postId",
                  "authorName",
                  "authorFollowers",
                  "authorHeadline",
                  "authorProfileUrl",
                  "postedAt",
                  "content",
                  "mediaType",
                  "reactionsCount",
                  "commentsCount",
                  "comments",
                  "videoDuration",
                  "postUrl",
                  "inputUrl",
                  "scrapedAt"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "postId": {
                    "label": "Post ID",
                    "format": "text"
                  },
                  "authorName": {
                    "label": "Author",
                    "format": "text"
                  },
                  "authorFollowers": {
                    "label": "Author Followers",
                    "format": "number"
                  },
                  "authorHeadline": {
                    "label": "Headline",
                    "format": "text"
                  },
                  "authorProfileUrl": {
                    "label": "Author URL",
                    "format": "link"
                  },
                  "postedAt": {
                    "label": "Posted At",
                    "format": "text"
                  },
                  "content": {
                    "label": "Post Content",
                    "format": "text"
                  },
                  "mediaType": {
                    "label": "Media Type",
                    "format": "text"
                  },
                  "reactionsCount": {
                    "label": "Reactions",
                    "format": "number"
                  },
                  "commentsCount": {
                    "label": "Comments",
                    "format": "number"
                  },
                  "comments": {
                    "label": "Top Comments",
                    "format": "text"
                  },
                  "videoDuration": {
                    "label": "Video Duration",
                    "format": "text"
                  },
                  "postUrl": {
                    "label": "Post URL",
                    "format": "link"
                  },
                  "inputUrl": {
                    "label": "Input URL",
                    "format": "text"
                  },
                  "scrapedAt": {
                    "label": "Scraped At",
                    "format": "text"
                  }
                }
              }
            }
          }
        }
      }
    },
    "buildNumber": "1.1.2",
    "imageDigest": "6edd00aff3cb7642479480d979322f76a8f192255ac69478cb8d32ba805fad76",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.1"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.004427777777777778
    }
  }
}