Skip to main content

Contact Search

Discover PEOPLE (contacts) at a company by job title, seniority, and location — returns a list of individuals, not company facts. Use this to find contacts at an account (e.g. 'who are the VPs of Marketing at Salesforce', 'find IT decision-makers at Cisco') and identify prospects to reach out to. Do NOT use this when: you already know the specific person and want their email/phone — use contact_enrich; you want company-level firmographics (revenue, size, industry) rather than people — use company_firmographic. PROVIDER DEPENDENCY: results come from an EXTERNAL contact provider — Apollo or ZoomInfo — auto-selected from your org's configured integrations (NOT the HG Insights data API). Coverage and fields depend on which provider is configured; with none configured this tool is unavailable. Returns basic contact info (name, title, seniority, LinkedIn, org). Costs 2 credits per call regardless of result count — batch every filter into ONE call. Filter only via the declared parameters: personTitles, personSeniorities, personLocations, organizationLocations, organizationNumEmployeesRanges, contactEmailStatus. There is NO free-text or keyword search — express intent through personTitles and personSeniorities; unknown params are silently ignored (check metadata.warnings if filters seem to have no effect). LARGE COMPANIES: for big accounts an unfiltered search returns a default page that is NOT meaningfully ranked — always pass personTitles and/or personSeniorities. If a search returns 0 results, STOP and report 'no matches found' — do not retry with different title variations. Limit yourself to 2 searches per request (initial + optional pagination). Use contact_enrich to get email/phone for the best matches.

Credits

2 — Per call. See the full credit table for how AI Credits work.

Parameters

NameTypeDefaultDescription
companyDomainstring-Company domain to search (e.g., "salesforce.com"). Preferred over companyName for accuracy. Either companyDomain or companyName is required. Protocol prefixes (http://, https://), leading www., and trailing paths/queries/fragments are accepted and stripped automatically; case is normalized.
companyNamestring-Company name for fuzzy match (e.g., "Salesforce") when the domain is unknown. Prefer companyDomain for accuracy. Provide one of companyDomain or companyName (domain wins if both are given).
personTitlesarray-Job titles to match, as an array — combine ALL variations into this ONE array (e.g., ["VP Marketing", "CMO", "Head of Marketing"]) rather than making separate calls per title. This is the primary way to express search intent; there is no free-text/keyword param. Do NOT pass q, keywords, or titles — those are not real parameters and are silently ignored.
personSenioritiesarray-Seniority levels to match (array). One or more of: owner, founder, c_suite, partner, vp, head, director, manager, senior, entry, intern. Combine with personTitles to narrow large accounts. Do NOT pass a "seniority" param — only personSeniorities is honored; anything else is silently ignored.
personLocationsarray-Filter contacts by the PERSON's location, "City/State, Country" style (e.g., ["California, US", "New York, US"]).
organizationLocationsarray-Filter by the company's HQ location (e.g., ["San Francisco, US"]) — distinct from personLocations, which filters the individual.
organizationNumEmployeesRangesarray-Company employee-count ranges as "min,max" strings (e.g., ["1,10", "11,50", "51,200"]).
contactEmailStatusarray-Filter by email deliverability status (array): verified, unverified, likely_to_engage, unavailable. Not all providers support this (see metadata.warnings).
pageinteger1Page number for pagination (default: 1)
perPageinteger25Results per page (default: 25, max: 100)
providerstringautoWhich external contact provider to use: "auto" (default — picks a configured provider), "apollo", or "zoominfo". A named provider must be configured for your org or the call fails.

Required Integrations

This tool is only available when your organization has the following integrations configured in the Phoenix Integrations settings:

  • Apollo.io (apollo)
  • ZoomInfo (zoominfo)

Use Cases

  • Find the VPs and Heads of Marketing at a target account to build an outreach list
  • Discover IT / security decision-makers (director+ seniority) at a company before a sales call
  • List C-suite contacts at a company, filtered to verified email status for a campaign
  • Identify prospects at a company within a specific region (e.g. California, US)
  • Pull a page of contacts at a large account, narrowed by title and seniority so results are ranked usefully

Example Usage

Marketing leaders at a company by domain

{
"tool": "contact_search",
"arguments": {
"companyDomain": "salesforce.com",
"personTitles": [
"VP Marketing",
"CMO",
"Head of Marketing"
],
"perPage": 25
}
}

Senior IT decision-makers with verified email

{
"tool": "contact_search",
"arguments": {
"companyDomain": "cisco.com",
"personSeniorities": [
"c_suite",
"vp",
"director"
],
"contactEmailStatus": [
"verified"
]
}
}

Contacts by company name in a region

{
"tool": "contact_search",
"arguments": {
"companyName": "Adobe",
"personSeniorities": [
"director",
"manager"
],
"personLocations": [
"California, US"
]
}
}

Response Format

FieldTypeDescription
contactsarrayList of contacts found
contacts[].idstringContact ID (use for enrichment with the same provider)
contacts[].firstNamestring | nullFirst name
contacts[].lastNamestring | nullLast name
contacts[].namestring | nullFull name
contacts[].titlestring | nullJob title
contacts[].senioritystring | nullSeniority level
contacts[].linkedinUrlstring | nullLinkedIn profile URL
contacts[].organizationobjectOrganization information
contacts[].organization.idstringOrganization ID
contacts[].organization.namestringCompany name
contacts[].organization.domainstring | nullCompany domain
contacts[].organization.industrystring | nullIndustry
contacts[].organization.employeeCountnumber | nullEmployee count
contacts[].organization.locationstring | nullCompany location
contacts[].citystring | nullCity
contacts[].statestring | nullState/Region
contacts[].countrystring | nullCountry
paginationobjectPagination information
pagination.pagenumberCurrent page number
pagination.perPagenumberResults per page
pagination.totalResultsnumberTotal number of matching contacts
pagination.hasMorebooleanWhether more results are available
metadataobjectSearch metadata
metadata.searchCriteriaobjectThe search criteria used
metadata.tipstringUsage tip
metadata.providerstringContact data provider used (e.g., apollo, zoominfo)
metadata.usedProviderstringWhich provider fulfilled this request
metadata.availableProvidersarrayProviders configured for the organization
metadata.warningsarrayWarnings about ignored parameters

Example response

{
"contacts": [
{
"id": "aaaaaaaaaaaaaaaaaaaaaaaa",
"firstName": "Jordan",
"lastName": "Rivera",
"name": "Jordan Rivera",
"title": "Vice President Marketing",
"seniority": "vp",
"linkedinUrl": "http://www.linkedin.com/in/example-jordan-rivera",
"organization": {
"id": "bbbbbbbbbbbbbbbbbbbbbbbb",
"name": "Salesforce",
"domain": "salesforce.com",
"location": ""
},
"city": "New York",
"state": "New York",
"country": "United States"
}
],
"pagination": {
"page": 1,
"perPage": 2,
"totalResults": 65,
"hasMore": true
},
"metadata": {
"searchCriteria": {
"companyDomain": "salesforce.com",
"personTitles": [
"VP Marketing"
],
"personSeniorities": [
"vp"
],
"page": 1,
"perPage": 2
},
"tip": "Use contact_enrich with the contact ID to reveal email/phone for the best matches.",
"provider": "apollo"
}
}

contact_enrich, company_firmographic, search_companies