Built-in tool
LinkedIn company employees
List the people who work at a company on LinkedIn, by job title if you like, up to the number you set.
Endpoint
Parameters
| Name | Type | Required | Note |
|---|---|---|---|
| currentCompaniesstring · required | string | required | LinkedIn company URL (e.g. https://www.linkedin.com/company/microsoft) Example: |
| currentJobTitlesarray · optional | array | optional | Optional. One job title per row — only employees whose CURRENT title matches one of them are returned. Leave empty to return employees of every title. Up to 70. Example: |
| maxLeadsstring · optional | string | optional | Maximum number of employees to return. Each batch of 25 uses one API page. |
Response schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"elements"
],
"properties": {
"note": {
"type": "string"
},
"hasMore": {
"type": "boolean",
"description": "True only when the provider still had reachable data and this execution stopped early. A managed Agent must treat this as an incomplete batch, never as completion."
},
"elements": {
"type": "array",
"items": {
"type": "object",
"required": [
"linkedinUrl",
"jobTitle",
"employerVerified"
],
"properties": {
"premium": {
"type": "boolean"
},
"jobTitle": {
"type": "string",
"description": "Job title this person holds at the company that was looked up, taken from the matching `currentPositions[].title`. Empty string when the provider returned no title."
},
"lastName": {
"type": "string"
},
"location": {
"type": "object",
"properties": {
"linkedinText": {
"type": "string"
}
},
"additionalProperties": true
},
"firstName": {
"type": "string"
},
"pictureUrl": {
"type": "string"
},
"linkedinUrl": {
"type": "string"
},
"openProfile": {
"type": "boolean"
},
"currentPositions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"companyName": {
"type": "string"
}
},
"additionalProperties": true
}
},
"employerVerified": {
"type": "boolean",
"description": "True when one of this person's current positions is at the requested company's LinkedIn page. False only when the company itself could not be resolved — then nobody was filtered, and the person should be confirmed before paid enrichment or outreach."
}
},
"additionalProperties": true
}
},
"nextPage": {
"type": "integer",
"exclusiveMinimum": 0
},
"returned": {
"type": "number",
"description": "How many records this run returned, after any `limit` was applied. ONE EXCEPTION: on a chat preview — where `truncated` is true — this is the count actually FETCHED while `elements` carries only a short sample of them, so the two deliberately disagree. Read `truncated` before comparing this against the array length; in a workflow it is never set and the two always match. Matches the other LinkedIn data tools, whose `meta.returned` is the fetched count on a truncated preview too."
},
"truncated": {
"type": "boolean"
},
"stopReason": {
"enum": [
"cancelled",
"provider-error",
"empty-page-stall",
"caller-limit",
"presentation-preview",
"cursor-stall",
"runtime-page-window"
],
"type": "string"
},
"suggestion": {
"type": "string"
},
"totalCount": {
"type": "number",
"description": "How many records the search MATCHES, per the provider — the grand total, routinely in the millions while the endpoint will only serve about a thousand of them. Do NOT compare it with the row count to decide whether a run was complete, and do not paginate towards it: use `servableCount` for what is actually reachable. Absent when the provider sent no count."
},
"totalPages": {
"type": "number"
},
"pagesScraped": {
"type": "number"
},
"servableCount": {
"type": "number",
"description": "How many records this endpoint will serve across all its pages — the real ceiling on what any number of runs can reach, which the provider caps well below `totalCount` on most search endpoints. Absent when the provider sent no count."
},
"totalElements": {
"type": "number",
"description": "DEPRECATED — despite the name this is the count RETURNED by this run, not a grand total, so it equals your `limit` on a limited run. Kept at that value so existing flows do not change meaning. Use `returned` for this number, `totalCount` for how many records match, or `servableCount` for how many are reachable."
},
"nextPaginationToken": {
"type": "string"
},
"employerVerification": {
"type": "object",
"required": [
"status",
"excludedCount"
],
"properties": {
"status": {
"enum": [
"verified",
"unverified"
],
"type": "string"
},
"company": {
"type": "object",
"required": [
"ids",
"universalNames",
"names"
],
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
}
},
"names": {
"type": "array",
"items": {
"type": "string"
}
},
"universalNames": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"excluded": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"reason"
],
"properties": {
"name": {
"type": "string"
},
"title": {
"type": "string"
},
"reason": {
"enum": [
"no_company_page",
"different_company"
],
"type": "string"
},
"linkedinUrl": {
"type": "string"
},
"statedEmployer": {
"type": "string"
}
},
"additionalProperties": false
}
},
"excludedCount": {
"type": "number"
}
},
"description": "ENG-19396: how the returned people were checked against the requested company. `verified` means every returned person currently works there and `excludedCount` people the search matched by name only (or at another company) were removed. `unverified` means the company could not be resolved and nothing was filtered.",
"additionalProperties": false
}
},
"additionalProperties": true
}