

# Can a Public LinkedIn Comment Export Represent the Full Discussion?

Compare the saved row count, public-page row count, completeness fields, and stop reason before treating a LinkedIn comment export as the full discussion. A displayed comment count and a collected top-level preview can count different things. A preview is the comments visible on the public source surface. Replies to a comment are outside this Actor's row scope.

A displayed comment count, an exposed public-page count, and a saved row count are separate measurements. A displayed count shows the total items reported by the page interface. An exposed public-page count shows the top-level items visible on the open web page. A saved row count shows what the Actor successfully collected into your dataset. Their units may differ. Do not assume the composition of a displayed count or assert a specific cause for any gap between these numbers, as the cause can remain unproved.

## Understanding Collection Boundaries

To evaluate an export accurately, you must understand four core terms:

- Top-level comment: A direct comment posted on a main article or updates feed.
- Reply chain: A nested response posted under an existing top-level comment.
- Actor: A hosted data collection program that reads and extracts web pages.
- Task: A saved set of run inputs configured for a collection Actor.

An Actor collects public data exposed on a web page. If a platform hides replies behind interactive menus or requires an account login to show full thread depth, those hidden items stay outside the scope of a public top-level export.

Dataset keys include postUrl, postUrn, commentId, commentUrl, text, authorUrl, and observedAt. These keys serve as your row evidence. The output object OUTPUT.inputResults contains summary fields for each input item. These summary fields are status, statusReason, pageCommentCount, publicRowsOnPage, savedRows, isPublicPageComplete, isComplete, and stopReason.

The completeness field isComplete describes this specific export result, not whether all task limits were met. The field isPublicPageComplete describes the extraction of exposed page rows, not a full conversation discussion. Missing values remain unknown. If a row is missing a commentId, keep it as a separate unresolved observation. Never perform a blank-ID merge.

## Step-by-Step Method to Verify Export Coverage

Follow these seven steps to evaluate whether a public comment export meets your research needs.

1. Name your target metric. Decide if you need collected top-level rows, exposed public page rows, a full thread with replies, or a count of unique commenters.
2. Keep output data grouped by post. Store each post's summary keys alongside its collected dataset rows. Do not mix metrics across different posts in the same run.
3. Verify the input status first. If an input state shows a failure or a block, do not log it as a zero-comment post. Mark its count as unknown.
4. Compare saved rows against stop rules. Check if stopReason equals max_comments_reached. A numeric cap stops collection early even if the page has more visible comments.
5. Compare publicRowsOnPage and isPublicPageComplete to pageCommentCount using their exact definitions. Public-page completeness describes the extraction of exposed source page rows. Export completeness describes the resulting collection. Neither field converts a top-level sample into a full reply tree.
6. Build a coverage ledger. Create a table with one row per post. Assign a plain text decision to each item based on its status and limits.
7. Select an authorized source for full threads. If your project requires full reply chains, use an authorized account integration or official API tool.

The current default task input uses collectAllAvailable set to true with no numeric cap. For a bounded first check, change collectAllAvailable to false and set maxComments to 3. Keep includeAuthorDetails set to false.

Here is a valid JSON plain configuration sample using the current saved task input from https://www.linkedin.com/posts/timferriss_how-to-become-dramatically-more-productive-activity-7386884213343428608-wrF3. Replace the entire URL string with your known public post link:

```json
{
  "startUrls": [
    "https://www.linkedin.com/posts/timferriss_how-to-become-dramatically-more-productive-activity-7386884213343428608-wrF3"
  ],
  "collectAllAvailable": false,
  "maxComments": 3,
  "includeAuthorDetails": false
}
```

Step-by-Step Method to Verify Export Coverage

A checked control run showing 3 saved rows, 4 exposed public rows, 4 displayed comments, isPublicPageComplete equal to true, isComplete equal to false, and stopReason equal to max_comments_reached proves bounded collection only, not full discussion threads.

Three source values are invented for demonstration. Three posts share the same fictional observation time:

- P1: pageCommentCount 12, publicRowsOnPage 6, savedRows 3, isPublicPageComplete true, isComplete false, stopReason max_comments_reached. Status is partial, statusReason says the numeric cap stopped this export. Decision is capped public top-level sample; a larger cap may save more exposed rows but guarantees no remaining count. The 3 divided by 12 numerical ratio of 25 percent is only an unlike-unit numerical ratio, not 25 percent of all unique people or proved conversation recall.
- P2: pageCommentCount 20, publicRowsOnPage 5, savedRows 5, isPublicPageComplete true, isComplete true, stopReason public page exhausted through ordinary reader description. Status is ok, statusReason describes public-page extraction exhausted. Decision is accepted exposed-page sample, not a complete 20-comment conversation. The gap of 15 items has an unproved cause and is not asserted as hidden replies.
- P3: all counts unknown, source outcome failed, status is failed, statusReason is network error. Decision is collection unknown; no zero-comments report and no denominator.

### Fictional Ledger

| Post ID | Status | Status Reason | Page Count | Public Rows | Saved Rows | Page Complete | Export Complete | Stop Reason | Decision |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| P1 | partial | numeric cap stopped this export | 12 | 6 | 3 | true | false | max_comments_reached | Capped public top-level sample |
| P2 | ok | public-page extraction exhausted | 20 | 5 | 5 | true | true | public page exhausted | Accepted exposed-page sample |
| P3 | failed | network error | unknown | unknown | unknown | unknown | unknown | unknown | Collection unknown |

The ledger separates the P1 numeric-cap gap, the P2 source-scope gap, and the P3 failed check. Total accepted saved rows equal 3 plus 5, giving 8 observations. P3 remains unknown and is not added as zero. The reader may use 8 observed rows for a stated public-sample study. They cannot claim 8 of 32 people or 8 of all comments. If P1 later saves 6 rows with a higher cap, retain a second snapshot and [deduplicate only with checked comment identities](/en/articles/linkedin-join-three-datasets/) before combining observations.

## Next action

Open the Task preset at [Collect All Comments Exposed on Public LinkedIn Posts](https://apify.com/chronometrica/linkedin-comments-scraper/examples/linkedin-all-publicly-exposed-comments) using the [LinkedIn Comments Scraper](https://apify.com/chronometrica/linkedin-comments-scraper) Actor, set a small numeric cap, save your output fields, and decide whether the observed public-page sample meets your study need.

## Sources

- [LinkedIn Comments Scraper Actor](https://apify.com/chronometrica/linkedin-comments-scraper)
- [Reddit Discussion on Public Commenter Data](https://www.reddit.com/r/webscraping/comments/1d8lc31/how_would_you_scrape_the_linkedin_profiles_of/)