Search Contacts

B2B API

Search contacts

Find professionals at target accounts using person, employment, and company attributes. Search by name, email, title, seniority, job function, company, location, email availability, phone availability, and more.

POST /contacts Requires bearer token Max 50 results per page At least 1 search filter required

What you can search for

Contact Search is best when you know the company, role, seniority, function, or data quality requirements for the people you want to find.

Company

Find contacts at an account

Search by company name, website, Demandbase company ID, location, industry, or employee count.

Role

Find people by title

Search for specific job titles such as Director, VP, CISO, Marketing Operations, or Revenue Operations.

Seniority

Find executives or managers

Use job level filters to target executives, directors, managers, individual contributors, and other seniority groups.

Function

Find teams by department

Filter by job function such as IT, Marketing, Sales, Finance, Operations, Engineering, or Human Resources.

Email

Require email availability

Return contacts with emails and optionally require validated email status.

Phone

Require phone availability

Return contacts with phone data and choose direct, corporate, mobile, or any phone type.

Common searches

Find contacts at a company

Body
{
  "companyName": "Microsoft",
  "page": "1",
  "perPage": "10"
}

Find contacts by company website

Body
{
  "companyWebsite": "microsoft.com",
  "page": "1",
  "perPage": "10"
}

Find IT leaders

Body
{
  "jobFunctions": ["9"],
  "jobLevels": ["3", "4"],
  "page": "1",
  "perPage": "10"
}

Find contacts with validated email

Body
{
  "companyName": "Microsoft",
  "emailRequired": "true",
  "emailValidationStatus": "ValidEmail",
  "page": "1",
  "perPage": "10"
}

Find contacts with mobile phones

Body
{
  "companyName": "Microsoft",
  "phoneRequired": "true",
  "phoneType": "mobile",
  "page": "1",
  "perPage": "10"
}

Find active contacts only

Body
{
  "companyName": "Microsoft",
  "active": "true",
  "page": "1",
  "perPage": "10"
}

Quickstart

Send a POST request to /contacts with at least one search filter. This example searches for contacts at Microsoft.

Step 1

Send the request

Request
curl --request POST \
  --url https://uapi.demandbase.com/data/b2b/v1/contacts \
  --header "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  --header "Content-Type: application/json" \
  --header "Accept: application/json" \
  --data '{
    "companyName": "Microsoft",
    "page": "1",
    "perPage": "10"
  }'
Step 2

Read the response

Response
{
  "contactResults": [
    {
      "dbPersonDetails": {
        "dbPersonId": 15568398,
        "firstName": "Jamie",
        "lastName": "Taylor",
        "country": "United States",
        "city": "Seattle"
      },
      "employmentDetails": {
        "contactId": 17864319,
        "companyId": 731691,
        "companyName": "Example Corp",
        "titles": ["Senior Security Officer"],
        "jobLevels": [{ "id": "3", "name": "Vice President" }],
        "jobFunctions": [{ "id": "9", "name": "Information Technology" }],
        "active": true,
        "hasPhone": true,
        "hasEmail": true,
        "contactQualityScore": "A"
      }
    }
  ],
  "totalCount": 233,
  "pageNo": 1,
  "pageSize": 10
}

Request anatomy

Person filters
firstNameFirst name
lastNameLast name
emailEmail address
contactCityContact city
contactStateContact state
contactCountryContact country ID
Employment filters
titlesJob titles
jobLevelsSeniority IDs
jobFunctionsFunction IDs
activeActive employment
minContactQualityScoreMinimum quality score
Company filters
companyNameCompany name
companyWebsiteCompany website
companyIdsToIncludeDemandbase company IDs
industriesIndustry IDs
minEmployeesMinimum employees
maxEmployeesMaximum employees

Response anatomy

Each result contains person-level details and employment-level details. Use dbPersonId to identify the person and contactId to identify a specific employment record.

dbPersonDetails

Persistent person profile

Contains the Demandbase person ID, name, and location attributes.

dbPersonIdPersistent person identifier
firstNameFirst name
lastNameLast name
countryContact country
cityContact city
employmentDetails

Company-specific role

Contains the contact ID, company ID, title, seniority, function, active status, contact-data availability, and quality score.

contactIdEmployment/contact identifier
companyIdDemandbase company ID
titlesCurrent known titles
jobLevelsSeniority classifications
jobFunctionsFunctional classifications
activeWhether the employment is active
hasPhoneWhether phone data is available; does not expose the phone number
hasEmailWhether email data is available; does not expose the email address

Important rules

Required

Include one search filter

You must include at least one parameter other than sorting and pagination.

Pagination

Use 1–50 results per page

perPage must be between 1 and 50. page must be 1 or greater.

Sorting

Sort only supported fields

Sorting is supported for active, title, and companyName.

Filter reference

Filter Use it to Example
companyNameFind contacts at a named company.Microsoft
companyWebsiteFind contacts at a company by domain.microsoft.com
companyIdsToIncludeFind contacts at specific Demandbase company IDs.["726263"]
titlesFind contacts by title keywords.["Director", "VP"]
jobLevelsFind contacts by seniority level IDs.["3", "4"]
jobFunctionsFind contacts by functional role IDs.["9"]
emailRequiredRequire contacts with email data."true"
emailValidationStatusFilter by email validation status.ValidEmail
phoneRequiredRequire contacts with phone data."true"
phoneTypeFilter by phone type.mobile
activeFilter active or inactive employment records."true"
minContactQualityScoreRequire a minimum quality score.A

Empty results

If no contacts match the query, the API returns a successful response with an empty contactResults array.

200 Response
{
  "contactResults": [],
  "totalCount": 0,
  "pageNo": 1,
  "pageSize": 10
}

Common errors

Status Error How to fix it
400-107 At least one parameter must be provided. Add at least one search filter such as companyName, companyWebsite, titles, or jobFunctions.
400-101 perPage must be between 1 and 50. Set perPage to a value from 1 to 50.
400-100 Page number must be greater than or equal to 1. Set page to 1 or greater.
400-108 Invalid sort field. Use active, title, or companyName.
400-109 Invalid sort order. Use asc or desc.
400-123 Invalid minimum contact quality score. Use one of A+, A, B, or C.
401 Authentication failed. Generate a valid token and send it in the Authorization: Bearer YOUR_ACCESS_TOKEN header.
403 Forbidden. Your token is valid, but does not have access to this endpoint or the requested resource. Confirm your API Key Set includes B2B API access.
429 Too many requests. You exceeded the rate limit. Retry after waiting, reduce request volume, and use backoff for automated jobs.
Related endpoints

Next steps

After finding contacts, use related endpoints to fetch company details, resolve records, or enrich larger datasets.

Company Profile → · Match records → · Bulk jobs →