Contact enrichment fills the gaps in a person’s record: a verified work email, a mobile number, a current title. The Scalelist contact enrichment API does it from a name and a company, or from an email you already have, one record at a time or 100 per task.
You pay 1 credit per email found and 20 per mobile found. A lookup that finds nothing costs 0.
- 92% emails and 87% phone numbers found on the North American list in our 8-provider benchmark
- Real-time, async or bulk, with webhooks and safe retries
- Every email verified before it is returned and labelled Valid or Risky
Enrich 20 of your own CRM contacts before you commit a budget
Get 20 credits to test itWhat is contact enrichment?
Contact enrichment is the process of completing a person’s record with data you do not have yet, usually a verified work email and a direct phone number, starting from what you do have: a name and a company, or an email address. A contact enrichment API does this from your code, so records are complete the moment they enter your systems.
It works at the person level. Company enrichment describes the organization instead, which the company data API page covers. Scalelist finds and verifies contact details on demand rather than serving a pre-compiled list.
How the contact enrichment API works
Each lookup is one request with the details you already hold. You get the result in the response, or at your webhook.

- Send what you have. A name plus a company domain (preferred) or company name. For a mobile, a known work email on its own also works.
- Scalelist finds and verifies. Every email is verified before it is returned and labelled Valid or Risky.
- Get the result. It comes back in the response or at your
webhook_url, with yourcustomobject attached so you can match it to the record.
What to send for the best match
Two endpoints do the work: POST /api/v1/email/find and POST /api/v1/phone/find. The more of these fields you send, the fewer wrong-person matches you get.
| Input | Email find | Phone find |
|---|---|---|
first_name or full_name | Required (one of them) | Required with a company, unless you send an email |
last_name | Optional | Optional |
company_domain or company_name | Required (one of them); domain preferred | Required with a name |
email | Not used | Enough on its own |
job_title, city | Not used | Optional: separates people with the same name |
custom | Returned with the result | Returned with the result |
webhook_url, sync | Optional: async delivery | Not available; use /phone/bulk |
full_name is split on the first space, so “Anna Van Der Berg” becomes first name Anna and last name Van Der Berg. Send first_name and last_name separately when your CRM already stores them that way.

For the full detail on each endpoint, see the email finder API and the mobile number API. To check addresses you already hold, use the email verification API.
Real-time, async or bulk: pick the call pattern
The same lookup can run three ways. Pick by how long the caller can wait and how many records you have.
| Pattern | Call | Best for |
|---|---|---|
| Real-time | /email/find or /phone/find; the answer is in the response | A form fill, a rep clicking Enrich |
| Async single | /email/find with sync: false and a webhook_url; 202 now, result posted later | Request paths that cannot wait |
| Bulk | /email/bulk or /phone/bulk, 1 to 100 records per task; webhook or polling | CRM backfills, nightly jobs, list uploads |

Bulk tasks are durable: if the server restarts, tasks in progress are re-queued. Send an Idempotency-Key header and you can resend the same batch for 24 hours without creating a duplicate task or paying twice. If your balance cannot cover a batch, the API returns 402 before it starts.
What contact enrichment costs: 1,000 records
Credits are charged only for results, so the cost follows your hit rate, not your list size. Here is one illustrative run.

Take 1,000 CRM contacts with a name and a company domain but no email or mobile. At the found rates from our North America benchmark (92% email, 87% phone), you would get 920 emails and 870 mobiles. That is 920 + 17,400 = 18,320 credits.
On the 20,000-credit plan (649 USD a month) that is about 594 USD, or about 0.65 USD per mobile and 3 cents per email. The 210 lookups that found nothing cost 0. Enriching emails only? The same list costs 920 credits, inside the 1,000-credit plan at 49 USD. Your own hit rate will differ, so test a sample first.
Build it right: 5 rules for a contact enrichment integration
A contact enrichment API is cheap when it runs at the right moment and expensive when it runs on everything. These rules keep it cheap.
Enrich at the moment it matters
Enrich when a lead signs up, before a contact enters a sequence, or when a rep opens a record. Re-running your whole CRM on a timer pays for records nobody will contact.
Store results and misses, with a date
Save what came back, the email status and the lookup date. Record misses too: a contact that returned nothing today rarely returns something tomorrow, and a stored miss stops the retry loop.
Fail open
If enrichment is slow or down, the form still submits and the lead is still saved. Queue the record and enrich it later through a bulk task.
Route by email status
Send Valid emails to your sequencer. Risky means the domain accepts every address, so the mailbox cannot be confirmed; about 20 to 30% of Risky emails are deliverable, so send them from a secondary domain. Our guide to catch-all emails explains why.
Retry with the same idempotency key
Network errors happen mid-batch. Resend with the same Idempotency-Key and body, and you get the original task back instead of a second charge.
Where contact enrichment runs besides the API
The same credits and statuses work outside your code. Push selected leads to HubSpot with field mapping, find emails inside a sheet with the Google Sheets add-on, or use the Zapier app’s Email Finder and Mobile Finder actions. In Claude or ChatGPT, the Scalelist MCP server enriches a CSV from a plain-English request.
Clay connects through the API only; the Clay API guide shows the setup. For HubSpot and Salesforce hygiene, read our CRM enrichment playbook, and see the integrations hub for every connector.
Pricing
Contact enrichment uses the same monthly credits as the app: 1 per email found, 20 per mobile found, 0 on a miss. Plans start at 29 USD for 500 credits and reach 649 USD for 20,000, with custom plans above that. There is no per-seat price and no annual contract; yearly billing gives 2 months free. Compare every tier on Scalelist plans.
For all endpoints, bulk options and error codes in one place, start at the Scalelist API hub. Comparing providers first? The B2B data API guide shows how to test coverage on your own records.
Send your first 20 lookups and see your own hit rate
Get your API keyFAQ
What is contact enrichment?
Contact enrichment is completing a person’s record with missing data, usually a verified work email and a mobile or direct phone number, from what you already have, such as a name and company. A contact enrichment API does it automatically from your code, in real time or in bulk.
What is the difference between contact enrichment and data enrichment?
Contact enrichment is the person-level part of data enrichment: emails, phone numbers and titles for individuals. Data enrichment is the broader practice and includes company data such as industry and headcount. Most outbound teams need contact enrichment first, because campaigns reach people, not companies.
Do I pay for contacts that are not found?
No. The Scalelist contact enrichment API charges 1 credit per email found and 20 per mobile found. A lookup that returns nothing costs 0. Risky emails are found emails, so they cost 1 credit; they are labelled so you can route them differently.
How accurate are the emails?
Every email is verified before it is returned and labelled Valid or Risky. Valid means the mailbox was verified. Risky means the domain accepts every address, so it cannot be confirmed; about 20 to 30% of those are deliverable. In our benchmark, Scalelist found an email for 92% of the North American list.
Can I enrich a lead in real time when a form is submitted?
Yes. Call /email/find or /phone/find from your form handler and the result comes back in the response. /phone/find accepts the work email from the form on its own. If you cannot wait, set sync: false with a webhook_url on email lookups, or queue the lead into a bulk task.
Does the contact enrichment API work outside the US?
Yes. In our benchmark, Scalelist found an email for 89% of the EMEA list, 76% in APAC and 86% in Latin America, and a phone number for 73%, 75% and 85%. Add city and job_title to phone lookups in regions where names repeat often.
Is contact enrichment with Scalelist GDPR compliant?
Scalelist operates under the GDPR and Singapore’s PDPA, with a Data Processing Agreement, Standard Contractual Clauses and a published sub-processor list. Contact data you submit for enrichment is never added to Scalelist’s database. You remain responsible for having a lawful basis to contact the people you enrich.