{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Post Comments Scraper",
    "description": "Scrape the top public comments from LinkedIn posts - the most relevant comments LinkedIn shows publicly (about 10 per post), with comment text, commenter names and profile URLs, exact timestamps, reaction counts, mentions, links and hashtags. No LinkedIn login or cookies required.",
    "version": "1.0",
    "x-build-id": "xhjC00ai4qK2aRVEA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/coregent~linkedin-post-comments-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-coregent-linkedin-post-comments-scraper",
        "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/coregent~linkedin-post-comments-scraper/runs": {
      "post": {
        "operationId": "runs-sync-coregent-linkedin-post-comments-scraper",
        "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/coregent~linkedin-post-comments-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-coregent-linkedin-post-comments-scraper",
        "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": [
          "postUrls"
        ],
        "properties": {
          "postUrls": {
            "title": "LinkedIn post URLs",
            "type": "array",
            "description": "Public LinkedIn post URLs, one per line. Supported forms:\n\n- `https://www.linkedin.com/feed/update/urn:li:activity:<id>`\n- `https://www.linkedin.com/posts/<author>_<slug>-activity-<id>-<hash>`\n- `https://www.linkedin.com/posts/<author>_<slug>-ugcPost-<id>-<hash>`\n\nComment-specific links (`?commentUrn=...`) are normalised to their parent post, tracking parameters are stripped and duplicates are removed (first one wins). Profile, company and article URLs are skipped as invalid and never charged. Up to 1,000 posts per run.",
            "default": [
              "https://www.linkedin.com/feed/update/urn:li:activity:7514290662138068992/"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxCommentsPerPost": {
            "title": "Max comments per post",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of top-level comments to collect per post. LinkedIn's public page shows about the 10 most relevant comments, so a post with more comments returns those ~10 and is marked `PARTIAL_RESULT` in the run summary. Replies do not count toward this limit. Ignored when \"Scrape all comments\" is on.",
            "default": 100
          },
          "scrapeAllComments": {
            "title": "Scrape all comments",
            "type": "boolean",
            "description": "Ignore the per-post limit and collect every top-level comment the post exposes. Deeper pagination is not available yet, so this currently returns the ~10 comments LinkedIn shows publicly.",
            "default": false
          },
          "sortOrder": {
            "title": "Sort order",
            "enum": [
              "RELEVANCE",
              "NEWEST"
            ],
            "type": "string",
            "description": "Order in which comments are collected. `commentRank` in the output reflects this order. Newest-first is not available yet: comments come back in LinkedIn's relevance order and the post's entry in the run summary says so.",
            "default": "RELEVANCE"
          },
          "scrapeReplies": {
            "title": "Include replies",
            "type": "boolean",
            "description": "Return replies to each comment as their own rows (recordType REPLY, linked to their parent and root comment), billed exactly like comments. Not available yet: LinkedIn's public page does not show replies, so no reply rows are returned for now.",
            "default": true
          },
          "maxRepliesPerComment": {
            "title": "Max replies per comment",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of replies to keep per top-level comment. 0 = all available. Has no effect until replies are available.",
            "default": 0
          },
          "includeReactionBreakdown": {
            "title": "Include reaction breakdown",
            "type": "boolean",
            "description": "Split reactions into like / praise / empathy / appreciation / interest / other where LinkedIn exposes them. The public page shows only the total, so the breakdown fields are currently null - counts are never estimated.",
            "default": true
          },
          "includeMedia": {
            "title": "Include comment media",
            "type": "boolean",
            "description": "Return images attached to comments (when public).",
            "default": true
          },
          "includeRawData": {
            "title": "Include raw source data",
            "type": "boolean",
            "description": "Add a `raw` field with the unprocessed source record for each row. Useful for debugging; makes the dataset larger.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Posts processed in parallel",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many posts are processed at the same time. Higher is faster but more likely to be rate limited.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy configuration. Defaults to Apify Proxy (datacenter). Apify Residential proxy is not supported - supply your own residential provider via Custom proxy URLs if you need one.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}