---
title: "Search people on LinkedIn"
method: GET
path: "/linkedin/people"
tags: ["LinkedIn"]
---

# Search people on LinkedIn

`GET /linkedin/people`

## Request

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

Find people by name, title, company, school or place. With `source=public` (the default), LinkedIn's own people search: it finds people well by name, but hides many other results as "LinkedIn Member", and those are left out. With `source=sales_navigator`, Sales Navigator's lead search: every match, with each person's current roles, at a higher price. 10 a page, or 25 with Sales Navigator. A page takes about 3 seconds, or about 5 with Sales Navigator, and now and then up to 25. Give at least one of `query`, `first_name`, `last_name`, `title`, `current_company`, `past_company`, `school` or `location`. Use linkedin/profile on a result for the whole profile.

Costs 7 credits (170 for `source=sales_navigator`), whether the answer is fetched or served from cache. A failed call is refunded automatically.

## Query parameters

- `query` string
- `first_name` string
- `last_name` string
- `title` string
- `current_company` string
- `past_company` string
- `school` string
- `location` string
- `source` 'public' | 'sales_navigator'
- `cursor` string
- `fresh` boolean
- `demo` boolean

## Response `200`

The request succeeded.

- object
  - `data` union[], required
    - union: `source=public` returns `linkedin_member`; `source=sales_navigator` returns `linkedin_lead`.
      - LinkedinMember: A person or a company in a list: a post's reactors, a comment's author, a people search's results.
        - `type` 'person' | 'company', required: A company page can comment and react as itself.
        - `vanity_name` string, nullable, required: The public name in the URL: after `/in/` for a person, after `/company/` for a company. `null` where LinkedIn gives only an id.
        - `url` string, uri, required: Their page. Where LinkedIn lists a person by member id, as it does a post's reactors, this is a member-id link (`/in/ACoAA…`).
        - `full_name` string, nullable, required: The person's name, or the company's.
        - `headline` string, nullable, required: The line under the name. For a company, LinkedIn prints its follower count here.
        - `location` string, nullable, required: As printed. `null` in most lists.
        - `services` string[], required: What they offer, for someone found by linkedin/services. Empty in other lists.
      - LinkedinLead: A person from Sales Navigator's lead search: every match, with their current roles.
        - `vanity_name` string, nullable, required: The public name after `/in/`. `null` where Sales Navigator gives only a member id.
        - `url` string, uri, required: Their profile. Sales Navigator often gives a member-id link (`/in/ACwAA…`) instead of a public name.
        - `first_name` string, nullable, required: The given name.
        - `last_name` string, nullable, required: The family name.
        - `full_name` string, nullable, required: First and last name together.
        - `location` string, nullable, required: As printed.
        - `profile_picture_url` string, uri, nullable, required: The profile photo.
        - `premium` boolean, nullable, required: Whether they pay for LinkedIn Premium.
        - `open_profile` boolean, nullable, required: Whether anyone can message them, connected or not.
        - `current_positions` object[], required: What they do now, as Sales Navigator lists it.
          - `title` string, nullable, required: The job title, as printed.
          - `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.
          - `company_id` string, nullable, required: LinkedIn's numeric id for the employer.
          - `start_date` string, nullable, required: `YYYY-MM`, or `YYYY` where only a year is given.
          - `description` string, nullable, required: What they wrote about the role.
  - `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)
