Queries (Beta)
This page covers the updated syntax that comes with the Beta version of Explore. If you're looking for the standard syntax, or you want to query with SDK, read here.
When you’re in the Explore tab, you'll see a query search bar above your items. This bar uses a custom SuperAnnotate query language to filter items with a range of parameters (e.g. item status, assignment, individual component values etc.). You can also combine multiple statements with logical operators such as AND and OR, and group them in parentheses ().
When you've built a query, if you want to reuse it in the future, you can save it for convenience.
Syntax format:
[system_field] [operator] [value][component_id] [operator] [value][component_id] [operator] [component_id]
System fields
Item information can be filtered using any of the following parameters:
Parameters | Value | Operators |
|---|---|---|
| For system workflows: For a custom workflow, the values depend on the statuses that exist within it. |
|
|
|
|
| The value is the email address of the user who updated the item last. |
|
| The value is a date with this format |
|
| The value is the item's name. |
|
| The value is the folder's name. |
|
| The value is the folder's status. |
|
| The value is the category name. |
|
| The value is numeric. This is the priority score given to the item. |
|
| Numeric value. | No operators required. |
Last ActionFor the
_lastActionByand_lastActionDateparameters, updates only count when they change the item's JSON in any way, and this only considers the changes made at the latest date recorded. This doesn't include things like assignments, annotation status changes, or approval status changes.
ExamplesTo search items with the
QualityCheckstatus:_status = "QualityCheck"To search items with the
InProgressstatus that are disapproved:_status = "InProgress" AND "approvalStatus" = falseTo pick 100 random items from 3 selected folders:
_folder IN ["batch 1", "batch 2", "root"] random 100
Assignment
The assignment can be used to filter items assigned to users by role, email, name, activity status or whether their status as a member is pending.
ExamplesTo filter items where
AnnotatorisJohn Smith:assignment.Annotator(name = "John Smith")To filter items where
QArole is unassigned or any role assignee ispaused:assignment.QA(email IS EMPTY) OR assignment(isPaused = true )To filter items where
QAassignee name contains John andAuditassignee has pending state:assignment.QA(name CONTAINS "John") AND assignment.Audit(isPending = true )Note that
ROLEcorresponds to a existing role in your project's workflow.
Component fields
These are the fields that correspond to the component types that exist within your form. They can be differentiated by using each component's individual ID followed by a corresponding operator, for example:alpha_project CONTAINS "valid" where alpha_project is the specific component's ID.
A component's type and ID can be seen when viewing the item in the Explore list, or in Zoom View. Component-ID suggestions in the query bar also display the component's label next to the ID, and the label text is searchable there.
You can also exclude the component's ID if you want to query all components of the same type.
Selectable components
- Corresponding components:
select,radio,checkbox - Single-select operators:
=,!=,IN,NOT IN,CONTAINS,NOT CONTAINS,IS EMPTY,IS NOT EMPTY - Multi-select operators:
HAS,NOT HAS,CONTAINS,NOT CONTAINS,IS EMPTY,IS NOT EMPTY
After =, !=, IN, NOT IN, HAS, NOT HAS, autocomplete suggests the component's own options as well as every other selectable component's ID.
ExamplesTo find items marked "Complete" for model 1 and "Incomplete" for model 2, where
model1andmodel2are radio component IDs:model1 = "Complete" AND model2 = "Incomplete"To find items where a select component's value matches another select component's value:
select_id1 = select_id2
Number-type components
- Corresponding components:
number,slider,rating, web components with number keys. - Operators:
=,!=,>,<,>=,<=,IN,NOT IN,IS EMPTY,IS NOT EMPTY
After the operator, autocomplete suggests every other numeric component's ID for comparison.
ExamplesTo find items with a rating of 3 or higher on the
promptcomponent:prompt >= 3To find items where
completionandpromptratings are equal:completion = promptTo find items where a web component's numeric key exceeds 10:
myWebComponent.score > 10
Date-type components
- Corresponding components:
datetime, web components with date keys. - Operators:
=,!=,>,<,>=,<=,IN,NOT IN,IS EMPTY,IS NOT EMPTY(unchanged from current behavior)
After the operator, autocomplete opens a calendar rather than free text.
ExamplesTo find items with an approval date earlier than a review date, where both are date components:
approvalDate < reviewDateTo find items with a date component value on a specific day:
dueDate = 2026-06-01
Text-type components
- Corresponding components:
markdown,input,textarea,paragraph,code,csv, web components with string keys.
- Operators:
=,!=,IN,NOT IN,CONTAINS,NOT CONTAINS,IS EMPTY,IS NOT EMPTY
.length is suggested after a dot on every text-type component ID, letting you filter by character count.
Character limit on text filtersOnly the first 500 characters of any value are considered. This message is shown below the query bar when the query runs.
ExamplesTo find items whose
completiontext contains "software" and whosecorrectiontext contains "SaaS":completion CONTAINS "software" AND correction CONTAINS "SaaS"To find items where a text component is longer than 50 characters:
completion.length > 50
Comment sub-entity
You can filter on a component's comment status and comment text by appending .commentText or .commentResolved to a component ID. Both are suggested after the dot for every component ID.
id1.commentText — queried like any other string value.
- Operators:
=,!=,IN,NOT IN,CONTAINS,NOT CONTAINS
id1.commentResolved — queried like any other boolean value.
- Operators:
=,!=,IN,NOT IN - Autocomplete after the operator:
true,false
You can also query comment entities independently of any specific component. These consider all comments on the item and return the item if at least one comment meets the constraint.
| Entity | Operators | Example |
|---|---|---|
commentText | =, !=, IN, NOT IN, CONTAINS, NOT CONTAINS | commentText CONTAINS "check" |
commentResolved | =, !=, IN, NOT IN | commentResolved = true |
commentCount | =, !=, >, <, >=, <=, IN, NOT IN | commentCount > 0 |
ExamplesTo find items with an unresolved comment on a specific component:
myField.commentResolved = falseTo find items with 3 or more comments total, regardless of component:
commentCount >= 3To find items where any comment contains the word "revise":
commentText CONTAINS "revise"
Array-type data
All array-type values are queried with the same logic, regardless of component type:
- Multi-select component values:
HAS,NOT HAS,CONTAINS,NOT CONTAINS,IS EMPTY,IS NOT EMPTY - Checkbox component values:
HAS,NOT HAS,CONTAINS,NOT CONTAINS,IS EMPTY,IS NOT EMPTY - Web component string array:
HAS,NOT HAS,CONTAINS,NOT CONTAINS,IS EMPTY,IS NOT EMPTY - Web component number array:
HAS,NOT HAS,IS EMPTY,IS NOT EMPTY - Web component date array:
HAS,NOT HAS
ExamplesTo find items where a multi-select component includes the option "Red":
colorTags HAS "Red"To find items where none of a checkbox component's selected values is "Reviewed":
reviewFlags NOT HAS "Reviewed"To find items where a web component's string array key contains a value ending in ".pdf":
attachments CONTAINS ".pdf"
Comparative querying
After using an operator and any values you want to filter by, you can also incorporate component IDs to compare values between two components. You can only compare values if they share a value type. Here are the value types, and which components they correspond to:
- Numeric -
number,slider,rating,scores,web(non-array numeric value)- Supported operators:
=,!=,>=,<=,>,<
- Supported operators:
- Selective -
select(single select only),radio- Supported operators:
=,!=
- Supported operators:
- Date -
datetime,web(non-arraydatetimekey)- Supported operators:
=,!=,>=,<=,>,<
- Supported operators:
Operators
You'll need to use operators to define your queries and values.
| Operator | Description |
|---|---|
= | Equal. |
!= | Not equal. |
> | Greater than. |
< | Less than. |
>= | Greater than or equal to. |
<= | Less than or equal to. |
() | Query parentheses. |
[] | Array. |
AND | Returns items where both statements are true. |
OR | Returns items where either statement is true. |
IN | Set of values to consider. |
NOT IN | Set of values to not consider. |
CONTAINS | Used to search for a substring and returns the results containing that substring. All text queries made with this operator are case-insensitive. |
NOT CONTAINS | Used to search for results that exclude the entered substring. All text queries made with this operator are case-insensitive. This operator only works for the following component parameters: input, textarea, code, markdown, paragraph, and web (string-type keys) |
IN | Used to search whether the value is included in an array. |
NOT IN | Used to search whether the value is excluded from an array. |
HAS | Filters items where at least one element corresponds to the given value in the query. |
NOT HAS | Filters items where none of the elements correspond to the given query. |
IS EMPTY | Returns items where the specified value is empty. |
IS NOT EMPTY | Returns items where the specified value isn't empty. |
Save bookmark
To save a bookmark:
- Type a query in the query bar.
- Click on the bookmark icon on the right side of the query bar.
- In the popup, type a query name.
- Check the Save as shared bookmark box to make the query public to users with roles of Project Admin or higher.
- Click Save.
The maximum number of characters for a saved query's name is 60.
You can save up to 50 queries.
Only the creator of a shared query can make it private again.
Rename and delete bookmarks
You can rename or delete a bookmark at any time from its corresponding menu ⋮.
Team Owners and Team Admins can delete shared bookmarks regardless of who created them.
Updated about 3 hours ago