In addition to retrieving performance statistics, AdWords API developers often use the reporting system to get structural information about an account. These reports can be used to quickly synchronize a local database without having to make a series of expensive get() calls to the API. Unlike v13 which had a dedicated Structure Report for this purpose, newer versions of the API support this use case by allowing for zero-impression data to be returned in all of the normal performance reports. Zero-impression rows are simply those that received no impressions over the timespan of the report, which provide little use when calculating performance but are are needed to download the full contents of the account.

In v201109 we added the field ReportDefinition.includeZeroImpressions, which you can use to influence whether or not zero-impression data is included in your report. Setting this field to "false" will remove zero-impression data from your reports, but be aware that setting it to "true" does not guarantee that zero-impression rows will be returned.

Fields that segment the report, such as "Date", "AdNetworkType1", or "ClickType", will prevent zero-impression data from being returned even if includeZeroImpressions is explicitly enabled on the report definition. This is done is to ensure that reports don’t grow too large, as segmentation splits a single row into many. Additionally, in many cases it’s not possible to assign a zero-impression row to one of the segments. For example, there is no ad slot (top vs. other) value that makes sense to assign to a keyword that never had an impression. The "Notes" column of the report types documentation indicates which fields will prevent zero-impression rows from being returned.

Because segmentation and zero-impression rows are not compatible, we recommend that you use one set of reports for downloading the account structure and another set for getting performance statistics. This allows you to get the zero-impression rows you need without sacrificing the powerful insights that segmentation provides. If you have any questions on how to leverage reports in your application, you can reach us on the developer forum or during office hours.