Fetch Contact Details

B2B API

Fetch contact details

Retrieve detailed personal and employment information for a known contact. Return identity, a profile-image URL, title, company, email, phone, job classification, education, social profile, and optional employment-history data.

GET /contact/{contactId} Requires bearer token Contact ID required Optional field selection

What you can retrieve

Contact Details is best when you already have a contact ID from Contact Search, record matching, or a bulk workflow and need a richer profile.

Identity

Understand the person

Retrieve the Demandbase person ID, name, age, profile-image URL, address, and mobile number when available.

Employment

Understand the current role

Return the contact ID, company, title, start date, role description, and active status.

Contact data

Retrieve email and phone details

Access available email addresses, validation status, direct numbers, and corporate numbers.

Classification

Understand role and seniority

Use job levels, job functions, titles, and contact quality score to qualify the record.

Background

Review education and social data

Return degrees, majors, universities, and available social-profile URLs.

History

Include other employments

Add related employment records with the optional include=other_employments parameter.

Common requests

Fetch the default contact profile

Request URL
GET /contact/{contactId}

Include other employments

Request URL
GET /contact/{contactId}?include=other_employments

Select contact fields

Request URL
GET /contact/{contactId}?contactFields=titles,email,phone

Select person fields

Request URL
GET /contact/{contactId}?peopleFields=imageUrl

Quickstart

Replace CONTACT_ID with a contact ID returned by Contact Search or another B2B API workflow.

Step 1

Send the request

Request
curl --request GET \
  --url "https://uapi.demandbase.com/data/b2b/v1/contact/CONTACT_ID?peopleFields=imageUrl" \
  --header "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  --header "Accept: application/json"
Step 2

Read the response

Illustrative response
{
  "dbPersonDetails": {
    "dbPersonId": 12345678,
    "imageUrl": "https://example.com/profile-image.jpg",
    "address": {}
  },
  "employmentDetails": {
    "contactId": 87654321,
    "companyId": 123456
  }
}

Request anatomy

Path

Identify the contact

Place the integer contact ID directly in the request path.

contactIdRequired contact identifier
Query

Control the response

Add employment history or request specific contact and person fields.

includeRelated data to include
contactFieldsComma-separated contact fields
peopleFieldsComma-separated person fields
Headers

Authenticate and choose a format

Send a valid bearer token and request JSON or XML.

AuthorizationBearer access token
Acceptapplication/json or application/xml

Response anatomy

The response separates persistent person attributes from the selected employment record. When requested, other employment records appear in employmentHistoryList.

dbPersonDetails

Persistent person profile

Contains identity, location, education, social, image, and mobile attributes.

dbPersonIdPersistent person identifier
firstNameFirst name
lastNameLast name
imageUrlProfile-image URL
educationListEducation history
socialHandlesSocial-profile URLs
addressPerson location details
employmentDetails

Selected employment record

Contains company, role, classification, contact-channel, quality, salary, and timing details.

contactIdContact/employment identifier
companyIdDemandbase company ID
titlesKnown job titles
jobLevelsSeniority classifications
jobFunctionsFunctional classifications
emailsEmail and validation data
phoneNumbersDirect and corporate numbers
employmentHistoryList

Other employment records

Returned when include=other_employments is present and related records are available.

contactIdRelated contact ID
companyIdRelated company ID
companyNameRelated company name
activeEmployment status
titlesKnown job titles
jobLevelsSeniority classifications

Important rules

Required

Use an integer contact ID

The contactId path value is required and must be an integer.

Include

Use the supported include value

The only supported include value is other_employments.

Field selection

Separate fields with commas

Pass requested values as comma-separated names in contactFields or peopleFields.

Availability

Expect fields to vary by contact

Optional attributes appear only when available. imageUrl contains a URL rather than image bytes.

Parameters and valid fields

Parameter Location Use it to Example
contactIdPathIdentify the contact record to fetch.CONTACT_ID
includeQueryInclude other employment records.other_employments
contactFieldsQuerySelect comma-separated contact fields.titles,email,phone
peopleFieldsQuerySelect comma-separated person fields.firstName,lastName,imageUrl
Field selection

Use the request values below with the exact capitalization shown. Each documented value populates a property in the public response. Some request values differ from the returned JSON property name.

Combined field selection
GET /contact/{contactId}?contactFields=titles,email,phone&peopleFields=firstName,lastName,imageUrl
contactFields

Valid contact field values

These values select fields returned under employmentDetails.

Request value Returned as
contactIdemploymentDetails.contactId
activeemploymentDetails.active
titlesemploymentDetails.titles
jobFunctionsV2employmentDetails.jobFunctions
jobLevelsV2employmentDetails.jobLevels
confidenceScoreemploymentDetails.contactQualityScore
emailemploymentDetails.emails
phoneemploymentDetails.phoneNumbers
salaryemploymentDetails.salary and salaryCurrency
startDateemploymentDetails.startDate
dpKeysemploymentDetails.lastValidatedDate
peopleFields

Valid person field values

These values select fields returned under dbPersonDetails or the documented employment description.

Request value Returned as
peopleIddbPersonDetails.dbPersonId
firstNamedbPersonDetails.firstName
middleNamedbPersonDetails.middleName
lastNamedbPersonDetails.lastName
imageUrldbPersonDetails.imageUrl
educationdbPersonDetails.educationList
urlInfodbPersonDetails.socialHandles
agedbPersonDetails.age
mobileNodbPersonDetails.mobileNumber
countrydbPersonDetails.address.country and countryCode
statedbPersonDetails.address.state and stateCode
citydbPersonDetails.address.city
latitudedbPersonDetails.address.latitude
longitudedbPersonDetails.address.longitude
areadbPersonDetails.address.area
zipdbPersonDetails.address.zip
descriptionemploymentDetails.description
Response availability

Valid does not guarantee populated

A valid field can still be absent when the selected contact has no value for it. Unsupported names return HTTP 400 with the invalid contact or people field names.

Common errors

Status Error How to fix it
400-104 contactId must be an integer. Use the numeric contact ID returned by Contact Search or another B2B API workflow.
400-106 Invalid field name. Remove unsupported values from contactFields or peopleFields.
401 Authentication failed. Generate a valid token and send it in the Authorization: Bearer YOUR_ACCESS_TOKEN header.
404-100 Invalid ID, record not found. Confirm the contact ID exists and that your API Key Set can access the record.
Related endpoints

Next steps

Search for additional contacts, fetch the associated company profile, or retrieve detailed records in bulk.

Search contacts → · Company profile → · Bulk retrieval →