> ## 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 Keyword Search

> Search LinkedIn posts by keyword or phrase, sorted by relevance or recency and filtered by date posted. Includes SDK V2 examples, schemas, and cost.

Search LinkedIn posts by keyword or phrase, sorted by relevance or recency and filtered by date posted.

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

## 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_keyword_search',
  {
    "keyword": "software companies hiring engineers"
  },
);

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

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute crustdata_v2_linkedin_posts_keyword_search --input '{
  "keyword": "software companies hiring engineers"
}' --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": {
    "posts": [
      {
        "backend_urn": "example",
        "uid": "example",
        "share_urn": "example"
      }
    ],
    "total_count": 123
  }
}
```

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

## Input reference

Search for LinkedIn posts containing specific keywords or phrases. Results can be sorted by relevance or recency and filtered by date posted. [Show Docs](https://docs.crustdata.com/docs/discover/company-apis/company-linkedin-post-by-keyword)

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.keyword` | `string` | Yes | — | The keyword or phrase to search for in LinkedIn posts |
| `payload.page` | `integer` | No | — | Page number for pagination (starts from 1). Cannot be used when exact\_keyword\_match is true. Server default is 1 if not specified. |
| `payload.limit` | `integer` | No | — | Exact number of posts to return or scan. Required when exact\_keyword\_match is true. |
| `payload.exact_keyword_match` | `boolean` | No | `false` | When true, returns posts that contain the exact keyword phrase. Must use 'limit' parameter instead of 'page' when enabled. The API will scan the first 'limit' posts and return only those containing exact matches. |
| `payload.sort_by` | `"relevance" \| "date_posted"` | No | `"date_posted"` | How to sort the results Allowed: `relevance`, `date_posted`. |
| `payload.date_posted` | `"past-24h" \| "past-week" \| "past-month" \| "past-quarter" \| "past-year"` | No | — | Filter posts by when they were posted Allowed: `past-24h`, `past-week`, `past-month`, `past-quarter`, `past-year`. |
| `payload.content_type` | `array` | No | — | Filter posts by content type |
| `payload.filters` | `array` | No | — | Optional filters for posts by specific criteria |
| `payload.fields` | `string` | No | — | Comma-separated list of fields to include in the response. By default, returns core post data. Add "reactors" to fetch users who reacted, and "comments" to fetch comments. |
| `payload.max_reactors` | `integer` | No | — | Maximum number of reactors to fetch per post when "reactors" is included in fields. Range 0-5000. Server default is 5 if not specified. |
| `payload.max_comments` | `integer` | No | — | Maximum number of comments to fetch per post when "comments" is included in fields. Range 0-5000. Server default is 5 if not specified. |

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

  ### Input JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Search for LinkedIn posts containing specific keywords or phrases. Results can be sorted by relevance or recency and filtered by date posted. [Show Docs](https://docs.crustdata.com/docs/discover/company-apis/company-linkedin-post-by-keyword)",
    "properties": {
      "keyword": {
        "type": "string",
        "description": "The keyword or phrase to search for in LinkedIn posts"
      },
      "page": {
        "type": "integer",
        "description": "Page number for pagination (starts from 1). Cannot be used when exact_keyword_match is true. Server default is 1 if not specified."
      },
      "limit": {
        "type": "integer",
        "description": "Exact number of posts to return or scan. Required when exact_keyword_match is true."
      },
      "exact_keyword_match": {
        "type": "boolean",
        "description": "When true, returns posts that contain the exact keyword phrase. Must use 'limit' parameter instead of 'page' when enabled. The API will scan the first 'limit' posts and return only those containing exact matches.",
        "default": false
      },
      "sort_by": {
        "type": "string",
        "description": "How to sort the results",
        "default": "date_posted",
        "enum": [
          "relevance",
          "date_posted"
        ]
      },
      "date_posted": {
        "type": "string",
        "description": "Filter posts by when they were posted",
        "enum": [
          "past-24h",
          "past-week",
          "past-month",
          "past-quarter",
          "past-year"
        ]
      },
      "content_type": {
        "type": "array",
        "description": "Filter posts by content type",
        "items": {
          "type": "string",
          "enum": [
            "photos",
            "jobs",
            "collaborativeArticles",
            "videos",
            "documents",
            "liveVideos"
          ]
        }
      },
      "filters": {
        "type": "array",
        "description": "Optional filters for posts by specific criteria",
        "items": {
          "type": "object",
          "properties": {
            "filter_type": {
              "type": "string",
              "description": "Type of filter to apply",
              "enum": [
                "MEMBER",
                "MENTIONING_MEMBER",
                "COMPANY",
                "MENTIONING_COMPANY",
                "AUTHOR_INDUSTRY",
                "AUTHOR_COMPANY",
                "AUTHOR_TITLE"
              ]
            },
            "type": {
              "type": "string",
              "description": "Operator for the filter",
              "enum": [
                "in"
              ]
            },
            "value": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "required": [
            "filter_type",
            "type",
            "value"
          ],
          "additionalProperties": false
        }
      },
      "fields": {
        "type": "string",
        "description": "Comma-separated list of fields to include in the response. By default, returns core post data. Add \"reactors\" to fetch users who reacted, and \"comments\" to fetch comments."
      },
      "max_reactors": {
        "type": "integer",
        "description": "Maximum number of reactors to fetch per post when \"reactors\" is included in fields. Range 0-5000. Server default is 5 if not specified."
      },
      "max_comments": {
        "type": "integer",
        "description": "Maximum number of comments to fetch per post when \"comments\" is included in fields. Range 0-5000. Server default is 5 if not specified."
      }
    },
    "required": [
      "keyword"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `object` | Yes | — | Provider response payload. |
| `result.data.posts` | `array` | No | — | — |
| `result.data.posts[].backend_urn` | `string` | No | — | Unique identifier for the post in LinkedIn's backend system |
| `result.data.posts[].uid` | `string` | No | — | Unique identifier for the post in the system |
| `result.data.posts[].share_urn` | `string` | No | — | Unique identifier for the shared content |
| `result.data.posts[].share_url` | `string` | No | — | Direct URL to the post on LinkedIn |
| `result.data.posts[].text` | `string` | No | — | The full content of the post |
| `result.data.posts[].hyperlinks` | `object` | No | — | URLs found in the post content, categorized by type |
| `result.data.posts[].hyperlinks.company_linkedin_urls` | `array` | No | — | — |
| `result.data.posts[].hyperlinks.person_linkedin_urls` | `array` | No | — | — |
| `result.data.posts[].hyperlinks.other_urls` | `array` | No | — | — |
| `result.data.posts[].date_posted` | `string` | No | — | Date when the post was published, in "YYYY-MM-DD" format Format: `date`. |
| `result.data.posts[].is_repost_without_thoughts` | `boolean` | No | — | Indicates if this is a repost without any additional commentary |
| `result.data.posts[].total_reactions` | `integer` | No | — | Total number of reactions on the post |
| `result.data.posts[].total_comments` | `integer` | No | — | Total number of comments on the post |
| `result.data.posts[].reactions_by_type` | `record` | No | — | Breakdown of reactions by type (e.g., "LIKE", "EMPATHY", "PRAISE", "INTEREST") |
| `result.data.posts[].num_shares` | `integer` | No | — | Number of times the post has been shared |
| `result.data.posts[].actor_type` | `"person" \| "company"` | No | — | Indicates whether the post author is a person or company Allowed: `person`, `company`. |
| `result.data.posts[].person_linkedin_urn` | `string` | No | — | LinkedIn identifier for the person who created the post |
| `result.data.posts[].person_name` | `string` | No | — | Name of the person who created the post |
| `result.data.posts[].person_linkedin_flagship_profile_url` | `string` | No | — | URL to the LinkedIn profile of the person Format: `uri`. |
| `result.data.posts[].person_title` | `string` | No | — | Job title of the person |
| `result.data.posts[].person_location` | `string` | No | — | Geographic location of the person |
| `result.data.posts[].current_employers` | `array` | No | — | List of organizations where the person is currently employed |
| `result.data.posts[].current_employers[].employer_name` | `string` | No | — | Name of the employer organization |
| `result.data.posts[].current_employers[].employer_linkedin_id` | `string` | No | — | LinkedIn ID of the employer |
| `result.data.posts[].current_employers[].employer_company_id` | `array` | No | — | Array of company IDs associated with this employer |
| `result.data.posts[].current_employers[].employee_title` | `string` | No | — | Person's job title at this employer |
| `result.data.posts[].current_employers[].employee_description` | `string \| null` | No | — | Description of the person's role at this employer |
| `result.data.posts[].current_employers[].employee_location` | `string \| null` | No | — | Work location for this employment |
| `result.data.posts[].current_employers[].start_date` | `string` | No | — | Start date of employment Format: `date-time`. |
| `result.data.posts[].current_employers[].end_date` | `string \| null` | No | — | End date of employment (null if currently employed) Format: `date-time`. |
| `result.data.posts[].keywords` | `array` | No | — | Extracted keywords or topics from the post content |
| `result.data.posts[].reactors` | `array` | No | — | List of users who reacted to the post |
| `result.data.posts[].reactors[].name` | `string` | No | — | Full name of the person who reacted |
| `result.data.posts[].reactors[].linkedin_profile_url` | `string` | No | — | URL to the reactor's LinkedIn profile |
| `result.data.posts[].reactors[].reaction_type` | `string` | No | — | Type of reaction given (e.g., "LIKE", "EMPATHY") |
| `result.data.posts[].reactors[].profile_image_url` | `string` | No | — | URL to the reactor's profile image (100x100 size) |
| `result.data.posts[].reactors[].title` | `string` | No | — | Current professional title of the reactor |
| `result.data.posts[].reactors[].additional_info` | `string` | No | — | Additional information, often indicating connection degree |
| `result.data.posts[].reactors[].location` | `string` | No | — | Geographic location of the reactor |
| `result.data.posts[].reactors[].linkedin_profile_urn` | `string` | No | — | Unique identifier for the reactor's LinkedIn profile |
| `result.data.posts[].reactors[].default_position_title` | `string` | No | — | Primary job title |
| `result.data.posts[].reactors[].default_position_company_linkedin_id` | `string` | No | — | LinkedIn ID of the reactor's primary company |
| `result.data.posts[].reactors[].default_position_is_decision_maker` | `boolean` | No | — | Indicates if the reactor is in a decision-making role |
| `result.data.posts[].reactors[].flagship_profile_url` | `string` | No | — | Another form of the reactor's LinkedIn profile URL |
| `result.data.posts[].reactors[].profile_picture_url` | `string` | No | — | URL to a larger version of the profile picture (400x400 size) |
| `result.data.posts[].reactors[].headline` | `string` | No | — | Professional headline from the reactor's LinkedIn profile |
| `result.data.posts[].reactors[].summary` | `string \| null` | No | — | Brief professional summary, if available |
| `result.data.posts[].reactors[].num_of_connections` | `integer` | No | — | Number of LinkedIn connections the reactor has |

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_keyword_search --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.