View raw JSON
{
"type": "object",
"required": [],
"properties": {
"body": {
"type": "object",
"title": "Search LinkedIn Profiles",
"properties": {
"schools": {
"type": "array",
"title": "School Filter",
"editor": "stringList",
"maxItems": 50,
"description": "Optional school filters, up to 50 entries; for example, Stanford University. A match reflects source education information, not independent degree verification."
},
"maxItems": {
"type": "integer",
"title": "Maximum number of profiles to scrape",
"prefill": 20,
"description": "Requested profile limit across the whole run, including all queries and segments. The prefilled 20 is an example, not a default. Supply a positive profile cap or a positive page cap; actual counts can be lower and this is not a fee cap."
},
"lastNames": {
"type": "array",
"title": "Last Names Filter",
"editor": "stringList",
"maxItems": 50,
"description": "Optional list of last-name filters, up to 50 entries. Names help narrow candidates and do not establish a unique person or verified identity."
},
"locations": {
"type": "array",
"title": "Locations Filter",
"editor": "stringList",
"maxItems": 70,
"description": "Optional profile-location filters, up to 70 entries. Use clear names such as United Kingdom; source autocomplete can interpret abbreviations differently. These are source locations, not verified residence or work eligibility."
},
"startPage": {
"type": "integer",
"title": "Start Page",
"default": 1,
"maximum": 100,
"minimum": 1,
"description": "First search page to request, from 1 to 100; default 1. This selects where retrieval starts, not how many pages to retrieve.",
"sectionCaption": "Pagination options"
},
"takePages": {
"type": "integer",
"title": "Scrape search pages",
"maximum": 100,
"minimum": 0,
"description": "Number of search pages to request, from 0 to 100, with no default. Choose a positive page cap for a bounded request. With automatic segmentation, this cap applies separately to each segment, so total pages can be higher; pages do not guarantee fixed profile counts."
},
"firstNames": {
"type": "array",
"title": "First Names Filter",
"editor": "stringList",
"maxItems": 50,
"description": "Optional list of first-name filters, up to 50 entries. Use names as candidate filters rather than proof of a specific person."
},
"functionIds": {
"type": "array",
"items": {
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"20",
"21",
"22",
"23",
"24",
"25",
"26"
],
"type": "string",
"enumTitles": [
"Accounting",
"Administrative",
"Arts and Design",
"Business Development",
"Community and Social Services",
"Consulting",
"Education",
"Engineering",
"Entrepreneurship",
"Finance",
"Healthcare Services",
"Human Resources",
"Information Technology",
"Legal",
"Marketing",
"Media and Communication",
"Military and Protective Services",
"Operations",
"Product Management",
"Program and Project Management",
"Purchasing",
"Quality Assurance",
"Real Estate",
"Research",
"Sales",
"Customer Success and Support"
]
},
"title": "Function Filter",
"editor": "select",
"description": "Optional job-function string IDs from the listed choices; for example, \"8\" means Engineering. These IDs describe source categories."
},
"industryIds": {
"type": "array",
"title": "Industry IDs Filter",
"editor": "stringList",
"maxItems": 50,
"description": "Optional LinkedIn industry IDs, up to 50 entries; for example, \"4\" represents Software Development. These identify industry categories, not Toolmu records or verified skills."
},
"searchQuery": {
"type": "string",
"title": "Search query (fuzzy search)",
"editor": "textfield",
"maxLength": 300,
"description": "Optional fuzzy-search phrase, up to 300 characters; for example, Software Engineer. Supported source search operators may be used. Keyword matching does not verify identity or qualifications."
},
"pastCompanies": {
"type": "array",
"title": "Past Company Filter",
"editor": "stringList",
"maxItems": 50,
"description": "Optional list of full LinkedIn company URLs for past-company associations, up to 50 entries. Past associations are separate from current employment."
},
"pastJobTitles": {
"type": "array",
"title": "Past Job Title Filter",
"editor": "stringList",
"maxItems": 50,
"description": "Optional past-job-title filters, up to 50 entries; for example, Software Engineer. The filter concerns prior roles, not a current-role check."
},
"excludeSchools": {
"type": "array",
"title": "Exclude School Filter",
"editor": "stringList",
"maxItems": 50,
"description": "Optional schools to exclude, up to 50 entries; for example, Stanford University. This excludes matching source education context."
},
"companyHeadcount": {
"type": "array",
"items": {
"enum": [
"A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I"
],
"type": "string",
"enumTitles": [
"Self-Employed",
"1-10",
"11-50",
"51-200",
"201-500",
"501-1,000",
"1,001-5,000",
"5,001-10,000",
"10,001+"
]
},
"title": "Company Headcount Filter",
"editor": "select",
"description": "Optional size bands for a profile's current associated company, using string codes A–I. These are company headcount bands, not a person's team size or verified current staffing."
},
"currentCompanies": {
"type": "array",
"title": "Current Company Filter",
"editor": "stringList",
"maxItems": 50,
"description": "Optional full LinkedIn company URLs, up to 50 entries, to find source-associated candidate profiles. Results are not an employer-authorized or complete staff roster."
},
"currentJobTitles": {
"type": "array",
"title": "Current Job Title Filter",
"editor": "stringList",
"maxItems": 50,
"description": "Optional current-job-title filters, up to 50 entries; for example, Software Engineer. Returned role claims are not independently verified employment."
},
"excludeLocations": {
"type": "array",
"title": "Exclude Locations Filter",
"editor": "stringList",
"maxItems": 70,
"description": "Optional profile locations to exclude, up to 70 entries. Use full, clear place names because source suggestions can be ambiguous; this is separate from company headquarters.",
"sectionCaption": "Excluding filters"
},
"profileLanguages": {
"type": "array",
"items": {
"enum": [
"Arabic",
"English",
"Spanish",
"Portuguese",
"Chinese",
"French",
"Italian",
"Russian",
"German",
"Dutch",
"Turkish",
"Tagalog",
"Polish",
"Korean",
"Japanese",
"Malay",
"Norwegian",
"Danish",
"Romanian",
"Swedish",
"Bahasa Indonesia",
"Czech"
],
"type": "string"
},
"title": "Profile Languages Filter",
"editor": "select",
"description": "Optional profile-language choices from the listed values. This filters source profile language; it does not translate records or verify spoken fluency."
},
"seniorityLevelIds": {
"type": "array",
"items": {
"enum": [
"100",
"110",
"120",
"130",
"200",
"210",
"220",
"300",
"310",
"320"
],
"type": "string",
"enumTitles": [
"In Training",
"Entry Level",
"Senior",
"Strategic",
"Entry Level Manager",
"Experienced Manager",
"Director",
"Vice President",
"CXO",
"Owner / Partner"
]
},
"title": "Seniority Level Filter",
"editor": "select",
"description": "Optional seniority string IDs from the listed choices; for example, \"120\" means Senior. Categories are source classifications, not verified responsibility or authority."
},
"excludeFunctionIds": {
"type": "array",
"items": {
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"20",
"21",
"22",
"23",
"24",
"25",
"26"
],
"type": "string",
"enumTitles": [
"Accounting",
"Administrative",
"Arts and Design",
"Business Development",
"Community and Social Services",
"Consulting",
"Education",
"Engineering",
"Entrepreneurship",
"Finance",
"Healthcare Services",
"Human Resources",
"Information Technology",
"Legal",
"Marketing",
"Media and Communication",
"Military and Protective Services",
"Operations",
"Product Management",
"Program and Project Management",
"Purchasing",
"Quality Assurance",
"Real Estate",
"Research",
"Sales",
"Customer Success and Support"
]
},
"title": "Exclude Function Filter",
"editor": "select",
"description": "Optional job-function string IDs to exclude; for example, \"8\" excludes Engineering. Choose values from the listed categories."
},
"excludeIndustryIds": {
"type": "array",
"title": "Exclude Industry IDs Filter",
"editor": "stringList",
"maxItems": 50,
"description": "Optional LinkedIn industry IDs to exclude, up to 50 entries; for example, \"4\" for Software Development."
},
"profileScraperMode": {
"enum": [
"Short",
"Full",
"Full + email search"
],
"type": "string",
"title": "Profile Scraper Mode",
"default": "Full",
"enumTitles": [
"Short ($0.1 per search page up to 25 short profiles)",
"Full ($0.1 per search page + $0.004 per full profile)",
"Full + email search ($0.1 per search page + $0.01 per full profile)"
],
"description": "Choose explicitly: Short retrieves basic search context; Full, the default, additionally visits found profiles for available detail; Full + email search attempts independent email discovery. Extra retrieval can add usage, and emails or complete details are not guaranteed."
},
"mongoDbDatabaseName": {
"type": "string",
"title": "MongoDB Database Name",
"editor": "textfield",
"maxLength": 100,
"description": "Optional MongoDB database name, up to 100 characters, for the configured deduplication store. The supplier describes harvestapi as the fallback name when omitted."
},
"recentlyChangedJobs": {
"type": "boolean",
"title": "Recently Changed Jobs Filter",
"description": "Optional flag requesting profiles with source-reported job changes in the last 90 days. It does not establish current availability for work."
},
"excludePastCompanies": {
"type": "array",
"title": "Exclude Past Company Filter",
"editor": "stringList",
"maxItems": 50,
"description": "Optional full LinkedIn company URLs for past-company associations to exclude, up to 50 entries."
},
"excludePastJobTitles": {
"type": "array",
"title": "Exclude Past Job Title Filter",
"editor": "stringList",
"maxItems": 50,
"description": "Optional past-job-title filters to exclude, up to 50 entries; for example, Software Engineer."
},
"yearsOfExperienceIds": {
"type": "array",
"items": {
"enum": [
"1",
"2",
"3",
"4",
"5"
],
"type": "string",
"enumTitles": [
"Less than 1 year",
"1 to 2 years",
"3 to 5 years",
"6 to 10 years",
"More than 10 years"
]
},
"title": "Years of Experience Filter",
"editor": "select",
"description": "Optional string codes for total experience: \"1\" less than 1 year, \"2\" 1–2, \"3\" 3–5, \"4\" 6–10, \"5\" more than 10. This differs from tenure at the current company and is not independently verified service history."
},
"autoQuerySegmentation": {
"type": "boolean",
"title": "Enable Automatic Query Segmentation",
"description": "Optional flag splitting a broad search into additional internal queries. It can add pages and usage, including segments with no results. Page limits apply per segment; the profile cap remains global.",
"sectionCaption": "Automatic Query Segmentation"
},
"excludeCurrentCompanies": {
"type": "array",
"title": "Exclude Current Company Filter",
"editor": "stringList",
"maxItems": 50,
"description": "Optional full LinkedIn company URLs for current-company associations to exclude, up to 50 entries."
},
"excludeCurrentJobTitles": {
"type": "array",
"title": "Exclude Current Job Title Filter",
"editor": "stringList",
"maxItems": 50,
"description": "Optional current-job-title filters to exclude, up to 50 entries; for example, Software Engineer."
},
"mongoDbConnectionString": {
"type": "string",
"title": "MongoDB Connection String",
"editor": "textfield",
"isSecret": true,
"description": "Optional secret connection string for your MongoDB deduplication store. The selected mode determines whether existing records are checked and new IDs or profiles are stored. Omit it when deduplication is off."
},
"excludeSeniorityLevelIds": {
"type": "array",
"items": {
"enum": [
"100",
"110",
"120",
"130",
"200",
"210",
"220",
"300",
"310",
"320"
],
"type": "string",
"enumTitles": [
"In Training",
"Entry Level",
"Senior",
"Strategic",
"Entry Level Manager",
"Experienced Manager",
"Director",
"Vice President",
"CXO",
"Owner / Partner"
]
},
"title": "Exclude Seniority Level Filter",
"editor": "select",
"description": "Optional seniority string IDs to exclude, using the listed choices; for example, \"120\" for Senior."
},
"profileDeduplicationMode": {
"enum": [
"off",
"insert_ids",
"insert_profiles",
"read_only"
],
"type": "string",
"title": "Profile Deduplication Mode",
"enumTitles": [
"Off [default] (do not skip any profiles)",
"Insert IDs [recommended for deduplication] (skip already scraped profiles and store new profile IDs)",
"Insert Profiles (skip already scraped profiles and store full profile data)",
"Read Only (only skip already scraped profiles, do not store new profile IDs)"
],
"description": "Optional mode for your configured MongoDB store: off does not skip previously stored profiles; insert_ids skips profiles with already stored IDs and saves new IDs; insert_profiles skips profiles with already stored IDs and saves newly returned profile records; read_only skips profiles with already stored IDs without adding IDs or profiles to this store. Deduplication may require more search pages.",
"sectionCaption": "Deduplication"
},
"recentlyPostedOnLinkedIn": {
"type": "boolean",
"title": "Recently Posted on LinkedIn Filter",
"description": "Optional flag requesting profiles with source-reported LinkedIn posting in the last 30 days. This is a profile filter and does not collect their post text."
},
"yearsAtCurrentCompanyIds": {
"type": "array",
"items": {
"enum": [
"1",
"2",
"3",
"4",
"5"
],
"type": "string",
"enumTitles": [
"Less than 1 year",
"1 to 2 years",
"3 to 5 years",
"6 to 10 years",
"More than 10 years"
]
},
"title": "Years at Current Company Filter",
"editor": "select",
"description": "Optional distinct string codes for tenure at the current company: \"1\" less than 1 year, \"2\" 1–2, \"3\" 3–5, \"4\" 6–10, \"5\" more than 10. This differs from total experience and does not verify current employment.",
"uniqueItems": true
},
"postFilteringMongoDbQuery": {
"type": "object",
"title": "Post-Filtering MongoDB Query",
"editor": "json",
"description": "Optional MongoDB query JSON object to filter profiles after retrieval. Set a positive takePages limit when using it. Filtering does not reduce profiles already fetched or their incurred usage.",
"sectionCaption": "Post-Filtering"
},
"autoQuerySegmentationLevels": {
"type": "array",
"items": {
"enum": [
"default",
"country",
"state",
"seniority_level",
"industry"
],
"type": "string",
"enumTitles": [
"Default (Country, State, Seniority Level)",
"Country",
"State",
"Seniority Level",
"Industry"
]
},
"title": "Automatic Query Segmentation Levels",
"editor": "select",
"description": "Optional choices for automatic segmentation: default uses country, state and seniority levels; country, state, seniority_level or industry select individual levels. A location filter skips country/state segmentation; an industry filter skips industry segmentation."
},
"companyHeadquarterLocations": {
"type": "array",
"title": "Company Headquarter Locations Filter",
"editor": "stringList",
"maxItems": 70,
"description": "Optional current-company headquarters filters, up to 70 entries. Headquarters location is separate from the person's profile location and does not prove where that person works."
},
"postFilteringMongoDbAggregation": {
"type": "array",
"items": {
"type": "object"
},
"title": "Post-Filtering MongoDB Aggregation",
"editor": "json",
"description": "Optional JSON array of MongoDB aggregation stages for refining retrieved profiles. Use a positive takePages limit. Processing happens after retrieval and does not reduce earlier collection usage."
},
"excludeCompanyHeadquarterLocations": {
"type": "array",
"title": "Exclude Company Headquarter Locations Filter",
"editor": "stringList",
"maxItems": 70,
"description": "Optional current-company headquarters locations to exclude, up to 70 entries. These locations concern the company rather than the candidate's residence."
},
"autoQuerySegmentationTargetCountries": {
"type": "array",
"items": {
"enum": [
"US",
"IN",
"BR",
"CN",
"GB",
"FR",
"CA",
"ID",
"MX",
"IT",
"ES",
"AU",
"DE",
"TR",
"NL",
"PH",
"CO",
"AR",
"ZA",
"CL",
"MY",
"NG",
"AE",
"EG",
"BE",
"SE",
"SA",
"PL",
"PT",
"CH",
"KR",
"DK",
"RO",
"SG",
"JP",
"TW",
"IE",
"KE",
"NZ",
"IL",
"NO",
"AT",
"FI"
],
"type": "string",
"enumTitles": [
"United States",
"India",
"Brazil",
"China",
"United Kingdom",
"France",
"Canada",
"Indonesia",
"Mexico",
"Italy",
"Spain",
"Australia",
"Germany",
"Türkiye",
"Netherlands",
"Philippines",
"Colombia",
"Argentina",
"South Africa",
"Chile",
"Malaysia",
"Nigeria",
"United Arab Emirates",
"Egypt",
"Belgium",
"Sweden",
"Saudi Arabia",
"Poland",
"Portugal",
"Switzerland",
"South Korea",
"Denmark",
"Romania",
"Singapore",
"Japan",
"Taiwan",
"Ireland",
"Kenya",
"New Zealand",
"Israel",
"Norway",
"Austria",
"Finland"
]
},
"title": "Target Countries for Automatic Query Segmentation",
"editor": "select",
"description": "Optional country codes from the listed choices to focus automatic segmentation. This is separate from the general profile-location filter and does not guarantee complete national coverage."
}
},
"schemaVersion": 1
}
},
"additionalProperties": false
}