Filters
The following table represents the comparison operators that are supported and example values. Filters are added as escaped JSON strings formatted as {"key":"<field>","operator":"<comparison_operator>","value":"<value>"}.
- 
Refer to the Datasets page for a list of fields related to each dataset.
 - 
Comparison operators define how values must relate to fields in the log line for an expression to return true.
 - 
Values represent the data associated with fields.
 
| Name | Operator Notation | String | Int | Bool | Array | Object | Example | 
|---|---|---|---|---|---|---|---|
| Equal | eq | ✅ | ✅ | ✅ | ❌ | ❌ | {"key":"ClientRequestHost","operator":"eq","value":"example.com"} | 
| Not equal | !eq | ✅ | ✅ | ✅ | ❌ | ❌ | {"key":"ClientCountry","operator":"!eq","value":"ca"} | 
| Less than | lt | ❌ | ✅ | ❌ | ❌ | ❌ | {"key":"BotScore","operator":"lt","value":"30"} | 
| Less than or equal | leq | ❌ | ✅ | ❌ | ❌ | ❌ | {"key":"BotScore","operator":"leq","value":"30"} | 
| Greater than | gt | ❌ | ✅ | ❌ | ❌ | ❌ | {"key":"BotScore","operator":"gt","value":"30"} | 
| Greater than or equal | geq | ❌ | ✅ | ❌ | ❌ | ❌ | {"key":"BotScore","operator":"geq","value":"30"} | 
| Starts with | startsWith | ✅ | ❌ | ❌ | ❌ | ❌ | {"key":"ClientRequestPath","operator":"startsWith","value":"/foo"} | 
| Ends with | endsWith | ✅ | ❌ | ❌ | ❌ | ❌ | {"key":"ClientRequestPath","operator":"endsWith","value":"/foo"} | 
| Does not start with | !startsWith | ✅ | ❌ | ❌ | ❌ | ❌ | {"key":"ClientRequestPath","operator":"!startsWith","value":"/foo"} | 
| Does not end with | !endsWith | ✅ | ❌ | ❌ | ❌ | ❌ | {"key":"ClientRequestPath","operator":"!endsWith","value":"/foo"} | 
| Contains | contains | ✅ | ❌ | ❌ | ✅ | ❌ | {"key":"ClientRequestPath","operator":"contains","value":"/static"} | 
| Does not contain | !contains | ✅ | ❌ | ❌ | ✅ | ❌ | {"key":"ClientRequestPath","operator":"!contains","value":"/static"} | 
| Value is in a set of values | in | ✅ | ✅ | ❌ | ❌ | ❌ | {"key":"EdgeResponseStatus","operator":"in","value":[200,201]} | 
| Value is not in a set of values | !in | ✅ | ✅ | ❌ | ❌ | ❌ | {"key":"EdgeResponseStatus","operator":"!in","value":[200,201]} | 
The filter field has limits of approximately 30 operators and 1000 bytes. Anything exceeding this value will return an error.
- 
Filters can be connected using
AND,ORlogical operators. - 
Logical operators can be nested.
 
Here are some examples of how the logical operators can be implemented. X, Y and Z are used to represent filter criteria:
- 
X AND Y AND Z -
{"where":{"and":[{X},{Y},{Z}]}} - 
X OR Y OR Z -
{"where":{"or":[{X},{Y},{Z}]}} - 
X AND (Y OR Z) -
{"where":{"and":[{X}, {"or":[{Y},{Z}]}]}} - 
(X AND Y) OR Z -
{"where":{"or":[{"and": [{X},{Y}]},{Z}]}} 
Filters can be set via API or the Cloudflare dashboard. Note that using a filter is optional, but if used, it must contain the where key.
Here is an example request using cURL via API:
Required API token permissions
 
At least one of the following token permissions 
is required:
Logs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/jobs" \  --request POST \  --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \  --json '{    "name": "static-assets",    "output_options": {        "field_names": [            "ClientIP",            "EdgeStartTimestamp",            "RayID"        ],        "sample_rate": 0.1,        "timestamp_format": "rfc3339",        "CVE-2021-44228": true    },    "dataset": "http_requests",    "filter": "{\"where\":{\"and\":[{\"key\":\"ClientRequestPath\",\"operator\":\"contains\",\"value\":\"/static\"},{\"key\":\"ClientRequestHost\",\"operator\":\"eq\",\"value\":\"example.com\"}]}}",    "destination_conf": "s3://<BUCKET_PATH>?region=us-west-2/"  }'To set filters through the dashboard:
- 
In the Cloudflare dashboard, go to the Logpush page at the account or or domain (also known as zone) level.
For account: Go to Logpush
For domain (also known as zone): Go to Logpush
 - 
Select the dataset you want to push to a storage service. Depending on your choice, you have access to account-scoped datasets and zone-scoped datasets, respectively.
 - 
Below Select data fields, in the Filter section, you can set up your filters.
 - 
You need to select a dataset field, an Operator, and a Value.
 - 
You can connect more filters using
ANDandORlogical operators. - 
Select Next to continue the setting up of your Logpush job.
 
Was this helpful?
- Resources
 - API
 - New to Cloudflare?
 - Directory
 - Sponsorships
 - Open Source
 
- Support
 - Help Center
 - System Status
 - Compliance
 - GDPR
 
- Company
 - cloudflare.com
 - Our team
 - Careers
 
- © 2025 Cloudflare, Inc.
 - Privacy Policy
 - Terms of Use
 - Report Security Issues
 - Trademark
 -