--- title: "system.tag.query" description: "Queries a Tag Provider to produce a list of tags that meet the specified criteria." --- # system.tag.query > Queries a Tag Provider to produce a list of tags that meet the specified criteria. This function is used in **Python Scripting**. ## Description Queries a Tag Provider to produce a list of tags that meet the specified criteria. Provides the same functionality as the [Tag Report Tool](platform\tags\tag-report-tool\tag-report-tool.md). :::note [Properties](platform\tags\tag-report-tool\tag-report-tool.md#properties) contained within a set or properties that are a set require wildcards around search terms when using **Like** and **Not Like**. These properties are listed below. * Alarms (Only returns results when searching for alarm names) * Parameters * Qualified Value * Read Permissions * Tag Event Scripts * Value (If the value data type is a set) * Write Permissions ::: ## Client Permission Restrictions This scripting function has no [Client Permission](../../../ignition-modules/vision/vision-project-properties/vision-project-properties.md#vision-permissions-properties) restrictions. ## Syntax :::note This function accepts [keyword arguments](platform\scripting\python-scripting\user-defined-functions.md#keyword-arguments). ::: `system.tag.query([provider], [query], [limit], [continuation])` ### Parameters Type | Parameter | Description ------- | ------- | ------ String| `provider` | The Tag Provider to query.**Note:** Technically, this parameter is optional, but omitting it will result in an empty Results object. [optional] PyObject| `query` | An object that specifies the query conditions. Can be configured in the [Tag Report Tool](platform\tags\tag-report-tool\tag-report-tool.md) using the *Copy as Script* function. See example below. [optional] Integer| `limit` | Maximum results to return. If more results are possible, the result will have a continuation point set. [optional] String| `continuation` | The tag ID of a previously returned continuation point, to continue the associated query from that point [optional] ### Returns **Results** - A Results object which contains a list of tag dictionaries, one for each tag found during the browse. See [Scripting Object Reference](appendix\reference-pages\scripting-object-reference\scripting-object-reference.md#results). ### Scope Gateway ## Code Examples ```python title="Example #1" provider = 'Sample_Tags' limit = 100 query = { "condition": { "path": "Ramp/Ramp*", "tagType": "AtomicTag", "attributes": { "values": [ "alarm" ], "requireAll": True }, "valueSource": "opc", "quality": "Error" }, "returnProperties": [ "path", "tagType", "quality" ] } # Limited to 100 rows. Use continuation functionality to continue from last result, # or remove limit for full results. results = system.tag.query(provider, query, limit) for result in results: print(result) # To continue from last result, use continuation # Note: The query is stored on the gateway, and therefore does not need to be sent again. # A query parameter will be ignored if continuation is specified. results = system.tag.query(continuation=results.continuationPoint) for result in results: print(result) ``` ```python title="Example #2 - Using OR and AND Operators" # This example uses the "Or" operator introduced in version 8.1.28. Note that the "Or" (line 18) and "And" (line 21, line 31) operators are used in the # JSON query parameter, not in the system function itself. # This example was written using the Tag Report Tool's "Copy as Script" functionality. provider = 'default' limit = 100 query = { "options": { "includeUdtMembers": True, "includeUdtDefinitions": False }, "condition": { "attributes": { "values": [], "requireAll": True }, "properties": { "op": "Or", "conditions": [ { "op": "And", "conditions": [ { "prop": "name", "comp": "Like", "value": "*tag*" } ] }, { "op": "And", "conditions": [ { "prop": "name", "comp": "Like", "value": "*1*" } ] } ] } }, "returnProperties": [ "tagType", "quality" ] } # Limited to 100 rows. Use continuationPoint functionality to continue from last result, # or remove limit for full results. results = system.tag.query(provider, query, limit) ```