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

# HarvestAPI: Get Profile

> Enrich one LinkedIn profile, optionally including email discovery. Includes SDK V2 guidance, input constraints, response fields, and Deepline credit cost.

Enrich one LinkedIn profile, optionally including email discovery.

<Info>
  Tool ID: `harvestapi_get_profile`
</Info>

## Run this action

Use the TypeScript SDK for a single call. Put `ctx.tools.execute(...)` inside a Play when the call should be durable, scheduled, or run across a CSV.

```ts theme={null}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'harvestapi_get_profile',
  {
    "url": "https://example.com/resource",
    "publicIdentifier": "example_123",
    "profileId": "profile_123"
  },
);

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

### CLI

```bash theme={null}
deepline tools execute harvestapi_get_profile --input '{
  "url": "https://example.com/resource",
  "publicIdentifier": "example_123",
  "profileId": "profile_123"
}' --json
```

## Example response

The SDK exposes this shape at `result.toolResponse.raw`. Values below are representative.

```json theme={null}
{
  "data": {
    "element": {
      "id": "id_123",
      "publicIdentifier": "example_123",
      "linkedinUrl": "https://example.com/resource"
    },
    "status": 1,
    "error": "example"
  }
}
```

Use `deepline tools get harvestapi_get_profile --json` for the latest machine-readable contract.

## Input reference

Get the LinkedIn profile of the user. Required at least one of the query parameters

| Name                          | Type     | Required | Default | Details                                                                                                                                                                                                                                                                                                                              |
| ----------------------------- | -------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `payload.url`                 | `string` | No       | —       | URL of the LinkedIn profile (optional) Format: `uri`. Minimum length: 1.                                                                                                                                                                                                                                                             |
| `payload.publicIdentifier`    | `string` | No       | —       | Public identifier of the LinkedIn profile (optional) Minimum length: 1.                                                                                                                                                                                                                                                              |
| `payload.profileId`           | `string` | No       | —       | ID of the LinkedIn profile (optional) Minimum length: 1.                                                                                                                                                                                                                                                                             |
| `payload.main`                | `string` | No       | —       | Set this parameter to 'true' to return only main version of the profile that you can see on LinkedIn without expanding profile sections - up to 5 experiences, 2 educations, 2 skills, etc. This version charges less credits                                                                                                        |
| `payload.findEmail`           | `string` | No       | —       | Include this parameter to find the email of the profile. It will perform SMTP verifications to ensure deliverability. It will also output emails for catch-all domains and mark them as `risky` (deliverability is unknown). This version charges more credits.                                                                      |
| `payload.skipSmtp`            | `string` | No       | —       | Include this parameter together with `findEmail` to skip SMTP email verification when finding emails. It will output all possible generated emails without checking deliverability via SMTP. It will do only minimal validations, as checking domains for MX records. This version charges less credits when using with `findEmail`. |
| `payload.includeAboutProfile` | `string` | No       | —       | Include this parameter to scrape the "About this profile" popup from LinkedIn profiles.                                                                                                                                                                                                                                              |

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

  ### Input JSON Schema

  ```json theme={null}
  {
    "type": "object",
    "description": "Get the LinkedIn profile of the user. Required at least one of the query parameters",
    "properties": {
      "url": {
        "type": "string",
        "description": "URL of the LinkedIn profile (optional)",
        "minLength": 1,
        "format": "uri"
      },
      "publicIdentifier": {
        "type": "string",
        "description": "Public identifier of the LinkedIn profile (optional)",
        "minLength": 1
      },
      "profileId": {
        "type": "string",
        "description": "ID of the LinkedIn profile (optional)",
        "minLength": 1
      },
      "main": {
        "type": "string",
        "description": "Set this parameter to 'true' to return only main version of the profile that you can see on LinkedIn without expanding profile sections - up to 5 experiences, 2 educations, 2 skills, etc. This version charges less credits"
      },
      "findEmail": {
        "type": "string",
        "description": "Include this parameter to find the email of the profile. It will perform SMTP verifications to ensure deliverability. It will also output emails for catch-all domains and mark them as `risky` (deliverability is unknown). This version charges more credits."
      },
      "skipSmtp": {
        "type": "string",
        "description": "Include this parameter together with `findEmail` to skip SMTP email verification when finding emails. It will output all possible generated emails without checking deliverability via SMTP. It will do only minimal validations, as checking domains for MX records. This version charges less credits when using with `findEmail`."
      },
      "includeAboutProfile": {
        "type": "string",
        "description": "Include this parameter to scrape the \"About this profile\" popup from LinkedIn profiles."
      }
    },
    "required": [],
    "allOf": [
      {
        "anyOf": [
          {
            "required": [
              "url"
            ]
          },
          {
            "required": [
              "publicIdentifier"
            ]
          },
          {
            "required": [
              "profileId"
            ]
          }
        ]
      }
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name                                                       | Type             | Required | Default | Details                    |
| ---------------------------------------------------------- | ---------------- | -------- | ------- | -------------------------- |
| `result.data`                                              | `object`         | Yes      | —       | Provider response payload. |
| `result.data.element`                                      | `object`         | No       | —       | —                          |
| `result.data.element.id`                                   | `string`         | No       | —       | —                          |
| `result.data.element.publicIdentifier`                     | `string`         | No       | —       | —                          |
| `result.data.element.linkedinUrl`                          | `string`         | No       | —       | Format: `uri`.             |
| `result.data.element.firstName`                            | `string`         | No       | —       | —                          |
| `result.data.element.lastName`                             | `string`         | No       | —       | —                          |
| `result.data.element.emails`                               | `array`          | No       | —       | —                          |
| `result.data.element.emails[].email`                       | `string`         | No       | —       | Format: `email`.           |
| `result.data.element.emails[].deliverable`                 | `boolean`        | No       | —       | —                          |
| `result.data.element.emails[].catchAllDomain`              | `boolean`        | No       | —       | —                          |
| `result.data.element.emails[].validEmailServer`            | `boolean`        | No       | —       | —                          |
| `result.data.element.emails[].free`                        | `boolean`        | No       | —       | —                          |
| `result.data.element.emails[].status`                      | `string`         | No       | —       | —                          |
| `result.data.element.emails[].qualityScore`                | `integer`        | No       | —       | —                          |
| `result.data.element.websites`                             | `array`          | No       | —       | —                          |
| `result.data.element.companyWebsites`                      | `array`          | No       | —       | —                          |
| `result.data.element.headline`                             | `string`         | No       | —       | —                          |
| `result.data.element.openToWork`                           | `boolean`        | No       | —       | —                          |
| `result.data.element.hiring`                               | `boolean`        | No       | —       | —                          |
| `result.data.element.premium`                              | `boolean`        | No       | —       | —                          |
| `result.data.element.influencer`                           | `boolean`        | No       | —       | —                          |
| `result.data.element.memorialized`                         | `boolean`        | No       | —       | —                          |
| `result.data.element.creator`                              | `boolean`        | No       | —       | —                          |
| `result.data.element.location`                             | `object`         | No       | —       | —                          |
| `result.data.element.location.linkedinText`                | `string`         | No       | —       | —                          |
| `result.data.element.location.countryCode`                 | `string`         | No       | —       | —                          |
| `result.data.element.location.parsed`                      | `object`         | No       | —       | —                          |
| `result.data.element.location.parsed.text`                 | `string`         | No       | —       | —                          |
| `result.data.element.location.parsed.countryCode`          | `string`         | No       | —       | —                          |
| `result.data.element.location.parsed.regionCode`           | `string \| null` | No       | —       | —                          |
| `result.data.element.location.parsed.country`              | `string`         | No       | —       | —                          |
| `result.data.element.location.parsed.countryFull`          | `string`         | No       | —       | —                          |
| `result.data.element.location.parsed.state`                | `string`         | No       | —       | —                          |
| `result.data.element.location.parsed.city`                 | `string`         | No       | —       | —                          |
| `result.data.element.objectUrn`                            | `string`         | No       | —       | —                          |
| `result.data.element.registeredAt`                         | `string`         | No       | —       | Format: `date-time`.       |
| `result.data.element.topSkills`                            | `array`          | No       | —       | —                          |
| `result.data.element.connectionsCount`                     | `integer`        | No       | —       | —                          |
| `result.data.element.followerCount`                        | `integer`        | No       | —       | —                          |
| `result.data.element.verified`                             | `boolean`        | No       | —       | —                          |
| `result.data.element.about`                                | `string`         | No       | —       | —                          |
| `result.data.element.currentPosition`                      | `array`          | No       | —       | —                          |
| `result.data.element.currentPosition[].position`           | `string`         | No       | —       | —                          |
| `result.data.element.currentPosition[].location`           | `string \| null` | No       | —       | —                          |
| `result.data.element.currentPosition[].employmentType`     | `string \| null` | No       | —       | —                          |
| `result.data.element.currentPosition[].workplaceType`      | `string \| null` | No       | —       | —                          |
| `result.data.element.currentPosition[].companyName`        | `string`         | No       | —       | —                          |
| `result.data.element.currentPosition[].companyLinkedinUrl` | `string`         | No       | —       | Format: `uri`.             |
| `result.data.element.currentPosition[].companyId`          | `string`         | No       | —       | —                          |

The table shows the first 50 fields. Use the live contract below for every field.

<Info>
  This output schema is too large to embed without slowing the page. Get the complete live contract with `deepline tools get harvestapi_get_profile --json`.
</Info>

## Deepline cost

* Pricing model: `provider_usage` (provider usage).
* Estimated Deepline credits: `0` per pricing unit.

## Related documentation

* [HarvestAPI provider guide](/docs/providers/harvestapi/guide)
* [SDK V2 quickstart](/docs/sdk-v2/quickstart)
* [SDK reference](/docs/sdk-v2/sdk-reference)
* [Run tools across a CSV](/docs/sdk-v2/batch-csv)
