MartechARTICLE

Search Console doesn't have an AI Overviews filter, but you can measure zero-click anyway

Google's documentation confirms it: there's no native segmentation for AI Overviews in the Performance report. That doesn't stop you from building a reliable before/after by combining the Search Console API with Analytics.

Search Console doesn't have an AI Overviews filter, but you can measure zero-click anyway
Image: Sabrina Santos

The filter the story calls for doesn't exist (and that changes the plan)

Before you open Search Console looking for an "AI Overviews" button in the Performance report: it doesn't exist. Google Search Central's own documentation is explicit about this. Pages that appear in AI Overviews and AI Mode are counted within general search traffic, reported in the Performance report, within the "Web" search type (the same bucket where traditional blue-link results fall). There is no separate search type for this kind of result.

This means any click, impression or position generated by an AI answer is mixed in with classic search data, with no native discrimination by data row. If you've already gone looking for this filter and couldn't find it, the problem isn't your account: Google decided not to expose this granularity (at least as of the most recent update to the documentation, December 2025).

The good news is that the same page gives hints on how to approximate this number: analyzing traffic variations over time and combining Search Console with Analytics. That's the indirect path we'll build here.

Step 1: isolate pages suspected of zero-click

The most reliable signal of zero-click from an AI Overview is the combination of stable or growing impressions with declining CTR, on queries with informational intent (definitions, "how to" queries, topics that call for quickly understanding a complicated subject), exactly the kind of search where AI Overview tends to show up, according to Google itself. Complex comparisons, per the same documentation, are more associated with AI Mode than with AI Overviews.

In Search Console:

  1. Go to Performance > Search results.
  2. Add the date comparison filter ("Compare" in the date range picker), setting one period before and another after the event you want to test (the AI Overviews rollout in Brazil, a layout change on a specific SERP, etc.).
  3. In the dimensions, break down by Page and then by Query.
  4. Sort by CTR drop while impressions stay stable.

This manual cut already gives you a list of suspects, but it doesn't scale for a site with thousands of URLs. For that, you need the API.

Step 2: export via the Search Console API

The Search Console's Search Analytics API lets you pull the same Performance report data in bulk, with more rows than the interface can display at once, which helps scale the analysis for sites with many URLs.

Example Python script using the official google-api-python-client library:

python
from googleapiclient.discovery import build
from google.oauth2 import service_account

SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
SERVICE_ACCOUNT_FILE = 'credentials.json'

credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES)

service = build('searchconsole', 'v1', credentials=credentials)

def puxar_periodo(inicio, fim):
    body = {
        'startDate': inicio,
        'endDate': fim,
        'dimensions': ['page', 'query'],
        'rowLimit': 25000
    }
    resp = service.searchanalytics().query(
        siteUrl='https://www.seusite.com.br/', body=body).execute()
    return resp.get('rows', [])

antes = puxar_periodo('2025-06-01', '2025-08-31')
depois = puxar_periodo('2025-09-01', '2025-11-30')

Save each list as a CSV (page, query, clicks, impressions, ctr, position) with the same columns in both periods. This pair of files becomes the basis for the before/after spreadsheet.

A common stumbling block here: check whether the credentials you're using have read permission on the property in Search Console itself before running the script; without that permission, the call may not return the expected data.

Step 3: cross-reference with Analytics

Google's documentation offers a relevant data point for this step: clicks coming from results with an AI Overview tend to be "higher quality": users spend more time on the site. This gives a second signal, complementary to CTR: if a page lost clicks in Search Console but engagement time per session went up in Analytics, that's consistent with AI Overviews filtering out curiosity clicks and letting through only the people who actually want to go deeper.

In GA4, use the Data API to pull organic sessions by landing page for the same pair of periods:

python
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import RunReportRequest, DateRange, Dimension, Metric

client = BetaAnalyticsDataClient()

request = RunReportRequest(
    property='properties/SEU_PROPERTY_ID',
    dimensions=[Dimension(name='landingPagePlusQueryString')],
    metrics=[Metric(name='sessions'), Metric(name='averageSessionDuration')],
    date_ranges=[DateRange(start_date='2025-09-01', end_date='2025-11-30')],
)
response = client.run_report(request)

Join this result with the Search Console CSV by page URL. If the BI tool you use (Looker Studio, a spreadsheet, a notebook) already has a native connector for both sources, skip the scripts and build the join directly there: what matters is that the join key be the page, not the query, since the page is what appears consistently in both reports.

Step 4: the before/after spreadsheet

With both periods matched up, the minimum columns needed to prove (or rule out) the zero-click effect per page are:

  • Impressions (before/after) and % change
  • Clicks (before/after) and % change
  • CTR (before/after) in percentage points
  • Average position (before/after)
  • Sessions in GA4 (before/after)
  • Average session duration in GA4 (before/after)

The pattern that supports the zero-click-by-AI-Overview hypothesis is: stable or rising impressions, declining clicks and CTR, average position held or improved, and stable or longer session duration among the sessions that still come in. If position also dropped, the problem might be ranking, not AI Overview: in that case, the spreadsheet keeps you from blaming generative AI for a drop that is, in fact, a loss of ranking.

The limitations worth noting

This method is a correlation, not a direct measurement: Google itself doesn't disclose which specific impression generated an AI Overview, so there's no way to say for certain that a particular CTR drop came from there and not from a featured snippet, a "people also ask" box, or a simple shift in search intent. It's also worth considering that Search Console data doesn't appear in real time (there's a natural delay between the search date and the date the data becomes available in the report) when defining the date cutoffs, and checking whether your account has enough impression volume per page for CTR not to become noisy.

On the GEO side, the same "higher-quality clicks" logic works as an argument for prioritizing in-depth content on pages that show up as a source in AI answers: if the click that remains comes from someone who wants to go deeper, the page receiving that click needs to deliver depth, not a summary that the AI Overview itself already covered.

Source 1: Google Search Central, AI Overviews and Search Console (https://developers.google.com/search/docs/appearance/ai-overviews)

Translated from the Brazilian Portuguese original · Read the original