Back to LinkedIn
Apify·LinkedIn
Search LinkedIn Profiles
/harvestapi/linkedin-profile-searchasync$0 / resultSearch for LinkedIn profiles with filters and extract detailed profile information, including work experience, education history, location and more. No cookies or account required. Runs as an Apify actor (20–120 s); results are dataset rows.
Charged per returned row plus the flat fee.
Input
| Field | Type | Required | Description |
|---|---|---|---|
| profileScraperMode | string (Short, Full, Full + email search) | — | Choose the mode for scraping LinkedIn profiles. The Short mode provides basic information, while the Full mode includes full detailed profile data. (default "Full") |
| searchQuery | string | — | Query to search LinkedIn profiles. (e.g., `Founder`, `Marketing Manager`, `John Doe`). [The query supports search operators](https://www.linkedin.com/help/linkedin/answer/a524335) |
| maxItems | integer | — | Maximum number of profiles to scrape. The actor will stop scraping when this limit is reached. |
| locations | array | — | Filter 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 sear |
| currentCompanies | array | — | Filter Profiles by these LinkedIn companies. Provide full LinkedIn URLs |
| pastCompanies | array | — | Filter Profiles by these LinkedIn past companies. Provide full LinkedIn URLs |
| schools | array | — | Filter Profiles by these LinkedIn schools. Example: `Stanford University`. |
| currentJobTitles | array | — | Filter Profiles by these LinkedIn current job titles. Example: `Software Engineer`. |
| pastJobTitles | array | — | Filter Profiles by these LinkedIn past job titles. Example: `Software Engineer`. |
| yearsOfExperienceIds | array | — | Filter Profiles by these LinkedIn years of experience IDs. Example: `3` for '3 to 5 years'. |
| yearsAtCurrentCompanyIds | array | — | Filter Profiles by these LinkedIn years at current company IDs. Example: `3` for '3 to 5 years'. |
| seniorityLevelIds | array | — | Filter Profiles by these LinkedIn seniority level IDs. Example: `120` for 'Senior'. |
| functionIds | array | — | Filter Profiles by these LinkedIn function IDs. Example: `8` for 'Engineering'. |
| industryIds | array | — | 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` |
| firstNames | array | — | Filter Profiles by these LinkedIn first names. We recommend using another actor for searches by name: https://apify.com/harvestapi/linkedin-profile-search-by-name |
| lastNames | array | — | Filter Profiles by these LinkedIn last names. We recommend using another actor for searches by name: https://apify.com/harvestapi/linkedin-profile-search-by-name |
| profileLanguages | array | — | Filter Profiles by these LinkedIn profile languages. |
| companyHeadcount | array | — | Filter Profiles by their current company's headcount. |
| companyHeadquarterLocations | array | — | Filter Profiles by their current company's headquarter location. |
| recentlyChangedJobs | boolean | — | Filter Profiles to only those who have changed jobs in the last 90 days. |
| recentlyPostedOnLinkedIn | boolean | — | Filter Profiles to only those who have posted on LinkedIn in the last 30 days. |
| excludeLocations | array | — | 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 sea |
| excludeCurrentCompanies | array | — | Exclude Profiles by these LinkedIn companies. Provide full LinkedIn URLs |
| excludePastCompanies | array | — | Exclude Profiles by these LinkedIn past companies. Provide full LinkedIn URLs |
| excludeSchools | array | — | Exclude Profiles by these LinkedIn schools. Example: `Stanford University`. |
| excludeCurrentJobTitles | array | — | Exclude Profiles by these LinkedIn current job titles. Example: `Software Engineer`. |
| excludePastJobTitles | array | — | Exclude Profiles by these LinkedIn past job titles. Example: `Software Engineer`. |
| excludeIndustryIds | array | — | 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` |
| excludeSeniorityLevelIds | array | — | Filter Profiles by these LinkedIn seniority level IDs. Example: `120` for 'Senior'. |
| excludeFunctionIds | array | — | Filter Profiles by these LinkedIn function IDs. Example: `8` for 'Engineering'. |
| excludeCompanyHeadquarterLocations | array | — | Exclude Profiles by their current company's headquarter location. |
| startPage | integer | — | The page number to start scraping from. (default 1) |
| takePages | integer | — | The number of search pages to scrape. Each page contains 25 profiles. |
| autoQuerySegmentation | boolean | — | Enable automatic query segmentation to split broad search queries into smaller segments based on LinkedIn filters. This helps in scraping a larger number of unique profiles without hitting LinkedIn's search limits. |
| autoQuerySegmentationLevels | array | — | Select the segmentation levels to be used for automatic query segmentation. |
| autoQuerySegmentationTargetCountries | array | — | Select the target country to focus the automatic query segmentation. This helps in narrowing down the search results to a specific geographic location. |
| profileDeduplicationMode | string (off, insert_ids, insert_profiles, read_only) | — | Choose how the actor should handle deduplication of LinkedIn profiles across multiple runs using your MongoDB database. |
| mongoDbConnectionString | string | — | Your MongoDB connection string to the database where the actor will store and check scraped profile IDs for deduplication. Example: `mongodb+srv://:@cluster0.mongodb.net` |
| mongoDbDatabaseName | string | — | The name of the MongoDB database where the actor will store and check scraped profile IDs for deduplication. Default name is: `harvestapi` |
| postFilteringMongoDbQuery | object | — | A MongoDB query in JSON format to further filter the scraped profiles before saving them to the dataset. |
| postFilteringMongoDbAggregation | array | — | A MongoDB aggregation pipeline in JSON format to further filter the scraped profiles before saving them to the dataset. |
Run it
curl -s https://sooma.dev/v1/run \
-H "Authorization: Bearer $SOOMA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"provider":"apify","endpoint":"/harvestapi/linkedin-profile-search","input":{}}'
Or ask your agent: it will call inspect for this schema and run it over MCP.