WarmablyWarmablyDOCS
Search docs⌘K
Dashboard
API Reference/Endpoints

Search people & companies

POST/api/linkedin/gateway/linkedin/search

Runs a search against LinkedIn's ordinary search, Sales Navigator, or Recruiter — whichever the connected account has access to — and pages through the results. Which filters are available depends on the api/category pair you send, so the body shape below is a summary rather than an exhaustive list.

Authentication

Send your personal API key as a bearer token. A missing, malformed or revoked key returns 401.

Query parameters

FieldTypeDescription
account_id *stringA connected account's id.
limitnumber0–100. Defaults to 10.
cursorstringFrom the previous page's cursor, to continue paging.

Body parameters

FieldTypeDescription
api *"classic" | "sales_navigator" | "recruiter"Which search surface to use. Requires a matching active contract for sales_navigator and recruiter.
category *"people" | "companies" | "jobs" | "posts"Not every category exists on every apijobs and posts are classic-only, for instance.
keywordsstringFree-text search terms.
everything elsevariesFilters like location, industry, company, school, seniority or network_distance take id values, not free text — resolve them first with Retrieve search parameters. Sales Navigator and Recruiter add several filters of their own (saved lists, personas, tenure ranges, hiring-project scoping) not present on classic search.

Common filter shapes

·Classic. A field is usually a plain array of resolved ids, e.g. "location": ["102277331"].·Sales Navigator. Most fields split into { include: [], exclude: [] } so you can target and exclude in the same call.·Recruiter. Adds project- and saved-search-scoped filters, e.g. saved_search or saved_filter.

Response fields

FieldTypeDescription
object"LinkedinSearchResultList"Always this value.
itemsarrayResult entries — shape depends on category (a person, a company, a job posting, or a post).
cursorstring | nullPass back as the cursor query parameter to fetch the next page.
pagingobject{ start, page_count, total_count }.
Sales Navigator and Recruiter searches can also be run by saved_search_id or saved_search instead of rebuilding the filters — resolve the id with Retrieve search parameters using type=SAVED_SEARCHES.

Errors

·400 Bad Request. api or category is missing, or category isn't valid for that api.·401 Unauthorized. The key is missing, malformed or has been rotated.·403 Forbidden. The account_id doesn't belong to this key, or the account has no contract for that api.·422 Unprocessable Entity. A filter references an id that Retrieve search parameters wouldn't have returned for it.
CredentialsRequired
AuthorizationBearer wm_live_••••••••
RequestTry it
curl -X POST "https://api.warmably.com/api/linkedin/gateway/linkedin/search?account_id=459993d2-b0e7-4b19-baf9-45252ca324cf&limit=25" \
  -H "Authorization: Bearer wm_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "api": "classic",
    "category": "people",
    "keywords": "platform engineer",
    "location": ["102277331"]
  }'
Response
200 OK
{
  "object": "LinkedinSearchResultList",
  "items": [
    {
      "object": "LinkedinSearchResult",
      "id": "ACoAAAEkwwAB9KEc2TrQgOLEQ-vzRyZeCDyc6DQ",
      "name": "Jordan Lee",
      "headline": "Platform Engineer at Acme Corp",
      "location": "San Francisco Bay Area",
      "network_distance": "SECOND_DEGREE",
      "profile_url": "https://www.linkedin.com/in/jordanlee/"
    }
  ],
  "cursor": "MnwxMDB8...",
  "paging": { "start": 0, "page_count": 25, "total_count": 412 }
}
No key yet? Create one from Dashboard → API Keys.