> ## 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 Enrichment

> Learn how to enrich person profiles using profile URLs or business emails, from single lookups to batch enrichment.

The Person Enrich API takes an identifier you already have — a profile URL
or a business email — and returns a rich person profile. This page walks you
through the basics: your first enrichment, the response shape, and the
`person_data` sections. For deeper topics, follow the links to the sub-pages.

Every request goes to the same endpoint:

```
POST https://api.crustdata.com/person/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>

### Request body

| Parameter                                               | Type   | Required       | Description                                             |
| ------------------------------------------------------- | ------ | -------------- | ------------------------------------------------------- |
| `professional_network_profile_urls` / `business_emails` | array  | Yes — one only | Submit exactly one identifier type. Max 25 per request. |
| `fields`                                                | array  | No             | Specific field paths or section groups to include.      |
| `min_similarity_score`                                  | number | No             | Minimum confidence threshold for email reverse lookup.  |

### Response body

The response is a top-level array. Each entry corresponds to one input
identifier.

| Field                        | Type   | Description                                                       |
| ---------------------------- | ------ | ----------------------------------------------------------------- |
| `matched_on`                 | string | The input identifier (profile URL or email)                       |
| `match_type`                 | string | `professional_network_profile_url` or `business_email`            |
| `matches`                    | array  | Candidate matches. Empty for no-match inputs.                     |
| `matches[].confidence_score` | number | 0 to 1. Higher is better. `1.0` is common for direct URL lookups. |
| `matches[].person_data`      | object | Full enriched profile.                                            |

### Rate limits and pricing

<Callout icon="coins" color="#5345e4">
  <strong>Pricing:</strong> Base profile is <code>1 credit</code>. Add
  <code>+2</code> for personal email, <code>+2</code> for phone,
  <code>+1</code> for business email, and <code>+1</code> for developer
  platform data. Maximum: <code>7 credits per profile</code>.
</Callout>

<CardGroup cols={3}>
  <Card title="Examples" icon="fingerprint" href="/person-docs/enrichment/examples">
    Email reverse lookup, batch enrichment, no-match handling, Search →
    Enrich workflow.
  </Card>

  <Card title="Reference" icon="book" href="/person-docs/enrichment/reference">
    Request parameters, response fields, valid `fields` values,
    `person_data` sections, advanced flags, errors.
  </Card>
</CardGroup>

***

## Your first enrichment: look up a profile

The simplest enrichment takes a single profile URL and returns the person's
cached profile. Pass the URL in the `professional_network_profile_urls`
array.

<CodeGroup>
  ```bash Request theme={"theme":"vitesse-black"}
  curl --request POST \
    --url https://api.crustdata.com/person/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/"
      ]
    }'
  ```

  ```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": {
                      "basic_profile": {
                          "name": "Abhilash Chowdhary",
                          "headline": "Co-founder at Crustdata (YC F24) | Real-time B2B data for AI agents",
                          "current_title": "Co-Founder & CEO",
                          "summary": "Love building things. A software engineer with vast experience in shipping products spanning robotics, web technologies and quantitative finance.",
                          "location": {
                              "city": null,
                              "continent": null,
                              "country": null,
                              "raw": "San Francisco, California, United States",
                              "state": null
                          },
                          "languages": ["English", "Hindi"],
                          "last_updated": "2026-03-03T17:09:31.949863Z"
                      },
                      "contact": {
                          "phone_numbers": [],
                          "websites": [
                              "https://crustdata.com?utm_source=linkedin&utm_medium=organic_social&utm_campaign=abhilash_bio"
                          ]
                      },
                      "crustdata_person_id": 1068035,
                      "social_handles": {
                          "twitter_identifier": {}
                      }
                  }
              }
          ]
      }
  ]
  ```
</CodeGroup>

<Note>
  Response trimmed for clarity. The full response can include employment
  history, education, skills, contact data, and developer platform
  profiles when available.
</Note>

### Understanding the response

The Enrich API returns an **array** — one entry per identifier you
submitted. Each entry has three fields:

* **`matched_on`** — the identifier you submitted (a profile URL or email).
* **`match_type`** — either `professional_network_profile_url` or `business_email`, telling you which identifier type was used.
* **`matches`** — an array of candidate profiles. Each match includes a `confidence_score` (0 to 1) and the full `person_data` object.

For profile URL lookups, you will typically get exactly one match with a
`confidence_score` of `1.0`, because the URL is a direct identifier.

### Need fresh data from the web?

If the cached enrich response is missing a recent update or you need
real-time retrieval from the web, use
[Person Live Enrich](/person-docs/enrichment/live-enrich). That endpoint is designed for
fresh profile retrieval when cached enrich is not enough.

***

## What to do next

* **Enrich by email or in batch** — see [Examples](/person-docs/enrichment/examples) for business-email reverse lookups, multi-profile requests, and workflows.
* **Request only the sections you need** — see [Using the `fields` parameter](/person-docs/enrichment/reference#using-the-fields-parameter) to reduce response size.
* **Look up request/response details** — see [Enrich reference](/person-docs/enrichment/reference).
* **Search first, then enrich** — use [Person Search](/person-docs/search/introduction) to find people by name, title, company, or location, then enrich the results.
* **Fetch fresh data from the web** — use [Person Live Enrich](/person-docs/enrichment/live-enrich) when cached enrich is not enough.
* **Read the overview** — see [Person Search](/person-docs/search/introduction) for the main Search entry point.
