Skip to content
Get started
Operator Reference

Filter Operators

Complete reference for all filter operators available in Bounty Lab search APIs.

Filters use the {field, op, value} pattern to narrow search results. This page documents all available operators and their usage.

Every filter follows this structure:

{
"field": "fieldName",
"op": "OperatorName",
"value": "value"
}

Match exact values or check membership in a set.

Exact match for a single value.

{ "field": "language", "op": "Eq", "value": "TypeScript" }

Exclude a single value.

{ "field": "language", "op": "NotEq", "value": "HTML" }

Match any value in a list.

{ "field": "language", "op": "In", "value": ["Python", "JavaScript", "Go"] }

Exclude all values in a list.

{ "field": "language", "op": "NotIn", "value": ["HTML", "CSS", "Markdown"] }

Compare numeric or datetime values.

Value must be greater than or equal to the specified amount.

{ "field": "stargazerCount", "op": "Gte", "value": 1000 }

Value must be less than or equal to the specified amount.

{ "field": "stargazerCount", "op": "Lte", "value": 50000 }

Value must be strictly greater than the specified amount.

{ "field": "totalIssuesOpen", "op": "Gt", "value": 10 }

Value must be strictly less than the specified amount.

{ "field": "totalIssuesOpen", "op": "Lt", "value": 100 }

Match strings using patterns or regular expressions.

Case-sensitive glob pattern matching with wildcards (*, ?).

{ "field": "ownerLogin", "op": "Glob", "value": "google*" }

Exclude matches for a case-sensitive glob pattern.

{ "field": "ownerLogin", "op": "NotGlob", "value": "test*" }

Case-insensitive glob pattern matching.

{ "field": "ownerLogin", "op": "IGlob", "value": "Google*" }

Exclude matches for a case-insensitive glob pattern.

{ "field": "name", "op": "NotIGlob", "value": "*deprecated*" }

Full regular expression matching.

{ "field": "name", "op": "Regex", "value": "^react-.*-components?$" }

Operate on array fields.

Array must contain the specified value.

{
"field": "lastContributorLocations",
"op": "Contains",
"value": "San Francisco"
}

Array must not contain the specified value.

{ "field": "lastContributorLocations", "op": "NotContains", "value": "Unknown" }

Array must contain at least one value from the list.

{
"field": "lastContributorLocations",
"op": "ContainsAny",
"value": ["San Francisco", "New York", "Seattle"]
}

Array must not contain any values from the list.

{
"field": "lastContributorLocations",
"op": "NotContainsAny",
"value": ["Unknown", "N/A"]
}

Tokenized text search that handles formatting variations automatically. Use this for location fields, bios, descriptions, and other free-text fields.

{ "field": "resolvedCity", "op": "ContainsAllTokens", "value": "San Francisco" }

Why use ContainsAllTokens?

  • Handles case variations: “san francisco” matches “San Francisco”
  • Handles formatting: “SF, California” matches “San Francisco”
  • Tokenizes input: searches for all words in the value

Best for these fields:

  • location, resolvedCity, resolvedState, resolvedCountry
  • bio, company
  • description, readmePreview
  • lastContributorLocations

Example - Location search:

{
"field": "resolvedCity",
"op": "ContainsAllTokens",
"value": "San Francisco"
}

This matches users with locations like:

  • “San Francisco, CA”
  • “san francisco”
  • “SF, San Francisco Bay Area”

Combine multiple filters with boolean logic.

All conditions must match.

{
"op": "And",
"filters": [
{ "field": "language", "op": "Eq", "value": "Python" },
{ "field": "stargazerCount", "op": "Gte", "value": 1000 }
]
}

Any condition can match.

{
"op": "Or",
"filters": [
{
"field": "resolvedCity",
"op": "ContainsAllTokens",
"value": "San Francisco"
},
{ "field": "resolvedCity", "op": "ContainsAllTokens", "value": "New York" }
]
}

Negate a filter condition.

{
"op": "Not",
"filter": { "field": "language", "op": "Eq", "value": "HTML" }
}

Find TypeScript repos with 1000+ stars in specific locations

Section titled “Find TypeScript repos with 1000+ stars in specific locations”
{
"op": "And",
"filters": [
{ "field": "language", "op": "Eq", "value": "TypeScript" },
{ "field": "stargazerCount", "op": "Gte", "value": 1000 },
{
"op": "Or",
"filters": [
{
"field": "lastContributorLocations",
"op": "ContainsAllTokens",
"value": "San Francisco"
},
{
"field": "lastContributorLocations",
"op": "ContainsAllTokens",
"value": "Seattle"
}
]
}
]
}

Find users at specific companies in the US

Section titled “Find users at specific companies in the US”
{
"op": "And",
"filters": [
{ "field": "company", "op": "In", "value": ["Google", "Meta", "Apple"] },
{
"field": "resolvedCountry",
"op": "ContainsAllTokens",
"value": "United States"
}
]
}

Exclude certain languages and require quality threshold

Section titled “Exclude certain languages and require quality threshold”
{
"op": "And",
"filters": [
{
"field": "language",
"op": "NotIn",
"value": ["HTML", "CSS", "Markdown"]
},
{ "field": "stargazerCount", "op": "Gte", "value": 100 },
{ "field": "totalIssuesClosed", "op": "Gte", "value": 10 }
]
}
OperatorValue TypeDescription
Eqstring/numberExact match
NotEqstring/numberNot equal
InarrayMatch any in list
NotInarrayMatch none in list
LtnumberLess than
LtenumberLess than or equal
GtnumberGreater than
GtenumberGreater than or equal
GlobstringCase-sensitive wildcard
NotGlobstringExclude case-sensitive wildcard
IGlobstringCase-insensitive wildcard
NotIGlobstringExclude case-insensitive wildcard
RegexstringRegular expression
ContainsanyArray contains value
NotContainsanyArray doesn’t contain value
ContainsAnyarrayArray contains any value
NotContainsAnyarrayArray contains no values
ContainsAllTokensstringFull-text tokenized search
Andfilters[]All must match
Orfilters[]Any can match
NotfilterNegate condition