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

> Learn how to search for people using the Person Search API, from simple name lookups to multi-filter queries.

The Person Search API lets you find professionals by name, title, company, location, and more. This page walks you through the basics: your first search, the response shape, and combining filters. For deeper topics, follow the links to the sub-pages.

Every request goes to the same endpoint:

```
POST https://api.crustdata.com/person/search
```

<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="coins" color="#5345e4">
  <strong>Pricing:</strong> <code>0.03 credits per result returned</code>.
</Callout>

<Tip>
  **Looking for the list of fields you can filter on?** See [Searchable
  fields](/person-docs/search/reference#searchable-fields) in the search
  reference for the full table of `filters.field` values grouped by family,
  plus a one-line trick to fetch the live list from the API.
</Tip>

<CardGroup cols={3}>
  <Card title="Examples" icon="list-filter" href="/person-docs/search/examples">
    Employer + title, geo radius, country, and post-processing exclusions.
  </Card>

  <Card title="Pagination & sorting" icon="list-ordered" href="/person-docs/search/reference#paginate-through-results">
    Cursor-based pagination and sort rules for stable ordering.
  </Card>

  <Card title="Reference" icon="book" href="/person-docs/search/reference">
    Operators, searchable fields, response fields, preview mode, errors.
  </Card>
</CardGroup>

***

## Your first search: find a person by name

The simplest search finds a person by their exact name. You pass a single filter with the `=` operator.

<CodeGroup>
  ```bash Request theme={"theme":"vitesse-black"}
  curl --request POST \
    --url https://api.crustdata.com/person/search \
    --header 'authorization: Bearer YOUR_API_KEY' \
    --header 'content-type: application/json' \
    --header 'x-api-version: 2025-11-01' \
    --data '{
      "filters": {
        "field": "basic_profile.name",
        "type": "=",
        "value": "Abhilash Chowdhary"
      },
      "limit": 1
    }'
  ```

  ```json Response theme={"theme":"vitesse-black"}
  {
      "profiles": [
          {
              "crustdata_person_id": 1068035,
              "basic_profile": {
                  "name": "Abhilash Chowdhary",
                  "headline": "Co-founder at Crustdata (YC F24) | Real-time B2B data for AI agents",
                  "location": {
                      "raw": "San Francisco, California, United States",
                      "city": "San Francisco",
                      "state": "California",
                      "country": "United States of America",
                      "continent": "North America"
                  }
              },
              "social_handles": {
                  "professional_network_identifier": {
                      "profile_url": "https://www.linkedin.com/in/abhilashchowdhary"
                  }
              },
              "experience": {
                  "employment_details": {
                      "current": [
                          {
                              "name": "Crustdata (YC F24)",
                              "title": "Co-Founder & CEO"
                          }
                      ],
                      "past": [
                          {
                              "name": "Serve Robotics",
                              "title": "Engineering Manager, Motion Planning and Controls"
                          },
                          {
                              "name": "Postmates by Uber",
                              "title": "Robotics Lead, Motion Planning and Controls"
                          }
                      ]
                  }
              },
              "education": {
                  "schools": [
                      {
                          "school": "Virginia Tech",
                          "degree": "Master’s Degree"
                      },
                      {
                          "school": "IIIT Hyderabad",
                          "degree": "Bachelor of Technology (B.Tech.)"
                      },
                      {
                          "school": "Y Combinator",
                          "degree": "F24 Batch"
                      }
                  ]
              }
          }
      ],
      "next_cursor": "H4sIAG6-oWkC_xXMMQrDMAxA0a...",
      "total_count": 8
  }
  ```
</CodeGroup>

<Note>Response trimmed for clarity.</Note>

### Understanding the response

Every search response has three fields:

* **`profiles`** — an array of matching people. Each profile contains identity fields, education, profile handles, and contact availability flags for the fields you requested.
* **`total_count`** — how many people match your filters across the full database. Here, 8 people named "Abhilash Chowdhary" exist.
* **`next_cursor`** — a pagination token. Pass it in the next request to get the next page of results. `null` means there are no more pages.

***

## Combine filters with `and`

Real searches need more than one criterion. Wrap multiple conditions inside an `op: "and"` group to require all of them.

This search finds Co-Founders located in San Francisco. The `(.)` operator does a regex/contains match instead of an exact match.

<CodeGroup>
  ```bash Request theme={"theme":"vitesse-black"}
  curl --request POST \
    --url https://api.crustdata.com/person/search \
    --header 'authorization: Bearer YOUR_API_KEY' \
    --header 'content-type: application/json' \
    --header 'x-api-version: 2025-11-01' \
    --data '{
      "filters": {
        "op": "and",
        "conditions": [
          {
            "field": "experience.employment_details.title",
            "type": "(.)",
            "value": "Co-Founder"
          },
          {
            "field": "basic_profile.location.full_location",
            "type": "(.)",
            "value": "San Francisco"
          }
        ]
      },
      "limit": 2
    }'
  ```

  ```json Response theme={"theme":"vitesse-black"}
  {
      "profiles": [
          {
              "crustdata_person_id": 1279,
              "basic_profile": {
                  "name": "Dipesh Garg",
                  "headline": "CEO at Truelancer | 2 Million+ Professionals",
                  "location": {
                      "raw": "San Francisco, California, United States"
                  }
              },
              "experience": {
                  "employment_details": {
                      "current": [
                          {
                              "name": "Truelancer.com",
                              "title": "CEO & Founder"
                          }
                      ],
                      "past": [
                          {
                              "name": "MyRemoteTeam Inc",
                              "title": "Founder"
                          },
                          {
                              "name": "MyRemoteTeam Inc",
                              "title": "Lead Developer"
                          }
                      ]
                  }
              }
          }
      ],
      "next_cursor": "H4sIAHC-oWkC_xWMMQ7CMAwAv...",
      "total_count": 95577
  }
  ```
</CodeGroup>

<Note>Response trimmed for clarity.</Note>

The key difference from the first example: instead of a single `filters` object, you now have a group with `op: "and"` and a `conditions` array. Every condition must match for a profile to be included.

For more filter patterns (employer + title, geo radius, excludes), see
[Examples](/person-docs/search/examples). To walk through large result
sets, see [Pagination and sorting](/person-docs/search/reference#paginate-through-results).

***

## Read normalized titles, followers, and education details

Each profile also returns a normalized title classification, a follower count, and structured education — including school location and a Crustdata-hosted institution logo. Request the sections you need with `fields`, and filter by `crustdata_person_id` to fetch a single person.

<CodeGroup>
  ```bash Request theme={"theme":"vitesse-black"}
  curl --request POST \
    --url https://api.crustdata.com/person/search \
    --header 'authorization: Bearer YOUR_API_KEY' \
    --header 'content-type: application/json' \
    --header 'x-api-version: 2025-11-01' \
    --data '{
      "filters": { "field": "crustdata_person_id", "type": "=", "value": 14540 },
      "fields": ["basic_profile", "professional_network", "education"],
      "limit": 1
    }'
  ```

  ```json Response theme={"theme":"vitesse-black"}
  {
      "profiles": [
          {
              "crustdata_person_id": 14540,
              "basic_profile": {
                  "name": "David Hsu",
                  "current_title": "Founder, CEO",
                  "normalized_title": {
                      "matched_title": "Co-Founder, CEO, CTO",
                      "department": "Executive Leadership",
                      "sub_department": "Founder & Entrepreneurship Leadership",
                      "similarity": 0.6012,
                      "confident": true
                  }
              },
              "professional_network": {
                  "connections": 697,
                  "followers": 14177
              },
              "education": {
                  "schools": [
                      {
                          "school": "University of Oxford",
                          "degree": "Bachelor of Arts (B.A.)",
                          "location": {
                              "raw": "Oxford, England",
                              "city": "Oxford",
                              "state": "England",
                              "country": "United Kingdom",
                              "continent": null
                          },
                          "institute_logo_permalink": "https://crustdata-media.s3.us-east-2.amazonaws.com/company/3d2093a16f7cf7b459a0d30d4e795d0be5a41a3396f21dee899e43e8a8b6de8d.jpg"
                      }
                  ]
              }
          }
      ],
      "next_cursor": "H4sIAAFsGWoC_x...",
      "total_count": 1
  }
  ```
</CodeGroup>

<Note>
  `basic_profile.normalized_title` and `education.schools.location` are
  **filterable** but not sortable. `professional_network.followers` is both
  filterable and sortable. School `description` and `institute_logo_permalink`
  are returned for display only.
</Note>

***

## What to do next

* **Try more filter patterns** — see [Examples](/person-docs/search/examples) for employer + title, geo radius, and exclude patterns.
* **Paginate and sort** — see [Pagination and sorting](/person-docs/search/reference#paginate-through-results).
* **Look up operators and fields** — see [Search reference](/person-docs/search/reference).
* **Enrich a profile** — once you have a profile URL from search, use [Person Enrich](/person-docs/enrichment/introduction) to get the full cached profile.
* **Discover filter values** — use [Person Autocomplete](/person-docs/autocomplete/introduction) to find exact indexed values for search filters.
* **Check the API reference** — see the [OpenAPI spec](/openapi-specs/2025-11-01/introduction) for the full schema.

***
