The Google Ads UI provides reporting capabilities. To create a report, sign in to
your Google Ads account, click **Campaigns** on the left navigation menu, and then
click **Insights and reports** . To create a report from scratch, click **Report
editor**.

This guide maps common reporting concepts and naming conventions in the Google Ads
UI to reports that you can generate using Google Ads Query Language (GAQL) and
the Google Ads API. You can also follow prompts in the UI to create the report that
best suits your requirements.

## Tools and resources

For more detailed examples and automated help in mapping UI screens to the API,
see the following resources:

- **[Query Cookbook](https://developers.google.com/google-ads/api/docs/query/cookbook#replicate-ui)**: A collection of GAQL queries that replicate the data found on many common Google Ads UI screens.
- **[Google Ads API Reporting Extension](https://chromewebstore.google.com/detail/bhcleoapmpajopgfbbjbokgfmmjpihkj)**: A Chrome extension that helps you identify API resource and field names directly within the Google Ads UI.

## Common UI terms

The following table summarizes some of the common terms used in the UI and their
mappings to the [Google Ads Query Language (GAQL)](https://developers.google.com/google-ads/api/docs/query/overview).

| UI | GAQL |
| [Columns](https://developers.google.com/google-ads/api/docs/reporting/uireports#columns) | Any resource, segment field, or metric in the [`SELECT` clause](https://developers.google.com/google-ads/api/docs/query/structure#select-clause) of a GAQL query. |
| [Date Range](https://developers.google.com/google-ads/api/docs/reporting/uireports#date-ranges) | Date ranges map to a [`WHERE` clause](https://developers.google.com/google-ads/api/docs/query/structure#where-clause) filtering on `segments.date`. |
| [Filters](https://developers.google.com/google-ads/api/docs/reporting/uireports#filters) | One or more conditions in the [`WHERE` clause](https://developers.google.com/google-ads/api/docs/query/structure#where-clause). |
| [Segment fields](https://developers.google.com/google-ads/api/docs/reporting/uireports#segmentation) | Apply [segmentation](https://developers.google.com/google-ads/api/docs/reporting/uireports#segmentation) by including segment fields in your GAQL query. |
| [Pagination](https://developers.google.com/google-ads/api/docs/reporting/uireports#pagination) | [Paging](https://developers.google.com/google-ads/api/docs/reporting/paging) breaks up the result set of the query into multiple pages. |
|---|---|

### Columns

Columns in the UI are equivalent to using a `SELECT` clause for
[Resource fields](https://developers.google.com/google-ads/api/docs/query/overview#query-for-resource-attributes),
[Segment fields](https://developers.google.com/google-ads/api/docs/reporting/segmentation), or
[Metrics](https://developers.google.com/google-ads/api/docs/query/overview#query-for-metrics) in GAQL.

For more information, see [About columns in your statistics
table](https://support.google.com/google-ads/answer/2454071).

### Date ranges

The Google Ads UI has a table displaying account statistics, and a drop-down menu to
control the date range of these statistics.

You have the same control in GAQL by filtering on
[`segments.date`](https://developers.google.com/google-ads/api/docs/query/date-ranges) in the `WHERE` clause of a GAQL
query.

### Filters

Filters in the UI are equivalent to one or more conditions in the
[`WHERE` clause](https://developers.google.com/google-ads/api/docs/query/structure#where-clause) of GAQL.

For more information, see [Filter your view of performance
data](https://support.google.com/google-ads/answer/2454069).

### Segmentation

For more detailed statistics, split the data by segments. For example, suppose
you want to see the number of impressions specific to the Google Search Network
separately from the Google Display Network. In that case, segment your report by
network. See [Segmentation](https://developers.google.com/google-ads/api/docs/reporting/segmentation) to learn how to
include segment fields in the `SELECT` clause.

### Pagination

Navigate through your reports in the UI using the controls available at the
bottom of each table of data that let you switch pages and select the number of
results to display from a defined set of sizes.

To page through results when retrieving reports, use
[`GoogleAdsService.Search`](https://developers.google.com/google-ads/api/reference/rpc/v26/GoogleAdsService/Search) with
[`next_page_token`](https://developers.google.com/google-ads/api/docs/reporting/paging). To fetch the entire result set
without any pagination, use
[`GoogleAdsService.SearchStream`](https://developers.google.com/google-ads/api/docs/reporting/streaming).

### Order results

In the UI, you can order results by selecting a column.

In GAQL, you can use the [`ORDER BY` clause](https://developers.google.com/google-ads/api/docs/query/ordering-limiting#order-results) and
[`LIMIT` clause](https://developers.google.com/google-ads/api/docs/query/ordering-limiting#limit-the-number-of-results) to order and limit your query results.

## Download formats

In the UI, reports can be downloaded in various formats, such as CSV, TSV, or
XML.

The API doesn't directly format output into files such as CSV, so your client
application must format the response. See the [Campaign report to CSV code
sample](https://developers.google.com/google-ads/api/samples/campaign-report-to-csv) to learn how to implement CSV formatting in a client.

## Schedule and email reports

You can schedule and email a report from the UI, but these features are not
supported in the API.

## Map UI views to API resources

Here's a list of common UI views and their matching GAQL Resource Name.

| UI views | GAQL Resource Name (Specify in the [FROM clause](https://developers.google.com/google-ads/api/docs/query/structure#from-clause)) |
|---|---|
| Account | [customer](https://developers.google.com/google-ads/api/fields/v26/customer) |
| Campaign, Campaign details | [campaign](https://developers.google.com/google-ads/api/fields/v26/campaign) |
| Ad group, Ad group details | [ad_group](https://developers.google.com/google-ads/api/fields/v26/ad_group) |
| Ad, Final URL | [ad_group_ad](https://developers.google.com/google-ads/api/fields/v26/ad_group_ad) |
| Search keyword | [keyword_view](https://developers.google.com/google-ads/api/fields/v26/keyword_view) |
| Search terms | [search_term_view](https://developers.google.com/google-ads/api/fields/v26/search_term_view) |
| Paid and organic (Competitive visibility template)^\*^ | [paid_organic_search_term_view](https://developers.google.com/google-ads/api/fields/v26/paid_organic_search_term_view) |
| Landing page | [landing_page_view](https://developers.google.com/google-ads/api/fields/v26/landing_page_view) |
| Expanded Landing page | [expanded_landing_page_view](https://developers.google.com/google-ads/api/fields/v26/expanded_landing_page_view) |
| Content \> Placements | [managed_placement_view](https://developers.google.com/google-ads/api/fields/v26/managed_placement_view) |
| Content \> Where ads showed | [group_placement_view](https://developers.google.com/google-ads/api/fields/v26/group_placement_view) |
| Content \> Where ads showed \> View details | [detail_placement_view](https://developers.google.com/google-ads/api/fields/v26/detail_placement_view) |
| Audiences \> Demographics \> Age | [age_range_view](https://developers.google.com/google-ads/api/fields/v26/age_range_view) |
| Audiences \> Demographics \> Gender | [gender_view](https://developers.google.com/google-ads/api/fields/v26/gender_view) |
| Locations | [location_view](https://developers.google.com/google-ads/api/fields/v26/location_view) |
| Content \> Topics | [topic_view](https://developers.google.com/google-ads/api/fields/v26/topic_view) |
| Locations \> Geographic report | [geographic_view](https://developers.google.com/google-ads/api/fields/v26/geographic_view) |

^\*^ To generate the **Paid and organic** report, you must link a Google
Search Console account to your Google Ads account at the customer level.

As an example from the preceding table, you can use the following GAQL query to
generate an aggregated Account report over the last 7 days (add `segments.date`
to the `SELECT` clause if you want metrics broken down by day):

    SELECT
      customer.descriptive_name,
      customer.id,
      metrics.clicks,
      metrics.impressions,
      metrics.ctr,
      metrics.average_cpc,
      metrics.cost_micros,
      metrics.absolute_top_impression_percentage,
      metrics.top_impression_percentage,
      metrics.average_cpm
    FROM customer
    WHERE segments.date DURING LAST_7_DAYS

## Common differences

When comparing UI reports to API reports, one of the most common differences is
that the UI implicitly filters out removed entities, whereas the API does not.

To replicate a default UI view, add a filter using a `status` field to exclude
removed rows (or explicitly include `ENABLED` and `PAUSED` entities). For
example:

    SELECT campaign.name
    FROM campaign
    WHERE campaign.status != 'REMOVED'