API reference · LinkedIn
linkedin/bulk/company-employees
Integrate this model through SandBase's unified API, with production-ready schemas and examples.
Production endpoint
Send your first request
OpenAI-compatible endpoint with unified authentication and usage tracking.
POST
https://api.sandbase.ai/v1/runModel ID
linkedin/bulk/company-employees01
Input Schema
26 parameters · 0 required · 26 optional
| Parameter | Type | Required | Description |
|---|---|---|---|
maxItems | integer | Optional | Maximum number of profiles to scrape. The actor will stop scraping when this limit is reached. · Min: -9007199254740991 · Max: 9007199254740991 |
companies | array | Optional | Search employees of these companies. Provide full LinkedIn URLs. Example: `https://www.linkedin.com/company/google` |
jobTitles | array | Optional | Filter Profiles by these LinkedIn job titles. Example: `Software Engineer`. |
locations | array | Optional | Filter employees by these LinkedIn locations. Example: `San Francisco`. LinkedIn does not always understand your text queries. For example for "UK" query it will apply "Ukraine" location, so you should use "United Kingdom" in this case. Try this out first in the location filter input of LinkedIn search at `https://www.linkedin.com/search/results/people/?geoUrn=%5B%22103644278%22%5D` - we will use the first suggestion from the autocomplete popup when you type your location |
startPage | integer | Optional | The page number to start scraping from. Starts from 1. · Min: 0 · Max: 100 |
takePages | integer | Optional | The number of search pages to scrape. Each page contains 25 profiles. · Min: 0 · Max: 100 |
functionIds | string[] | Optional | Filter Profiles by these LinkedIn function IDs. Example: `8` for 'Engineering'. Full list: { "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" } |
industryIds | array | Optional | Filter Profiles by these LinkedIn industry IDs. Example: `4` for 'Software Development'. Full list: `https://github.com/HarvestAPI/linkedin-industry-codes-v2/blob/main/linkedin_industry_code_v2_all_eng_with_header.csv` |
searchQuery | string | Optional | Query to search LinkedIn profiles. · Max length: 300 |
pastJobTitles | array | Optional | Filter Profiles by these LinkedIn past job titles. Example: `Software Engineer`. |
excludeSchools | array | Optional | Exclude Profiles by these LinkedIn schools. Example: `Stanford University`. |
companyBatchMode | string | Optional | Choose how to process the companies. 'All at once' will search employees from all companies in one query, while 'One by one' will process each make a query for each company separately. The start fee will apply for each query. · Options: all_at_once, one_by_one · Default: "all_at_once" all_at_onceone_by_one |
companyHeadcount | string[] | Optional | Filter Profiles by their current company's headcount. |
excludeLocations | array | Optional | Exclude Profiles by these LinkedIn locations. Example: `San Francisco`. LinkedIn does not always understand your text queries. For example for "UK" query it will apply "Ukraine" location, so you should use "United Kingdom" in this case. Try this out first in the location filter input of LinkedIn search at `https://www.linkedin.com/search/results/people/?geoUrn=%5B%22103644278%22%5D` - we will use the first suggestion from the autocomplete popup when you type your location |
seniorityLevelIds | string[] | Optional | Filter Profiles by these LinkedIn seniority level IDs. Example: `120` for 'Senior'. Full list: { "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" } |
excludeFunctionIds | string[] | Optional | Filter Profiles by these LinkedIn function IDs. Example: `8` for 'Engineering'. |
excludeIndustryIds | array | Optional | Exclude Profiles by these LinkedIn industry IDs. Example: `4` for 'Software Development'. Full list: `https://github.com/HarvestAPI/linkedin-industry-codes-v2/blob/main/linkedin_industry_code_v2_all_eng_with_header.csv` |
maxItemsPerCompany | integer | Optional | Maximum number of profiles to scrape. The actor will stop scraping when this limit is reached. · Min: -9007199254740991 · Max: 9007199254740991 |
profileScraperMode | string | Optional | Choose the mode for scraping LinkedIn profiles. The Short mode provides basic information, while the Full mode includes full detailed profile data. · Options: Short ($4 per 1k), Full ($8 per 1k), Full + email search ($12 per 1k) · Default: "Full ($8 per 1k)" Short ($4 per 1k)Full ($8 per 1k)Full + email search ($12 per 1k) |
recentlyChangedJobs | boolean | Optional | If enabled, only Profiles of people who have recently changed jobs will be returned. |
excludePastCompanies | array | Optional | Exclude Profiles by these LinkedIn past companies. Provide full LinkedIn URLs |
excludePastJobTitles | array | Optional | Exclude Profiles by these LinkedIn past job titles. Example: `Software Engineer`. |
yearsOfExperienceIds | string[] | Optional | Filter Profiles by these LinkedIn years of experience IDs. Example: `3` for '3 to 5 years'. Full list: { "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" } |
excludeCurrentJobTitles | array | Optional | Exclude Profiles by these LinkedIn current job titles. Example: `Software Engineer`. |
excludeSeniorityLevelIds | string[] | Optional | Filter Profiles by these LinkedIn seniority level IDs. Example: `120` for 'Senior'. |
yearsAtCurrentCompanyIds | string[] | Optional | Filter Profiles by these LinkedIn years at current company IDs. Example: `3` for '3 to 5 years'. Full list: { "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" } |
02
Output Schema
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier for the generation task |
status | string | Task status: pending, running, completed, failed, timeout |
model | string | Model used for the generation |
outputs | array | Array of output items |
outputs[].url | string | URL of the generated artifact |
outputs[].content_type | string | MIME type (e.g. image/png, video/mp4) |
error | object | null | Error details if failed, null on success |
error.type | string | Machine-readable error type code |
error.message | string | Human-readable error description |
Async Workflow
This model uses asynchronous execution. Submit a request and poll for the result.
- Submit — POST to /v1/run, receive an
id - Poll — GET /v1/run/{id} until status is
completed,failed, ortimeout - Retrieve — Read
outputsfrom the completed response
03
Code Examples
Ready-to-run snippets
# Step 1: Submit
curl -X POST https://api.sandbase.ai/v1/run \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "linkedin/bulk/company-employees",
"companyBatchMode": "all_at_once",
"profileScraperMode": "Full ($8 per 1k)",
"prompt": "a beautiful sunset over mountains"
}'
# Step 2: Poll result (replace <id>)
curl https://api.sandbase.ai/v1/run/<id> \
-H "Authorization: Bearer YOUR_API_KEY"
