> **For coding agents and LLMs:** This is one page from the Social Fetch docs (markdown export). For curated orientation and workflow guidance, start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for agent onboarding and crawl rules, use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for the full endpoint list with links to pages like this one, use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt); for one platform's parameters and curls, use [`/llms-{platform}.txt`](https://www.socialfetch.dev/llms-tiktok.txt); use [`/llms.json`](https://www.socialfetch.dev/llms.json) when you need structured JSON for tool registration.

## This page

- **On-site (HTML):** [https://www.socialfetch.dev/docs/api/v2/linkedin/profiles/get](https://www.socialfetch.dev/docs/api/v2/linkedin/profiles/get)
- **Markdown (.mdx) URL:** [https://www.socialfetch.dev/docs/api/v2/linkedin/profiles/get.mdx](https://www.socialfetch.dev/docs/api/v2/linkedin/profiles/get.mdx)

## API base URL and authentication

- **API origin (from OpenAPI `servers`):** `https://api.socialfetch.dev`
- **Authentication:** send `x-api-key: sfk_...` on `/v1/**` and `/v2/**` routes unless the operation is explicitly anonymous (check OpenAPI `security`, the [API reference hub](https://www.socialfetch.dev/docs/api.mdx), [`/llms.txt`](https://www.socialfetch.dev/llms.txt), or [`/llms.json`](https://www.socialfetch.dev/llms.json) for each route).
- **OpenAPI JSON:** [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json)

## Recommended docs entrypoints (this site)

- [Documentation overview](https://www.socialfetch.dev/docs.mdx) — top-level orientation (markdown).
- [Quickstart](https://www.socialfetch.dev/docs/quickstart.mdx) — authenticate with `x-api-key`, validate auth with `whoami`, and understand the JSON envelope.
- [SDK](https://www.socialfetch.dev/docs/sdk.mdx) — official TypeScript SDK guide, including `SocialFetchClient`, `Result`, and `unwrap()`.
- [Capability matrix](https://www.socialfetch.dev/docs/capability-matrix.mdx) — every operation with identifiers, pagination, outcomes, media download, credits, and its SDK method. Generated from OpenAPI, so use it for route selection instead of scanning individual pages.
- [Recipes](https://www.socialfetch.dev/docs/recipes.mdx) — copyable workflows (brand monitoring, transcripts, Ad Library, creator scoring, Reddit research) with credit callouts and SDK examples.
- [Integrations](https://www.socialfetch.dev/docs/integrations.mdx) — MCP for AI clients, n8n verified node, Apify Store Actors, Make custom app, SDK, and REST API connection paths.
- [MCP product page](https://www.socialfetch.dev/mcp) — hosted MCP overview, OAuth, Skills install.
- [MCP integration](https://www.socialfetch.dev/docs/integrations/mcp.mdx) — hosted `/mcp` server, OAuth, Cursor/VS Code/Claude install snippets, 232 endpoint tools, plus docs_search/docs_read for implementation help.
- [n8n integration](https://www.socialfetch.dev/docs/integrations/n8n.mdx) — install `n8n-nodes-socialfetch`, credentials, and workflow examples.
- [Apify integration](https://www.socialfetch.dev/docs/integrations/apify.mdx) — Store Actors under @social-fetch, PPE billing, dataset export, and quick start.
- [Make integration](https://www.socialfetch.dev/docs/integrations/make.mdx) — custom app modules for Make scenarios, API key credentials, and module catalog.
- [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt) — every documented operation with a direct link to that route's agent-readable markdown page (prefer this over parsing OpenAPI).
- [`/llms-{platform}.txt`](https://www.socialfetch.dev/llms-tiktok.txt) — per-platform endpoint files generated from OpenAPI (parameters, credits, curls).
- [`/agents.txt`](https://www.socialfetch.dev/agents.txt) — agent crawl/onboarding file with capabilities, auth rules, and allowlist.
- [`/llms.json`](https://www.socialfetch.dev/llms.json) — structured machine-readable operation inventory with parameter names, pagination, outcomes, credits, and SDK mapping.
- [API reference hub](https://www.socialfetch.dev/docs/api.mdx) — human-friendly index of operations with links into generated pages.
- [Errors](https://www.socialfetch.dev/docs/errors.mdx) — shared error envelope and HTTP status guidance.
- [Credits](https://www.socialfetch.dev/docs/credits.mdx) — metering, `402`, and planning batch jobs.
- Outcome semantics such as `found`, `not_found`, and `private` are documented in [Errors](https://www.socialfetch.dev/docs/errors.mdx) and on operation pages when present in the OpenAPI contract.

## Markdown docs convention

- Every docs page has a markdown twin: append **`.mdx`** to the docs pathname (for example `/docs/quickstart` → `/docs/quickstart.mdx`).
- Agents that send `Accept: text/markdown` on `/docs/**` HTML URLs may receive markdown directly (same URL, `Vary: Accept`).
- Published blog posts use the same convention: `/blog/{slug}` → `/blog/{slug}.mdx`, or `Accept: text/markdown` on the HTML URL (`Vary: Accept`).

---
# Get LinkedIn profile (https://www.socialfetch.dev/docs/api/v2/linkedin/profiles/get)

## Summary

Get a LinkedIn profile by handle or entity id.

**Tags:** `LinkedIn`

## HTTP

- **Method:** GET
- **Path:** `/v2/linkedin/profiles`
- **operationId:** `linkedin.live.profile.get.v2`
- **Base URL:** `https://api.socialfetch.dev`

## Capability summary

- **SDK mapping:** `client.linkedin.getProfile({ handle: "marclouvion" })`
- **Accepted identifiers:** `handle` (query)
- **Pagination:** none
- **Business outcome field:** `data.lookupStatus` with values `found`, `not_found`

## Credits

- **Base:** 3 credits per successful lookup.
- **Maximum on success (200):** 3 credits.
- **Normalization failure (502):** 0 credits charged.
- **Authoritative field:** `meta.creditsCharged`.

## Authentication

- **`x-api-key`**: API key (`sfk_...`)

## Parameters

### `handle` (query)

- **Required:** no
- **Constraints:** type `string`; minLength: 1; maxLength: 200; pattern: `^[\p{L}\p{N}_.%-]+$/u`
- **Description:** LinkedIn profile handle. Not an organization slug.

### `entityId` (query)

- **Required:** no
- **Constraints:** type `string`; minLength: 1; maxLength: 500
- **Description:** LinkedIn person entity ID. Opaque; often ACo…. Not a vanity handle.

## Responses (status codes)

- **200**: LinkedIn profile.
- **400**: Request could not be completed.
- **401**: Request could not be completed.
- **402**: Request could not be completed.
- **413**: Response exceeds 4,000,000 bytes. No charge; request fewer URLs.
- **429**: Request could not be completed.
- **500**: Request could not be completed.
- **502**: Request could not be completed.
- **503**: Request could not be completed.

## Response body (200)

LinkedIn profile.

### Field outline

- **data** (required) — type `object`
  - **sourceFamily** (required) — type `string`; enum: live
  - **lookupStatus** (required) — type `string`; enum: found, not_found
  - **profile** (required) — type `object`; nullable
    - **sourceFamily** (required) — type `string`; enum: live, data. Record family (`live` or `data`).
    - **dataId** (required) — type `string`; nullable. Stable Data API person identifier (`prsn_…`) when observed.
    - **liveNumericId** (required) — type `string`; nullable. Live numeric person identifier, serialized as a string when observed.
    - **entityId** (required) — type `string`; nullable. LinkedIn person entity ID when observed.
    - **handle** (required) — type `string`; nullable. Public LinkedIn handle when observed.
    - **profileUrl** (required) — type `string`; nullable. Canonical LinkedIn profile URL when observed.
    - **firstName** (required) — type `string`; nullable. First name when observed.
    - **lastName** (required) — type `string`; nullable. Last name when observed.
    - **fullName** (required) — type `string`; nullable. Full name supplied by discovery when observed.
    - **headline** (required) — type `string`; nullable. Professional headline when observed.
    - **summary** (required) — type `string`; nullable. Profile summary when observed.
    - **profilePictureUrl** (required) — type `string`; nullable. Primary profile picture URL when observed.
    - **profilePictures** (required) — type `array`; nullable. Profile image variants when observed.
      - _items:_
        - **url** (required) — type `string`; nullable. Image URL when observed.
        - **width** (required) — type `number`; nullable. Image width in pixels when observed.
        - **height** (required) — type `number`; nullable. Image height in pixels when observed.
    - **backgroundImages** (required) — type `array`; nullable. Background image variants when observed.
      - _items:_
        - **url** (required) — type `string`; nullable. Image URL when observed.
        - **width** (required) — type `number`; nullable. Image width in pixels when observed.
        - **height** (required) — type `number`; nullable. Image height in pixels when observed.
    - **followerCount** (required) — type `number`; nullable. Follower count when observed.
    - **connectionsCount** (required) — type `number`; nullable. Connection count when observed.
    - **isCreator** (required) — type `boolean`; nullable. Creator flag when observed.
    - **isPremium** (required) — type `boolean`; nullable. Premium flag when observed.
    - **isInfluencer** (required) — type `boolean`; nullable. Influencer flag when observed.
    - **isOpenToWork** (required) — type `boolean`; nullable. Open-to-work flag when observed.
    - **isHiring** (required) — type `boolean`; nullable. Hiring flag when observed.
    - **geo** (required) — type `object`; nullable. Structured location when observed.
      - **city** (required) — type `string`; nullable. City label when observed.
      - **full** (required) — type `string`; nullable. Full location label when observed.
      - **country** (required) — type `string`; nullable. Country label when observed.
      - **countryCode** (required) — type `string`; nullable. Country code when observed.
    - **location** (required) — type `string`; nullable. Discovery location label when observed.
    - **geoCity** (required) — type `string`; nullable. Flat city location when observed.
    - **geoFull** (required) — type `string`; nullable. Flat full location when observed.
    - **geoCountry** (required) — type `string`; nullable. Flat country when observed.
    - **geoCountryCode** (required) — type `string`; nullable. Flat country code when observed.
    - **primaryLanguage** (required) — type `string`; nullable. Primary language when observed.
    - **languages** (required) — type `array`; nullable. Spoken languages when observed.
      - _items:_
        - **name** (required) — type `string`; nullable. Language name when observed.
        - **proficiency** (required) — type `string`; nullable. Source proficiency label when observed.
    - **supportedLocales** (required) — type `array`; nullable. Supported locales when observed.
      - _items:_
        - **language** (required) — type `string`; nullable. Locale language when observed.
        - **country** (required) — type `string`; nullable. Locale country when observed.
    - **multiLocaleFirstName** (required) — type `array`; nullable. Localized first names when observed.
      - _items:_
        - **locale** (required) — type `string`; minLength: 1. Source locale identifier.
        - **value** (required) — type `string`; nullable. Text translated for the locale when observed.
    - **multiLocaleLastName** (required) — type `array`; nullable. Localized last names when observed.
      - _items:_
        - **locale** (required) — type `string`; minLength: 1. Source locale identifier.
        - **value** (required) — type `string`; nullable. Text translated for the locale when observed.
    - **multiLocaleHeadline** (required) — type `array`; nullable. Localized headlines when observed.
      - _items:_
        - **locale** (required) — type `string`; minLength: 1. Source locale identifier.
        - **value** (required) — type `string`; nullable. Text translated for the locale when observed.
    - **industry** (required) — type `object`; nullable. Industry when observed.
      - **entityId** (required) — type `string`; nullable. Industry entity ID when observed.
      - **name** (required) — type `string`; nullable. Industry name when observed.
    - **updatedAt** (required) — type `string`; nullable. Source update timestamp when observed.
    - **currentPositions** (required) — type `array`; nullable. Current-position summaries when observed.
      - _items:_
        - **title** (required) — type `string`; nullable. Role title when observed.
        - **subtitle** (required) — type `string`; nullable. Role subtitle when observed.
        - **description** (required) — type `string`; nullable. Role description when observed.
        - **employmentType** (required) — type `string`; nullable. Employment type label when observed.
        - **location** (required) — type `string`; nullable. Role location when observed.
        - **locationType** (required) — type `string`; nullable. Remote or workplace label when observed.
        - **duration** (required) — type `string`; nullable. Source duration label when observed.
        - **isCurrent** (required) — type `boolean`; nullable. Whether this is a current role when observed.
        - **isMultiPositions** (required) — type `boolean`; nullable. Whether the organization contains multiple roles when observed.
        - **start** (required) — type `object`; nullable. Role start date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
        - **end** (required) — type `object`; nullable. Role end date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
        - **durationParsed** (required) — type `object`; nullable. Parsed duration fields when observed.
          - **start** (required) — type `object`; nullable. Parsed start date when observed.
          - **end** (required) — type `object`; nullable. Parsed end date when observed.
          - **period** (required) — type `string`; nullable. Parsed duration label when observed.
          - **present** (required) — type `boolean`; nullable. Whether the parsed duration is ongoing when observed.
        - **organization** (required) — type `object`; nullable. Nested organization summary when observed.
          - **id** (required) — type `string`; nullable. Organization identifier when observed.
          - **name** (required) — type `string`; nullable. Organization name when observed.
          - **url** (required) — type `string`; nullable. Organization URL when observed.
          - **logoUrl** (required) — type `string`; nullable. Organization logo URL when observed.
        - **organizationId** (required) — type `string`; nullable. Organization identifier when observed.
        - **organizationName** (required) — type `string`; nullable. Organization name when observed.
        - **organizationUrl** (required) — type `string`; nullable. Organization URL when observed.
        - **organizationLogo** (required) — type `string`; nullable. Organization logo URL when observed.
        - **organizationHandle** (required) — type `string`; nullable. Live organization handle when observed.
        - **organizationSlug** (required) — type `string`; nullable. Data organization slug when observed.
        - **organizationIndustry** (required) — type `string`; nullable. Organization industry when observed.
        - **organizationHeadcountRange** (required) — type `string`; nullable. Organization headcount range when observed.
        - **multiLocaleTitle** (required) — type `array`; nullable. Localized role titles when observed.
          - _items:_
        - **multiLocaleOrganizationName** (required) — type `array`; nullable. Localized organization names when observed.
          - _items:_
        - **skills** (required) — type `array`; nullable. Position skills when observed.
          - _items:_
            - type `string`; nullable
    - **positions** (required) — type `array`; nullable. Position summaries when observed.
      - _items:_
        - **title** (required) — type `string`; nullable. Role title when observed.
        - **subtitle** (required) — type `string`; nullable. Role subtitle when observed.
        - **description** (required) — type `string`; nullable. Role description when observed.
        - **employmentType** (required) — type `string`; nullable. Employment type label when observed.
        - **location** (required) — type `string`; nullable. Role location when observed.
        - **locationType** (required) — type `string`; nullable. Remote or workplace label when observed.
        - **duration** (required) — type `string`; nullable. Source duration label when observed.
        - **isCurrent** (required) — type `boolean`; nullable. Whether this is a current role when observed.
        - **isMultiPositions** (required) — type `boolean`; nullable. Whether the organization contains multiple roles when observed.
        - **start** (required) — type `object`; nullable. Role start date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
        - **end** (required) — type `object`; nullable. Role end date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
        - **durationParsed** (required) — type `object`; nullable. Parsed duration fields when observed.
          - **start** (required) — type `object`; nullable. Parsed start date when observed.
          - **end** (required) — type `object`; nullable. Parsed end date when observed.
          - **period** (required) — type `string`; nullable. Parsed duration label when observed.
          - **present** (required) — type `boolean`; nullable. Whether the parsed duration is ongoing when observed.
        - **organization** (required) — type `object`; nullable. Nested organization summary when observed.
          - **id** (required) — type `string`; nullable. Organization identifier when observed.
          - **name** (required) — type `string`; nullable. Organization name when observed.
          - **url** (required) — type `string`; nullable. Organization URL when observed.
          - **logoUrl** (required) — type `string`; nullable. Organization logo URL when observed.
        - **organizationId** (required) — type `string`; nullable. Organization identifier when observed.
        - **organizationName** (required) — type `string`; nullable. Organization name when observed.
        - **organizationUrl** (required) — type `string`; nullable. Organization URL when observed.
        - **organizationLogo** (required) — type `string`; nullable. Organization logo URL when observed.
        - **organizationHandle** (required) — type `string`; nullable. Live organization handle when observed.
        - **organizationSlug** (required) — type `string`; nullable. Data organization slug when observed.
        - **organizationIndustry** (required) — type `string`; nullable. Organization industry when observed.
        - **organizationHeadcountRange** (required) — type `string`; nullable. Organization headcount range when observed.
        - **multiLocaleTitle** (required) — type `array`; nullable. Localized role titles when observed.
          - _items:_
        - **multiLocaleOrganizationName** (required) — type `array`; nullable. Localized organization names when observed.
          - _items:_
        - **skills** (required) — type `array`; nullable. Position skills when observed.
          - _items:_
            - type `string`; nullable
    - **fullPositions** (required) — type `array`; nullable. Full position records when observed.
      - _items:_
        - **title** (required) — type `string`; nullable. Role title when observed.
        - **subtitle** (required) — type `string`; nullable. Role subtitle when observed.
        - **description** (required) — type `string`; nullable. Role description when observed.
        - **employmentType** (required) — type `string`; nullable. Employment type label when observed.
        - **location** (required) — type `string`; nullable. Role location when observed.
        - **locationType** (required) — type `string`; nullable. Remote or workplace label when observed.
        - **duration** (required) — type `string`; nullable. Source duration label when observed.
        - **isCurrent** (required) — type `boolean`; nullable. Whether this is a current role when observed.
        - **isMultiPositions** (required) — type `boolean`; nullable. Whether the organization contains multiple roles when observed.
        - **start** (required) — type `object`; nullable. Role start date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
        - **end** (required) — type `object`; nullable. Role end date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
        - **durationParsed** (required) — type `object`; nullable. Parsed duration fields when observed.
          - **start** (required) — type `object`; nullable. Parsed start date when observed.
          - **end** (required) — type `object`; nullable. Parsed end date when observed.
          - **period** (required) — type `string`; nullable. Parsed duration label when observed.
          - **present** (required) — type `boolean`; nullable. Whether the parsed duration is ongoing when observed.
        - **organization** (required) — type `object`; nullable. Nested organization summary when observed.
          - **id** (required) — type `string`; nullable. Organization identifier when observed.
          - **name** (required) — type `string`; nullable. Organization name when observed.
          - **url** (required) — type `string`; nullable. Organization URL when observed.
          - **logoUrl** (required) — type `string`; nullable. Organization logo URL when observed.
        - **organizationId** (required) — type `string`; nullable. Organization identifier when observed.
        - **organizationName** (required) — type `string`; nullable. Organization name when observed.
        - **organizationUrl** (required) — type `string`; nullable. Organization URL when observed.
        - **organizationLogo** (required) — type `string`; nullable. Organization logo URL when observed.
        - **organizationHandle** (required) — type `string`; nullable. Live organization handle when observed.
        - **organizationSlug** (required) — type `string`; nullable. Data organization slug when observed.
        - **organizationIndustry** (required) — type `string`; nullable. Organization industry when observed.
        - **organizationHeadcountRange** (required) — type `string`; nullable. Organization headcount range when observed.
        - **multiLocaleTitle** (required) — type `array`; nullable. Localized role titles when observed.
          - _items:_
        - **multiLocaleOrganizationName** (required) — type `array`; nullable. Localized organization names when observed.
          - _items:_
        - **skills** (required) — type `array`; nullable. Position skills when observed.
          - _items:_
            - type `string`; nullable
    - **allPositions** (required) — type `array`; nullable. All-position records when observed.
      - _items:_
        - **title** (required) — type `string`; nullable. Role title when observed.
        - **subtitle** (required) — type `string`; nullable. Role subtitle when observed.
        - **description** (required) — type `string`; nullable. Role description when observed.
        - **employmentType** (required) — type `string`; nullable. Employment type label when observed.
        - **location** (required) — type `string`; nullable. Role location when observed.
        - **locationType** (required) — type `string`; nullable. Remote or workplace label when observed.
        - **duration** (required) — type `string`; nullable. Source duration label when observed.
        - **isCurrent** (required) — type `boolean`; nullable. Whether this is a current role when observed.
        - **isMultiPositions** (required) — type `boolean`; nullable. Whether the organization contains multiple roles when observed.
        - **start** (required) — type `object`; nullable. Role start date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
        - **end** (required) — type `object`; nullable. Role end date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
        - **durationParsed** (required) — type `object`; nullable. Parsed duration fields when observed.
          - **start** (required) — type `object`; nullable. Parsed start date when observed.
          - **end** (required) — type `object`; nullable. Parsed end date when observed.
          - **period** (required) — type `string`; nullable. Parsed duration label when observed.
          - **present** (required) — type `boolean`; nullable. Whether the parsed duration is ongoing when observed.
        - **organization** (required) — type `object`; nullable. Nested organization summary when observed.
          - **id** (required) — type `string`; nullable. Organization identifier when observed.
          - **name** (required) — type `string`; nullable. Organization name when observed.
          - **url** (required) — type `string`; nullable. Organization URL when observed.
          - **logoUrl** (required) — type `string`; nullable. Organization logo URL when observed.
        - **organizationId** (required) — type `string`; nullable. Organization identifier when observed.
        - **organizationName** (required) — type `string`; nullable. Organization name when observed.
        - **organizationUrl** (required) — type `string`; nullable. Organization URL when observed.
        - **organizationLogo** (required) — type `string`; nullable. Organization logo URL when observed.
        - **organizationHandle** (required) — type `string`; nullable. Live organization handle when observed.
        - **organizationSlug** (required) — type `string`; nullable. Data organization slug when observed.
        - **organizationIndustry** (required) — type `string`; nullable. Organization industry when observed.
        - **organizationHeadcountRange** (required) — type `string`; nullable. Organization headcount range when observed.
        - **multiLocaleTitle** (required) — type `array`; nullable. Localized role titles when observed.
          - _items:_
        - **multiLocaleOrganizationName** (required) — type `array`; nullable. Localized organization names when observed.
          - _items:_
        - **skills** (required) — type `array`; nullable. Position skills when observed.
          - _items:_
            - type `string`; nullable
    - **education** (required) — type `array`; nullable. Education records when observed.
      - _items:_
        - **schoolName** (required) — type `string`; nullable. School name when observed.
        - **schoolUrl** (required) — type `string`; nullable. School URL when observed.
        - **schoolLogo** (required) — type `string`; nullable. School logo URL when observed.
        - **schoolId** (required) — type `string`; nullable. School identifier when observed.
        - **degreeName** (required) — type `string`; nullable. Degree name when observed.
        - **fieldOfStudy** (required) — type `string`; nullable. Field of study when observed.
        - **grade** (required) — type `string`; nullable. Grade when observed.
        - **activities** (required) — type `string`; nullable. Activities text when observed.
        - **description** (required) — type `string`; nullable. Education description when observed.
        - **start** (required) — type `object`; nullable. Education start date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
        - **end** (required) — type `object`; nullable. Education end date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
        - **multiLocaleSchoolName** (required) — type `array`; nullable. Localized school names when observed.
          - _items:_
        - **multiLocaleDegreeName** (required) — type `array`; nullable. Localized degree names when observed.
          - _items:_
        - **multiLocaleFieldOfStudy** (required) — type `array`; nullable. Localized fields of study when observed.
          - _items:_
    - **skills** (required) — type `array`; nullable. Profile skills when observed.
      - _items:_
        - **name** (required) — type `string`; nullable. Skill display name when observed.
        - **normalizedName** (required) — type `string`; nullable. Normalized Data skill name when observed.
        - **source** (required) — type `string`; nullable. Skill source when observed.
        - **isVerified** (required) — type `boolean`; nullable. Live skill verification state when observed.
        - **passedAssessment** (required) — type `boolean`; nullable. Data assessment result when observed.
    - **certifications** (required) — type `array`; nullable. Certifications when observed.
      - _items:_
        - **title** (required) — type `string`; nullable. Certification title when observed.
        - **name** (required) — type `string`; nullable. Certification name when observed.
        - **authority** (required) — type `string`; nullable. Issuing authority when observed.
        - **licenseNumber** (required) — type `string`; nullable. License number when observed.
        - **url** (required) — type `string`; nullable. Certification URL when observed.
        - **start** (required) — type `object`; nullable. Issue date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
        - **end** (required) — type `object`; nullable. Expiry date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
    - **publications** (required) — type `array`; nullable. Publications when observed.
      - _items:_
        - **title** (required) — type `string`; nullable. Publication title when observed.
        - **description** (required) — type `string`; nullable. Publication description when observed.
        - **publisher** (required) — type `string`; nullable. Publisher when observed.
        - **url** (required) — type `string`; nullable. Publication URL when observed.
        - **publishedOn** (required) — type `object`; nullable. Publication date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
        - **authors** (required) — type `array`; nullable. Publication authors when observed.
          - _items:_
            - type `string`; nullable
    - **volunteering** (required) — type `array`; nullable. Volunteer records when observed.
      - _items:_
        - **title** (required) — type `string`; nullable. Volunteer role title when observed.
        - **role** (required) — type `string`; nullable. Volunteer role when observed.
        - **organizationName** (required) — type `string`; nullable. Volunteer organization name when observed.
        - **cause** (required) — type `string`; nullable. Volunteer cause when observed.
        - **description** (required) — type `string`; nullable. Volunteer description when observed.
        - **start** (required) — type `object`; nullable. Volunteer start date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
        - **end** (required) — type `object`; nullable. Volunteer end date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
    - **projects** (required) — type `array`; nullable. Project records when observed.
      - _items:_
        - **title** (required) — type `string`; nullable. Project title when observed.
        - **description** (required) — type `string`; nullable. Project description when observed.
        - **url** (required) — type `string`; nullable. Project URL when observed.
        - **start** (required) — type `object`; nullable. Project start date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
        - **end** (required) — type `object`; nullable. Project end date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
    - **patents** (required) — type `array`; nullable. Patent records when observed.
      - _items:_
        - **title** (required) — type `string`; nullable. Patent title when observed.
        - **description** (required) — type `string`; nullable. Patent description when observed.
        - **issuer** (required) — type `string`; nullable. Patent issuer when observed.
        - **issuerLocale** (required) — type `array`; nullable. Localized issuer names when observed.
          - _items:_
        - **multiLocaleTitle** (required) — type `array`; nullable. Localized patent titles when observed.
          - _items:_
        - **patentNumber** (required) — type `string`; nullable. Patent number when observed.
        - **applicationNumber** (required) — type `string`; nullable. Patent application number when observed.
        - **url** (required) — type `string`; nullable. Patent URL when observed.
        - **pending** (required) — type `boolean`; nullable. Whether the patent is pending when observed.
        - **filedOn** (required) — type `object`; nullable. Filed date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
        - **issuedOn** (required) — type `object`; nullable. Issued date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
        - **inventors** (required) — type `array`; nullable. Patent inventors when observed.
          - _items:_
    - **courses** (required) — type `array`; nullable. Courses when observed.
      - _items:_
        - **title** (required) — type `string`; nullable. Course title when observed.
        - **number** (required) — type `string`; nullable. Course number when observed.
    - **honorsAndAwards** (required) — type `array`; nullable. Honors and awards when observed.
      - _items:_
        - **title** (required) — type `string`; nullable. Honor title when observed.
        - **issuer** (required) — type `string`; nullable. Honor issuer when observed.
        - **date** (required) — type `object`; nullable. Honor date when observed.
          - **day** (required) — type `number`; nullable. Day of month when observed.
          - **month** (required) — type `number`; nullable. Month number when observed.
          - **year** (required) — type `number`; nullable. Four digit year when observed.
        - **description** (required) — type `string`; nullable. Honor description when observed.
    - **organizations** (required) — type `array`; nullable. Professional organizations when observed.
      - _items:_
        - **name** (required) — type `string`; nullable. Organization name when observed.
        - **position** (required) — type `string`; nullable. Organization role when observed.
        - **description** (required) — type `string`; nullable. Organization description when observed.
  - **page** (required) — type `object`; nullable
    - **kind** (required) — type `string`; enum: cursor, offset, page
    - **nextCursor** (required) — type `string`; nullable
    - **hasMore** (required) — type `boolean`; nullable. Null when continuation is unknown for this page.
    - **start** (required) — type `integer`; minimum: 0; nullable
    - **page** (required) — type `integer`; minimum: 0; nullable
    - **count** (required) — type `integer`; minimum: 0; nullable
    - **returnedCount** (required) — type `integer`; minimum: 0
    - **total** (required) — type `integer`; minimum: 0; nullable
    - **totalPages** (required) — type `integer`; minimum: 0; nullable
  - **reportedTotal** (required) — type `number`; minimum: 0; nullable. Total reported for this page of results; not a guarantee of globally retrievable matches.
- **meta** (required) — type `object`. Metadata about the API response.
  - **requestId** (required) — type `string`; minLength: 1. Unique request identifier for tracing this API call.
  - **creditsCharged** (required) — type `integer`; minimum: 0. Credits charged for this request.
  - **version** (required) — type `string`; enum: v2. Public API version that served the response.

### Example JSON (found)

```json
{
  "data": {
    "sourceFamily": "live",
    "lookupStatus": "found",
    "profile": {
      "sourceFamily": "live",
      "dataId": null,
      "liveNumericId": "678940",
      "entityId": "ACoAAAAKXBwBikfbNJww68eYvcu2dqDYJhHbp4g",
      "handle": "ryanroslansky",
      "profileUrl": null,
      "firstName": "Ryan",
      "lastName": "Roslansky",
      "fullName": null,
      "headline": "Executive Vice President at Microsoft ",
      "summary": "Ryan Roslansky oversees the group responsible for LinkedIn, Microsoft Office, Teams and Outlook as a member of Satya Nadella’s senior leadership team at Microsoft. Through these products, Ryan aims to help LinkedIn, Microsoft, and the global labor market as AI transforms how people work and grow in their careers.Ryan …",
      "profilePictureUrl": "https://media.licdn.com/dms/image/v2/C4D03AQELbnIckyItlw/profile-displayphoto-shrink_800_800/profile-displayphoto-shrink_800_800/0/1667929254389?e=1791417600&v=beta&t=PUIIdV623r2YorDrR0LqDwUgUarKSD33tZvSoMpWMEM",
      "profilePictures": [
        {
          "url": "https://media.licdn.com/dms/image/v2/C4D03AQELbnIckyItlw/profile-displayphoto-shrink_100_100/profile-displayphoto-shrink_100_100/0/1667929254389?e=1791417600&v=beta&t=emunmap7f3e7DluX7UTQ6Ofi94lmYdlNOQilvmLhTAs",
          "width": 100,
          "height": 100
        }
      ],
      "backgroundImages": [
        {
          "url": "https://media.licdn.com/dms/image/v2/C4D16AQHXtyQ-bg4B2Q/profile-displaybackgroundimage-shrink_200_800/profile-displaybackgroundimage-shrink_200_800/0/1580864697675?e=1791417600&v=beta&t=dSwA3KkKq3UVfajp1M3C0LSrcnjxO1e_D2seaB0hfbc",
          "width": 800,
          "height": 200
        }
      ],
      "followerCount": 0,
      "connectionsCount": 9137,
      "isCreator": true,
      "isPremium": true,
      "isInfluencer": true,
      "isOpenToWork": false,
      "isHiring": false,
      "geo": {
        "city": "San Francisco Bay Area",
        "full": "San Francisco Bay Area",
        "country": "United States",
        "countryCode": "us"
      },
      "location": null,
      "geoCity": null,
      "geoFull": null,
      "geoCountry": null,
      "geoCountryCode": null,
      "primaryLanguage": null,
      "languages": [
        {
          "name": "English",
          "proficiency": "NATIVE_OR_BILINGUAL"
        }
      ],
      "supportedLocales": [
        {
          "language": "en",
          "country": "US"
        }
      ],
      "multiLocaleFirstName": [
        {
          "locale": "en_US",
          "value": "Ryan"
        }
      ],
      "multiLocaleLastName": [
        {
          "locale": "en_US",
          "value": "Roslansky"
        }
      ],
      "multiLocaleHeadline": [
        {
          "locale": "en_US",
          "value": "Executive Vice President at Microsoft "
        }
      ],
      "industry": {
        "entityId": "4",
        "name": "Computer Software"
      },
      "updatedAt": null,
      "currentPositions": [
        {
          "title": null,
          "subtitle": null,
          "description": null,
          "employmentType": null,
          "location": null,
          "locationType": null,
          "duration": null,
          "isCurrent": null,
          "isMultiPositions": null,
          "start": null,
          "end": null,
          "durationParsed": null,
          "organization": {
            "id": "1035",
            "name": "Microsoft",
            "url": "https://www.linkedin.com/company/microsoft/",
            "logoUrl": "https://media.licdn.com/dms/image/v2/D560BAQH32RJQCl3dDQ/company-logo_400_400/B56ZYQ0mrGGoAc-/0/1744038948046/microsoft_logo?e=1791417600&v=beta&t=rS6M3r55PzewvVGJJABsaLy0gtYIdv7OfeZ1-08ZQ3k"
          },
          "organizationId": null,
          "organizationName": "Microsoft",
          "organizationUrl": null,
          "organizationLogo": null,
          "organizationHandle": null,
          "organizationSlug": null,
          "organizationIndustry": null,
          "organizationHeadcountRange": null,
          "multiLocaleTitle": null,
          "multiLocaleOrganizationName": null,
          "skills": null
        }
      ],
      "positions": [
        {
          "title": "Executive Vice President",
          "subtitle": null,
          "description": "I oversee the group responsible for LinkedIn, Microsoft Office, Outlook and Teams in service of the mission to connect the world's professionals to make them more productive and successful.",
          "employmentType": "Full-time",
          "location": "",
          "locationType": "",
          "duration": null,
          "isCurrent": null,
          "isMultiPositions": null,
          "start": {
            "day": null,
            "month": 4,
            "year": 2025
          },
          "end": null,
          "durationParsed": null,
          "organization": null,
          "organizationId": "1035",
          "organizationName": "Microsoft",
          "organizationUrl": "https://www.linkedin.com/company/microsoft/",
          "organizationLogo": "https://media.licdn.com/dms/image/v2/D560BAQH32RJQCl3dDQ/company-logo_400_400/B56ZYQ0mrGGoAc-/0/1744038948046/microsoft_logo?e=1791417600&v=beta&t=rS6M3r55PzewvVGJJABsaLy0gtYIdv7OfeZ1-08ZQ3k",
          "organizationHandle": "microsoft",
          "organizationSlug": null,
          "organizationIndustry": "Computer Software",
          "organizationHeadcountRange": "10001 - 0",
          "multiLocaleTitle": [
            {
              "locale": "en_US",
              "value": "Executive Vice President"
            }
          ],
          "multiLocaleOrganizationName": [
            {
              "locale": "en_US",
              "value": "Microsoft"
            }
          ],
          "skills": null
        }
      ],
      "fullPositions": [
        {
          "title": "Executive Vice President",
          "subtitle": null,
          "description": "I oversee the group responsible for LinkedIn, Microsoft Office, Outlook and Teams in service of the mission to connect the world's professionals to make them more productive and successful.",
          "employmentType": "Full-time",
          "location": "",
          "locationType": "",
          "duration": null,
          "isCurrent": null,
          "isMultiPositions": null,
          "start": {
            "day": null,
            "month": 4,
            "year": 2025
          },
          "end": null,
          "durationParsed": null,
          "organization": null,
          "organizationId": "1035",
          "organizationName": "Microsoft",
          "organizationUrl": "https://www.linkedin.com/company/microsoft/",
          "organizationLogo": "https://media.licdn.com/dms/image/v2/D560BAQH32RJQCl3dDQ/company-logo_400_400/B56ZYQ0mrGGoAc-/0/1744038948046/microsoft_logo?e=1791417600&v=beta&t=rS6M3r55PzewvVGJJABsaLy0gtYIdv7OfeZ1-08ZQ3k",
          "organizationHandle": "microsoft",
          "organizationSlug": null,
          "organizationIndustry": "Computer Software",
          "organizationHeadcountRange": "10001 - 0",
          "multiLocaleTitle": [
            {
              "locale": "en_US",
              "value": "Executive Vice President"
            }
          ],
          "multiLocaleOrganizationName": [
            {
              "locale": "en_US",
              "value": "Microsoft"
            }
          ],
          "skills": null
        }
      ],
      "allPositions": null,
      "education": [],
      "skills": [
        {
          "name": "LinkedIn",
          "normalizedName": null,
          "source": null,
          "isVerified": false,
          "passedAssessment": null
        }
      ],
      "certifications": [],
      "publications": [],
      "volunteering": [],
      "projects": [],
      "patents": [
        {
          "title": "Techniques for Ascribing Social Attributes to Content",
          "description": null,
          "issuer": "US",
          "issuerLocale": [
            {
              "locale": "en_US",
              "value": "US"
            }
          ],
          "multiLocaleTitle": [
            {
              "locale": "en_US",
              "value": "Techniques for Ascribing Social Attributes to Content"
            }
          ],
          "patentNumber": "9229900",
          "applicationNumber": "9229900",
          "url": null,
          "pending": false,
          "filedOn": null,
          "issuedOn": {
            "day": 5,
            "month": 1,
            "year": 2016
          },
          "inventors": [
            {
              "entityId": "ACoAAAAKXBwBikfbNJww68eYvcu2dqDYJhHbp4g",
              "firstName": "Ryan",
              "lastName": "Roslansky",
              "handle": "ryanroslansky",
              "headline": "Executive Vice President at Microsoft ",
              "profilePictureUrl": "https://media.licdn.com/dms/image/v2/C4D03AQELbnIckyItlw/profile-displayphoto-shrink_800_800/profile-displayphoto-shrink_800_800/0/1667929254389?e=1791417600&v=beta&t=PUIIdV623r2YorDrR0LqDwUgUarKSD33tZvSoMpWMEM"
            }
          ]
        }
      ],
      "courses": [],
      "honorsAndAwards": [],
      "organizations": []
    },
    "page": null,
    "reportedTotal": null
  },
  "meta": {
    "requestId": "fixture",
    "creditsCharged": 3,
    "version": "v2"
  }
}
```

## Error handling & retries

Interpret HTTP status codes using the descriptions below. Do not assume a JSON body unless the OpenAPI schema defines one for that status.

- **400**: Request could not be completed. **Retry:** Fix the request; retrying the same invalid payload will not help.
- **401**: Request could not be completed. **Retry:** Fix the API key first; retrying without changes will not help.
- **402**: Request could not be completed. **Retry:** Do not retry without resolving billing/credits (retrying the same request will not help).
- **413**: Response exceeds 4,000,000 bytes. No charge; request fewer URLs.
- **429**: Request could not be completed.
- **500**: Request could not be completed.
- **502**: Request could not be completed. **Retry:** May be transient; a few retries with backoff are reasonable.
- **503**: Request could not be completed. **Retry:** Usually safe to retry with exponential backoff and jitter.

### Suggested client defaults

- Send the API key using the `x-api-key` header on every request.
- On `503` (and sometimes `502`), retry with backoff; cap retries and surface a clear error to the user.
- On `402`, surface an actionable billing message rather than blind retries.

## Examples

### TypeScript SDK

```typescript
import { SocialFetchClient } from "@socialfetch/sdk";

const client = new SocialFetchClient({
  apiKey: process.env.SOCIALFETCH_API_KEY!,
});

const result = await client.linkedin.getProfile({
  handle: "marclouvion",
});

if (!result.ok) {
  console.error(result.error);
} else {
  console.log(result.value.data);
}
```

### Node.js

```javascript
const response = await fetch(
  "https://api.socialfetch.dev/v2/linkedin/profiles?handle=marclouvion",
  {
    headers: {
      "x-api-key": "YOUR_API_KEY"
    }
  }
);

const data = await response.json();
console.log(data);
```

### cURL

```bash
curl "https://api.socialfetch.dev/v2/linkedin/profiles?handle=marclouvion" \
  -H "x-api-key: YOUR_API_KEY"
```

### Python

```python
import requests

response = requests.get(
    "https://api.socialfetch.dev/v2/linkedin/profiles?handle=marclouvion",
    headers={"x-api-key": "YOUR_API_KEY"},
)
data = response.json()
print(data)
```