---
title: "Get a LinkedIn profile"
method: GET
path: "/linkedin/profile"
tags: ["LinkedIn"]
---

# Get a LinkedIn profile

`GET /linkedin/profile`

## Request

- Base URL: `https://api.scrapefield.com/v1`
- URL: `https://api.scrapefield.com/v1/linkedin/profile`
- Auth: one of:
  - HTTP bearer
  - none

Fetch a LinkedIn profile: full_name, headline, about, location, follower_count, connection_count, current_company, experience, education and skills. With `detail=with_email`, also look for their work email, each address checked with its mail server. Use this to enrich a person from their profile URL.

Give exactly one of `url` or `vanity_name` to identify the profile.

Costs 11 credits (7 for `detail=main`, 33 for `detail=with_email`), whether the answer is fetched or served from cache. A failed call is refunded automatically.

## Query parameters

- `url` string
- `vanity_name` string
- `detail` 'full' | 'main' | 'with_email'
- `fresh` boolean
- `demo` boolean

## Response `200`

The request succeeded.

- object
  - `data` LinkedinProfile, required: A LinkedIn profile.
    - `vanity_name` string, required: The part after `/in/` in the profile URL.
    - `url` string, uri, required: The profile.
    - `full_name` string, required: The name, as the profile shows it.
    - `first_name` string, nullable, required: The given name.
    - `last_name` string, nullable, required: The family name.
    - `headline` string, nullable, required: The line under the name.
    - `about` string, nullable, required: The About section.
    - `location` string, nullable, required: As printed, e.g. "Berlin, Germany".
    - `profile_picture_url` string, uri, nullable, required: The profile photo.
    - `follower_count` integer, nullable, required: How many members follow the profile.
    - `connection_count` integer, nullable, required: LinkedIn stops counting at 500: a value of 500 means "500+".
    - `open_to_work` boolean, nullable, required: Whether the profile shows the #OpenToWork frame.
    - `current_company` object, nullable, required: The employer shown at the top of the profile.
      - `name` string, nullable, required: As the listing prints it.
      - `url` string, uri, nullable, required: The company page, where it has one.
    - `experience` object[], required: Positions, most recent first.
      - `title` string, nullable, required: As the position shows it. `null` where the profile gives none.
      - `company` object, required: The employer.
        - `name` string, nullable, required: As the listing prints it.
        - `url` string, uri, nullable, required: The company page, where it has one.
      - `employment_type` string, nullable, required: As printed: "Full-time", "Contract", …
      - `location` string, nullable, required: Where the role is based, as printed.
      - `start_date` string, nullable, required: `YYYY-MM`, or `YYYY` where the profile gives only a year.
      - `end_date` string, nullable, required: `YYYY-MM` or `YYYY`; `null` for a current role, or where the profile gives no date: `is_current` tells which.
      - `is_current` boolean, nullable, required: `true` where the profile says the role runs to the present, `false` where it gives an end date, `null` where it gives no dates.
      - `description` string, nullable, required: What the profile says about the role.
    - `education` object[], required: Schools, most recent first.
      - `school` object, required: The school, and its LinkedIn page where it has one.
        - `name` string, nullable, required: As the listing prints it.
        - `url` string, uri, nullable, required: The company page, where it has one.
      - `degree` string, nullable, required: As printed, e.g. "Bachelor of Science - BS".
      - `field_of_study` string, nullable, required: As printed, e.g. "Computer Science".
      - `start_year` integer, nullable, required: The year they started.
      - `end_year` integer, nullable, required: The year they finished, or expect to.
    - `skills` string[], required: As listed on the profile.
    - `emails` object[], required: Their work email, found with `detail=with_email` only, best first; empty otherwise, or when none is found.
      - `email` string, required: The address.
      - `status` string, nullable, required: `valid` when their mail server accepts it; `risky` when the server accepts every address, so this one cannot be confirmed.
      - `deliverable` boolean, nullable, required: Whether mail to it should arrive.
      - `catch_all` boolean, nullable, required: Whether the domain accepts any address at all, which makes a check meaningless.
      - `free_provider` boolean, nullable, required: Whether it is at a free mail service, such as Gmail, rather than an employer's domain.
  - `meta` Meta, required
    - `request_id` string, required: Quote this if you contact support.
    - `credits_charged` integer, required: The endpoint's published cost. 0 for a demo answer, and for a list emptied because everyone in it asked not to be served. A failed call has no `meta`: it answers with an error, and is refunded.
    - `credits_remaining` integer
    - `cached` boolean, required
    - `fetched_at` string, date-time, required: When the data was actually fetched — the original time on a cache hit, so freshness is always visible.
    - `next_cursor` string, nullable, required: Pass as `cursor` for the next page. `null` on the last page. It lasts as long as the answer is cached.
    - `demo` boolean: Present, and true, on a demo answer (`?demo=true` with no key).
    - `note` string: On a demo answer: what it is, and what a live call costs.

## Other responses

- `400`: Something went wrong. `error.code` is stable; `error.message` says what to do next.
- `401`: Something went wrong. `error.code` is stable; `error.message` says what to do next.
- `403`: Something went wrong. `error.code` is stable; `error.message` says what to do next.
- `404`: Something went wrong. `error.code` is stable; `error.message` says what to do next.
- `429`: Something went wrong. `error.code` is stable; `error.message` says what to do next.
- `500`: Something went wrong. `error.code` is stable; `error.message` says what to do next.
- `501`: Something went wrong. `error.code` is stable; `error.message` says what to do next.
- `502`: Something went wrong. `error.code` is stable; `error.message` says what to do next.

---

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