Contact usTry for free
All articles

Data enrichment API: a practical B2B implementation guide

Targetwise logo and name on a pale lavender cover: Data enrichment API — From returned fields to usable records.

The short answer

A data enrichment API adds available information to a contact or company record using identifiers you already hold. A useful integration does more than retrieve fields: it establishes which person or business was matched, decides whether each field meets your evidence standard, and updates the correct CRM record without creating duplicates.

For an enterprise workflow, design the acceptance rules before choosing the supplier. Measure usable unique records, completion time and total operating cost. A successful HTTP response, a populated email field and a verified current employee are three different outcomes.

Start with the record, not the endpoint

The practical data enrichment definition is straightforward: supplement an existing record with additional information. Cleansing standardises or corrects what you already have; matching establishes which real-world subject a record represents; verification evaluates evidence about a particular value. Enrichment may involve all three, but none follows automatically from receiving more data.

A contact enrichment API starts with a known professional and attempts to return fields such as a work email, business phone or employment context. A company enrichment API starts with a business identifier and adds account-level attributes. A lead enrichment API describes the workflow around a potential buyer; establish whether its endpoint resolves a person, a company, or both. A company match does not prove that a named person works there.

Write a one-page contract for the consuming application. Identify the required subject, fields, acceptable evidence, maximum age, permitted use and destination record. An account-routing workflow might need only country and employee band. A calling workflow needs the intended individual and a relevant phone type. Requiring every available attribute increases cost and delay without necessarily improving either decision.

Keep discovery separate from enrichment. Searching for finance leaders at a company produces candidates. Enriching a selected candidate retrieves more information about that person. If the search returns two people with the same name, an email result must not silently resolve the ambiguity.

Build an acceptance ledger before enabling CRM writes

Give each input record an internal identifier and keep it throughout the job. Record the provider request reference, input version, requested fields, returned values, evidence states and final write decision. Where available, store the source observation date and the field's reverification date separately from the retrieval timestamp. An API response received today can contain an employment claim observed months ago.

The following is an illustrative evaluation, not a supplier benchmark. Start with 1,000 unique contacts selected from your intended markets. Suppose the API returns candidate records for 820. Identity and current-employer review leaves 760; the required field-evidence rules leave 650; existing CRM records and suppression rules leave 600 eligible unique writes. These stages are nested: the last group is a subset of every preceding group.

1. Returned records are not usable records

Unit: unique contacts; zero baseline, scale 0–1,000. Illustrative data. Acceptance rates divide each stage by the original 1,000 inputs.

Interpretation: the returned-record rate is 82%; usable write coverage is 60%. The 22-percentage-point difference is operationally important.

Do not describe 760 accepted identities as 76% accuracy. Accuracy requires a defensible truth assessment and a clearly stated denominator. Nor should you describe all 180 missing candidates as incorrect: absence and contradiction are different failures. In the pilot ledger, record separate reasons for ambiguous identity, stale employment, missing evidence, existing contact and suppression.

Sample difficult cases deliberately: subsidiaries sharing a domain, transliterated names, recent job moves and records without profile identifiers. Report results by geography, company size and input quality. A single blended rate can hide an unacceptable segment. Preserve an untouched comparison set when tuning thresholds, otherwise the evaluation gradually becomes a test of how well you fitted the sample.

Accept fields individually and stop the waterfall deliberately

A waterfall checks another eligible source when the current source cannot supply an acceptable result. The relevant question is not how many providers are available. It is how many additional usable fields the next stage contributes after previous stages have finished. Two providers returning the same email do not create two usable contacts, and agreement is weaker evidence when their upstream sources overlap.

Define stop conditions separately for email and phone. Finding an acceptable work email may end the email route while a requested phone remains unresolved. Stop all further work when the user cancels, the authorised budget is exhausted, the deadline expires or a suppression rule applies. Preserve the reason for stopping rather than labelling every unfinished job “not found”.

Example acceptance policy—not a universal standard
Returned evidenceDefault actionWhy
Person and current employer supported; required field evidence availableAccept that fieldThe result meets the defined use case.
Email found; catch-all or unknown verification statusHold or follow an explicit risk policyFinding an address does not establish mailbox validity.
Phone supplied without ownership or line-type evidenceKeep unverifiedA valid-looking number is not proof of the intended person.
Conflicting employers or ambiguous identityReview before writingMore fields cannot repair an unresolved identity.
Timeout, rate limit or provider failureRecord a technical outcomeFailure to complete is not evidence of absence.

For example, FullEnrich's Email Verification Status documentation distinguishes several returned email states. Those labels describe its own classification; they are not interchangeable with every other provider's labels. Map the actual documented values into your internal policy. Never upgrade “unknown” to “verified” because another API uses a more optimistic name.

Now consider a separate illustrative waterfall with 1,000 inputs. Stage A adds 500 usable unique contacts for $50 in incremental processing cost. Stage B adds 150 for $30; C adds 40 for $24; D adds 10 for $20. All counts are additional, not cumulative, and costs include the attempted lookups needed to obtain each stage's accepted results.

2. The next source can cost much more than the average

Unit: USD per additional usable contact; zero baseline, scale $0–$2. Labels show incremental contacts. Illustrative formula: stage cost ÷ additional accepted contacts. Excludes review labour.

Interpretation: with a hypothetical $0.75 marginal ceiling, stop before D. A cheap blended average can conceal an expensive final stage.

After C, total processing cost is $104 for 690 usable contacts: about $0.151 each. Adding D raises coverage by one percentage point and costs another $20. The blended figure remains only about $0.177, but those final ten contacts cost $2 each. Set the ceiling according to the downstream workflow and expected contribution, not an arbitrary desire for maximum coverage. If a stage adds zero usable contacts, report its marginal cost as undefined, not zero.

Implementing the field contract? Review TargetWise's documented inputs, outcomes and error handling before connecting your CRM.

Separate response speed from usable-result completion

The first response may acknowledge a job rather than return every requested field. Apollo's People Enrichment reference describes asynchronous phone results through a webhook or polling option. FullEnrich's Quality Over Speed documentation also describes background enrichment. These examples show why a single “API latency” number can be misleading; they are not comparative speed tests.

Measure time from the accepted request to the point when the required fields are ready for their intended action. Report acknowledgement time, first accepted field and complete required-field set separately. Track the slow tail as well as the median. A workflow that usually finishes quickly can still leave a commercially important queue unfinished.

The next chart uses a separate hypothetical batch of 1,000 records. Assume 300 records are usable within two seconds, 500 within ten, 620 within thirty and 650 within sixty. These are cumulative completions; the remaining 350 do not meet the acceptance policy within the observed window. They are not silently removed from the denominator.

3. Choose a deadline from completed work, not acknowledgement time
Illustrative usable completion by elapsed time300 of 1,000 records complete at 2 seconds, 500 at 10, 620 at 30 and 650 at 60. Horizontal time scale is linear; vertical scale is contacts. 02505007501,0000103060Elapsed time (seconds) 300500620650

Vertical unit: usable unique contacts, scale 0–1,000. Illustrative observations: 2s→300; 10s→500; 30s→620; 60s→650. Lines connect observations; behaviour between observations is not measured.

Interpretation: waiting from 30 to 60 seconds adds 30 contacts, or three percentage points. An overnight refresh and an interactive form need different deadlines.

For an interactive journey, let the user proceed with the information already supplied and queue optional enrichment. Do not quietly route an unresolved company to an arbitrary territory. For a batch, expose queued, processing, partial, complete and failed states with a reconciliation report. A returned email and an unfinished phone lookup can coexist without either being misrepresented.

Protect the CRM from duplicates, conflicts and retries

Enrichment should propose changes, not overwrite the CRM indiscriminately. Prefer writing through the existing internal record identifier. Retain trusted customer-supplied values, keep an audit of replacements and use conditional updates when another process may have edited the record after your job began. A missing provider value should not erase an existing field.

Do not assume the CRM treats API-created records like imports. HubSpot's “Deduplicate records in HubSpot”, updated 26 June 2026, explicitly notes that companies created through its API are not deduplicated by company domain. That is a concrete reason to test the precise creation or update route you will use.

Consider a fictional contact who has moved from Northbridge Manufacturing to Eastport Engineering. A source may still return the old work email while another supplies the new employer. Keep both observations with their dates, flag the conflict and prevent automatic activation. Do not attach the old employer's phone to the new employer simply because the name matches. Model person identity and employment as related but distinct records.

Give each intended write a stable key derived from the internal record, requested fields, input version and job identity. A repeated callback should update the same job, not create another contact. Verify webhook authenticity using the provider's documented mechanism before accepting its payload. Limit retained raw payloads and avoid putting credentials or personal contact details in ordinary application logs.

Retry transient errors only under an explicit policy. Respect documented backoff instructions and request limits. Do not keep retrying bad credentials, invalid inputs or exhausted allowances. RFC 9110, HTTP Semantics, June 2022, section 9.2.2, warns against automatically retrying non-idempotent requests without grounds to know that repeating them is safe. A timeout does not tell you whether the supplier already processed or charged for the first request.

Calculate cost per usable result with the hidden work included

A credit price describes a billing unit, not a business outcome. Define whether you are buying an attempted call, a returned record, one email, one phone or an accepted match. Then reconcile the invoice with unique results your application actually accepted. Avoid charging the same fixed subscription twice when it already includes the consumed usage balance.

For another illustrative scenario, suppose a 1,000-record job incurs $120 of data charges and $30 of allocated platform or orchestration cost. It produces 600 usable unique records. Before review labour, the cost is $150 ÷ 600 = $0.25 each. If 200 exceptions each take two minutes to review at $45 per hour, labour adds $300: 200 × 2 ÷ 60 × $45. Total cost becomes $450 ÷ 600 = $0.75.

4. Review effort can dominate data charges

Unit: USD per usable contact; scale $0–$1.25. Illustrative assumptions: $150 base cost, 200 exceptions, $45/hour and 600 usable records held constant. Formula: ($150 + 200 × minutes ÷ 60 × $45) ÷ 600.

Interpretation: cutting exception handling from four minutes to one reduces this model's cost by $0.75 per usable contact. This is sensitivity analysis, not a forecast or a claim that less review preserves quality.

The constant denominator matters. In reality, additional review might recover more records or reject more risky ones. Measure that change instead of assuming it. Record integration engineering, monitoring and incident handling separately, then allocate them over a stated period and volume. A low-volume pilot can have a high unit cost because setup work has not yet been spread across production usage.

TargetWise's published pricing separates work-email and business-phone results and does not charge unresolved requested fields. Its current methodology states that contact supplier identities are not exposed in the response; company provenance is available only where supported. These are contract details to incorporate into your evaluation, not reasons to presume that every result meets your own acceptance standard.

Use a shadow-write pilot as the release gate

Start with an authorised, representative sample and freeze the evaluation date, market mix, input fields and acceptance policy. Include both easy and difficult records. Run suppliers close enough together that job changes or source refreshes do not create an obvious timing advantage. Separate cached responses from newly retrieved results where the service exposes that distinction.

During the first pass, write proposed changes to a staging table rather than the live CRM. Reconcile input counts, returned jobs, accepted fields, rejected cases and charges. Deliberately test a repeated callback, an out-of-order result, a job timeout, a rate limit and a record edited while enrichment is running. Confirm that a suppressed contact never becomes eligible merely because a new source returns it.

Agree pass criteria before reviewing results: minimum usable coverage for each critical segment, maximum incorrect-person rate under the chosen audit method, completion deadlines, marginal spending ceiling and a bounded review queue. Name the owner who can pause writes when these conditions deteriorate. For AI-agent workflows, give the agent the same constrained result contract; an unresolved value must remain unresolved rather than become a plausible generated answer.

Release incrementally by workflow or segment. Track reversals, duplicate creation, failed writes and actual downstream usefulness after launch. A dashboard showing only successful calls will miss the failures that matter most to the sales team.

Frequently asked questions

1. What is the minimum input for a data enrichment API?

It depends on the endpoint. Common inputs include a company domain, a supported profile identifier, or a person's name plus employer context. Use the published schema rather than assuming email is compulsory. Where identifiers disagree, resolve that conflict before enriching.

2. Is contact enrichment the same as email verification?

No. Contact enrichment retrieves or adds professional information; email verification evaluates evidence about an address. A found address can still have unknown or catch-all status. Even a positive verification result does not guarantee delivery or establish permission to contact its owner.

3. When should I use company enrichment instead of person enrichment?

Use company enrichment for account-level decisions such as territory, segmentation or business identity. Use person enrichment when the decision depends on an individual. Resolve the association explicitly; a parent company and a subsidiary may share branding but belong in different CRM accounts.

4. Does a higher match rate mean better accuracy?

No. Match rate counts records for which a candidate was returned under a stated rule. Accuracy asks whether the returned information is correct. A permissive matcher can raise apparent coverage while returning more wrong people. Report both with their own denominators.

5. How many providers should a waterfall use?

As many as add acceptable incremental value within your budget and deadline. More sources are not automatically better. Stop when additional accepted results become too expensive, too slow or insufficiently evidenced, and evaluate email and phone routes independently.

6. Should enrichment run during form submission?

Only the portion that reliably meets the journey's response budget should block the form. Queue optional or slower fields, retain user-entered information and expose a pending state. Test tail latency and failures rather than designing around the fastest observed response.

7. How do I avoid duplicates when a contact changes jobs?

Keep a stable internal person identifier, represent employment separately and retain historical identifiers where appropriate. Do not treat every new work email as a new person or merge records on name alone. Review conflicting evidence before changing company associations.

8. What does a recent retrieval timestamp prove?

It proves when your system retrieved the response, not when the underlying fact was observed or checked. Store source and reverification dates separately when provided. If they are unavailable, label freshness unknown instead of converting retrieval time into a verification claim.

9. How should I compare credit-based plans?

Translate each billable event into total cost for the same required fields, sample and acceptance policy. Include unsuccessful charges where applicable, review labour and allocated operating costs. Divide by accepted unique results, and keep company-level results separate from contact-level results.

10. Can an AI agent safely call an enrichment API?

Yes, if access, allowed operations and spending are constrained, and results carry explicit uncertainty. Separate retrieval from CRM writes and communication actions. Require the same identity, suppression and field-evidence checks used by deterministic workflows; an agent does not remove those responsibilities.

Planning an enterprise enrichment workflow? Discuss your required fields, markets and acceptance criteria with TargetWise.

Back to all articles