Common Discover Searches

Recipes for the searches teams run most. Recipes 1–5 run on both API versions; 6–10 use v3-only features: prose search, company keywords, graph expansion, every matching role, and person exclusions. Use the v2 / v3 switch on any sample, or in the sidebar, to flip the page. Filters mean the same thing on each version; only the request shape differs (see How Discover Works).

Filters are grouped by entity: workExperience, company, person, vendorgraphics. Every field takes and / or / not; ranges take min/max or gte/lte. Values use the normalized vocabularies in the API reference. The API reference’s Discover page has more worked examples, one per capability.

1. Senior engineering leaders at mid-size software companies#

The classic ICP search: function + seniority + employer profile.

Request body
{
  "workExperience": {
    "role": { "or": ["engineering"] },
    "seniority": { "or": ["vp", "cxo"] }
  },
  "company": {
    "industry": { "or": ["computer software"] },
    "employeeCountRange": { "or": ["201-500", "501-1000", "1001-5000"] }
  }
}

2. Recently changed jobs#

New-in-role contacts are the highest-converting outreach segment. Filter on currentStartDateAtCompany — when the person started their current stint at the employer:

Request body
{
  "workExperience": {
    "role": { "or": ["operations"] },
    "seniority": { "or": ["director", "vp"] },
    "currentStartDateAtCompany": { "gte": "2026-03" }
  }
}

3. People at companies that use a specific product#

Combine a vendorgraphics filter with person and company filters — e.g. everyone in data engineering or data science roles at companies using a competitor’s warehouse, excluding a known account. Product IDs come from the Product Catalog (see Vendorgraphics).

Request body
{
  "workExperience": {
    "subrole": { "or": ["data_engineering", "data_science"] }
  },
  "vendorgraphics": {
    "aggkProductId": { "or": [48211] },
    "filterByDetectionPeriod": true,
    "detectionPeriodBuffer": "SIX_MONTHS"
  },
  "company": {
    "aggkCompanyId": { "not": [65731533] }
  }
}
The detection-window filter narrows results to people whose time at the company overlaps the window in which the product was actually detected — otherwise you get today’s employees at a company that used the product years ago. It is not enforced when the product resolves to more than 100 companies; the response says so in warnings.

4. A function in a specific location#

Person location filters describe where the person is, which is not where the company is — an engineer in Berlin at a US-headquartered firm matches person.country: germany and company.country: united states. Filter on whichever one your campaign actually targets.

Request body
{
  "workExperience": {
    "role": { "or": ["finance"] },
    "seniority": { "or": ["cxo"] }
  },
  "person": {
    "personLocality": { "or": ["new york"] },
    "personRegion": { "or": ["new york"] }
  }
}

5. Current employees or recent leavers#

A union, not an intersection: people still in the role plus those who left it within the last year. Because the two arms disagree on employmentStatus, they cannot share one filter block.

v2 Advanced takes a single filter block, so this is two requests — one with personFilter: CURRENT, one with PAST_NOT_CURRENT plus an endDate floor — deduplicated by personId on your side. Switch this page to v3 to see it as one call.

Request 1 of 2 — current employees
{
  "workExperience": {
    "role": { "or": ["engineering"] },
    "personFilter": "CURRENT"
  },
  "company": {
    "employeeCountRange": { "or": ["5001-10000", "10001+"] }
  }
}
Request 2 of 2 — left within the last 12 months
{
  "workExperience": {
    "role": { "or": ["engineering"] },
    "personFilter": "PAST_NOT_CURRENT",
    "endDate": { "gte": "2025-08" }
  },
  "company": {
    "employeeCountRange": { "or": ["5001-10000", "10001+"] }
  }
}

6. People who wrote about a topic#

Taxonomy finds the role; keywords finds what the person wrote about it. This search looks for data leaders whose bio or role description mentions data management or enrichment, in a role held within the last two years.

Prose search is v3-only. Switch this page to v3 to see it.

7. People at a kind of company#

When the target is defined by what the company does, not by the person’s title, use company.keywords. It matches each company’s own description and tags, then returns people there. Here: sales leaders at large dental distributors.

company.keywords is v3-only. On v2, resolve the companies first (Company Match or a category search) and pass their IDs in company.aggkCompanyId.

8. An account and everything around it#

Account-based lists rarely stop at one legal entity. company.expansion grows the aggkCompanyId seeds before the search runs. The corporate tree keeps the seeds, and firmographic filters in the same block apply after expansion.

company.expansion is v3-only. Switch this page to v3 to see it.

9. Everyone at a list of accounts, with every role they hold there#

A person can match through more than one role, such as a founder who also holds a VP seat elsewhere. The result is still one person.

v2 returns one matching position per person. Switch this page to v3 to see every role that matched.

10. Leave out people you already have#

Re-running a segment should not return the contacts already in your CRM. Exclude them by person ID, up to 1,000 per group.

person.aggkPersonId exclusion is v3-only. On v2, drop known personIds from the results on your side.

11. Alumni of a school#

A school is a company in AggKnowledge, so it is filtered by the same aggkCompanyId person enrichment returns on each education entry. School filters look at a person’s whole education history, not one role, so not removes the person outright.

School filters are v3-only. Switch this page to v3 to see the request.

12. Leave out everyone who has worked at a company#

Exclude by employer history, not by the matching role. This search finds people whose bio mentions Salesforce, minus everyone who works there now or ever did. person.employerAggkCompanyId holds every company the person has worked at, so not removes the person outright.

Employer filters are v3-only. Switch this page to v3 to see the request.

Tip: Always run Count results with the same body first — it’s free on both versions, and the cheapest way to sanity-check a filter before paging. See How Discover Works.