Guides

Company and person filters

The 51 typed filters for company and person searches, with their value shapes.

These filters apply to company and person searches. They are typed end to end, and all nested under filters. Which side a filter applies to is not part of the contract: a person-side filter on a company search is routed through the join. So seniority is legal on a company search, where it constrains which companies have a matching employee.

GroupFilterShape
SharedgeoGeoFilter — see Geography filter
Classificationindustry, sub_industry, b2b_b2c, product_service, naics, sic, profit_nonprofit, gov_nongov, industries_servedTermsFilter
Size & ageemployee_count, revenue, founded_year, linkedin_followersRangeFilter
Size & ageglobal_presence{ gte?, lte?, min_countries? } — gte is a per-country headcount floor; at least one of the three
Size & ageemployee_by_department{ bounds: [{ department, min?, max? }] } — every bound must hold, and each needs a min and/or max
Identitycompany, owned_by_organizationEntityFilter
Identityis_subsidiary, domain_presence, linkedin_presenceTermsFilter — values travel as the strings "true" / "false"
Identitylisting_status, stock_exchangeTermsFilter — listing_status is public, private or delisted; stock_exchange is the exchange a listed company trades on (NASDAQ, NYSE, …)
Signalstechnology, company_keywordTermsFilter
Signalskeywords{ include, exclude, match_all, target_fields } — target_fields is required, at least one of name / keywords / description
Fundingfunding_stageTermsFilter
FundinginvestorsEntityFilter
Fundingtotal_funding, last_funding_amountRangeFilter
Fundinglast_funding_dateDateBound, bare
Hiringhiring_roleTextFilter
Hiringhiring_type, hiring_locationTermsFilter
Hiringhiring_recencyDateBound, bare
Personseniority, department, skills, certifications, university, degreeTermsFilter
Persongovernance_level, employment_type, has_direct_access_to_c_suiteTermsFilter — see below
Persontitle, personTextFilter
Personemployment_historyEmploymentHistoryFilter
Persontenure, linkedin_connectionsRangeFilter
Personyears_workedRangeFilter, whole years worked across every job held. gte: N: some job started at least N years ago. lte: N: none started earlier than N years ago, so lte: 3 is early career. Time in the current role is tenure
Personlast_job_changedDateBound, bare

At least one filter must be set. An empty filters: {} is rejected the same as sending none at all.

{
  "category": "company",
  "filters": {
    "industry": { "include": ["Software & Technology"] },
    "employee_count": { "gte": 500, "lte": 5000 }
  },
  "limit": 10
}

Three filters are entity references rather than terms: company, owned_by_organization and investors. Their values are tokens that still need resolving to a record, so a bare string is a 422 naming the array index:

"company": { "include": ["stripe.com"] }              // ✗ 422
"company": { "include": [{ "value": "stripe.com" }] }  // ✓

employment_history's company is the same reference shape, nested one level down inside each group (see below).

The three person axes added in taxonomy v3#

Three filters answer questions seniority cannot, because they are not points on the same ladder. All three are TermsFilters on the person axis, so they narrow a person search directly and a company search through the join.

FilterValuesWhat it separates
governance_levelFounder, Co Founder, Owner, Partner, Board Member, Investor, AdvisorStanding in the company, not rank in it. A board member is not a VP with a different title
employment_typeFull Time, Part Time, Freelancer, Contractor, Consultant (External)How someone is engaged. A contractor with a director's title is a different prospect from a director
has_direct_access_to_c_suite"true" / "false" — the strings, like every other boolean-shaped terms filterReach rather than rank: who can actually get the meeting

employment_history — independently-scoped past jobs#

Each entry in groups is one past job, matched independently. Naming two groups never merges their company/title/dates into one shared condition:

{
  "employment_history": {
    "groups": [
      { "company": { "include": [{ "value": "amazon.com" }] } },
      {
        "company": { "include": [{ "value": "netflix.com" }] },
        "title": { "include": ["product manager"] }
      }
    ]
  }
}

A group needs at least one attribute (company, title, role_started, role_ended, tenure_gte, tenure_lte). An empty {} is a 422.