Get Aggregated Totals by Ad Account ID
Returns deduplicated metrics aggregated across a set of campaigns, ad sets, or ads. Reach and frequency are deduplicated across all specified entities.
Request
- ad_account_idstring [uuid]Required
A unique identifier for an Ad Account.
Example:ce4ff15e-f04d-48b9-9ddf-fb3c85fbd57a - entity_typestringRequired
The entity level to aggregate across. Supported values are CAMPAIGN, AD_SET, and AD. AD_ACCOUNT is not supported; use the getAggregateReport endpoint for account-level totals.
Allowed values:"AD","AD_SET","CAMPAIGN","AD_ACCOUNT"Example:entity_type=AD_SET - entity_idsarray of stringsRequired
Entity IDs to aggregate across. Maximum 50 per request.
Array length between1and50Example:entity_ids=9a7b6c5d-4e3f-4b21-8c99-bf1c2a3d4e5f - granularitystringRequired
Time breakdown granularity. Supported values are LIFETIME and DAY. HOUR is not supported for aggregated totals. report_start and report_end are required when granularity is DAY, and optional when granularity is LIFETIME. When provided on LIFETIME, the returned row reflects the deduplicated total over that date range (max 90 days). When omitted on LIFETIME, the row reflects the full lifetime of the specified entities.
Default:granularity=LIFETIMEAllowed values:"DAY","HOUR","LIFETIME"Example:granularity=DAY - report_startstring [date-time]
The report time range start time. Time should be in ISO 8601 format using Coordinated Universal Time (UTC) with a zero offset (YYYY-MM-DDTHH:MM:SSZ) and must be expressed in whole hours (0 minutes and 0 seconds). Hours are inclusive, which means that requesting T00:00:00 – T23:00:00, for example, will return data for the full 24 hours (from T23:00:00 through T23:59:59).
When specifying the time range for reports, please adhere to the following guidelines based on the selected granularity.
- LIFETIME: For lifetime reports, the time component will be truncated to zero. For example, 2021-01-23T22:15:15Z -> 2021-01-23T00:00:00Z. The start and end date (if specified) must also be within 90 days of each other.
- DAY: The start and end date must be within 90 days of each other. In addition, UTC midnight timestamps must be used (no hours, minutes, or seconds).
- HOUR: The report range must be within the last 2 weeks.
Example:report_start=2025-08-01T00%3A00%3A00Z - report_endstring [date-time]
The report time range end time. Time should be in ISO 8601 format using Coordinated Universal Time (UTC) with a zero offset (YYYY-MM-DDTHH:MM:SSZ) and must be expressed in whole hours (0 minutes and 0 seconds). Hours are inclusive, which means that requesting T00:00:00 – T23:00:00, for example, will return data for the full 24 hours (from T23:00:00 through T23:59:59).
When specifying the time range for reports, please adhere to the following guidelines based on the selected granularity.
- LIFETIME: For lifetime reports, the time component will be truncated to zero. For example, 2021-01-23T22:15:15Z -> 2021-01-23T00:00:00Z. The start and end date (if specified) must also be within 90 days of each other.
- DAY: The start and end date must be within 90 days of each other. In addition, UTC midnight timestamps must be used (no hours, minutes, or seconds).
- LIFETIME and DAY: The end date will be inclusive, meaning that the data for the entire day of the specified end date will be included in the report. For example, if the end date is 2021-01-23T00:00:00Z, the report will include the data for the entire day of 2021-01-23 (UTC).
- HOUR: The report range must be within the last 2 weeks.
Example:report_end=2025-08-02T00%3A00%3A00Z - fieldsarray of stringsRequired
Metrics to include in the response. Currently supported values: IMPRESSIONS, CLICKS, CTR, REACH, FREQUENCY. Refer to the Metrics Glossary for definitions: https://developer.spotify.com/documentation/ads-api/guides#metrics-glossary
Array minimum length:1Example:fields=IMPRESSIONS&fields=CLICKS&fields=REACH&fields=FREQUENCY&fields=CTRUsers can define a set of fields that they would like populated in the report. This enum defines the global list of available fields. However, not all fields are applicable to both report types. This is validated at request time. The following fields are not allowed for insight reports:
- E_CPCL
- FREQUENCY
- OFF_SPOTIFY_IMPRESSIONS
- PAID_LISTENS_FREQUENCY
- SKIPS
- SPEND
- STARTS
- UNMUTES
Allowed values:"CLICKS","COMPLETES","COMPLETION_RATE","CONVERSION_RATE","CTR","E_CPCL","FIRST_QUARTILES","FREQUENCY","IMPRESSIONS","INTENT_RATE","LISTENERS","MIDPOINTS","NEW_LISTENERS","NEW_LISTENER_CONVERSION_RATE","NEW_LISTENER_STREAMS","OFF_SPOTIFY_IMPRESSIONS","PAID_LISTENS","PAID_LISTENS_FREQUENCY","PAID_LISTENS_REACH","REACH","SKIPS","SPEND","STARTS","STREAMS","STREAMS_PER_NEW_LISTENER","STREAMS_PER_USER","THIRD_QUARTILES","VIDEO_VIEWS","VIDEO_EXPANDS","VIDEO_EXPAND_RATE","UNMUTES","PAGE_VIEWS","LEADS","ADD_TO_CART","PURCHASES","REVENUE","AVERAGE_ORDER_VALUE","RETURN_ON_AD_SPEND","CUSTOMER_ACQUISITION_COST","COST_PER_LEAD","START_CHECKOUT","PRODUCTS","SIGN_UPS","CUSTOM_EVENT_1","CUSTOM_EVENT_2","CUSTOM_EVENT_3","CUSTOM_EVENT_4","CUSTOM_EVENT_5","STREAMED_IMPRESSIONS"
Response
Aggregated totals for the specified entities and time range.
Aggregated totals collapsed across all specified entities. Note: per-day reach values will not sum to LIFETIME reach because reach is deduplicated within each day but not across days.
- granularitystringRequired
TimeDimensionType describes the granularity of the data reported. For example, if DAY is selected, a report will be generated that contains daily aggregated metrics between report_start and report_end dates that are provided in the request. Please note that report_start and report_end dates are not permitted when requesting LIFETIME granularity.
Default:"LIFETIME"Allowed values:"DAY","HOUR","LIFETIME"Supported content-type(s):Example:"DAY" - Required
One row for LIFETIME granularity. One row per day for DAY granularity, sorted ascending.
A single row of aggregated totals collapsed across all specified entities. For LIFETIME: one row. For DAY: one row per day.
- start_timestring [date-time]Nullable
Start of the time period. Present for DAY granularity only.
Example:"2025-08-01T00:00:00Z" - end_timestring [date-time]Nullable
End of the time period. Present for DAY granularity only.
Example:"2025-08-02T00:00:00Z" - Required
Requested metrics aggregated across all entities for this time period.
Response sample
{ "granularity": "DAY", "rows": [ { "start_time": "2025-08-01T00:00:00Z", "end_time": "2025-08-02T00:00:00Z", "stats": [ { "field_type": "CLICKS", "field_value": 500 } ] } ]}