Skip to main content
Use this when you need to discover exact indexed values before building a Person Search query — for filter dropdowns, input validation, dataset exploration, or guided query builders. The Person Autocomplete API returns ranked field-value suggestions so you can feed the result straight into a Person Search filter without guessing at valid values.
This endpoint returns field values, not person profiles. It also has no pagination or cursor — the limit parameter (max 100) is the only way to control result size. For a full list of distinct values you need to combine Autocomplete with progressively narrower filters scopes. To fetch person records, use Person Search or Person Enrich instead.
Mental model. The top-level field is the field whose values you want suggested — the autocomplete target. filters.field is different: it’s any Person Search filter field you use to narrow the population that autocomplete runs over. Autocomplete targets come from a fixed allowlist; filter fields come from the broader Person Search filter vocabulary.
Replace YOUR_API_KEY in each example with your actual API key. All requests require the x-api-version: 2025-11-01 header.

At a glance

Default rate-limit is 45 requests per minute. Send an email to gtm@crustdata.co to discuss higher limits if needed for your use case.

Examples

Most-common values, narrow with filters, multi-value, numeric comparisons, Autocomplete → Search workflow.

Reference

Contract, operators, request parameters, autocomplete-enabled fields, implementation tips, and errors.


Quick start: discover job title values

Type-ahead lookup on a single field. Pass the user’s partial input as query and cap the dropdown size with limit.
Each suggestion includes:
  • value — the exact indexed value: the raw string stored against field in Crustdata’s person index. Use it verbatim as a Person Search filter value — two distinct indexed values (for example "VP" and "vp") are different filter keys, and substituting one for the other will return different results.
Suggestions are returned ranked by internal frequency within the (optionally filtered) population. The ranking signal itself is not returned in the response. When no values match the query (or no values exist within the filters scope), the response returns an empty array — not a 404:
No results

Examples

Worked recipes you can copy, paste, and adapt. Each example is a full working request. For operators, request parameters, autocomplete-enabled fields, implementation tips, and errors, see the Reference below.
Pass an empty query to retrieve the top values for the field by frequency. Useful for seeding filter dropdowns or showing popular options.
Empty-query autocomplete can occasionally return blank string values when a field has many empty indexed records. Filter those out in your UI if you do not want a blank option.
Some fields (for example, open_to_cards and employment_type) have a fixed, known value space. An empty query returns the full set in declaration order — useful for populating a static dropdown or chip group without an extra round-trip.
open_to_cards is a closed enum of exactly three codes. The alias professional_network.open_to_cards returns the same suggestions and is the spelling used by the /person/search filter.
Feed any returned value back into a professional_network.open_to_cards filter on /person/search to find people who have surfaced that open-to signal on their profile.
Scope the autocomplete to a subset of the dataset with the optional filters field. The suggestions are then computed against the filtered population.filters accepts either a single AutocompleteFilterCondition or a nested AutocompleteFilterConditionGroup combined with and/or logic.
Use a single AutocompleteFilterCondition to filter on one field — for example, top “VP” titles among current Google employees.
This is the canonical end-to-end Person API workflow. Autocomplete discovers the exact title value the Search API expects, Search finds matching people, and Enrich fills in the details.

Step 1: Discover valid title values

Extract: Take suggestions[0].value"VP Sales". Use this exact string in your Search filter.If empty: Try a broader query (for example, "VP" instead of "VP Sales").

Step 2: Search for matching people

Extract: Take social_handles.professional_network_identifier.profile_url"https://www.linkedin.com/in/janesmith". Pass the profile URL to Enrich.If empty: Broaden filters or verify values with an earlier autocomplete call.

Step 3: Enrich the top match

Result: Full person profile with employment history, education, skills, and more. See Person Enrich for the full response shape.See Person Search for the full filter grammar.

Reference

Reference material for Person Autocomplete: contract vs current behavior, supported filter operators, request parameters, autocomplete-enabled fields, implementation tips for UI builders, and errors. For walk-through examples, see the Examples above.

Guaranteed contract vs current behavior

Use this table to separate the parts you can build against with confidence from the observed behavior that may evolve.

Supported operators

The type field on every AutocompleteFilterCondition accepts the same operators as Person Search filters.
The greater-than-or-equal operator is => (not >=) and less-than-or-equal is =< (not <=). This is intentional — do not mistype them as the more common <= and >=.
This operator set applies to this autocomplete endpoint’s filters parameter only. POST /person/search uses a different set — it rejects contains; use (.) (all-words), [.] (exact phrase), (!) (negation), or has_all there. See the Person Search operator reference.
Pass values with the JSON type that matches the underlying field: "value": 10000 for numeric fields, "value": true for booleans, and strings for text fields. in and not_in require a JSON array — a comma-separated string will return a 400.

Request parameters

Operator footguns. Use => for greater-than-or-equal and =< for less-than-or-equal — these are not >= and <=. in / not_in require JSON arrays (not comma-separated strings).

AutocompleteFilterCondition

AutocompleteFilterConditionGroup

Autocomplete-enabled fields

The top-level field in a Person Autocomplete request (the field whose values you want suggested) must come from a fixed allowlist of autocomplete-enabled dataset fields. Not every Person Search field is autocomplete-enabled. The filters.field is different: it can be any dataset field that Person Search accepts as a filter, not only the autocomplete allowlist. So you can filter autocomplete results on a broader set of fields than you can autocomplete on directly.
The tables below are a documented subset of the autocomplete allowlist. They cover the fields most useful for building filter dropdowns, but they are not exhaustive. If a field you need is not listed, treat its support as unknown until you verify it — the safest way to confirm is to call the endpoint with that field and check whether you get a 400 error. See Verify the live list below for the debug-only live source.
company_name vs name for employers (current behavior). For autocomplete, use experience.employment_details.current.name — the company_name variant is rejected in autocomplete scope. For /person/search filters, both current.name and current.company_name are accepted as aliases. In response payloads, the current employer appears under the name key.

Common supported fields

Verify the live list

Call the endpoint with a deliberately invalid field. The 400 response lists every currently accepted field in its error message:

Implementation tips for UI builders

  • Debounce autocomplete calls to avoid one request per keystroke — 150–300 ms on input idle works well for typeahead UIs.
  • Drop blank values. If "" is returned as the top suggestion, remove it before rendering the dropdown.
  • Handle casing variants carefully. Suggestions like "VP" and "vp" are distinct indexed values. Only merge them into a single UI option if you intentionally want normalized grouping — and if you do, preserve the underlying raw values and expand them in the eventual Person Search filter using in, for example {"type": "in", "value": ["VP", "vp"]}. If the UI needs exact-value selection, keep them as separate options.
  • Cap limit. Most dropdowns need 5–15 options. Lower limit reduces payload size and gives faster responses.
  • Cache top-values lookups. Empty-query calls that seed filter dropdowns rarely change — cache them client-side or at the edge.

Errors

Note: a query that matches nothing is not an error — the endpoint returns {"suggestions": []} with a 200 status. Only use 4xx/5xx handling for actual request or server failures.

API reference summary

See the full API reference for the complete OpenAPI schema.

What to do next

  • Try more patterns — see Examples for most-common values, filtered suggestions, and the Autocomplete → Search workflow.
  • Reference — see Reference for operators, request parameters, autocomplete-enabled fields, implementation tips, and errors.
  • Search for people — use discovered values in Person Search.
  • Enrich matches — use Person Enrich to get full profiles after you find people.