Skip to content
Get started
Operator Reference

User Fields

Complete reference for all searchable and filterable fields in user search.

This page documents all fields available for filtering and searching users.

User search uses BM25 full-text search with field-level weighting. The search automatically queries across multiple weighted fields and ranks results by keyword relevance.

FieldWeightDescription
emails3xEmail addresses (highest precision)
login2xUsername
displayName1xDisplay name
bio1xUser bio
company1xCompany name
location1xUser-provided location
FieldTypeFilterableFTSDescription
githubIdstringYesNoUnique node ID
loginstringYesYes (2x)Username
displayNamestringYesYesDisplay name
biostringYesYesUser bio
companystringYesYesCompany name
locationstringYesYesRaw location (user-provided)
websiteUrlstringNoNoPersonal website
socialAccountsstringNoNoSocial accounts (JSON)
emailsstringYesYes (3x)Email addresses
resolvedCountrystringYesYesParsed country
resolvedStatestringYesYesParsed state/region
resolvedCitystringYesYesParsed city
createdAtdatetimeYesNoAccount creation date
updatedAtdatetimeYesNoLast profile update

Legend:

  • Filterable: Can be used with filter operators
  • FTS: Included in full-text search (weight shown if >1x)
  • Type: string
  • Example: "U_kgDOAx..."
  • Operators: Eq, In, NotIn

The unique node ID for the user.

  • Type: string
  • Example: "torvalds", "gaearon"
  • Operators: Eq, In, NotIn, Glob, IGlob
  • FTS Weight: 2x

The username. Has 2x weight in full-text search.

{ "field": "login", "op": "Eq", "value": "torvalds" }
  • Type: string (nullable)
  • Example: "Linus Torvalds"
  • Operators: Eq, ContainsAllTokens

The user’s display name.

  • Type: string (nullable)
  • Example: "Creator of Linux and Git"
  • Operators: ContainsAllTokens

User biography. Use full-text search to find developers with specific skills or interests.

{
"field": "bio",
"op": "ContainsAllTokens",
"value": "kubernetes cloud native"
}
  • Type: string (nullable)
  • Example: "Google", "@meta"
  • Operators: Eq, In, ContainsAllTokens

Company affiliation. Note: users may format this differently (e.g., "@google", "Google Inc.").

{ "field": "company", "op": "In", "value": ["Google", "Meta", "Apple"] }

User location is available in two forms:

  1. Raw location (location) - User-provided, unprocessed
  2. Resolved location (resolvedCountry, resolvedState, resolvedCity) - Parsed and normalized
  • Type: string (nullable)
  • Example: "Portland, OR", "San Francisco Bay Area"
  • Operators: Eq, ContainsAllTokens

Raw location as entered by the user. Can have many variations.

  • Type: string (nullable)
  • Example: "United States", "Germany", "Japan"
  • Operators: Eq, In, ContainsAllTokens

Normalized country name.

{
"field": "resolvedCountry",
"op": "ContainsAllTokens",
"value": "United States"
}
  • Type: string (nullable)
  • Example: "California", "Oregon", "Texas"
  • Operators: Eq, In, ContainsAllTokens

Normalized state or region.

{ "field": "resolvedState", "op": "Eq", "value": "California" }
  • Type: string (nullable)
  • Example: "San Francisco", "Seattle", "Austin"
  • Operators: Eq, In, ContainsAllTokens

Normalized city name. Always use ContainsAllTokens for best results.

{ "field": "resolvedCity", "op": "ContainsAllTokens", "value": "San Francisco" }
  • Type: string (nullable, JSON array)
  • Example: "[\"user@company.com\", \"user@gmail.com\"]"
  • Operators: ContainsAllTokens
  • FTS Weight: 3x

Email addresses as a JSON string array. Has highest weight (3x) in full-text search.

{ "field": "emails", "op": "ContainsAllTokens", "value": "@google.com" }

Find users by email domain:

{ "field": "emails", "op": "ContainsAllTokens", "value": "@anthropic.com" }
  • Type: string (nullable)
  • Not searchable or filterable

User’s personal website URL.

  • Type: datetime
  • Operators: Gt, Gte, Lt, Lte

When the account was created.

{ "field": "createdAt", "op": "Gte", "value": "2015-01-01T00:00:00Z" }
  • Type: datetime
  • Operators: Gt, Gte, Lt, Lte

When the profile was last updated.

Always use ContainsAllTokens for location fields to handle formatting variations:

{ "field": "resolvedCity", "op": "ContainsAllTokens", "value": "San Francisco" }
{
"op": "Or",
"filters": [
{ "field": "company", "op": "Eq", "value": "Google" },
{ "field": "company", "op": "Eq", "value": "Meta" },
{ "field": "emails", "op": "ContainsAllTokens", "value": "@google.com" }
]
}
{
"op": "And",
"filters": [
{
"field": "resolvedCountry",
"op": "ContainsAllTokens",
"value": "United States"
},
{
"op": "Or",
"filters": [
{
"field": "resolvedCity",
"op": "ContainsAllTokens",
"value": "San Francisco"
},
{
"field": "resolvedCity",
"op": "ContainsAllTokens",
"value": "Seattle"
},
{
"field": "resolvedCity",
"op": "ContainsAllTokens",
"value": "New York"
},
{
"field": "resolvedCity",
"op": "ContainsAllTokens",
"value": "Austin"
}
]
}
]
}

Combine query keywords with bio filtering:

await client.searchUsers.search({
query: "rust systems programming",
filters: {
field: "bio",
op: "ContainsAllTokens",
value: "rust",
},
});
{
"op": "Or",
"filters": [
{ "field": "emails", "op": "ContainsAllTokens", "value": "@openai.com" },
{ "field": "emails", "op": "ContainsAllTokens", "value": "@anthropic.com" },
{ "field": "company", "op": "Eq", "value": "DeepMind" }
]
}
{
"field": "createdAt",
"op": "Lte",
"value": "2015-01-01T00:00:00Z"
}

Use the search query parameter for:

  • Skills and technologies: "typescript react engineer"
  • Job roles: "senior backend developer"
  • Expertise areas: "machine learning"

Use filters for:

  • Exact constraints: company name, location
  • Geographic targeting: resolvedCity, resolvedCountry
  • Email domain: emails with ContainsAllTokens
await client.searchUsers.search({
// Semantic query for skills
query: "kubernetes infrastructure engineer",
// Filters for constraints
filters: {
op: "And",
filters: [
{
field: "resolvedCity",
op: "ContainsAllTokens",
value: "San Francisco",
},
{ field: "company", op: "In", value: ["Google", "Meta", "Amazon"] },
],
},
maxResults: 50,
});
  1. Use resolved location fields - More reliable than raw location field
  2. Use ContainsAllTokens for text - Handles variations in spelling and formatting
  3. Use email domains for company targeting - More reliable than company field
  4. Combine search with filters - Query for skills, filter for constraints
  5. Search is keyword-based - Use specific terms that appear in profiles