> ## Documentation Index
> Fetch the complete documentation index at: https://deepline.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# CrustData V2: Linkedin Posts

> Get recent LinkedIn posts and engagement metrics for a person or a company, or one post by URL. Includes inputs, outputs, SDK V2 examples, and Deepline cost.

Get recent LinkedIn posts and engagement metrics for a person or a company, or one post by URL.

> [!NOTE]
>
> Tool ID: `crustdata_v2_linkedin_posts`

## Run this action

Use the TypeScript SDK for one call. Use `ctx.tools.execute(...)` inside a Play for durable calls, scheduled calls, or CSV processing.

```ts theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'crustdata_v2_linkedin_posts',
  {
    "person_linkedin_url": "https://www.linkedin.com/in/jane-doe",
    "linkedin_post_url": "https://www.linkedin.com/in/jane-doe",
    "company_domain": "example.com"
  },
);

console.log(result.toolResponse.raw);
```

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute crustdata_v2_linkedin_posts --input '{
  "person_linkedin_url": "https://www.linkedin.com/in/jane-doe",
  "linkedin_post_url": "https://www.linkedin.com/in/jane-doe",
  "company_domain": "example.com"
}' --json
```

## Example response

The SDK returns this shape at `result.toolResponse.raw`. The example values illustrate the response.

```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
{
  "data": [
    {
      "backend_urn": "example",
      "actor_backend_urn": "example",
      "share_urn": "example"
    }
  ]
}
```

Use `deepline describe crustdata_v2_linkedin_posts --json` for the latest machine-readable contract.

## Input reference

Retrieve recent LinkedIn posts plus engagement metrics for either a **person** or a **company**, or fetch a **single post** by URL. **Exactly one** of `person_linkedin_url`, `linkedin_post_url`, `company_domain`, `company_linkedin_url`, `company_name`, or `company_id` must be supplied. [Show Docs (People API)](https://docs.crustdata.com/docs/discover/people-apis/people-linkedin-post-api) [Show Docs (Company API)](https://docs.crustdata.com/docs/discover/company-apis/company-linkedin-post)

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.person_linkedin_url` | `string` | No | — | LinkedIn profile URL of the person. Flagship (`https://linkedin.com/in/name`) or FSD (`.../in/ACoAAA...`) formats are both accepted. |
| `payload.linkedin_post_url` | `string` | No | — | URL of a specific LinkedIn post to fetch. Use this to retrieve a single post by its URL instead of fetching posts for a person/company. Expected format: `https://www.linkedin.com/feed/update/urn:li:activity: ` or `https://www.linkedin.com/posts/ ` |
| `payload.company_domain` | `string` | No | — | Comma-separated list (max 25) of company domains. |
| `payload.company_linkedin_url` | `string` | No | — | Comma-separated list (max 25) of LinkedIn company profile URLs. |
| `payload.company_name` | `string` | No | — | Comma-separated list (max 25) of company names. If a name itself contains a comma, wrap it in double quotes. |
| `payload.company_id` | `string` | No | — | Comma-separated list (max 25) of Crustdata company IDs. |
| `payload.page` | `integer` | No | `1` | Page number for pagination (starts from 1, max 20). Minimum: 1. Maximum: 20. |
| `payload.limit` | `integer` | No | `5` | Number of posts to return (1-100). Minimum: 1. Maximum: 100. |
| `payload.post_types` | `string` | No | `"repost,original"` | Specify `"original"`, `"repost"`, or `"repost,original"`. |
| `payload.fields` | `string` | No | — | Comma-separated list of fields to include in the response. |
| `payload.max_reactors` | `integer` | No | `100` | Maximum reactors to fetch per post (people posts only, 1-5000). Minimum: 1. Maximum: 5000. |
| `payload.max_comments` | `integer` | No | `100` | Maximum comments to fetch per post (people posts only, 1-5000). Minimum: 1. Maximum: 5000. |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Retrieve recent LinkedIn posts plus engagement metrics for either a **person** or a **company**, or fetch a **single post** by URL. **Exactly one** of `person_linkedin_url`, `linkedin_post_url`, `company_domain`, `company_linkedin_url`, `company_name`, or `company_id` must be supplied. [Show Docs (People API)](https://docs.crustdata.com/docs/discover/people-apis/people-linkedin-post-api) [Show Docs (Company API)](https://docs.crustdata.com/docs/discover/company-apis/company-linkedin-post)",
    "properties": {
      "person_linkedin_url": {
        "type": "string",
        "description": "LinkedIn profile URL of the person. Flagship (`https://linkedin.com/in/name`) or FSD (`.../in/ACoAAA...`) formats are both accepted."
      },
      "linkedin_post_url": {
        "type": "string",
        "description": "URL of a specific LinkedIn post to fetch. Use this to retrieve a single post by its URL instead of fetching posts for a person/company. Expected format: `https://www.linkedin.com/feed/update/urn:li:activity: ` or `https://www.linkedin.com/posts/ `"
      },
      "company_domain": {
        "type": "string",
        "description": "Comma-separated list (max 25) of company domains."
      },
      "company_linkedin_url": {
        "type": "string",
        "description": "Comma-separated list (max 25) of LinkedIn company profile URLs."
      },
      "company_name": {
        "type": "string",
        "description": "Comma-separated list (max 25) of company names. If a name itself contains a comma, wrap it in double quotes."
      },
      "company_id": {
        "type": "string",
        "description": "Comma-separated list (max 25) of Crustdata company IDs."
      },
      "page": {
        "type": "integer",
        "description": "Page number for pagination (starts from 1, max 20).",
        "default": 1,
        "minimum": 1,
        "maximum": 20
      },
      "limit": {
        "type": "integer",
        "description": "Number of posts to return (1-100).",
        "default": 5,
        "minimum": 1,
        "maximum": 100
      },
      "post_types": {
        "type": "string",
        "description": "Specify `\"original\"`, `\"repost\"`, or `\"repost,original\"`.",
        "default": "repost,original"
      },
      "fields": {
        "type": "string",
        "description": "Comma-separated list of fields to include in the response."
      },
      "max_reactors": {
        "type": "integer",
        "description": "Maximum reactors to fetch per post (people posts only, 1-5000).",
        "default": 100,
        "minimum": 1,
        "maximum": 5000
      },
      "max_comments": {
        "type": "integer",
        "description": "Maximum comments to fetch per post (people posts only, 1-5000).",
        "default": 100,
        "minimum": 1,
        "maximum": 5000
      }
    },
    "required": [],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `array` | Yes | — | Provider response payload. |
| `result.data[].backend_urn` | `string` | No | — | Unique identifier for the post in LinkedIn's backend system |
| `result.data[].actor_backend_urn` | `string` | No | — | Unique identifier for the actor's post in LinkedIn's backend system |
| `result.data[].share_urn` | `string` | No | — | Unique identifier for the shared content |
| `result.data[].share_url` | `string` | No | — | Direct URL to the post on LinkedIn |
| `result.data[].text` | `string` | No | — | The full content of the post |
| `result.data[].hyperlinks` | `object` | No | — | URLs found in the post content, categorized by type |
| `result.data[].hyperlinks.company_linkedin_urls` | `array` | No | — | — |
| `result.data[].hyperlinks.person_linkedin_urls` | `array` | No | — | — |
| `result.data[].hyperlinks.other_urls` | `array` | No | — | — |
| `result.data[].actor_name` | `string` | No | — | Name of the company or person who created the post |
| `result.data[].date_posted` | `string` | No | — | Date when the post was published, in "YYYY-MM-DD" format Format: `date`. |
| `result.data[].is_repost_without_thoughts` | `boolean` | No | — | Indicates if this is a repost without any additional commentary |
| `result.data[].total_reactions` | `integer` | No | — | Total number of reactions on the post |
| `result.data[].total_comments` | `integer` | No | — | Total number of comments on the post |
| `result.data[].reactions_by_type` | `record` | No | — | Breakdown of reactions by type (e.g., "LIKE", "EMPATHY", "PRAISE", "INTEREST") |
| `result.data[].num_shares` | `integer` | No | — | Number of times the post has been shared |
| `result.data[].reactors` | `array` | No | — | List of users who reacted to the post |
| `result.data[].reactors[].name` | `string` | No | — | Full name of the person who reacted |
| `result.data[].reactors[].linkedin_profile_url` | `string` | No | — | URL to the reactor's LinkedIn profile |
| `result.data[].reactors[].reaction_type` | `string` | No | — | Type of reaction given (e.g., "LIKE", "EMPATHY") |
| `result.data[].reactors[].profile_image_url` | `string` | No | — | URL to the reactor's profile image (100x100 size) |
| `result.data[].reactors[].title` | `string` | No | — | Current professional title of the reactor |
| `result.data[].reactors[].additional_info` | `string` | No | — | Additional information, often indicating connection degree |
| `result.data[].reactors[].location` | `string` | No | — | Geographic location of the reactor |
| `result.data[].reactors[].linkedin_profile_urn` | `string` | No | — | Unique identifier for the reactor's LinkedIn profile |
| `result.data[].reactors[].default_position_title` | `string` | No | — | Primary job title |
| `result.data[].reactors[].default_position_company_linkedin_id` | `string` | No | — | LinkedIn ID of the reactor's primary company |
| `result.data[].reactors[].default_position_is_decision_maker` | `boolean` | No | — | Indicates if the reactor is in a decision-making role |
| `result.data[].reactors[].flagship_profile_url` | `string` | No | — | Another form of the reactor's LinkedIn profile URL |
| `result.data[].reactors[].profile_picture_url` | `string` | No | — | URL to a larger version of the profile picture (400x400 size) |
| `result.data[].reactors[].headline` | `string` | No | — | Professional headline from the reactor's LinkedIn profile |
| `result.data[].reactors[].summary` | `string \| null` | No | — | Brief professional summary, if available |
| `result.data[].reactors[].num_of_connections` | `integer` | No | — | Number of LinkedIn connections the reactor has |
| `result.data[].reactors[].related_colleague_company_id` | `integer \| null` | No | — | LinkedIn ID of a related company, possibly current employer |
| `result.data[].reactors[].skills` | `array` | No | — | List of professional skills listed on the reactor's profile |
| `result.data[].reactors[].employer` | `array` | No | — | Employment history of the reactor |
| `result.data[].reactors[].employer[].title` | `string` | No | — | Job title |
| `result.data[].reactors[].employer[].company_name` | `string` | No | — | Name of the employer |
| `result.data[].reactors[].employer[].company_linkedin_id` | `string \| null` | No | — | LinkedIn ID of the company |
| `result.data[].reactors[].employer[].company_logo_url` | `string` | No | — | URL to the company logo image |
| `result.data[].reactors[].employer[].start_date` | `string` | No | — | Start date of employment Format: `date-time`. |
| `result.data[].reactors[].employer[].end_date` | `string \| null` | No | — | End date of employment, or null if current Format: `date-time`. |
| `result.data[].reactors[].employer[].position_id` | `integer` | No | — | Unique identifier for this position |
| `result.data[].reactors[].employer[].description` | `string \| null` | No | — | Job description, if available |
| `result.data[].reactors[].employer[].location` | `string \| null` | No | — | Job location |
| `result.data[].reactors[].employer[].rich_media` | `array` | No | — | Media related to the job |
| `result.data[].reactors[].education_background` | `array` | No | — | Educational history of the reactor |
| `result.data[].reactors[].education_background[].degree_name` | `string \| null` | No | — | Type of degree obtained |
| `result.data[].reactors[].education_background[].institute_name` | `string` | No | — | Name of the educational institution |

The table shows the first 50 fields. Expand the raw schema below for every field.

> [!NOTE]
>
> This output schema is too large for an inline display. Read the complete live contract with `deepline describe crustdata_v2_linkedin_posts --json`.

## Deepline cost

* Pricing model: `per_result` (per result).
* Estimated Deepline credits: `0.4` per pricing unit.

## Related documentation

* [CrustData V2 provider guide](https://deepline.com/docs/providers/crustdata-v2/guide.md)
* [SDK V2 quickstart](https://deepline.com/docs/sdk-v2/quickstart.md)
* [SDK reference](https://deepline.com/docs/sdk-v2/sdk-reference.md)
* [Run tools across a CSV](https://deepline.com/docs/sdk-v2/batch-csv.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.