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

# Get a LinkedIn profile

> Read one LinkedIn profile live: name, headline, location, current job and company. The answer can be passed straight to contact creation.

> [!WARNING]
>
> Each call is a real profile view from your LinkedIn account, and the person may see it. It uses one of your most limited LinkedIn actions: stay around 100 a day.

## What this call does

| | |
| - | - |
| **LinkedIn** | Live read: a profile view the person may see |
| **Your CRM** | None |
| **Repeating it** | Each repeat is another profile view: wait before trying again. |

## Good to know

* Do not loop this over a list of people. If you must read a few, leave tens of seconds between calls.

Your AI assistant reaches the same action through the MCP tool `get_linkedin_profile`.


## OpenAPI

````yaml reference/openapi.json POST /linkedin/profile
openapi: 3.1.0
info:
  title: Groovin API
  version: 1.0.0
  description: >-
    Connect LinkedIn and your CRM. Every call acts on your real LinkedIn account
    and CRM: there is no test mode.
servers:
  - url: https://api.groovin.ai/functions/v1/api/v1
security:
  - apiKey: []
tags:
  - name: LinkedIn
  - name: CRM contacts and companies
  - name: LinkedIn connections import
paths:
  /linkedin/profile:
    post:
      tags:
        - LinkedIn
      summary: Get a LinkedIn profile
      description: >-
        Read one LinkedIn profile live: name, headline, location, current job
        and company. The answer can be passed straight to contact creation.
      operationId: get_linkedin_profile
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                identifier:
                  type: string
                  description: >-
                    Who to read: a LinkedIn profile id (`ACoAA…`), a Sales
                    Navigator profile id (`ACwAA…`), the end of their LinkedIn
                    URL, or the full URL.
                org_linkedin_account_id:
                  type: integer
                  description: >-
                    Leave this out to use your own LinkedIn account. Another
                    person's account is refused with a 403.
              required:
                - identifier
            examples:
              placeholder:
                summary: Replace every value
                value:
                  identifier: REPLACE_WITH_LINKEDIN_PROFILE_URL
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetchLinkedinProfileResult'
              example:
                org_linkedin_account_id: 4821
                linkedin_profile_id: ACoAAExampleLinkedinProfileId
                full_name: John Smith
                slug: john-smith
                sales_nav_profile_id: null
                linkedin_profile_url: https://www.linkedin.com/in/john-smith
                profile:
                  id: ACoAAExampleLinkedinProfileId
                  url: https://www.linkedin.com/in/john-smith
                  firstName: John
                  lastName: Smith
                  headline: Founder at Example Co
                  locationName: Paris, Île-de-France, France
                  currentPosition:
                    jobTitle: Founder
                    companyName: Example Co
        '400':
          description: 'Something in the request is wrong: `error` says what.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: The API key is missing, wrong or revoked.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            Your account cannot do this: no CRM connected, inactive
            subscription, Billing admin role, or a teammate's LinkedIn account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: >-
            What you asked for does not exist, or your LinkedIn account is not
            connected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: LinkedIn or your CRM is slowing you down. Wait at least 5 minutes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Something failed on our side.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: >-
            LinkedIn or your CRM could not be reached or gave an unreadable
            answer.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    FetchLinkedinProfileResult:
      type: object
      description: One LinkedIn profile, read live.
      required:
        - org_linkedin_account_id
        - linkedin_profile_id
        - full_name
        - slug
        - sales_nav_profile_id
        - linkedin_profile_url
        - profile
      properties:
        org_linkedin_account_id:
          type: integer
          description: Groovin's id for the LinkedIn account this answer is about.
        linkedin_profile_id:
          type: string
          description: LinkedIn profile id, the `ACoAA…` identifier of a person.
        full_name:
          type: string
          description: >-
            First and last name. It can be `""` when LinkedIn hides the name:
            `crm/contacts` then needs a name from you.
        slug:
          type:
            - string
            - 'null'
          description: >-
            The public part of the person's LinkedIn URL, as in
            `linkedin.com/in/<slug>`.
        sales_nav_profile_id:
          type:
            - string
            - 'null'
          description: The Sales Navigator profile id, when that is what you sent.
        linkedin_profile_url:
          type:
            - string
            - 'null'
          description: The LinkedIn profile URL.
        is_crm_contact_creation_blocked:
          const: true
          description: >-
            Only present, as `true`, when you blocked this person from CRM
            contact creation in Groovin. `crm/contacts` does not enforce the
            block, so check it yourself before creating.
        profile:
          $ref: '#/components/schemas/LinkedinProfile'
    Error:
      type: object
      description: >-
        What every failed request answers, with an HTTP status. The text can
        change: decide what to do from the status, and show the text to a
        person.
      required:
        - error
      properties:
        error:
          type: string
          description: What went wrong, and sometimes what to do next.
    LinkedinProfile:
      type:
        - object
        - 'null'
      properties:
        id:
          type:
            - string
            - 'null'
          description: LinkedIn profile id (ACoAA…).
        url:
          type:
            - string
            - 'null'
          description: Canonical profile URL.
        slugs:
          type:
            - array
            - 'null'
          items:
            type: string
          description: All known slugs / ids for the profile.
        salesNavId:
          type:
            - string
            - 'null'
          description: Sales Navigator profile id (ACwAA…/ADEAA…), when known.
        firstName:
          type:
            - string
            - 'null'
          description: First name.
        lastName:
          type:
            - string
            - 'null'
          description: Last name.
        emailAddress:
          type:
            - string
            - 'null'
          description: LinkedIn-registered personal email, when visible.
        headline:
          type:
            - string
            - 'null'
          description: LinkedIn headline.
        summary:
          type:
            - string
            - 'null'
          description: Long-form bio.
        locationName:
          type:
            - string
            - 'null'
          description: Flat location string, e.g. "Paris, Île-de-France, France".
        location:
          type:
            - object
            - 'null'
          properties:
            city:
              type:
                - string
                - 'null'
              description: City part of the structured location.
            region:
              type:
                - string
                - 'null'
              description: Region/state part of the structured location.
            country:
              type:
                - string
                - 'null'
              description: Country name of the structured location.
            countryCode:
              type:
                - string
                - 'null'
              description: ISO-2 country code.
          description: Structured location.
        industryName:
          type:
            - string
            - 'null'
          description: Industry, read from the profile's ongoing positions.
        educationSchoolNames:
          type:
            - array
            - 'null'
          items:
            type: string
          description: All school names.
        phoneNumbers:
          type:
            - array
            - 'null'
          items:
            type: string
          description: Phone numbers LinkedIn exposes, when visible.
        websites:
          type:
            - array
            - 'null'
          items:
            type: string
          description: Websites listed on the profile.
        currentPosition:
          type:
            - object
            - 'null'
          properties:
            jobTitle:
              type:
                - string
                - 'null'
              description: Job title of the current position.
            companyName:
              type:
                - string
                - 'null'
              description: Company name of the current position.
            companyId:
              type:
                - string
                - 'null'
              description: LinkedIn company id.
            companyUrl:
              type:
                - string
                - 'null'
              description: LinkedIn URL of that company.
            companyLogoUrl:
              type:
                - string
                - 'null'
              description: Company logo URL.
            jobDescription:
              type:
                - string
                - 'null'
              description: >-
                The person's own description of THIS role, from their LinkedIn
                experience entry.
            jobLocationName:
              type:
                - string
                - 'null'
              description: >-
                Where the person holds THIS role, as a flat string (may differ
                from the company HQ).
            companyDescription:
              type:
                - string
                - 'null'
              description: >-
                The COMPANY's own description, from its LinkedIn company page —
                not the person's description of their role (that is
                `jobDescription`).
            companyLocationName:
              type:
                - string
                - 'null'
              description: >-
                The COMPANY's headquarters location as a flat string — not where
                the person holds the role (that is `jobLocationName`).
            industries:
              type:
                - array
                - 'null'
              items:
                type: string
              description: Industries of the company.
            startDate:
              type:
                - string
                - 'null'
              description: YYYY-MM-DD.
            companySizeRange:
              type:
                - string
                - 'null'
              description: Employee-count range, e.g. "11-50".
            companyDomain:
              type:
                - string
                - 'null'
              description: Company domain — used to find or create the CRM company.
            companyWebsiteUrl:
              type:
                - string
                - 'null'
              description: Company website URL.
            companyFoundedYear:
              type:
                - number
                - 'null'
              description: Year the company was founded.
            companyLocationCountryCode:
              type:
                - string
                - 'null'
              description: ISO-2 country code of the company HQ.
            specialties:
              type:
                - array
                - 'null'
              items:
                type: string
              description: Company specialties.
          description: The single current position, with its snapshot of the company.
      description: >-
        A LinkedIn profile, as Groovin models it. Field names use camelCase
        here, unlike the rest of the API. Every field is optional.
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        Your Groovin API key (`gv_live_…`), created in the extension under
        Settings, MCP and API.

````

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