Search LinkedIn people
Search for LinkedIn members/professionals with extensive filtering options. Ideal for recruiting, sales prospecting, and networking. Filter by name, job title, company, location, connection degree, and more. Supports Sales Navigator search URLs — pass a Sales Navigator search URL in the `url` field to use Sales Navigator Lead Search instead of regular LinkedIn search. ### Filtering by location Two steps: look the location up with `POST /search/geo`, then pass the returned `geoId` as `filters.locationId`. 1. `POST /search/geo` with `{ "keywords": "Ohio" }` returns `{ "geoId": "106981407", "name": "Ohio, United States" }`. 2. `POST /search/people` with that id: ```json { "accountId": "<your-account-id>", "keywords": "Mechanical", "count": 10, "filters": { "locationId": "106981407" } } ``` Notes: - Use `filters.locationId` (or its alias `filters.geoUrn`) — there is no `filters.location` key. Unknown filter keys are silently ignored and the search runs unfiltered (global results). - Pass the plain numeric `geoId`. The `urn:li:fsd_geo:<id>` form is also accepted and normalized. - Any geo level works: country, state, metro area, county, or city. A narrower id gives a narrower result set. - Location filtering composes with `title`, `industry`, `connectionDegree` and pagination (`start`). Recommended: For `connectionOf` or `followerOf` filters, prefer `search-people-v2` which natively supports these filters via LinkedIn's RSC endpoint and returns more accurate results. Rate Limit: 300 searches per account per month (resets on the 1st of each month). Maximum 1000 results per search.
/search/peopleCode Examples
curl -X POST 'https://api.connectsafely.ai/linkedin/search/people' \ -H 'Authorization: Bearer <your_api_key>' \ -H 'Content-Type: application/json' \ -d '{"accountId":"acc_12345","keywords":"","count":25,"start":0,"url":"https://www.linkedin.com/sales/search/people?query=(filters:List(...))","filters":{"firstName":"example_value","lastName":"example_value","title":"Senior Developer","company":"Acme Inc","school":"example_value","locationId":"106981407","geoUrn":"106981407","industry":["Technology"],"connectionDegree":["example_value"],"currentCompanyIds":["Acme Inc"],"pastCompanyIds":["Acme Inc"],"schoolIds":["12345"],"profileLanguage":["example_value"],"serviceCategories":["example_value"],"openToVolunteer":false,"connectionOf":["example_value"],"followerOf":["example_value"]}}'Search for LinkedIn members/professionals with extensive filtering options. Ideal for recruiting, sales prospecting, and networking. Filter by name, job title, company, location, connection degree, and more.
Supports Sales Navigator search URLs — pass a Sales Navigator search URL in the url field to use Sales Navigator Lead Search instead of regular LinkedIn search.
Filtering by location
Two steps: look the location up with POST /search/geo, then pass the returned geoId as filters.locationId.
POST /search/geowith{ "keywords": "Ohio" }returns{ "geoId": "106981407", "name": "Ohio, United States" }.POST /search/peoplewith that id:
{
"accountId": "<your-account-id>",
"keywords": "Mechanical",
"count": 10,
"filters": { "locationId": "106981407" }
}Notes:
- Use
filters.locationId(or its aliasfilters.geoUrn) — there is nofilters.locationkey. Unknown filter keys are silently ignored and the search runs unfiltered (global results). - Pass the plain numeric
geoId. Theurn:li:fsd_geo:<id>form is also accepted and normalized. - Any geo level works: country, state, metro area, county, or city. A narrower id gives a narrower result set.
- Location filtering composes with
title,industry,connectionDegreeand pagination (start).
Recommended: For connectionOf or followerOf filters, prefer search-people-v2 which natively supports these filters via LinkedIn's RSC endpoint and returns more accurate results.
Rate Limit: 300 searches per account per month (resets on the 1st of each month). Maximum 1000 results per search.
Parameters
No parameters.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
accountId | string | No | LinkedIn account ID to use for the search. If not provided, uses the default account. |
keywords | string | No | Search keywords for name, title, company, or skills |
count | number | No | Number of results to return per page |
start | number | No | Pagination offset (0-indexed) |
url | string | No | Sales Navigator search URL. When provided, the search will use Sales Navigator Lead Search instead of regular LinkedIn search. The URL should contain /sales/search/ path (e.g., https://www.linkedin.com/sales/search/people?query=...). |
filters | object | No | Optional filters to narrow down search results |
Example
{
"accountId": "acc_12345",
"keywords": "",
"count": 25,
"start": 0,
"url": "https://www.linkedin.com/sales/search/people?query=(filters:List(...))",
"filters": {
"firstName": "example_value",
"lastName": "example_value",
"title": "Senior Developer",
"company": "Acme Inc",
"school": "example_value",
"locationId": "106981407",
"geoUrn": "106981407",
"industry": [
"Technology"
],
"connectionDegree": [
"example_value"
],
"currentCompanyIds": [
"Acme Inc"
],
"pastCompanyIds": [
"Acme Inc"
],
"schoolIds": [
"12345"
],
"profileLanguage": [
"example_value"
],
"serviceCategories": [
"example_value"
],
"openToVolunteer": false,
"connectionOf": [
"example_value"
],
"followerOf": [
"example_value"
]
}
}Responses
| Status | Description |
|---|---|
| 200 | People retrieved successfully |
| 400 | Bad Request - Invalid request parameters |
| 401 | Unauthorized - Invalid or missing API key |
| 500 | Internal Server Error - Failed to get LinkedIn credentials or search failed |
200 Response Parameters
| Name | Type | Description |
|---|---|---|
success | boolean | |
people | array | |
pagination | any | |
hasMore | boolean | Whether more results are available past this batch. Derived by fetching one row beyond the requested count, so it is exact — not a guess from the page being full. |
200 Example
{
"success": true,
"people": [
{
"profileId": "abhishek-onkar",
"profileUrn": "urn:li:fsd_profile:ACoAABdttMcBYTOrkGpTYrhL6waE6Tu8UhpZdeo",
"firstName": "Abhishek",
"lastName": "Onkar",
"headline": "Software Engineer @ Google",
"profilePicture": "https://media.licdn.com/dms/image/.../profile-displayphoto",
"location": "Bengaluru",
"connectionDegree": "2nd",
"currentPosition": "Software Engineer @ Google",
"profileUrl": "https://www.linkedin.com/in/abhishek-onkar/",
"isPremium": false,
"isOpenToWork": false
},
{
"profileId": "sheetal-lalwani-0601",
"profileUrn": "urn:li:fsd_profile:ACoAAC11JdABZvl_riyT7he7WnF3OXXr6THQ274",
"firstName": "Sheetal",
"lastName": "Lalwani",
"headline": "Software Engineer at Microsoft",
"profilePicture": "https://media.licdn.com/dms/image/.../profile-displayphoto",
"location": "India",
"connectionDegree": "2nd",
"currentPosition": "Software Engineer at Microsoft",
"profileUrl": "https://www.linkedin.com/in/sheetal-lalwani-0601/",
"isPremium": false,
"isOpenToWork": false
}
],
"pagination": {
"count": 25,
"start": 0
},
"hasMore": true
}400 Response Parameters
| Name | Type | Description |
|---|---|---|
success | boolean | |
error | object |
400 Example
{
"success": false,
"error": {
"issues": [
{
"code": "invalid_type",
"expected": "string",
"received": "undefined",
"path": [
"keywords"
],
"message": "Required"
}
],
"name": "ZodError"
}
}401 Response Parameters
| Name | Type | Description |
|---|---|---|
error | string |
401 Example
{
"error": "Unauthorized - Invalid credentials"
}500 Response Parameters
| Name | Type | Description |
|---|---|---|
error | string |
500 Example
{
"error": "Failed to search people",
"success": false
}Search Filters Guide
Comprehensive guide to all available filters for LinkedIn search APIs. Learn how to filter by location, industry, company size, and more.
Search LinkedIn people (V2 - RSC endpoint with auto-pagination)
Search for LinkedIn members using the RSC endpoint with enhanced filtering options and automatic pagination. Supports additional filters like connectionOf, followerOf, and schoolIds. Automatically handles LinkedIn page-based pagination internally - specify the total count you want and the API will fetch multiple pages as needed (max 10 pages, ~10 results per page). Better for finding people connected to specific profiles or following specific accounts. Important: This V2 endpoint uses LinkedIn's new RSC-based search which is rolling out gradually by region. If this endpoint does not return results for your account, use the V1 `/search/people` endpoint instead. Rate Limit: 300 searches per account per month (resets on the 1st of each month). Maximum 1000 results per search.
