---
title: "Get a LinkedIn person profile"
method: GET
path: "/v1/linkedin/profiles"
---

# Get a LinkedIn person profile

`GET /v1/linkedin/profiles`

## Request

- Base URL: `https://api.veezee.io`
- URL: `https://api.veezee.io/v1/linkedin/profiles`
- Auth: HTTP bearer

Fetch one person's LinkedIn profile. identifier accepts a profile URL, the slug after /in/ (e.g. 'williamhgates'), or a urn:li:fsd_profile URN; URLs are cleaned automatically. Always returns the overview (name, headline, location, current position, follower counts) plus up to 2 requested sections from about|experience|education|skills at no extra cost; each section beyond 2 adds 2 credits (max 4 sections). Costs 4 credits base. If you only have a name, use linkedin_search_people first; this tool does not search. Results from linkedin_search_people with is_anonymous=true cannot be fetched here; treat them as 'someone matching this exists' and stop. Companies belong to linkedin_get_company.

## Query parameters

- `identifier` string, required: Profile URL, slug (after /in/), or urn:li:fsd_profile URN.
- `sections` string[]: Extra profile sections. First 2 are included in the base price.
- `freshness` 'recent' | 'realtime': recent (default) serves cached data from the last few hours when available; realtime forces a live fetch for +2 credits (refunded if we fall back to cached data). Trial keys are cached-only and reject realtime with TRIAL_CAP_EXCEEDED; paying upgrades this same key to unlock it.
- `max_credits` integer: Spend ceiling for this one call. The call is rejected (nothing charged) if its quote exceeds this. Only the quote is ever reserved, never this ceiling.

## Headers

- `Idempotency-Key` string

## Response `200`

person envelope (schema_version 2)

- PersonEnvelope
  - `entity` 'person', required
  - `platform` 'linkedin' | 'reddit' | 'x', nullable, required
  - `canonical_url` string, nullable, required
  - `data_as_of` string, nullable, required
  - `schema_version` '2', required
  - `common` object, required
    - `full_name` string, required
    - `first_name` string, nullable, required
    - `last_name` string, nullable, required
    - `headline` string, nullable, required
    - `location` object, nullable, required
      - `name` string, nullable, required: Human-readable place, e.g. 'Seattle, Washington'.
      - `country_code` string, nullable, required: ISO 3166-1 alpha-2 when known.
    - `about` string, nullable, required: Only present when the 'about' section was requested.
    - `current_position` object, nullable, required
      - `company_name` string, nullable, required
      - `company_handle` string, nullable, required: LinkedIn company slug.
      - `company_url` string, nullable, required
      - `company_urn` string, nullable, required
      - `start_year` integer, nullable, required
    - `experience` object[], nullable, required: Only present when the 'experience' section was requested.
      - `company` object, required
        - `name` string, nullable, required
        - `handle` string, nullable, required
        - `url` string, nullable, required
      - `positions` object[], required
        - `role` string, nullable, required
        - `location` string, nullable, required
        - `is_current` boolean, nullable, required
        - `start_date` object, nullable, required: Partial date as LinkedIn exposes it; month may be unknown.
          - `month` integer, nullable, required
          - `year` integer, nullable, required
        - `end_date` object, nullable, required: Partial date as LinkedIn exposes it; month may be unknown.
          - `month` integer, nullable, required
          - `year` integer, nullable, required
    - `education` object[], nullable, required: Only present when the 'education' section was requested.
      - `institution` string, nullable, required
      - `institution_url` string, nullable, required
      - `degree` string, nullable, required
      - `start_year` integer, nullable, required
      - `end_year` integer, nullable, required
    - `skills` object[], nullable, required: Only present when the 'skills' section was requested.
      - `name` string, required
      - `endorsement_count` integer, nullable, required
    - `followers` integer, nullable, required
    - `connections` integer, nullable, required
    - `is_verified` boolean, nullable, required
    - `image_url` string, nullable, required
    - `url` string, required: Canonical LinkedIn profile URL.
  - `platform_fields` object, required
    - `urn` string, required: Stable LinkedIn URN (urn:li:fsd_profile:...). Use this for repeat lookups.
    - `public_identifier` string, nullable, required: Profile slug after /in/.
    - `is_influencer` boolean, nullable, required
    - `is_creator` boolean, nullable, required
    - `is_hiring` boolean, nullable, required
    - `has_premium` boolean, nullable, required
    - `open_to_messages` boolean, nullable, required
    - `pronoun` string, nullable, required
  - `freshness` object, nullable, required
    - `source_retrieved_at` string, nullable, required: When the data was fetched from the source. ISO 8601.
    - `served_at` string, required
    - `cache_age_seconds` integer, nullable, required
    - `served_from_cache` boolean, required: True when these bytes were served from cache rather than fetched for this call. source_retrieved_at says how old they are.
    - `freshness_requested` 'recent' | 'realtime', required
    - `freshness_served` 'recent' | 'realtime' | 'stale', required
  - `usage` object, required
    - `receipt_id` string, nullable, required
    - `credits_quoted` integer, required
    - `credits_charged` integer, required
    - `balance_remaining` integer, nullable, required
    - `free_tier_hint` string: Present on free-tier trial-key calls: what budget the call drew from and that paying upgrades this same key. Near the daily cap on unclaimed keys it also carries a claim link to relay to your human (claiming adds one-time credits).

## Other responses

- `400`: INVALID_INPUT | IDEMPOTENCY_KEY_REQUIRED
- `401`: UNAUTHORIZED | AUTH_REQUIRED | KEY_REQUIRED
- `402`: INSUFFICIENT_CREDITS | QUOTE_EXCEEDS_MAX_CREDITS
- `403`: NOT_ENTITLED | TRIAL_CAP_EXCEEDED
- `404`: NOT_FOUND
- `409`: IDEMPOTENCY_KEY_REUSED
- `413`: PAYLOAD_TOO_LARGE
- `429`: CONCURRENCY_LIMIT | RATE_LIMITED
- `500`: INTERNAL
- `502`: UPSTREAM_UNAVAILABLE
- `503`: BUDGET_EXHAUSTED

---

[API](https://skmtc.dev/veezee/apis/veezee-api.md) · [All operations](https://skmtc.dev/veezee/apis/veezee-api/llms.txt) · [OpenAPI document](https://skmtc.dev/veezee/apis/veezee-api/revisions/6f1831474e70?raw)
