Skip to main content
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
Replace YOUR_API_KEY in each example with your actual API key. All requests require the x-api-version: 2025-11-01 header.
Pricing: 0.03 credits per result returned.
Looking for the list of fields you can filter on? See 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.

Filter recipes

Employer + title, geo radius, country, and post-processing exclusions.

Pagination & sorting

Cursor-based pagination and sort rules for stable ordering.

Reference

Operators, searchable fields, response fields, preview mode, errors.

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.
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
  }'
Response trimmed for clarity.

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.
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
  }'
Response trimmed for clarity.
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 Filter recipes. To walk through large result sets, see Pagination and sorting.

What to do next

  • Try more filter patterns — see Filter recipes for employer + title, geo radius, and exclude patterns.
  • Paginate and sort — see Pagination and sorting.
  • Look up operators and fields — see Search reference.
  • Enrich a profile — once you have a profile URL from search, use Person Enrich to get the full cached profile.
  • Discover filter values — use Person Autocomplete to find exact indexed values for search filters.
  • Check the API reference — see the OpenAPI spec for the full schema.