Search contacts

Use this endpoint to search for individuals at specific companies.

You can filter contacts by details such as first name, last name, email, location, job title, job level, and job function. Company-level filters include company name, website, location, industry, size, and more. Additional parameters allow you to filter by quality score, email validation status, and phone requirements.

Sorting and pagination are supported. You can sort results by fields such as companyName, and control the number of results returned using page and perPage.

You must include at least one parameter (excluding sorting and pagination) to perform a search.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
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"
      },
      "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,
        "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 and basic person attributes.

dbPersonIdPersistent person identifier
firstNameFirst name
lastNameLast name
employmentDetails

Company-specific role

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

contactIdEmployment/contact identifier
companyIdDemandbase company ID
titlesCurrent known titles
jobLevelsSeniority classifications
jobFunctionsFunctional classifications
activeWhether the employment is active

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 →

Body Params
string
string
string
string
string
string

Country Id

titles
array of strings
titles
string
string
string
string

Country Id

string
jobLevels
array of strings
jobLevels
jobFunctions
array of strings
jobFunctions
string
Defaults to true
string
Defaults to false
string
Defaults to false
string
enum
Allowed:
string
string
companyIdsToInclude
array of strings
companyIdsToInclude
contactIdsToExclude
array of strings
contactIdsToExclude
string
Defaults to false
string
string
enum
Allowed:
string
string
industries
array of strings
industries
subIndustries
array of strings
subIndustries
string
Defaults to 1
string
Defaults to 10
Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
string
enum
Defaults to application/json

Generated from available request content types

Allowed:
Responses

Language
Credentials
Bearer
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
application/xml