Skip to main content
Use this when you need contact data (business emails, personal emails, phone numbers) for a small number of people and want it back in the same request — for example, alongside full profile fields, or to reverse-look-up a person by their business email.
Choose this for a quick response. Contact data comes back in the same request for up to 25 identifiers. For a higher fill rate on bulk lists, use Batch Contact Enrich — an async job (typically a 2–3 minute wait) with no per-profile base fee.
POST https://api.crustdata.com/person/contact/enrich
Replace YOUR_API_KEY in each example with your actual API key. All requests require the x-api-version: 2025-11-01 header.
Availability: requires contact-enrich access (enterprise or higher-tier plans); self-serve keys receive a 403. Pricing: additive — a base profile credit plus a credit for each contact field you request. See Pricing for per-field costs. Limits: up to 25 identifiers per request.

Enrich contact data

Request the contact field (or specific sub-fields) for one or more profile URLs.
curl --request POST \
  --url https://api.crustdata.com/person/contact/enrich \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --header 'x-api-version: 2025-11-01' \
  --data '{
    "professional_network_profile_urls": [
      "https://www.linkedin.com/in/abhilashchowdhary"
    ],
    "fields": ["contact"]
  }'
Email records are { email, status } objects, where status is one of deliverable, catch_all, invalid, or unknown (see Email status). The personal email and phone values above are illustrative.
Request only the sub-fields you need (for example contact.business_emails) to keep credit costs down. You can also combine contact with profile fields like basic_profile in the same request — see Person Enrich.

Contact fields

FieldReturns
contactAll contact records: emails, phone numbers, websites
contact.business_emailsBusiness email records
contact.personal_emailsPersonal email records
contact.phone_numbersPhone numbers
contact.websitesPersonal or company-linked websites

Email status

Every business and personal email comes back with a status that tells you how deliverable the address is. Use it to decide which emails to send to.
StatusMeaning
deliverableThe mailbox was confirmed to exist and accept mail at this exact address. Lowest bounce risk.
catch_allThe domain accepts mail for any address, so this specific mailbox can’t be confirmed. It may work, but delivery isn’t guaranteed.
invalidThe mailbox was confirmed not to exist or is otherwise undeliverable. Sending will bounce.
unknownDeliverability couldn’t be determined (for example a timeout or an inconclusive check). Returned when no status info is available.

Get a specific contact type

Request a single sub-field to return only that contact type — useful for keeping credit costs down. This endpoint always returns contact only (no profile fields like basic_profile or experience).
curl --request POST \
  --url https://api.crustdata.com/person/contact/enrich \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --header 'x-api-version: 2025-11-01' \
  --data '{
    "professional_network_profile_urls": ["https://www.linkedin.com/in/abhilashchowdhary"],
    "fields": ["contact.business_emails"]
  }'
Returns only the contact.business_emails array — no other contact fields or profile data.
curl --request POST \
  --url https://api.crustdata.com/person/contact/enrich \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --header 'x-api-version: 2025-11-01' \
  --data '{
    "professional_network_profile_urls": ["https://www.linkedin.com/in/abhilashchowdhary"],
    "fields": ["contact.personal_emails"]
  }'
Returns only the contact.personal_emails array.
curl --request POST \
  --url https://api.crustdata.com/person/contact/enrich \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --header 'x-api-version: 2025-11-01' \
  --data '{
    "professional_network_profile_urls": ["https://www.linkedin.com/in/abhilashchowdhary"],
    "fields": ["contact.phone_numbers"]
  }'
Returns only the contact.phone_numbers array.

Request parameters

ParameterTypeRequiredDescription
professional_network_profile_urlsstring[]One of these two identifiersProfile URLs to enrich. Max 25.
business_emailsstring[]One of these two identifiersBusiness emails for reverse lookup. Max 25.
fieldsstring[]NoWhich fields to return. Use contact (or its sub-fields).

Errors

StatusMeaning
400Invalid request — malformed identifier or missing one.
401Invalid or missing API key.
403Permission denied or insufficient credits.
500Internal server error. Retry with exponential backoff.

API reference summary

DetailValue
EndpointPOST /person/contact/enrich
AuthBearer token + x-api-version: 2025-11-01
RequestOne of professional_network_profile_urls or business_emails (max 25). fields: contact.
ResponseArray: [{ "matched_on", "match_type", "matches": [{ "confidence_score", "person_data" }] }].
Errors400, 401, 403, 500
For the full field catalog and identifier behavior, see the Person Enrich reference. For credit pricing, see Pricing.

What to do next

  • Enrich in bulkBatch Contact Enrich handles large lists asynchronously with no per-profile base fee.
  • Get full profilesPerson Enrich returns profile, employment, education, and contact data together.
  • Find people first — use Person Search to build your list of profile URLs.