![Kevin K. Lee](https://web.dev/images/authors/kevinkiklee.jpg) Kevin K. Lee [X](https://twitter.com/kevinkiklee) [GitHub](https://github.com/kevinkiklee)

<br />


Published: September 15, 2026

<br />

This guide describes the CrUX tools available to view ad metrics. These tools enable engineering and product teams to evaluate ad experiences of sites. To support various use cases, the CrUX dataset is made available through a variety of tools.

| Tool | Audience | Description | Example use cases |
| [CrUX Vis](https://cruxvis.withgoogle.com/) | Non-technical stakeholders and developers | A web-based dashboard tool to visualize CrUX data. | High-level visual monitoring, reporting, and tracking performance trends. |
| [CrUX API](https://developer.chrome.com/docs/crux/api.md.txt) | Developers | A REST API providing programmatic access to the latest rolling 28-day data. | CI/CD pipeline integration, automated regression tracking and alerting. |
| [CrUX History API](https://developer.chrome.com/docs/crux/history-api.md.txt) | Developers | A REST API providing programmatic access to historical weekly time-series field data. | Performance monitoring, validating the impact of updates, and trend analysis. |
|---|---|---|---|

For more details on the capabilities of each tool, see the [CrUX tools documentation](https://developer.chrome.com/docs/crux/methodology/tools.md.txt).

> [!NOTE]
> **Note:** To use the CrUX API and CrUX History API, you can generate an API key in the Google Cloud Console. For step-by-step setup details and query limits, see the API key section of the CrUX API guide.

## Ad metrics

The following metric keys are available for CrUX API and CrUX History API payloads:

| Metric | Key | Unit | Description |
| [Ad Density](https://developer.chrome.com/docs/ads/metrics/density.md.txt) | `experimental_ad_density` | Percent string | The average percentage of the viewport area occupied by ads during the user's session. |
| [Ad Count](https://developer.chrome.com/docs/ads/metrics/count.md.txt) | `experimental_ad_count` | Unitless | The average number of ad frames visible in the viewport during the user's session. |
| [Ad Weight: CPU](https://developer.chrome.com/docs/ads/metrics/weight-cpu.md.txt) | `experimental_ad_cpu` | Milliseconds | The cumulative CPU execution time of ad frames and workers. |
| [Ad Weight: Network](https://developer.chrome.com/docs/ads/metrics/weight-network.md.txt) | `experimental_ad_kilobytes` | Kilobytes | The cumulative network kilobytes transferred by ad frames and resources. |
|---|---|---|---|

All ad metrics are reported at the 75th percentile (`p75`) to reflect the vast majority of real-world user experiences while filtering out outlier sessions. Also, note that CrUX ad metrics don't have thresholds like Core Web Vitals such as "Good", "Needs improvement", or "Poor".

For details on how the metrics are measured, see the [methodology guide](https://developer.chrome.com/docs/ads/methodology.md.txt#the_75th_percentile_p75).

## CrUX Vis

![CrUX Vis dashboard that is displaying ad metrics for phone users](https://developer.chrome.com/static/docs/ads/tooling/image/cruxvis.png) CrUX Vis dashboard

[CrUX Vis](https://cruxvis.withgoogle.com/) is a web-based dashboard tool designed to visualize CrUX data. The dashboard plots historical trends of the past 40 weeks of rolling 28-day collection periods. It updates weekly on Mondays.

CrUX Vis does not require engineering knowledge, and is accessible to non-technical users. It is suitable for high-level visual monitoring, and tracking week-over-week performance trends. It supports toggling between origin-level and URL-level data and filtering by device.

For a deeper dive on using the dashboard, see the [CrUX Vis documentation](https://developer.chrome.com/docs/crux/vis.md.txt).

## CrUX API

The CrUX API provides programmatic access to aggregated origin-level and page-level field data from real users. Its `queryRecord` endpoint returns a snapshot of the latest 28-day rolling average aggregation of ad metrics. The data is updated daily.

Teams can integrate the API with their own tooling to track performance and regressions, or set up automated alerting platforms to monitor ad count, density, or weight spikes. The API can also be used to build custom internal dashboards that track ad experience alongside other metrics.

We also expect a number of third-party tools to make use of the CrUX API to use this data, as has been the case with other data made available to the API.

For a deeper dive on using the API, see the [CrUX API documentation](https://developer.chrome.com/docs/crux/api.md.txt).

### API request

To query the latest rolling 28-day snapshot of ad load metrics for a specific origin, send an HTTP `POST` request to `https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=[YOUR_API_KEY]` with the following body:

```json
{
  "origin": "https://example.com",
  "metrics": [
    "experimental_ad_density",
    "experimental_ad_count",
    "experimental_ad_cpu",
    "experimental_ad_kilobytes"
  ]
}
```

#### Example `curl` command

You can run the following curl command in your terminal (make sure to replace `[YOUR_API_KEY]` with your actual API key):

```bash
curl -s -X POST \
 --header "Content-Type: application/json" \
 --data '{
  "origin": "https://example.com",
  "metrics": [
   "experimental_ad_density",
   "experimental_ad_count",
   "experimental_ad_cpu",
   "experimental_ad_kilobytes"
  ]
 }' \
 "https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=[YOUR_API_KEY]"
```

To fetch page-level data instead of origin-level data, replace the `origin` field with `url`.

Note when the `metrics` field is not populated, all metrics are returned in the response.

### API response

The `queryRecord` API returns JSON containing the 75th percentile (`p75`) values for the requested ad metrics:

```json
{
 "record": {
  "key": {
   "origin": "https://example.com"
  },
  "metrics": {
   "experimental_ad_count": {
    "percentiles": {
     "p75": "3.00"
    }
   },
   "experimental_ad_density": {
    "percentiles": {
     "p75": 23
    }
   },
   "experimental_ad_cpu": {
    "percentiles": {
     "p75": 1093
    }
   },
   "experimental_ad_kilobytes": {
    "percentiles": {
     "p75": 33
    }
   },
  },
  "collectionPeriod": {
   "firstDate": {
    "year": 2026,
    "month": 5,
    "day": 7
   },
   "lastDate": {
    "year": 2026,
    "month": 6,
    "day": 3
   }
  }
 }
}
```

## CrUX History API

The CrUX History API provides programmatic access to historical time-series field data. Its `queryHistoryRecord` endpoint returns a weekly updated history of the past 28-day rolling averages over the last 6 months, typically returning 40 weekly data points. The weekly historical data is released every Monday, containing the [40 most recent 28-day collection periods](https://developer.chrome.com/docs/crux/history-api.md.txt#the_rolling_average) that end on Saturdays.

The History API is ideal for tracking performance trends over time, validating the impact of site updates across a historical window, and building historical reporting dashboards. Like the CrUX API, the History API also requires a [CrUX API key](https://developer.chrome.com/docs/crux/api.md.txt#APIKey).

For a deeper dive on using the API, see the [CrUX History API documentation](https://developer.chrome.com/docs/crux/history-api.md.txt).

### API request

To query a historical time-series of ad metrics, send an HTTP `POST` request to `https://chromeuxreport.googleapis.com/v1/records:queryHistoryRecord?key=[YOUR_API_KEY]` with the following body:

```json
{
 "origin": "https://example.com",
 "metrics": [
    "experimental_ad_density",
    "experimental_ad_count",
    "experimental_ad_cpu",
    "experimental_ad_kilobytes"
 ]
}
```

#### Example `curl` commands

You can run the following `curl` command in your command line interface:

```bash
curl -s -X POST \
 --header "Content-Type: application/json" \
 --data '{
  "origin": "https://example.com",
  "metrics": [
    "experimental_ad_density",
    "experimental_ad_count",
    "experimental_ad_cpu",
    "experimental_ad_kilobytes"
  ]
 }' \
 "https://chromeuxreport.googleapis.com/v1/records:queryHistoryRecord?key=[YOUR_API_KEY]"
```

### API response

The `queryHistoryRecord` API returns JSON containing arrays of values corresponding to the weekly collection period time-series:

```json
{
  "record": {
    "key": {
      "origin": "https://example.com"
    },
    "metrics": {
      "experimental_ad_count": {
        "percentilesTimeseries": {
          "p75s": ["3.00", "3.00", "2.00", // ...]
        }
      },
      "experimental_ad_density": {
        "percentilesTimeseries": {
          "p75s": [23, 23, 26, // ...]
        }
      },
      "experimental_ad_cpu": {
        "percentilesTimeseries": {
          "p75s": [1105, 1124, 1155, // ...]
        }
      },
      "experimental_ad_kilobytes": {
        "percentilesTimeseries": {
          "p75s": [33, 34, 33, // ...]
        }
      }
    },
    "collectionPeriods": [
      {"firstDate": {"year": 2026, "month": 3, "day": 8}, "lastDate": {"year": 2026, "month": 4, "day": 4}},
      {"firstDate": {"year": 2026, "month": 3, "day": 15}, "lastDate": {"year": 2026, "month": 4, "day": 11}},
      {"firstDate": {"year": 2026, "month": 3, "day": 22}, "lastDate": {"year": 2026, "month": 4, "day": 18}},
      // ...
    ]
  }
}
```

## CrUX dataset on BigQuery

CrUX ad metrics are initially being included in the CrUX APIs. We are working on adding the ad metrics to the [CrUX dataset on BigQuery](https://developers.google.com/web/tools/chrome-user-experience-report/bigquery) to enable users to query and analyze the ad metrics using SQL. We will update this section when the ad metrics are available in the BigQuery dataset.

## Chrome DevTools

The ad metrics are also available in the [DevTools Ad panel](https://developer.chrome.com/docs/ads/detection.md.txt#devtools_support) as detailed in the [ad detection guide](https://developer.chrome.com/docs/ads/detection.md.txt).

## Feedback

If you have any questions or feedback regarding ad metrics, reach out to us at the [Chrome UX Report Google Group](https://groups.google.com/a/chromium.org/g/chrome-ux-report).