---
title: "Discover contacts grouped by domain"
method: POST
path: "/contacts/discover"
---

# Discover contacts grouped by domain

`POST /contacts/discover`

Search for business contacts and return them grouped by company domain, with firmographic data included per company. Bills net-new contacts and net-new firmo domains.

## Request body

- ContactFilters — Full contact filters combining persona and company filters.
  - `filter_industry` string[], nullable — Filter by industry category. Valid values: ACCOUNTING, ADVERTISING_AND_MARKETING, AGRICULTURE_AND_NATURAL_RESOURCES, ALCOHOL_AND_TOBACCO, AUTOMOTIVE, BIG_DATA_AND_ANALYTICS, BIOTECHNOLOGY, BLOCKCHAIN_AND_CRYPTOCURRENCY, BUSINESS_PRODUCTS_AND_SERVICES, CLOUD_COMPUTING, COMPUTER_HARDWARE_AND_SEMICONDUCTORS, CONGLOMERATES_SHELL_AND_HOLDING_COMPANIES, CONSTRUCTION, CONSUMER_PRODUCTS, CONSUMER_SERVICES, CYBERSECURITY, DEFENSE_AND_AEROSPACE, E-COMMERCE, EDUCATION, ENERGY, ENGINEERING, ENTERTAINMENT, ENVIRONMENTAL_SERVICES, FASHION_TEXTILE_AND_APPAREL, FINANCIAL_SERVICES, FOOD_AND_BEVERAGE, GAMING_AND_ESPORTS, GOVERNMENT_SERVICES, HEALTHCARE, HOSPITALITY, HUMAN_RESOURCES, INSURANCE, IT_SERVICES, LEGAL, MANUFACTURING, MEDIA, MINING_AND_METALS, NONPROFIT_AND_PHILANTHROPY, OIL_AND_GAS, PHARMACEUTICALS, PRIVATE_EQUITY_AND_VENTURE_CAPITAL, REAL_ESTATE, RENEWABLE_ENERGY, RESTAURANTS, RETAIL, SAAS, SECURITY, SOFTWARE, SPORTS_AND_RECREATION, SUPPLY_CHAIN_AND_PROCUREMENT, TELECOMMUNICATIONS, TRAVEL, WELLNESS_AND_LIFESTYLE.
  - `negate_filter_industry` string[], nullable — Exclude contacts at companies in specified industries. Valid values: ACCOUNTING, ADVERTISING_AND_MARKETING, AGRICULTURE_AND_NATURAL_RESOURCES, ALCOHOL_AND_TOBACCO, AUTOMOTIVE, BIG_DATA_AND_ANALYTICS, BIOTECHNOLOGY, BLOCKCHAIN_AND_CRYPTOCURRENCY, BUSINESS_PRODUCTS_AND_SERVICES, CLOUD_COMPUTING, COMPUTER_HARDWARE_AND_SEMICONDUCTORS, CONGLOMERATES_SHELL_AND_HOLDING_COMPANIES, CONSTRUCTION, CONSUMER_PRODUCTS, CONSUMER_SERVICES, CYBERSECURITY, DEFENSE_AND_AEROSPACE, E-COMMERCE, EDUCATION, ENERGY, ENGINEERING, ENTERTAINMENT, ENVIRONMENTAL_SERVICES, FASHION_TEXTILE_AND_APPAREL, FINANCIAL_SERVICES, FOOD_AND_BEVERAGE, GAMING_AND_ESPORTS, GOVERNMENT_SERVICES, HEALTHCARE, HOSPITALITY, HUMAN_RESOURCES, INSURANCE, IT_SERVICES, LEGAL, MANUFACTURING, MEDIA, MINING_AND_METALS, NONPROFIT_AND_PHILANTHROPY, OIL_AND_GAS, PHARMACEUTICALS, PRIVATE_EQUITY_AND_VENTURE_CAPITAL, REAL_ESTATE, RENEWABLE_ENERGY, RESTAURANTS, RETAIL, SAAS, SECURITY, SOFTWARE, SPORTS_AND_RECREATION, SUPPLY_CHAIN_AND_PROCUREMENT, TELECOMMUNICATIONS, TRAVEL, WELLNESS_AND_LIFESTYLE.
  - `filter_country` string[], nullable — Filter by company country using ISO-3166-1 alpha-2 codes (e.g., US, GB, DE). Also accepts region aliases: EU, LATAM, MENA, APAC, NORDICS, DACH, BENELUX, GCC, ASEAN, CEE, ANZ.
  - `negate_filter_country` string[], nullable — Exclude contacts at companies in specified countries. Accepts same codes and region aliases as filter_country.
  - `filter_state` string[], nullable — Filter by company state/region.
  - `negate_filter_state` string[], nullable — Exclude contacts at companies in specified states.
  - `employee_range` string, nullable — Filter by employee count range. Format: 'min,max' (e.g., '51,200'). Maps to buckets: 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+.
  - `revenue_range` string, nullable
  - `seniority` string[], nullable — Filter by seniority bucket: executive, vp, director, manager, senior_ic, mid_level, entry_level
  - `negate_seniority` string[], nullable — Exclude contacts with these seniority levels: executive, vp, director, manager, senior_ic, mid_level, entry_level
  - `department` string[], nullable — Filter by department. Valid values: Operations, Executive, Technology, Sales - Marketing, Finance, Legal, Human Resources, Medical - Science, Customer Service, Research & Development, Administration, Public Relations, Investor Relations, Pro Services, Other.
  - `negate_department` string[], nullable — Exclude contacts in specified departments. Same valid values as `department`.
  - `skills` string[], nullable — Filter by skills. Multiple skills can be provided.
  - `name` string, nullable — Filter by contact name (partial match supported).
  - `title` string[], nullable — Filter by job title. Each item is a separate match term. Supports quoted phrases and + prefix for required terms. C-suite acronyms are auto-expanded to their spelled-out forms and vice versa (e.g. 'CEO' also matches 'Chief Executive Officer'); wrap a term in quotes to match it literally without expansion.
  - `negate_title` string[], nullable — Exclude contacts with specified job titles. C-suite acronyms are expanded the same way as in 'title'.
  - `summary` string, nullable — Filter by profile summary text (semantic search).
  - `negate_summary` string, nullable — Exclude contacts matching this summary description.
  - `person_country` string[], nullable — Filter by contact's country using ISO-3166-1 alpha-2 codes (e.g., US, GB, DE). Also accepts region aliases: EU, LATAM, MENA, APAC, NORDICS, DACH, BENELUX, GCC, ASEAN, CEE, ANZ.
  - `negate_person_country` string[], nullable — Exclude contacts in specified countries. Accepts same codes and region aliases as person_country.
  - `person_state` string[], nullable — Filter by contact's state/region.
  - `has_email` boolean — Only include contacts with email addresses.
  - `email_validated` boolean — Only include contacts with validated email addresses.
  - `has_phone` boolean — Only include contacts with phone numbers.
  - `has_mobile` boolean — Only include contacts with mobile phone numbers.
  - `has_linkedin` boolean — Only include contacts with LinkedIn profiles.
  - `min_connections` integer, nullable — Minimum LinkedIn connections required.
  - `jobstart_date` string, nullable — Filter by job start date: minimum date (YYYY-MM-DD) or range (YYYY-MM-DD,YYYY-MM-DD). Matches contacts who started their current role in this window; contacts without a known start date are excluded.
  - `persona_id` integer[], nullable — Filter by specific persona IDs.
  - `icp_text` string, nullable — Natural language description of ideal contact profile for semantic matching.
  - `negate_icp_text` string, nullable — Exclude contacts matching this profile description.
  - `icp_prompt` string, nullable — Natural language ICP description. Automatically extracts structured contact filters (seniority, department, industry, country, employee/revenue range, etc.), cleans the semantic description, and applies them before running the contact search. User-provided filters take precedence over wizard-extracted ones.
  - `domain` string[], nullable — Filter contacts at specific company domains.
  - `inclusion_query_id` string[], nullable — Include only contacts from companies in these saved queries.
  - `exclusion_query_id` string[], nullable — Exclude contacts from companies in these saved queries.
  - `max_records` integer — Maximum number of contacts to return (20-10000).
  - `max_companies` integer, nullable — Maximum number of enriched companies to return. Cannot be combined with `max_records`; when set, the internal total contact cap is derived from `max_companies * results_by_company`, capped at 10000.
  - `offset` integer — Number of results to skip for pagination.
  - `results_by_company` integer — Maximum contacts per company domain. Default 5 — i.e. without this parameter the endpoint returns up to 5 contacts from any one company so results spread across more distinct companies. Set `results_by_company=0` to remove the cap (return every matching contact per company, up to `max_records` total — or the global ceiling of 10000 when paired with `max_companies`). When the value is non-zero, `offset` is forced to 0 (pagination is disabled).
  - `include_search_contacts` boolean — Include contacts from the search index (broader coverage).
  - `consensus` integer — Number of query vectors to combine for consensus search.

## Response `200`

Successful Response

- ContactsDiscoverResponse — Response for POST /contacts/discover — indexed contacts grouped by company domain.
  - `results` object, required — Map of domain → company firmographics plus nested contacts.
  - `total_contacts` integer, required — Total matching contacts across all pages (not just this batch).
  - `total_domains` integer, required — Number of unique domains represented in this batch of results.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/discolike/apis/discolike-api.md) · [All operations](https://skmtc.net/discolike/apis/discolike-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/discolike/discolike-api/versions/3248fc62024c/schema)
