> ## 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) with no per-profile base fee.
</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> Pricing:</strong> additive — a base profile credit plus a credit for
  each contact field you request. See [Pricing](/general/pricing) for
  per-field costs.
  <strong> Limits:</strong> up to 25 identifiers per request.
</Callout>

***

## 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">
    ```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.
  </Accordion>

  <Accordion title="Personal emails only">
    ```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.
  </Accordion>

  <Accordion title="Phone numbers only">
    ```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.
  </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, education, and contact data together.
* **Find people first** — use [Person Search](/person-docs/search/introduction) to build your list of profile URLs.
