Limits

Data accessibility

The GraphQL Analytics API is available to all Cloudflare users; however, users on larger plans have access to a greater selection of data sets and can query over broader historical intervals.

Data node access (by customer plan)

Use the table below to identify which data nodes are included in your customer plan and the range of historical data you can query. For example, Free plans have access to the last 24 hours of browserPerf1mGroups data, while Enterprise plans have access to the last 30 days.

Access to Network Analytics ipFlows nodes is only available to Enterprise customers using Cloudflare Magic Transit or BYOIP for Spectrum

Data nodeFreeProBusinessEnterprise
browserPerf1mGroups24 hours7 days30 days30 days
firewallEventsAdaptiveByTimeGroups14 days14 days30 days30 days
firewallEventsAdaptiveGroupsn/a3 days30 days30 days
firewallEventsAdaptive14 days14 days30 days30 days
firewallRulePreviewGroupsn/an/an/a30 days
healthCheckEventsGroupsn/a3 days30 days90 days
healthCheckEventsn/a3 days30 days90 days
httpRequests1dByColoGroupsn/an/an/a365 days
httpRequests1dGroups365 days365 days365 days365 days
httpRequests1hGroups3 days7 days30 days90 days
httpRequests1mByColoGroupsn/an/an/a7 days
httpRequests1mGroupsn/a24 hours3 days7 days
ipFlows1mGroupsn/an/an/a30 days
ipFlows1hGroupsn/an/an/a6 months
ipFlows1dGroupsn/an/an/a1 year
ipFlows1mAttackGroupsn/an/an/a1 year
loadBalancingRequestsGroupsn/a3 days30 days30 days
loadBalancingRequestsn/a3 days30 days30 days
synAvgPps1mGroupsn/an/an/a7 days

Query settings for account limits

To obtain specific information regarding account limits for a particular data node, use the settings node.

The example query below demonstrates how to retrieve account limits for the browserPerf1mGroups data node. The example queries the following fields:

FieldDescription
enabledReturns true if the data set (node) is available for the current plan.
maxDurationDefines the maximum time period (in seconds) that can be requested in one query (varies by data node).
maxNumberOfFieldsDefines the maximum number of fields that can be requested in one query (varies by data node).
maxPageSizeDefines the maximum number of records that can be returned in one query (varies by data node).
notOlderThanLimits how far back in the record a query can search (in seconds, varies by data set and plan).

Example query

{
  viewer {
    zones(filter: { zoneTag: $zoneTag }) {
      settings {
        browserPerf1mGroups {
          maxDuration
          maxNumberOfFields
          maxPageSize
          enabled
          notOlderThan
        }
      }
    }
  }
}

Response

{
  "data": {
    "viewer": {
      "zones": [
        {
          "settings": {
            "browserPerf1mGroups": {
              "enabled": true,
              "maxDuration": 2592000,
              "maxNumberOfFields": 30,
              "maxPageSize": 10000,
              "notOlderThan": 2595600
            }
          }
        }
      ]
    }
  },
  "errors": null
}

Query limits

In addition to access restrictions, there are limits on the volume of data that a query can return, and there are user limits on daily data volume. The following limits apply in addition to the general rate limits enforced by the Cloudflare API:

  • A zone-scoped query can include up to 10 zones.
  • Account-scoped queries can aggregate data for up to 1,000 zones—queries that involve aggregated data across more than 1,000 zones return with an error.
  • Queries can request up to 30 fields—this limit is indicated by maxNumberOfFields in settings.
  • Responses can return up to 10,000 records—this limit is indicated by maxPageSize in settings.

Queries must explicitly specify the upper bound of records to return, using the limit argument, as in the example below.

{
  viewer {
    zones(filter: { zoneTag: $zoneTag }) {
      firewallEventsAdaptiveGroups(
        limit: 100
        filter: {
          datetime_geq: "2019-10-16T21:08:00Z"
          datetime_lt: "2019-10-16T21:12:00Z"
        }
        orderBy: [datetime_ASC]
      ) {
        count
        dimensions {
          datetime
        }
      }
    }
  }
}