{
  "data": {
    "id": "A3cAPGpwBEG8RJwse",
    "userId": "uIC0SYhuxZ6dwKIiq",
    "name": "linkedin-profile-posts",
    "username": "harvestapi",
    "description": "Extract posts from LinkedIn profiles, including content, media, engagement, reactions, comments, and more. No cookies or account required.",
    "isPublic": true,
    "createdAt": "2025-04-24T23:03:16.546Z",
    "modifiedAt": "2026-10-29T10:26:54.768Z",
    "taggedBuilds": {
      "latest": {
        "buildId": "ocTvwcnar4NgSvVu9",
        "finishedAt": "2026-10-29T10:26:54.768Z",
        "buildNumberInt": 86,
        "buildNumber": "0.0.86"
      }
    },
    "stats": {
      "totalBuilds": 86,
      "totalRuns": 25024951,
      "totalUsers": 48547,
      "totalUsers7Days": 7541,
      "totalUsers30Days": 13817,
      "totalUsers90Days": 21018,
      "lastRunStartedAt": "2026-11-13T02:06:42.646Z",
      "publicActorRunStats30Days": {
        "ABORTED": 666,
        "FAILED": 3,
        "SUCCEEDED": 4140971,
        "TIMED-OUT": 722,
        "TOTAL": 4142362
      },
      "actorReviewCount": 55,
      "actorReviewRating": 4.396806785117282,
      "bookmarkCount": 622
    },
    "versions": [
      {
        "versionNumber": "0.0",
        "gitRepoUrl": "git@github.com:HarvestAPI/apify-linkedin-profile-posts.git",
        "sourceType": "GIT_REPO",
        "envVars": [
          {
            "name": "HARVESTAPI_TOKEN",
            "isSecret": true,
            "valueHash": "jgszU5"
          },
          {
            "name": "HARVESTAPI_URL",
            "value": "http://apify-api-2.harvest-api.com/api",
            "isSecret": false
          }
        ],
        "buildTag": "latest",
        "githubWebhookId": 543078726,
        "sourceFiles": [
          {
            "name": "Dockerfile",
            "format": "TEXT",
            "content": "# First, specify the base Docker image. You can read more about\n# the available images at https://sdk.apify.com/docs/guides/docker-images\n# You can also use any other image from Docker Hub.\nFROM apify/actor-node:16\n\n# Second, copy just package.json and package-lock.json since those are the only\n# files that affect \"npm install\" in the next step, to speed up the build.\nCOPY package*.json ./\n\n# Install NPM packages, skip optional and development dependencies to\n# keep the image small. Avoid logging too much and print the dependency\n# tree for debugging\nRUN npm --quiet set progress=false \\\n && npm install --only=prod --no-optional \\\n && echo \"Installed NPM packages:\" \\\n && (npm list || true) \\\n && echo \"Node.js version:\" \\\n && node --version \\\n && echo \"NPM version:\" \\\n && npm --version\n\n# Next, copy the remaining files and directories with the source code.\n# Since we do this after NPM install, quick build will be really fast\n# for most source file changes.\nCOPY . ./\n\n# Optionally, specify how to launch the source code of your Actor.\n# By default, Apify's base Docker images define the CMD instruction\n# that runs the Node.js source code using the command specified\n# in the \"scripts.start\" section of the package.json file.\n# In short, the instruction looks something like this:\n#\n# CMD npm start"
          },
          {
            "name": "README.md",
            "format": "TEXT",
            "content": "# My beautiful actor\n\nContains a documentation what your Actor does and how to use it,\nwhich is then displayed in the app or library. It's always a good\nidea to write a good README.md, in a few months not even you\nwill remember all the details about the Actor.\n\nYou can use [Markdown](https://guides.github.com/features/mastering-markdown/)\nlanguage for rich formatting."
          },
          {
            "name": "main.js",
            "format": "TEXT",
            "content": "// This is the main Node.js source code file of your Actor.\n// It is referenced from the \"scripts\" section of the package.json file.\n\nconst Apify = require('apify');\n\nApify.main(async () => {\n    // Get input of the Actor.\n    // If you'd like to have your input checked and generate a user\n    // interface for it, add INPUT_SCHEMA.json file to your Actor.\n    // For more information, see https://docs.apify.com/platform/actors/development/actor-definition/input-schema\n    const input = await Apify.getInput();\n    console.log('Input:');\n    console.dir(input);\n\n    // Do something useful here...\n\n    // Save output\n    const output = {\n        receivedInput: input,\n        message: 'Hello sir!',\n    };\n    console.log('Output:');\n    console.dir(output);\n    await Apify.setValue('OUTPUT', output);\n});"
          },
          {
            "name": "package.json",
            "format": "TEXT",
            "content": "{\n    \"name\": \"my-actor\",\n    \"version\": \"0.0.1\",\n    \"dependencies\": {\n        \"apify\": \"^2.2.2\"\n    },\n    \"scripts\": {\n        \"start\": \"node main.js\"\n    },\n    \"author\": \"Me!\"\n}"
          }
        ]
      }
    ],
    "defaultRunOptions": {
      "build": "latest",
      "timeoutSecs": 4000,
      "memoryMbytes": 256,
      "maxItems": null,
      "maxTotalChargeUsd": null
    },
    "exampleRunInput": {
      "body": "{ \"helloWorld\": 123 }",
      "contentType": "application/json; charset=utf-8"
    },
    "categories": [
      "LEAD_GENERATION",
      "SOCIAL_MEDIA",
      "AUTOMATION"
    ],
    "isDeprecated": false,
    "title": "LinkedIn Profile Posts Scraper (No Cookies)",
    "pictureUrl": "https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/uIC0SYhuxZ6dwKIiq-actor-A3cAPGpwBEG8RJwse-sC2VczrViO-uIC0SYhuxZ6dwKIiq-profile-uXtJdNdEut-HarvestAPI_logo_2.3_tr2.web",
    "seoTitle": null,
    "seoDescription": null,
    "pricingInfos": [
      {
        "pricingModel": "PRICE_PER_DATASET_ITEM",
        "pricePerUnitUsd": 0.002,
        "unitName": "post",
        "createdAt": "2025-04-24T23:14:20.438Z",
        "startedAt": "2025-04-24T23:14:20.438Z",
        "apifyMarginPercentage": 0.2,
        "notifiedAboutChangeAt": "2025-04-24T23:35:20.198Z"
      },
      {
        "minimalMaxTotalChargeUsd": 0.002,
        "pricingModel": "PAY_PER_EVENT",
        "isPriceChangeNotificationSuppressed": false,
        "reasonForChange": "We are migrating to the event-based pricing model and adding Apify store discounts. Under the new pricing model, the Actor will charge a separate event for 0-result queries because they consume resources for scraping post pages.",
        "pricingPerEvent": {
          "actorChargeEvents": {
            "apify-actor-start": {
              "eventTitle": "Actor Start",
              "eventDescription": "Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).",
              "isOneTimeEvent": true,
              "eventPriceUsd": 0.00005
            },
            "post": {
              "eventTitle": "Post",
              "eventDescription": "Post result item",
              "isOneTimeEvent": false,
              "eventTieredPricingUsd": {
                "FREE": {
                  "tieredEventPriceUsd": 0.002
                },
                "BRONZE": {
                  "tieredEventPriceUsd": 0.002
                },
                "SILVER": {
                  "tieredEventPriceUsd": 0.00175
                },
                "GOLD": {
                  "tieredEventPriceUsd": 0.0015
                },
                "PLATINUM": {
                  "tieredEventPriceUsd": 0.0015
                },
                "DIAMOND": {
                  "tieredEventPriceUsd": 0.0015
                }
              },
              "isPrimaryEvent": true
            },
            "reaction": {
              "eventTitle": "Reaction",
              "eventDescription": "Post reaction result, if selected to scrape reactions",
              "isOneTimeEvent": false,
              "eventTieredPricingUsd": {
                "FREE": {
                  "tieredEventPriceUsd": 0.002
                },
                "BRONZE": {
                  "tieredEventPriceUsd": 0.002
                },
                "SILVER": {
                  "tieredEventPriceUsd": 0.00175
                },
                "GOLD": {
                  "tieredEventPriceUsd": 0.0015
                },
                "PLATINUM": {
                  "tieredEventPriceUsd": 0.0015
                },
                "DIAMOND": {
                  "tieredEventPriceUsd": 0.0015
                }
              }
            },
            "comment": {
              "eventTitle": "Comment",
              "eventDescription": "Post comment result, if selected to scrape comments",
              "isOneTimeEvent": false,
              "eventTieredPricingUsd": {
                "FREE": {
                  "tieredEventPriceUsd": 0.002
                },
                "BRONZE": {
                  "tieredEventPriceUsd": 0.002
                },
                "SILVER": {
                  "tieredEventPriceUsd": 0.00175
                },
                "GOLD": {
                  "tieredEventPriceUsd": 0.0015
                },
                "PLATINUM": {
                  "tieredEventPriceUsd": 0.0015
                },
                "DIAMOND": {
                  "tieredEventPriceUsd": 0.0015
                }
              }
            },
            "no-result": {
              "eventTitle": "0-result query",
              "eventDescription": "Charged for scraping post pages that don't contain posts",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.001
            }
          }
        },
        "startedAt": "2026-03-09T17:56:27.322Z",
        "createdAt": "2026-02-23T17:56:27.611Z",
        "apifyMarginPercentage": 0.2,
        "notifiedAboutFutureChangeAt": "2026-02-23T17:57:02.022Z"
      },
      {
        "minimalMaxTotalChargeUsd": 0.002,
        "pricingModel": "PAY_PER_EVENT",
        "isPriceChangeNotificationSuppressed": false,
        "pricingPerEvent": {
          "actorChargeEvents": {
            "post": {
              "eventTitle": "Post",
              "eventDescription": "Post result item",
              "isOneTimeEvent": false,
              "eventTieredPricingUsd": {
                "FREE": {
                  "tieredEventPriceUsd": 0.002
                },
                "BRONZE": {
                  "tieredEventPriceUsd": 0.002
                },
                "SILVER": {
                  "tieredEventPriceUsd": 0.00175
                },
                "GOLD": {
                  "tieredEventPriceUsd": 0.0015
                },
                "PLATINUM": {
                  "tieredEventPriceUsd": 0.001
                },
                "DIAMOND": {
                  "tieredEventPriceUsd": 0.0008
                }
              },
              "isPrimaryEvent": true
            },
            "reaction": {
              "eventTitle": "Reaction",
              "eventDescription": "Post reaction result, if selected to scrape reactions",
              "isOneTimeEvent": false,
              "eventTieredPricingUsd": {
                "FREE": {
                  "tieredEventPriceUsd": 0.002
                },
                "BRONZE": {
                  "tieredEventPriceUsd": 0.002
                },
                "SILVER": {
                  "tieredEventPriceUsd": 0.00175
                },
                "GOLD": {
                  "tieredEventPriceUsd": 0.0015
                },
                "PLATINUM": {
                  "tieredEventPriceUsd": 0.0008
                },
                "DIAMOND": {
                  "tieredEventPriceUsd": 0.0006
                }
              }
            },
            "comment": {
              "eventTitle": "Comment",
              "eventDescription": "Post comment result, if selected to scrape comments",
              "isOneTimeEvent": false,
              "eventTieredPricingUsd": {
                "FREE": {
                  "tieredEventPriceUsd": 0.002
                },
                "BRONZE": {
                  "tieredEventPriceUsd": 0.002
                },
                "SILVER": {
                  "tieredEventPriceUsd": 0.00175
                },
                "GOLD": {
                  "tieredEventPriceUsd": 0.0015
                },
                "PLATINUM": {
                  "tieredEventPriceUsd": 0.0008
                },
                "DIAMOND": {
                  "tieredEventPriceUsd": 0.0006
                }
              }
            },
            "no-result": {
              "eventTitle": "0-result query",
              "eventDescription": "Charged for scraping post pages that don't contain posts",
              "isOneTimeEvent": false,
              "eventTieredPricingUsd": {
                "FREE": {
                  "tieredEventPriceUsd": 0.001
                },
                "BRONZE": {
                  "tieredEventPriceUsd": 0.001
                },
                "SILVER": {
                  "tieredEventPriceUsd": 0.001
                },
                "GOLD": {
                  "tieredEventPriceUsd": 0.001
                },
                "PLATINUM": {
                  "tieredEventPriceUsd": 0.0008
                },
                "DIAMOND": {
                  "tieredEventPriceUsd": 0.0007
                }
              }
            },
            "apify-actor-start": {
              "eventTitle": "Actor Start",
              "eventDescription": "Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).",
              "isOneTimeEvent": true,
              "eventPriceUsd": 0.00005
            }
          }
        },
        "startedAt": "2026-10-27T13:13:07.642Z",
        "createdAt": "2026-10-27T13:13:09.151Z",
        "apifyMarginPercentage": 0.2,
        "notifiedAboutChangeAt": "2026-10-27T13:30:45.075Z"
      }
    ],
    "notice": "NONE",
    "isCritical": false,
    "isGeneric": false,
    "hasNoDataset": false,
    "isSourceCodeHidden": false,
    "standbyUrl": null,
    "actorPermissionLevel": "LIMITED_PERMISSIONS",
    "readmeSummary": "## LinkedIn Profile Posts scraper\n\nScrapes posts from LinkedIn profile and company pages (by URL), extracting full post content and metadata for each item: author information, timestamps, social engagement metrics including reaction-type breakdowns, nested reactions and comments (when enabled), media assets (images, videos, links), and reposted/quoted content. Operates without LinkedIn authentication or cookies, supports concurrent scraping of multiple profiles/companies, and provides controls for limiting the number of posts, reactions, and comments, date-range filtering, and filtering of quote posts vs reposts. Outputs structured post records that combine content, author context, social metrics, media, and nested engagement items.\n\n## Use cases\n\n- Gather posts from specific LinkedIn profiles or company pages  \n- Engagement analysis using post content, metrics, reactions, and comments  \n- Outreach by extracting author and post context for targeted engagement  \n- Collect reactions and comments for deeper engagement insights and breakdowns  \n- Aggregate media and reposted content from LinkedIn posts",
    "deploymentKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDwJpFjmzI5GKNcOoRuVAlFZ2vmabpQLzrQ/CwE1hcZlq7GaoM8dznizAVS1IRnpR4W2uhl0aSOieSuVVCgO6WJ8tAXcM06m5xhtXM1xTvOGAxJ+ISgAHo8psBLgf0NNemxUzD6UwFSUvgzQjXHDSzxJZyRe+4TIqFGTFehQpxsLLFzjrr0pxy/Nx0zgHf+j389CQAxw8iXf0Y7NAwAr+REhddMZ/g9bt6YVDp7npzEL6KhlxkXIS5KrH9KpvfGF9zbjTnqjDBTwUiCqqBz15UbbkZNnipjhVyB5nydsDu+DC6R08IOWfHq6DEbKhd8GR57l5DakwSpZCp1D2PeSHYN \n"
  }
}