Less boo. More booked. Halloween offer: 30 days free on any paid plan. Claim 30 days freeEvery new account gets one free mailbox for warmup and replies. No domain to buy. See how it works

Skip to content

LinkedIn people search

API referenceLeads

From the Leads API reference. Requests use the base URL https://app.warmerly.com/api/v1 and an API key, see Authentication.

text
GET /linkedin/search
GET /linkedin/search/parameters

A different database to the company search above: this queries LinkedIn through your own connected LinkedIn account, so it needs a paid LinkedIn slot and a connected account (400 no_linkedin_account otherwise).

Query paramTypeDescription
querystringRequired. Keywords. A missing query returns 400 bad_request.
cursorstringNext page, from the previous response's cursor.
locationIdscomma-separatedLocation facet values.
industryIdscomma-separatedIndustry facet values.
companyIdscomma-separatedCurrent company facet values.
networkDistancecomma-separated integers1st / 2nd / 3rd degree.
profileLanguagecomma-separated stringsProfile language codes.

Each page holds up to 15 people. What the facet filters take depends on how your LinkedIn account is connected. On an account connected through Unipile they are LinkedIn's own numeric IDs. On an account connected through LinkupAPI they are plain text names (for example London), only the first value of each of locationIds, industryIds and companyIds is used, and profileLanguage is not applied. GET /linkedin/search/parameters?type=LOCATION|INDUSTRY|COMPANY&keywords=… is the typeahead that returns { "items": [{ "id": "…", "title": "…" }] }. A missing or invalid type returns 400 bad_request (invalid_type); an empty keywords returns an empty items list. On a LinkupAPI account the single suggestion is the text you typed.

json
{
  "items": [
    {
      "id": "ACoAAA…",
      "public_identifier": "samexample",
      "name": "Sam Example",
      "headline": "Head of Growth at Example Ltd",
      "location": "London, United Kingdom",
      "company_name": "Example Ltd",
      "profile_url": "https://www.linkedin.com/in/samexample",
      "network_distance": "DISTANCE_2"
    }
  ],
  "cursor": "15"
}

Fields a profile does not have (headline, location, company_name, email, phone and so on) are omitted rather than set to null. cursor is omitted on the last page.

One LinkedIn lookup is charged per search page, not per profile returned, paging with cursor issues a fresh upstream call, which is the unit of real cost. A search that fails or is rejected costs nothing: the allowance is debited only after results come back. Out of allowance returns 402 payment_required with used, limit, remaining, label and upgradeUrl in details; this check runs before the query check. If the search itself fails you get 400 bad_request (search_failed), and 400 no_linkedin_account also covers a session that has expired.

email and phone are present only when the profile lists them publicly and they are visible to your account, usually they are absent, which is what POST /campaigns/{id}/leads/find-emails and the Email Finder are for.

Was this page helpful?