Match Companies and Contacts in Bulk — Guide

First-request guide for Match Companies and Contacts in Bulk.

API GUIDE

Match Companies and Contacts in Bulk

Match Companies and Contacts in Bulk

POST/match/jobJSONAuthentication required

Overview

Use this endpoint to enrich company and contact records in bulk using a CSV file upload. Each row in the file represents one enrichment request and must match the supported field structure. This endpoint supports up to 10,000 records per job. **CSV Results Format:** The completed job will return a CSV file with the following structure: - Input columns from your uploaded CSV are preserved - Additional columns are added for matched company data (companyId, name, city, state, country, matchScore, etc.) - Additional columns are added for matched contact data (contactId, firstName, lastName, title, email, matchScore, etc.) - Multiple matches are…

Call the endpoint

Send a POST request to /match/job with the required authentication and parameters.

Build the request body

Use the JSON shape below and replace example values with your data.

Inspect the response

Use the success response shape to validate the fields your integration receives.

Quickstart

Follow these two steps to make a request and recognize a successful response.

STEP 1

Make a request

REQUEST
curl --request POST \
  --url https://uapi.demandbase.com/data/b2b/v1/match/job?jobName=example \
  --header "Authorization: Bearer $DB_API_KEY" \
  --header "Content-Type: application/octet-stream" \
  --data-binary @- <<'DATA'
id,city,companyName,country,email,firstName,lastName,state,street,ticker,title,url,zip,minimumMatchScore,isContactRequired,isPhoneRequired,isEmailRequired,fullName,contactMatching,executiveLinkedInHandle,phone
row2,MOUNTAIN VIEW,Alphabet Inc,USA,[email protected],Ashish,Kumar,CA,1600 Amphitheatre Parkway,GOOG,Director,https://abc.xyz/,94301,.50,,True,,,all,https://linkedin.com/in/johndoe,123-456-7890
DATA
STEP 2

Read the response

SUCCESS RESPONSE · HTTP 202
{
  "jobName": "Hello2",
  "jobStatus": "accepted",
  "jobType": "match",
  "jobId": "ac6f75e1-84c3-47f8-a64f-5bf90459da7b",
  "createdAt": "2025-06-02T20:31:35.063Z"
}

Request anatomy

Build the request from the method, path, parameters, and payload described below.

Parameters

NameLocationTypeRequiredDescription
jobNamequerystringRequiredJob name for the match job

Request body

No fields are defined for this payload.

Response anatomy

The endpoint returns 202 for the documented success case. Successful submission of match job Response File (CSV Output) Upon job completion, the downloadable results file will include: | Field Name | Description | | ----------------------- | ----------------------------------------------------------------------- | |…

The response schema does not enumerate fields; inspect the example response and status code.

Rules

  • Use POST with the path /match/job.
  • Required inputs: jobName.
  • Authenticate every request with a valid Demandbase access token.
  • Send the request body as application/json.

Filters

The published schema exposes the following endpoint inputs. Use the location column to place each value correctly.

NameLocationTypeRequiredDescription
jobNamequerystringRequiredJob name for the match job

Errors

Handle non-success responses explicitly so your integration can report actionable failures.

StatusMeaning
400Bad Request
401Unauthorized because the user is not authenticated.

Next steps

Try the quickstart

Start with the request example, then replace the sample values with your credentials and data.

Return to the API area

Back to asynchronous-batch-api

Back to top