Request Reports

The new Search Ads 360 Reporting API is now available. The new API provides enhanced flexibility to build custom reports and integrate the data into your reporting applications and processes. Learn more about migrating to and using the new Search Ads 360 Reporting API.

After you've set up your client app as described in My First App, you can use the Search Ads 360 API to request and download reports. You can make either of the following types of requests:


Requires just a single request and returns the report in a JSON-formatted response. Synchronous requests:

If you're requesting large advertiser or engine-account reports, we recommend the asynchronous approach.


Requires you to send an initial request that specifies the data you want in the report. Then you send additional requests to poll Search Ads 360. When Search Ads 360 finishes generating the report, you send requests to download the report as one or more files. Asynchronous requests:

  • Can return any report type
  • Shards very large reports into multiple files
  • Formats reports as CSV or TSV

Data model: rows and columns

Search Ads 360 organizes data in a report into rows and columns. The type of report you request determines the rows that are returned. For example, if your request a keyword report, each row will contain data about a single keyword. See the Report Types reference for a list of all report types. You specify which columns you want in the report by naming each column in your report request. See the Report Types reference for the list of columns that can be returned for each report type.

Column behaviors

The behavior of a column depends on the type of data that the column contains (the Report Types reference displays each column's behavior):

  • Attribute columns. An attribute column contains data that configures or identifies an entity in a campaign, such as the campaign name or a keyword bid. The Search Ads 360 API always returns the current value for an attribute column, regardless of any date or date range specified in a request. For example, if you changed a keyword's bid from 2.00 to 1.50 yesterday and then request a report for last month's data, the report will return a value of 1.50 for the keyword bid.

  • Metric columns. A metric column contains data about your campaign's performance, such as the number of clicks on an ad, the number of visits as recorded by a Floodlight tag, or revenue. Unless you specify a time range of a single day, the API returns an aggregate value for metric columns. For example, if you request a report for last month's data, the API will return the total number of clicks for last month.

  • Segment columns. A segment column splits data into separate rows. For example, date is a segment column that you can specify for many types of reports. If you specify the date column in a keyword report with a date range 2013-01-01 to 2013-01-07, the API would return seven rows for each keyword, each corresponding to one day and displaying metrics for that day. See Segmented Reports.


Your report request is required to specify the currency of monetary data (both attributes like dailyBudget and metrics like cost). You can specify one of the following:

  • The agency's currency, if the report is scoped to an agency, advertiser, or engine account.
  • The advertiser's currency, if the report is scoped to an advertiser or engine account.
  • The engine account's currency, if the report is scoped to an engine account.
  • USD

Use the Reports.request.statisticsCurrency request property to specify a currency.

The report itself will indicate the currency in the Reports.statisticsCurrencyCode property.

Time zone

Search Ads 360 metrics are stored in dates without time zones. These dates correspond to the engine account time zone for engine metrics (such as clicks, impressions, and visits), and Campaign Manager network time zone for conversion metrics (such as actions, transactions and revenue). When every metric in a report comes from the same time zone, that time zone will be returned in the request. Otherwise, no time zone will be returned. Your requests can set Reports.request.verifySingleTimeZone: true to fail reports that present metric from more than one time zone.

If all metrics present in a report are from one time zone, that time zone is returned in Reports.statisticsTimeZoneReports.