> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crustdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Person Contact Enrich

> Get business emails, personal emails, and phone numbers for a person in a single synchronous request.

**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.

<Note>
  **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](/person-docs/contact/batch) — an async job
  (typically a 2–3 minute wait).
</Note>

```
POST https://api.crustdata.com/person/contact/enrich
```

<Note>
  Replace `YOUR_API_KEY` in each example with your actual API key. All
  requests require the `x-api-version: 2025-11-01` header.
</Note>

<Callout icon="lock" color="#f59e0b">
  <strong>Availability:</strong> requires contact-enrich access (enterprise or
  higher-tier plans); self-serve keys receive a `403`.
  <strong> Limits:</strong> up to 25 identifiers per request.
</Callout>

## Pricing

Billed **per requested contact type, per matched person** — there is no base
credit, and only the types you request are fetched and billed.

| Contact type requested    | Credits per matched person |
| ------------------------- | -------------------------- |
| `contact.business_emails` | **1**                      |
| `contact.personal_emails` | **2**                      |
| `contact.phone_numbers`   | **2**                      |

Omitting `fields` requests all three (**5**, the maximum). `contact.websites`
is not one of the billed contact types — requesting it currently uses **0**
credits. Identifiers with no match are **free**. See
[Pricing](/general/pricing) for all endpoints.

***

## Enrich contact data

Request the `contact` field (or specific sub-fields) for one or more profile URLs.

<CodeGroup>
  ```bash Request theme={"theme":"vitesse-black"}
  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"]
    }'
  ```

  ```json Response theme={"theme":"vitesse-black"}
  [
      {
          "matched_on": "https://www.linkedin.com/in/abhilashchowdhary",
          "match_type": "professional_network_profile_url",
          "matches": [
              {
                  "confidence_score": 1.0,
                  "person_data": {
                      "contact": {
                          "business_emails": [
                              { "email": "abhilash@crustdata.com", "status": "deliverable" }
                          ],
                          "personal_emails": [
                              { "email": "personal@example.com", "status": "deliverable" }
                          ],
                          "phone_numbers": ["+1-555-0100"],
                          "websites": []
                      },
                      "crustdata_person_id": 1068035
                  }
              }
          ]
      }
  ]
  ```
</CodeGroup>

<Note>
  Email records are `{ email, status }` objects, where `status` is one of
  `deliverable`, `catch_all`, `invalid`, or `unknown` (see [Email
  status](#email-status)). The personal email and phone values above are
  illustrative.
</Note>

<Tip>
  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](/person-docs/enrichment/introduction).
</Tip>

## Contact fields

| Field                     | Returns                                              |
| ------------------------- | ---------------------------------------------------- |
| `contact`                 | All contact records: emails, phone numbers, websites |
| `contact.business_emails` | Business email records                               |
| `contact.personal_emails` | Personal email records                               |
| `contact.phone_numbers`   | Phone numbers                                        |
| `contact.websites`        | Personal 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.

| Status        | Meaning                                                                                                                            |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `deliverable` | The mailbox was confirmed to exist and accept mail at this exact address. Lowest bounce risk.                                      |
| `catch_all`   | The domain accepts mail for any address, so this specific mailbox can't be confirmed. It may work, but delivery isn't guaranteed.  |
| `invalid`     | The mailbox was confirmed not to exist or is otherwise undeliverable. Sending will bounce.                                         |
| `unknown`     | Deliverability 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`).

<AccordionGroup>
  <Accordion title="Business emails only — 1 credit">
    ```bash theme={"theme":"vitesse-black"}
    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. Billed **1 credit** per matched person.
  </Accordion>

  <Accordion title="Personal emails only — 2 credits">
    ```bash theme={"theme":"vitesse-black"}
    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. Billed **2 credits** per matched person.
  </Accordion>

  <Accordion title="Phone numbers only — 2 credits">
    ```bash theme={"theme":"vitesse-black"}
    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. Billed **2 credits** per matched person.
  </Accordion>

  <Accordion title="Reverse lookup by business email">
    Pass `business_emails` instead of profile URLs — the endpoint resolves each
    email to its person and returns their contact data in the same request. No
    separate identification call is needed.

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      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 '{
          "business_emails": ["abhilash@crustdata.com"],
          "fields": ["contact.business_emails"]
        }'
      ```

      ```json Response theme={"theme":"vitesse-black"}
      [
          {
              "matched_on": "abhilash@crustdata.com",
              "match_type": "business_email",
              "matches": [
                  {
                      "confidence_score": 1.0,
                      "person_data": {
                          "contact": {
                              "business_emails": [
                                  { "email": "abhilash@crustdata.co", "status": "deliverable" },
                                  { "email": "abhilash@crustdata.com", "status": "deliverable" }
                              ]
                          }
                      }
                  }
              ]
          }
      ]
      ```
    </CodeGroup>

    <Note>
      Use exactly one identifier type per request — `business_emails` and
      `professional_network_profile_urls` cannot be mixed in the same call. If
      you only need to know **who** owns an email (identity, not contact data),
      use [Identify (Reverse Email Lookup)](/person-docs/contact/identify).
    </Note>
  </Accordion>
</AccordionGroup>

## Request parameters

| Parameter                           | Type      | Required                     | Description                                                |
| ----------------------------------- | --------- | ---------------------------- | ---------------------------------------------------------- |
| `professional_network_profile_urls` | string\[] | One of these two identifiers | Profile URLs to enrich. Max 25.                            |
| `business_emails`                   | string\[] | One of these two identifiers | Business emails for reverse lookup. Max 25.                |
| `fields`                            | string\[] | No                           | Which fields to return. Use `contact` (or its sub-fields). |

## Errors

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

***

## API reference summary

| Detail       | Value                                                                                          |
| ------------ | ---------------------------------------------------------------------------------------------- |
| **Endpoint** | `POST /person/contact/enrich`                                                                  |
| **Auth**     | Bearer token + `x-api-version: 2025-11-01`                                                     |
| **Request**  | One of `professional_network_profile_urls` or `business_emails` (max 25). `fields`: `contact`. |
| **Response** | Array: `[{ "matched_on", "match_type", "matches": [{ "confidence_score", "person_data" }] }]`. |
| **Errors**   | `400`, `401`, `403`, `500`                                                                     |

For the full field catalog and identifier behavior, see the [Person Enrich reference](/person-docs/enrichment/reference). For credit pricing, see [Pricing](/general/pricing).

***

## What to do next

* **Enrich in bulk** — [Batch Contact Enrich](/person-docs/contact/batch) handles large lists asynchronously with no per-profile base fee.
* **Get full profiles** — [Person Enrich](/person-docs/enrichment/introduction) returns profile, employment, and education data.
* **Find people first** — use [Person Search](/person-docs/search/introduction) to build your list of profile URLs.


## Related topics

- [Contact Enrich](/api-reference/person-apis/enrich-only-person-contact-data-from-cached-dataset.md)
- [Batch Contact Enrich](/person-docs/contact/batch.md)
- [Changelog](/openapi-specs/2025-11-01/changelog.md)
- [Pricing](/general/pricing.md)
