Skip to main content
POST
Enrich leads
Provide first_name, last_name and either company or company_domain. company_domain gives materially better results than a company name. Add linkedin_url whenever you have it, and always when you request enrich_phone_number.
This endpoint is asynchronous. A 201 means the batch was accepted, not that it was enriched. Keep the returned id and read Request statuses before you build your polling loop.Submissions are not idempotent: retrying a POST that had actually succeeded enriches the same leads twice and consumes credits twice.
Anything you put in custom_fields comes back untouched in the results, which is the simplest way to reconcile enriched leads with your own records.

Authorizations

X-API-Key
string
header
required

Body

application/json

Data to enrich

data
object[]
required

Leads to enrich. Between 1 and 100 per call. Sending more than 100 is rejected with 400.

Required array length: 1 - 100 elements
enrich_email_address
boolean
default:true

Enrich the work email address. When enrich_email_address, enrich_phone_number and enrich_profile are all omitted or false, email enrichment is applied by default.

enrich_phone_number
boolean
default:false

Enrich the mobile phone number. Requires the phone add-on on your plan, otherwise the call is rejected with 402. Provide linkedin_url for best results.

enrich_profile
boolean
default:false

Enrich the full LinkedIn profile of the contact (headline, seniority, location, current company). Requires linkedin_url.

verify_catch_all
boolean
default:false

Run the extra catch-all verification layer. When enabled, contact_email_address_status returns catch_all_safe / catch_all_not_safe instead of catch_all. Requires the catch-all add-on on your plan, otherwise the call is rejected with 402.

webhook
string<uri>

URL that receives the full result payload as soon as the whole batch is done. Recommended over polling. See Webhooks.

Example:

"https://example.com/bettercontact/results"

push_contact_individually
boolean
default:false

When true, each lead is pushed to contact_webhook as soon as it is enriched, instead of waiting for the whole batch. Useful for batches of 100.

contact_webhook
string<uri>

URL that receives one payload per lead. Only used when push_contact_individually is true.

process_flow
string

Identifier of the process flow to use for this enrichment. Only for accounts subscribed to the process flow add-on.

timeout_seconds
integer

Maximum time the waterfall is allowed to run before the request is terminated with whatever has been found. Defaults to the timeout configured on your account.

Required range: x >= 1
Example:

240

Response

Enrichment request accepted. Poll GET /async/{request_id} or wait for the webhook.

success
boolean
Example:

true

id
string
Example:

"your-request-id"

message
string
Example:

"Processing..."