LinkedIn API

LinkedIn Search leads API

LinkedIn lead search with Sales Navigator's search and filters: one call returns a page of up to 25 people matching a keyword and Sales Navigator lead filters (location, job title, current and past company, school, seniority, function, company size, and more), or the results of a Sales Navigator lead-search URL you built yourself. Each lead comes with name, current positions, location, summary, and photo, and its url opens the profile and can be passed to linkedin.profile for the full record. For full profiles in one call use linkedin.search_profiles.

POST/v1/run/linkedin.search_leads
Uptime
95.97%
30d · 1,590 calls
Requests
1,590
30d · weekly, last 12 wks
Response
4.2s
median · 30d

Pricing

LinkedIn Search leads API pricing

You pay
$700.00
$70.00/1k req, only for what you use. No monthly plan.
Your first 1 requests are free with the $0.10 starting balance.

Call it

Get LinkedIn search leads in one request

import os, requests

res = requests.post(
    "https://api.getanyapi.com/v1/run/linkedin.search_leads",
    headers={"Authorization": f"Bearer {os.environ['ANYAPI_KEY']}"},
    json={
        "currentCompanies": [
            "Google"
        ],
        "page": 1,
        "query": "engineer"
    },
)
print(res.json())
Open in
Get a free key
Sample response
{
  "data": {
    "items": [
      {
        "about": "A short example description of this item.",
        "currentPositions": [
          {
            "companyId": "Acme Inc",
            "companyLinkedinUrl": "https://example.com/page",
            "companyName": "Acme Inc",
            "startedOn": {},
            "tenureAtCompany": {},
            "tenureAtPosition": {},
            "title": "Example title"
          }
        ],
        "firstName": "Alex",
        "id": "a1b2c3d4",
        "image": "https://example.com/image.jpg",
        "lastName": "Rivera",
        "location": "example",
        "openProfile": true,
        "premium": true,
        "url": "https://example.com/page"
      }
    ],
    "page": 29,
    "totalPages": 12500,
    "totalResults": 12500
  },
  "found": true,
  "reason": "not_found"
}

Full parameter and response reference - every field, type, and example for this endpoint.

Reference

One request, one response shape.

Every field you send and every field you get back, each with a real example.

Last verified 2026-11-14 · uptime and latency measured over 30d

Request body

JSON, posted to this endpoint.

  • companyHeadcountarray

    Filter by current company size (employee count). Codes: A=Self-Employed, B=1-10, C=11-50, D=51-200, E=201-500, F=501-1,000, G=1,001-5,000, H=5,001-10,000, I=10,001+.

  • companyHeadquarterLocationsarray

    Filter by the location of the person's current company headquarters, by place name (e.g. ['United States']). Commas are not allowed in a value. Up to 70 values.

  • currentCompaniesarray

    ["Google"]

    Filter to people who currently work at any of these companies, by name (e.g. ['Google','Meta']). Multiple names widen the match (OR). Commas are not allowed in a value. Up to 50 values.

  • excludeCompanyHeadquarterLocationsarray

    Exclude people whose current company is headquartered in any of these locations. Commas are not allowed in a value. Up to 70 values.

  • excludeCurrentCompaniesarray

    Exclude people who currently work at any of these companies, by name. Commas are not allowed in a value. Up to 50 values.

  • excludeCurrentJobTitlesarray

    Exclude people whose current job title matches any of these. Commas are not allowed in a value. Up to 70 values.

  • excludeFunctionIdsarray

    Exclude these job functions (same codes as functionIds). Up to 30 values.

  • excludeLocationsarray

    Exclude people in any of these locations, by place name. Commas are not allowed in a value. Up to 70 values.

  • excludePastCompaniesarray

    Exclude people who previously worked at any of these companies, by name. Commas are not allowed in a value. Up to 50 values.

  • excludePastJobTitlesarray

    Exclude people who held any of these past job titles. Commas are not allowed in a value. Up to 70 values.

  • excludeSchoolsarray

    Exclude people who attended any of these schools, by name. Commas are not allowed in a value. Up to 50 values.

  • excludeSeniorityLevelIdsarray

    Exclude these seniority levels (same codes as seniorityLevelIds). Up to 20 values.

  • firstNamesarray

    Filter to people whose first name matches any of these. Commas are not allowed in a value. Up to 70 values.

  • functionIdsarray

    Filter by job function. Codes: 1=Accounting, 2=Administrative, 3=Arts and Design, 4=Business Development, 5=Community and Social Services, 6=Consulting, 7=Education, 8=Engineering, 9=Entrepreneurship, 10=Finance, 11=Healthcare Services, 12=Human Resources, 13=Information Technology, 14=Legal, 15=Marketing, 16=Media and Communication, 17=Military and Protective Services, 18=Operations, 19=Product Management, 20=Program and Project Management, 21=Purchasing, 22=Quality Assurance, 23=Real Estate, 24=Research, 25=Sales, 26=Customer Success and Support.

  • jobTitlestring

    Optional current job title filter (e.g. 'Software Engineer'). Commas are not allowed in a value.

  • lastNamesarray

    Filter to people whose last name matches any of these. Commas are not allowed in a value. Up to 70 values.

  • locationstring

    Optional location filter (e.g. 'San Francisco'). Commas are not allowed in a value.

  • pageinteger

    Which page of up to 25 leads to return, starting at 1 (1-100, default 1). Also pages through a salesNavUrl search. Each page is billed as one request.

  • pastCompaniesarray

    Filter to people who previously worked at any of these companies, by name. Commas are not allowed in a value. Up to 50 values.

  • pastJobTitlesarray

    Filter by a past job title the person held (e.g. ['Product Manager']). Commas are not allowed in a value. Up to 70 values.

  • profileLanguagesarray

    Filter by the profile's primary language.

  • querystring

    engineer

    Search keywords for LinkedIn leads: a role, name, or keywords (e.g. 'Marketing Manager'). Provide this or salesNavUrl.

  • recentlyChangedJobsboolean

    When true, only return people who recently changed jobs (a strong sales/recruiting signal).

  • recentlyPostedOnLinkedInboolean

    When true, only return people who recently posted on LinkedIn (an activity signal).

  • salesNavUrlstring

    Alternatively, a LinkedIn Sales Navigator lead-search URL you built in Sales Navigator (e.g. https://www.linkedin.com/sales/search/people?query=(keywords%3Aengineer)). When set it overrides query and every other filter on this request; only page still applies.

  • schoolsarray

    Filter to people who attended any of these schools, by name. Commas are not allowed in a value. Up to 50 values.

  • seniorityLevelIdsarray

    Filter by seniority level. Codes: 100=In Training, 110=Entry Level, 120=Senior, 130=Strategic, 200=Entry Level Manager, 210=Experienced Manager, 220=Director, 300=Vice President, 310=CXO, 320=Owner/Partner.

  • yearsAtCurrentCompanyIdsarray

    Filter by tenure at the current company. Codes: 1=Less than 1 year, 2=1 to 2 years, 3=3 to 5 years, 4=6 to 10 years, 5=More than 10 years.

  • yearsOfExperienceIdsarray

    Filter by total years of experience. Codes: 1=Less than 1 year, 2=1 to 2 years, 3=3 to 5 years, 4=6 to 10 years, 5=More than 10 years.

You send. A small JSON body. The values shown are examples to replace with your own.

Response

JSON, one example value per field.

each itemdata.items[]

Matching leads, up to 25 per page. Populated whenever the provider has data for the entity.

  • aboutstring

    Profile summary text, when the member wrote one.

  • firstNamestring

    Member's first name. Populated whenever the provider has data for the entity.

  • idstring

    LinkedIn member id, the last segment of `url`.

  • imagestring

    Profile picture URL. The query string is a signed token, so keep the URL intact. Populated whenever the provider has data for the entity.

  • lastNamestring

    Member's last name. Populated whenever the provider has data for the entity.

  • locationstring

    Member's location as a single string (city, region, country). Populated whenever the provider has data for the entity.

  • openProfileboolean

    Whether the member accepts messages from people outside their network.

  • premiumboolean

    Whether the member has a LinkedIn Premium subscription.

  • urlstring

    LinkedIn profile URL in its member-id form (https://www.linkedin.com/in/ACwAAA...). It opens the profile on LinkedIn, and passing it as `url` to linkedin.profile returns the full record. Populated whenever the provider has data for the entity.

each currentPositiondata.items[].currentPositions[]

Current roles. Populated whenever the provider has data for the entity.

  • companyIdstring

    LinkedIn company id.

  • companyLinkedinUrlstring

    LinkedIn company page URL.

  • companyNamestring

    Company name.

  • startedOnobject

    When the role started, as `month` (1-12, when shown) and `year`.

  • tenureAtCompanyobject

    Time at this company, as `numYears` and `numMonths`.

  • tenureAtPositionobject

    Time in this role, as `numYears` and `numMonths`.

  • titlestring

    Job title.

datadata

The results wrapper, or null when nothing matched.

  • pageinteger

    The page this response holds, starting at 1.

  • totalPagesinteger

    How many pages of up to 25 leads the search has.

  • totalResultsinteger

    How many leads match the search in total, across every page.

top level
  • foundboolean

    True when the page returned at least one lead.

  • reason"not_found"

    Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.

You get back. Named, typed fields in the same shape whichever source answers.

FAQ

About the LinkedIn Search leads API

The AnyAPI LinkedIn Search leads API returns LinkedIn search leads data as normalized JSON from one POST call to /v1/run/linkedin.search_leads. LinkedIn lead search with Sales Navigator's search and filters: one call returns a page of up to 25 people matching a keyword and Sales Navigator lead filters (location, job title, current and past company, school, seniority, function, company size, and more), or the results of a Sales Navigator lead-search URL you built yourself. Each lead comes with name, current positions, location, summary, and photo, and its url opens the profile and can be passed to linkedin.profile for the full record. For full profiles in one call use linkedin.search_profiles. AnyAPI returns one normalized schema whichever source serves it. It costs from $70 per 1,000 requests, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 96.0% of LinkedIn search leads calls through AnyAPI succeeded, with a median response time of 4.2 seconds across 1,590 measured calls.

It costs from $70 per 1,000 requests, in US dollars with no subscription and no monthly minimum. You fund one USD wallet and each call draws it down. Some failed wallet-funded requests incur processing charges that we pass through at cost, with no markup; the error response shows the amount charged.

LinkedIn lead search with Sales Navigator's search and filters: one call returns a page of up to 25 people matching a keyword and Sales Navigator lead filters (location, job title, current and past company, school, seniority, function, company size, and more), or the results of a Sales Navigator lead-search URL you built yourself. Each lead comes with name, current positions, location, summary, and photo, and its url opens the profile and can be passed to linkedin.profile for the full record. For full profiles in one call use linkedin.search_profiles. The response is normalized JSON with the same envelope every AnyAPI endpoint returns, so parsing a second endpoint is a change of URL and nothing else.

Over the last 30 days, 96.0% of LinkedIn search leads calls through AnyAPI succeeded, with a median response time of 4.2 seconds across 1,590 measured calls. These are AnyAPI's own measurements of traffic through the gateway, recomputed continuously, not a published service-level target.

Yes. A new AnyAPI account starts with $0.10 of free balance and no card required, which covers 1 LinkedIn Search leads calls at $0.07 each.

Send a POST request to https://api.getanyapi.com/v1/run/linkedin.search_leads with your AnyAPI key in an "Authorization: Bearer" header and the input as a JSON body. The same key and the same wallet work on every AnyAPI endpoint.

No. You add US dollars to one prepaid AnyAPI balance and each request draws it down. There is no monthly plan and no minimum, and the same balance pays for every AnyAPI endpoint.

Yes. Install @getanyapi/sdk from npm for TypeScript or getanyapi from pip for Python. Both call every AnyAPI endpoint with the same key, and any HTTP client works too.

Yes. An agent can connect to the AnyAPI MCP server at https://api.getanyapi.com/mcp, or create its own free-trial key with one unauthenticated POST to https://api.getanyapi.com/agent/signup and call this endpoint over HTTP.