Skip to main content
POST
Search for People

Authorizations

Authorization
string
header
required

Pass your API key as a Bearer token. Keys follow the format ms_XXXXXXXXXXX.

Body

application/json
query
string

Full-text search across full_name, first_name, last_name, company name, title (~85% filled), and headline (~65% filled) using cross-field matching. Multi-word queries distribute terms across fields — "John Smith" matches first_name: John AND last_name: Smith rather than requiring either field alone to contain the full string. Best for person names, and for loose natural-language phrases when nothing more specific fits. For a job title or role, use the title filter instead: a role placed here is diluted across names and company names and only needs most of its terms to match, so "Account Executive" in query can also return Account Managers. Likewise use seniority for level (VP, Director, C-suite), and company or company_domain for a specific employer. Categorical values like country or seniority belong in their own filter params rather than this field.

Example:

"Jane Doe"

title
string

Job title filter (~85% filled) — scopes results to people whose job title matches, and the precise way to search by role. The match is analysed rather than literal: a one or two word title requires every word, so "Account Executive" will not return Account Managers. A longer title requires 75% of its words, rounded down — a three or four word title must match all but one, a five or six word title all but two. That allowance is what stops function words breaking a match, so "VP of Sales" still finds "VP, Sales". Extra words in the stored title are always fine: "Account Executive" matches "Senior Account Executive, SMB". Prefer this over putting a role in query. For seniority level use the seniority filter, which is a clean enumerated list, and use title for the role or function itself — the two combine, e.g. title: "Sales" with seniority: "VP". Around 15% of profiles carry no title at all, and those can never match a title filter.

Example:

"Account Executive"

company
string

Company name filter — scopes results to people whose employer's name matches. Analysed match: every word you provide must appear in the company name, so extra words in the stored name are fine ("Acme" matches "Acme Corporation"). Use this when you have a company name but not its domain; if you have the domain, prefer company_domain, which is more precise.

Example:

"MoltSets"

company_domain
string

Company domain filter — scopes results to people at the company with this website domain. Full URLs are normalised automatically ("https://www.acme.com/about" → "acme.com"), so there is no need to strip the protocol or path yourself. The most precise way to target a single company — prefer it over company whenever you know the domain.

Example:

"moltsets.com"

country
string

Exact country name filter (~99% filled — most reliable filter). Must match the stored value exactly. Top values by volume: "United States", "India", "United Kingdom", "Brazil", "Canada", "France", "Mexico", "Australia", "China", "Spain", "Netherlands", "Italy", "Indonesia", "Germany", "Philippines", "Turkey", "South Africa", "Saudi Arabia", "Argentina", "Singapore", "United Arab Emirates", "Colombia", "South Korea", "Malaysia", "Poland", "Belgium", "Switzerland", "Ireland", "Sweden", "Denmark", "Norway", "Austria", "Portugal", "Israel", "New Zealand", "Finland", "Greece", "Hungary", "Romania", "Ukraine". Use the full English country name. "UK" and "HK" also exist in the data as dirty values — prefer "United Kingdom" and "Hong Kong".

Example:

"United States"

state
string

Exact state or region name filter on the person's location. Must match the stored value exactly — full names with standard capitalisation, not abbreviations ("Texas", not "TX"). Combine with country for precision.

Example:

"Texas"

city
string

Exact city name filter on the person's location. Must match the stored value exactly, with standard capitalisation. City names repeat across regions, so combine with state and/or country to disambiguate — e.g. city: "Portland", state: "Oregon". Matches only the exact stored city, not its suburbs — for a metro-area search prefer state or country.

Example:

"Austin"

seniority
enum<string>

Exact seniority level filter (~60% filled). Must match one of the enumerated values exactly, including the space in "C Suite" (not a hyphen).

Available options:
Intern,
Entry,
Senior,
Manager,
Director,
VP,
Head,
C Suite,
Owner,
Partner
industry
enum<string>

Exact current industry filter (~60% filled). These 22 buckets are the only supported values, and must match exactly, including capitalisation and punctuation (e.g. the ampersand in "Marketing & Advertising").

Available options:
Professional and Business Services,
Information Technology,
Manufacturing,
Retail,
Health and Pharmaceuticals,
Creative Arts and Entertainment,
Construction,
Marketing & Advertising,
Finance and Banking,
Tourism and Hospitality,
Non-Profit and Social Services,
Food and Beverage,
Real Estate,
Education,
Transportation and Logistics,
Media and Publishing,
Energy,
Government and Public Administration,
Automotive,
Telecommunications,
Agriculture,
Utilities
department
enum<string>

Exact department filter (~60% filled). Shares its underlying data with functional_area — use one or the other, not both. Must match one of the enumerated values exactly, including capitalisation and punctuation (e.g. the ampersand in "Medical & Health").

Available options:
Operations,
Sales,
Information Technology,
Education,
Engineering,
Finance,
Medical & Health,
Marketing,
Human Resources,
Design,
Consulting,
Legal
functional_area
enum<string>

Exact functional area filter (~60% filled). Shares its underlying data with department — use one or the other, not both.

Available options:
Operations,
Sales,
Information Technology,
Education,
Engineering,
Finance,
Medical & Health,
Marketing,
Human Resources,
Design,
Consulting,
Legal
employee_range
enum<string>

Exact employee-count range filter on the person's current employer — finds people at companies of a certain size without needing to name a specific company. These eight numeric bands are the only supported values, and use the same vocabulary as search_companies. Combine with other filters, e.g. seniority: "VP", employee_range: "51-200".

Available options:
1-10,
11-20,
21-50,
51-200,
201-500,
501-1000,
1001-5000,
5001+
revenue_range
enum<string>

Exact annual revenue range filter on the person's current employer — finds people at companies of a certain revenue without needing to name a specific company. These seven bands are the only supported values, and use the same vocabulary as search_companies. "Above $50M" is a flat catch-all for all revenue over $50M; there is no finer band above it.

Available options:
Below $500k,
$500k - $1M,
$1M - $5M,
$5M - $10M,
$10M - $20M,
$20M - $50M,
Above $50M
naics_code
string

Exact NAICS industry code filter on the person's current employer (~50% filled). Works at any level of the hierarchy, from the 2-digit sector ("23" = Construction, "54" = Professional Services) through to the 6-digit national industry ("541120" = Offices of Notaries, "511210" = Software Publishers). Use a short code for broad industry targeting and a longer code for precision. The most standardised industry filter available — prefer it over industry when you need fine-grained targeting.

Example:

"541120"

linkedin_industry
string

Exact LinkedIn industry label filter on the person's current employer. Uses LinkedIn's own industry vocabulary, which is far finer-grained than the 22 buckets in industry. Must match the stored label exactly, with standard capitalisation — for example "Software Development", "Hospitality", "Legal Services", "Wellness and Fitness Services", "Construction", "Staffing and Recruiting". Use when a niche industry cannot be expressed by the broad industry buckets.

Example:

"Software Development"

exclude_company_domain
string[]

Company domains to exclude. People at any listed company are dropped from the results — this is the suppression list, so pass the accounts you already have (existing customers, current vendors, your own company) and they never come back. Full URLs are normalised automatically, exactly as with company_domain. Excluded records cost you nothing: they consume no tokens and no fair use records, so excluding here is always cheaper than filtering the results yourself.

Example:
exclude_country
string[]

Countries to exclude. People in any listed country are dropped. Accepts the same values as country — use it when you want everywhere except a few places.

Example:
exclude_state
string[]

States or regions to exclude. People in any listed state are dropped. Accepts the same values as state (full names, never abbreviations). Combine with a positive country — for example country: "United States" with exclude_state: ["California"].

Example:
exclude_industry
string[]

Industries to exclude. People whose current industry is any listed value are dropped. Accepts the same values as industry. Around 40% of profiles carry no industry at all, and exclusion only removes profiles that positively carry a listed value — so those profiles still appear.

Example:
exclude_seniority
string[]

Seniority levels to exclude. People at any listed level are dropped. Accepts the same values as seniority (note the space in "C Suite"). Same caveat as exclude_industry: profiles with no seniority on record are not excluded.

Example:
exclude_employee_range
string[]

Employer size bands to exclude. People at companies in any listed band are dropped. Accepts the same values as employee_range — for example ["1-10", "11-20"] to skip very small companies, or ["5001+"] to skip enterprises.

Example:
limit
integer
default:10

Number of results to return (default: 10, max: 25).

Required range: 1 <= x <= 25
offset
integer
default:0

Number of results to skip for pagination (default: 0). Use with limit to page through results — e.g. offset: 10 to get the second page of 10 results.

Response

Success