# fetchPost

This method allows you to retrieve post data.

```typescript
try {
  const workflow = await linkedapi.fetchPost.execute({
    postUrl: "https://www.linkedin.com/posts/username_activity-id",
    retrieveComments: true,
    retrieveReactions: true,
    commentsRetrievalConfig: {
      limit: 20,
      replies: true,
      sort: 'mostRecent'
    },
    reactionsRetrievalConfig: {
      limit: 50,
    },
  });

  const { data, errors } = await linkedapi.fetchPost.result(workflow.workflowId);

  // The list of possible execution errors is below
  if (errors && errors.length > 0) {
    console.warn('Workflow completed with execution errors:');
    errors.forEach(error => {
      console.warn(` - Type: ${error.type}, Message: ${error.message}`);
    });
  }

  // The structure of the 'data' object is below
  if (data) {
    console.log('Workflow completed successfully. Data:', data);
  }
} catch (e) {
  // A list of all critical errors can be found here:
  // https://linkedapi.io/sdks/handling-results-and-errors/#handling-critical-errors
  if (e instanceof LinkedApiError) {
    console.error(`Critical Error - Type: ${e.type}, Message: ${e.message}`);
  } else {
    console.error('An unexpected, non-API error occurred:', e);
  }
}
```

```python
from linkedapi import FetchPostParams, LinkedApiError

try:
    workflow = linkedapi.fetch_post.execute(
        FetchPostParams(
            post_url="https://www.linkedin.com/posts/username_activity-id",
            retrieve_comments=True,
            retrieve_reactions=True,
            comments_retrieval_config={"limit": 20, "replies": True, "sort": "mostRecent"},
            reactions_retrieval_config={"limit": 50},
        )
    )

    result = linkedapi.fetch_post.result(workflow.workflow_id)
    data = result.data
    errors = result.errors

    # The list of possible execution errors is below
    if errors:
        print("Workflow completed with execution errors:")
        for error in errors:
            print(f" - Type: {error.type}, Message: {error.message}")

    # The structure of the 'data' object is below
    if data:
        print("Workflow completed successfully. Data:", data)
except LinkedApiError as e:
    # A list of all critical errors can be found here:
    # https://linkedapi.io/sdks/handling-results-and-errors/#handling-critical-errors
    print(f"Critical Error - Type: {e.type}, Message: {e.message}")
except Exception as error:
    print("An unexpected, non-API error occurred:", error)
```

## Params

- `postUrl` – LinkedIn URL of the post.
- `retrieveComments` (optional) – when set to `true`, includes comments on the post in the results.
- `retrieveReactions` (optional) – when set to `true`, includes reactions on the post in the results.
- `commentsRetrievalConfig` (optional) – configuration for retrieving comments. Available only if `retrieveComments` is `true`.
  - `replies` (optional, default: `false`) – when set to `true`, the action includes replies to the comments in the results.
  - `limit` (optional) – number of comments to retrieve. Also applies to the replies if `replies` set to `true`. Defaults to **10**, with a maximum value of **500**.
  - `sort` (optional, default: `mostRelevant`) – enum representing comments sorting. Options:
    - `mostRelevant` – show most relevant comments first.
    - `mostRecent` – show most recent comments first.
- `reactionsRetrievalConfig` (optional) – configuration for retrieving reactions. Available only if `retrieveReactions` is `true`.
  - `limit` (optional) – number of reactions to retrieve. Defaults to **10**, with a maximum value of **500**.

## Data

- `url` – URL of the post.
- `activityUrn` – LinkedIn activity or UGC URN of the post, if available.
- `time` – timestamp when the post was published.
- `type` – type of the post. Enum with possible values:
  - `original` – for original posts.
  - `repost` – for reposts.
- `author` – original content creator. Can be `null` if the actor cannot be parsed.
  - For person authors: `type`, `name`, `profileUrl`, `headline`.
  - For company authors: `type`, `name`, `companyUrl`.
- `reposter` – person or company that reshared the post. Non-null only when `type` is `repost`.
  - For person reposters: `type`, `name`, `profileUrl`, `headline`.
  - For company reposters: `type`, `name`, `companyUrl`.
- `text` – original author's post text, if available.
- `repostText` – text added by the reposter on a repost with comment, if available.
- `hashtags` – array of hashtags found in the post text, without leading `#`.
- `mentions` – array of person and company profile URLs found in the post text.
- `externalLinks` – array of outbound URLs found in the post text.
- `images` – array of up to 3 preview image URLs, if available.
- `documentSlides` – array of carousel or document slide image URLs, if available.
- `hasVideo` – boolean indicating if the post contains a video.
- `videoThumbnail` – URL of the video thumbnail, if available.
- `hasPoll` – boolean indicating if the post contains a poll.
- `reactionsCount` – number of reactions on the post.
- `commentsCount` – number of comments on the post.
- `repostsCount` – number of reposts on the post.
- `comments` – array of post comments (included only if `retrieveComments` is `true`).
  - `commentUrn` – LinkedIn URN of the comment, if available.
  - `commentUrl` – canonical deep-link URL of the comment, if available. It can be used as the `commentUrl` input for `reactToComment` or `replyToComment`.
  - `commenterUrl` – public URL of the person or company.
  - `commenterName` – full name of the person or company.
  - `commenterHeadline` – headline of the person or company.
  - `commenterType` – commenter type. Enum with the following values:
    - `person` – commenter is a person.
    - `company` – commenter is a company.
  - `time` – free-form string indicating comment time. For example: `6d`, `2w` or `1y`.
  - `text` – text content of the comment, if available.
  - `image` – URL of the comment's image, if available.
  - `isReply` – boolean value indicates if this comment is a reply to another comment.
  - `reactionsCount` – number of reactions on the comment.
  - `repliesCount` – number of replies on the comment. Always returns `0` if `isReply` is true.
- `reactions` – array of post reactions (included only if `retrieveReactions` is `true`).
  - `engagerUrl` – URL of the person or company.
  - `engagerName` – full name of the person or company.
  - `engagerHeadline` – headline of the person or company.
  - `engagerType` – the engager type. Enum with the following values:
    - `person` – the engager is the person.
    - `company` – the engager is the company.
  - `type` – enum describing the reaction type. Possible values:
    - `like` – standard "like".
    - `celebrate` – to celebrate an achievement.
    - `support` – to show support.
    - `love` – to express love or admiration.
    - `insightful` – to appreciate insightful content.
    - `funny` – to react to something humorous.

## Errors

- `postNotFound` – provided URL is not an existing LinkedIn post.
