- [HTTP request](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#body.HTTP_TEMPLATE)
- [Path parameters](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#body.PATH_PARAMETERS)
- [Request body](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#body.request_body)
  - [JSON representation](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#body.request_body.SCHEMA_REPRESENTATION)
- [Response body](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#body.response_body)
  - [JSON representation](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#body.RunReportResponse.SCHEMA_REPRESENTATION)
- [Authorization scopes](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#body.aspect)
- [Comparison](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#Comparison)
  - [JSON representation](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#Comparison.SCHEMA_REPRESENTATION)
- [ConversionSpec](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#ConversionSpec)
  - [JSON representation](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#ConversionSpec.SCHEMA_REPRESENTATION)
- [AttributionModel](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#AttributionModel)
- [Try it!](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#try-it)

Returns a customized report of your Google Analytics event data. Reports contain statistics derived from data collected by the Google Analytics tracking code. The data returned from the API is as a table with columns for the requested dimensions and metrics. Metrics are individual measurements of user activity on your property, such as active users or event count. Dimensions break down metrics across some common criteria, such as country or event name.

### HTTP request

`POST https://analyticsdata.googleapis.com/v1alpha/{property=properties/*}:runReport`

The URL uses [gRPC Transcoding](https://google.aip.dev/127) syntax.

### Path parameters

| Parameters ||
|---|---|
| `property` | `string` Required. A Google Analytics property identifier whose events are tracked. Specified in the URL path and not the body. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/devguides/reporting/data/v1/property-id). Within a batch request, this property should either be unspecified or consistent with the batch-level property. Example: properties/1234 |

### Request body

The request body contains data with the following structure:

| JSON representation |
|---|
| ``` { "dimensions": [ { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#Dimension`) } ], "metrics": [ { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#Metric`) } ], "dateRanges": [ { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#DateRange`) } ], "dimensionFilter": { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#FilterExpression`) }, "metricFilter": { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#FilterExpression`) }, "offset": string, "limit": string, "metricAggregations": [ enum (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#MetricAggregation`) ], "orderBys": [ { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#OrderBy`) } ], "currencyCode": string, "cohortSpec": { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#CohortSpec`) }, "keepEmptyRows": boolean, "returnPropertyQuota": boolean, "comparisons": [ { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#Comparison`) } ], "conversionSpec": { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#ConversionSpec`) } } ``` |

| Fields ||
|---|---|
| `dimensions[]` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#Dimension`)`` Optional. The dimensions requested and displayed. |
| `metrics[]` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#Metric`)`` Optional. The metrics requested and displayed. |
| `dateRanges[]` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#DateRange`)`` Optional. Date ranges of data to read. If multiple date ranges are requested, each response row will contain a zero based date range index. If two date ranges overlap, the event data for the overlapping days is included in the response rows for both date ranges. In a cohort request, this `dateRanges` must be unspecified. |
| `dimensionFilter` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#FilterExpression`)`` Optional. Dimension filters let you ask for only specific dimension values in the report. To learn more, see [Fundamentals of Dimension Filters](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#dimension_filters) for examples. Metrics cannot be used in this filter. |
| `metricFilter` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#FilterExpression`)`` Optional. The filter clause of metrics. Applied after aggregating the report's rows, similar to SQL having-clause. Dimensions cannot be used in this filter. |
| `offset` | `string (https://developers.google.com/discovery/v1/type-format format)` Optional. The row count of the start row. The first row is counted as row 0. When paging, the first request does not specify offset; or equivalently, sets offset to 0; the first request returns the first `limit` of rows. The second request sets offset to the `limit` of the first request; the second request returns the second `limit` of rows. To learn more about this pagination parameter, see [Pagination](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#pagination). |
| `limit` | `string (https://developers.google.com/discovery/v1/type-format format)` Optional. The maximum number of rows to return. If unspecified, 10,000 rows are returned. The API returns a maximum of 250,000 rows per request, no matter how many you ask for. `limit` must be positive. The API can also return fewer rows than the requested `limit`, if there aren't as many dimension values as the `limit`. For instance, there are fewer than 300 possible values for the dimension `country`, so when reporting on only `country`, you can't get more than 300 rows, even if you set `limit` to a higher value. To learn more about this pagination parameter, see [Pagination](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#pagination). |
| `metricAggregations[]` | ``enum (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#MetricAggregation`)`` Optional. Aggregation of metrics. Aggregated metric values will be shown in rows where the dimensionValues are set to "RESERVED_(MetricAggregation)". Aggregates including both comparisons and multiple date ranges will be aggregated based on the date ranges. |
| `orderBys[]` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#OrderBy`)`` Optional. Specifies how rows are ordered in the response. Requests including both comparisons and multiple date ranges will have order bys applied on the comparisons. |
| `currencyCode` | `string` Optional. A currency code in ISO4217 format, such as "AED", "USD", "JPY". If the field is empty, the report uses the property's default currency. |
| `cohortSpec` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#CohortSpec`)`` Optional. Cohort group associated with this request. If there is a cohort group in the request the 'cohort' dimension must be present. |
| `keepEmptyRows` | `boolean` Optional. If false or unspecified, each row with all metrics equal to 0 will not be returned. If true, these rows will be returned if they are not separately removed by a filter. Regardless of this `keepEmptyRows` setting, only data recorded by the Google Analytics property can be displayed in a report. For example if a property never logs a `purchase` event, then a query for the `eventName` dimension and `eventCount` metric will not have a row eventName: "purchase" and eventCount: 0. |
| `returnPropertyQuota` | `boolean` Optional. Toggles whether to return the current state of this Google Analytics property's quota. Quota is returned in [PropertyQuota](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#PropertyQuota). |
| `comparisons[]` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#Comparison`)`` Optional. The configuration of comparisons requested and displayed. The request only requires a comparisons field in order to receive a comparison column in the response. |
| `conversionSpec` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#ConversionSpec`)`` Optional. Controls conversion reporting. This field is optional. If this field is set or any conversion metrics are requested, the report will be a conversion report. |

### Response body

The response report table corresponding to a request.

If successful, the response body contains data with the following structure:

| JSON representation |
|---|
| ``` { "dimensionHeaders": [ { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/DimensionHeader`) } ], "metricHeaders": [ { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/MetricHeader`) } ], "rows": [ { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/Row`) } ], "totals": [ { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/Row`) } ], "maximums": [ { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/Row`) } ], "minimums": [ { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/Row`) } ], "rowCount": integer, "metadata": { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/ResponseMetaData`) }, "propertyQuota": { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/PropertyQuota`) }, "kind": string, "nextPageToken": string } ``` |

| Fields ||
|---|---|
| `dimensionHeaders[]` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/DimensionHeader`)`` Describes dimension columns. The number of DimensionHeaders and ordering of DimensionHeaders matches the dimensions present in rows. |
| `metricHeaders[]` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/MetricHeader`)`` Describes metric columns. The number of MetricHeaders and ordering of MetricHeaders matches the metrics present in rows. |
| `rows[]` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/Row`)`` Rows of dimension value combinations and metric values in the report. |
| `totals[]` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/Row`)`` If requested, the totaled values of metrics. |
| `maximums[]` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/Row`)`` If requested, the maximum values of metrics. |
| `minimums[]` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/Row`)`` If requested, the minimum values of metrics. |
| `rowCount` | `integer` The total number of rows in the query result, regardless of the number of rows returned in the response. For example if a query returns 175 rows and includes limit = 50 in the API request, the response will contain rowCount = 175 but only 50 rows. To learn more about this pagination parameter, see [Pagination](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#pagination). |
| `metadata` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/ResponseMetaData`)`` Metadata for the report. |
| `propertyQuota` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/PropertyQuota`)`` This Analytics Property's quota state including this request. |
| `kind` | `string` Identifies what kind of resource this message is. This `kind` is always the fixed string "analyticsData#runReport". Useful to distinguish between response types in JSON. |
| `nextPageToken` | `string` A token, which can be sent as `pageToken` to retrieve the next page. If this field is omitted, there are no subsequent pages. |

### Authorization scopes

Requires one of the following OAuth scopes:

- `https://www.googleapis.com/auth/analytics.readonly`
- `https://www.googleapis.com/auth/analytics`

## Comparison

Defines an individual comparison. Most requests will include multiple comparisons so that the report compares between the comparisons.

| JSON representation |
|---|
| ``` { "name": string, // The following is a list of mutually exclusive fields. At most one of the // fields will be set in a response: "dimensionFilter": { object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#FilterExpression`) }, "comparison": string // End of mutually exclusive fields. } ``` |

| Fields ||
|---|---|
| `name` | `string` Each comparison produces separate rows in the response. In the response, this comparison is identified by this name. If name is unspecified, we will use the saved comparisons display name. |
| The following is a list of mutually exclusive fields. At most one of the fields will be set in a response: ||
| `dimensionFilter` | ``object (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties.reportTasks#FilterExpression`)`` A basic comparison. |
| `comparison` | `string` A saved comparison identified by the comparison's resource name. For example, 'comparisons/1234'. |
| End of mutually exclusive fields. ||

## ConversionSpec

Controls conversion reporting.

<br />

> [!CAUTION]
> This feature may not be available to your Google Analytics property. The Google Analytics team is actively working to expand this feature to more properties. Please reach out to your [support team](https://support.google.com/analytics/gethelp) if you have questions about the eligibility of your property.

<br />

| JSON representation |
|---|
| ``` { "conversionActions": [ string ], "attributionModel": enum (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#AttributionModel`) } ``` |

| Fields ||
|---|---|
| `conversionActions[]` | `string` The conversion action IDs to include in the report. If empty, all conversions are included. Valid conversion action IDs can be retrieved from the `conversionAction` field within the `conversions` list in the response of the `properties.getMetadata` method. For example, 'conversionActions/1234'. |
| `attributionModel` | ``enum (`https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1alpha/properties/runReport#AttributionModel`)`` The attribution model to use in the Conversion Report. If unspecified, `DATA_DRIVEN` is used. |

## AttributionModel

Attribution model to use in the Conversion Report

| Enums ||
|---|---|
| `ATTRIBUTION_MODEL_UNSPECIFIED` | Unspecified attribution model. |
| `DATA_DRIVEN` | Attribution was based on the paid and organic data driven model |
| `LAST_CLICK` | Attribution was based on the paid and organic last click model |