Performance Report (GSC)
How Google Search Console's Performance report works — what clicks, impressions, average CTR, and average position really count, plus anonymized queries and limits.
The Performance report is Google Search Console's view of how your site actually did in Google — real clicks and impressions, not estimates. It reports four metrics (clicks, impressions, average CTR, average position) sliced across six dimensions, keeps 16 months, and is privacy-filtered and averaged — not a statistical sample. Average position is an average across queries (not your live rank), anonymized queries hide low-volume terms so the table won't sum to the chart, and the UI caps at 1,000 rows — for more, use the Search Analytics API (up to 25,000 rows per request) or the BigQuery bulk export. Web Search, Discover, and Google News are separate reports.
Evidence for this claim Search Console's Performance report exposes clicks, impressions, CTR, and average position, with dimensions including query, page, country, and device. Scope: Current Search performance report metrics and dimensions. Confidence: high · Verified: Google Search Console: Performance report Evidence for this claim Performance tables omit anonymized queries for privacy, so query-row totals may not equal chart totals. Scope: Current anonymized-query behavior. Confidence: high · Verified: Google Search Console: Anonymized queriesTL;DR — The Performance reportThe Google Search Console report that shows how your site actually performed in Google Search, built from real impressions and clicks. It reports four metrics — clicks, impressions, average CTR, and average position — and keeps the most recent 16 months of data. in Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. shows how your site actually did in Google Search: how many times people saw your link (impressions), how many clicked it (clicks), your click-through rate, and your average position. It’s real data straight from Google — but it’s filtered and averaged, so don’t read it like a live rank checker.
What the Performance report is
The Performance report (you’ll also see it called the “Search results” report) is the part of Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. that tells you how your site did in Google Search. It’s built from real searches — actual times your pages showed up and actual clicks people made — not estimates.
It shows four numbers:
- Clicks — how many times someone clicked from Google to your site.
- Impressions — how many times your link appeared in results (whether or not the person clicked).
- Average CTR — clicks divided by impressions, as a percentage.
- Average position — roughly where your link showed up, on average, where 1 is the top.
You can break those numbers down by query (what people searched), page, country, device, search appearance, and date.
The thing most beginners get wrong
Average position is an average, not your rank. If it says your page sits at position 8, that doesn’t mean you’re stuck at the 8th result. It’s the average of where you appeared across every search where you showed up — you might rank #1 for your main term and #40 for fifty long-tail variations, and that averages out to something middling. So don’t panic (or celebrate) over the number on its own.
A few more things worth knowing early:
- It only keeps 16 months of data, so export anything older you care about.
- Not every query shows up. To protect people’s privacy, Google hides searches made by only a handful of people. That’s why the list of queries never quite adds up to your total clicks (more on that in the Advanced tab — I actually studied how much gets hidden).
- Discover and Google News are separate reports. The main Performance report is Web Search. If you want your Discover or News numbers, those are their own reports in the sidebar.
Want the full mechanics — exactly how each metric is counted, why your numbers won’t match your rank tracker or your analytics, and how to pull more than 1,000 rows of data? Switch to the Advanced tab.
Evidence for this claim Search Console's Performance report exposes clicks, impressions, CTR, and average position, with dimensions including query, page, country, and device. Scope: Current Search performance report metrics and dimensions. Confidence: high · Verified: Google Search Console: Performance report Evidence for this claim Performance tables omit anonymized queries for privacy, so query-row totals may not equal chart totals. Scope: Current anonymized-query behavior. Confidence: high · Verified: Google Search Console: Anonymized queriesTL;DR — The Performance reportThe Google Search Console report that shows how your site actually performed in Google Search, built from real impressions and clicks. It reports four metrics — clicks, impressions, average CTR, and average position — and keeps the most recent 16 months of data. is real served-results data — clicks, impressions, average CTR, average position — across six dimensions, kept for 16 months. Impressions and position are counted per query, per page and then averaged; position is the topmost position your property held for that query, and it’s only recorded when there’s an impression. It’s privacy-filtered, not sampled: anonymized queries are dropped from the query table but stay in the chart totals, so rows won’t sum. The UI caps at 1,000 rows — the Search Analytics API returns up to 25,000 rows per request (not the 50,000 you’ll see repeated), and BigQuery bulk export is the path for everything. Web Search, Discover, and Google News are separate reports.
It’s real data, not a model
The first thing to internalize: these numbers come from actual results Google showed to actual people. John Mueller put it directly — the report is “based on actual search results that were shown to users. It’s not a theoretical number, but rather a number based on actual results.” It’s filtered by privacy rules and reshaped by averaging — not a statistical sample — but it isn’t invented.
That’s also why it’s the ground truth for your site in a way a third-party rank tracker can’t be — it’s Google reporting on Google.
The four metrics, exactly how they’re counted
Clicks
A click is counted when a user clicks through to a page outside of Google. Google’s wording: “any click that sends the user to a page outside of Google Search, Discover, or News is counted as a click.” Clicks that keep the user inside Google (expanding a result, say) don’t count. One documented exception: the AMPAMP (Accelerated Mobile Pages) is an open-source web framework Google launched in 2015 to make mobile pages load near-instantly via restricted HTML/CSS/JS and CDN caching. It was never a ranking factor and, since June 2021, is no longer required for Top Stories. reader opens inside Google but is still counted as a click.
Impressions
An impression means “a user has seen (or potentially seen) a link to your site in Search, Discover, or News.” The “potentially seen” part matters: on a normal results page, “an impression is counted whenever an item appears in the current page of results, whether or not the item is scrolled into view” — so you get an impression even if the user never scrolls down to your result. The exceptions are carousels, expandable widgets, and infinite scrollInfinite scroll is a loading pattern where content appears automatically as a user scrolls, instead of via numbered pages. Because Googlebot doesn't scroll or click, indexable infinite scroll needs real per-chunk URLs (paginated loading) that update via the History API — otherwise deep content may never be crawled, or worse, get merged into the wrong page., where “the item must typically be scrolled into view to count an impression.”
There’s also an aggregation wrinkle, and it isn’t a toggle you choose — it follows the dimension you’re viewing. The chart is always aggregated by property. In the table, grouping by Queries, Countries, Devices, or Dates aggregates by property too (one impression for the whole card, even if several of your URLs matched), while grouping by Pages or Search appearance aggregates by page (the same card can show up as several pages with one impression each). So switching which dimension you’re viewing can change your totals without you touching a filter.
Average CTR
Average CTR is just “the click count divided by the impression count.” It’s “average” because it’s computed across whatever set of rows you’re looking at, so filtering by page or query changes it.
Average position
This is the most misread metric on the report, so it’s worth being precise. Position is “an attempt to show approximately where on the page a given link was seen, relative to other results,” where “1 is the topmost position.” The reported number is “the topmost position occupied by a link to your property” — averaged across every query where you appeared. Mueller again: “If there are multiple URLs from your website which are shown in the search results page we’ll use the topmost one for this average.”
Two consequences:
- It’s only recorded on an impression. “A link must get an impression for its position to be recorded.” So page-2 and page-3 appearances that nobody scrolled to don’t drag your average down — they’re simply not counted.
- A worked example. Say a page ranks #1 for its head term but also surfaces at positions 20–40 for fifty long-tail variants. Its average position might read 12. That’s not “you rank 12th” — it’s the blend. Accuracy improves with impression volume; thinly-seen queries make the average noisier.
This is also why your average position won’t match your rank tracker. Mueller’s explanation: “You might not always see the same position when you check yourself. That’s generally due to personalization, or geoGenerative Engine Optimization (GEO) is the practice of optimizing content and brand presence so AI-powered search engines and assistants — Google AI Overviews, ChatGPT, Perplexity — cite, recommend, or mention you when generating answers. Google's position is that it's still SEO.-targeting, or because of short-lived visibility in search.”
Dimensions and the search-type filter
You can slice by six dimensions — Queries, Pages, Countries, Devices, Search appearance, and Dates — and the Search appearance dimension breaks out rich-result types (videos, AMPAMP (Accelerated Mobile Pages) is an open-source web framework Google launched in 2015 to make mobile pages load near-instantly via restricted HTML/CSS/JS and CDN caching. It was never a ranking factor and, since June 2021, is no longer required for Top Stories., recipes, and so on) where they apply. Within Web Search there’s a search-type filter for web, image, video, and news results.
Don’t confuse that filter with Discover and Google News, which are separate reports in the left nav, not values of the Web-Search search-type filter. If you read your Web Search numbers as your whole Google footprint, you’re missing those entirely.
16 months, comparison mode, and the personalization caveat
The report retains the most recent 16 months of data, so anything older needs to be exported and stored yourself. Date ranges support comparison mode (period over period). And if you run a query yourself and don’t see your own site, that’s expected — results are specific to the time, place, device, and recent history of the person searching.
One more freshness note: there’s an optional 24-hour view that shows data from
the last available day with only a few hours’ delay — useful for checking how
newly published content is picking up. The Search Analytics APIA set of REST APIs that let you programmatically read and manage Google Search Console data for properties you've verified — Performance data, URL index status, sitemaps, and properties — authorized with OAuth 2.0. extends that with
an hourly HOURLY_ALL data state covering up to 10 days, which Google
explicitly flags as data that “might be partial.” Treat anything from the most
recent day or two as preliminary and let it settle before drawing conclusions.
Why your data is “missing”: anonymized queries
This is the section I have first-party data on. To protect privacy, Google withholds low-volume and sensitive searches from the query table while still counting them in the chart totals. Google’s own phrasing, which I quoted in my study of anonymized GSC queries: “To protect user privacy, the Performance report doesn’t show all data. For example, we might not track some queries that are made a very small number of times or those that contain personal or sensitive information.”
How much is hidden? In my Ahrefs study, “Almost Half of GSC Clicks Go to Anonymous Queries” (published February 2025), across one month of data spanning 146,741 websites and nearly 9 billion total clicks, “these instances of anonymous queries account for 46.08% of all clicks in our study.” Nearly half. In a February 2026 follow-up, I pulled April-2025 data across 22 billion clicks and 887,534 GSCA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. properties and foundA 302 (\"Found\") is a temporary redirect: it forwards users to a new URL while telling search engines the original URL should stay in the index. It's a weak canonicalization signal, not the zero-equity dead end of SEO folklore. anonymized queries had crept up to 46.77% — so this isn’t a fluke of my original sample, and the direction is up, not down.
Two practical takeaways:
- Your query table will never sum to your total clicks. The gap is the anonymized queries. That’s not a bug — it’s the privacy filter plus property-vs-page aggregation doing exactly what they’re designed to do.
- It’s likely getting worse, not better. As AI OverviewsAI Overviews are the AI-generated summary box Google shows above or within its regular search results, written by Gemini models from pages retrieved out of Google's normal Search index. It's a Search feature, not a separate platform or index. and other features reshape the SERP, expect more of the click data to fall below the visibility threshold.
The model allocates the visible chart-to-table gap across candidate keywords. Its estimates are directional, not recovered Google data.
Compare a Performance export with third-party keyword candidates using my free Hidden Query Finder Free
- Export page-level Search Console performance data for a consistent date range.
- Add candidate keyword data and review the estimated hidden share by page.
- Use the confidence and allocation notes as prioritization clues, never as reconstructed query-level truth.
Beyond 1,000 rows: the API and BigQuery bulk export
The UI caps any export at 1,000 rows. The most common “how do I get more” question has two real answers — and one persistent myth to kill:
- Search Analytics API (
searchanalytics.query). ItsrowLimitfield has a “Valid range is 1-25,000; Default is 1,000.” So you get up to 25,000 rows per request, paginated withstartRow(“Zero-based indexStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. of the first row in the response”). Not 50,000 — the 50,000 figure floating around applies to Looker Studio, not this endpoint. The URL Inspection toolA Google Search Console feature that reports how Google sees one specific URL on a property you own. By default it shows the last-indexed snapshot; a separate \"Test live URL\" mode fetches the current version. and the broader Search ConsoleGoogle's free tool for monitoring crawling, indexing, and search performance. API are siblings here for programmatic access. - BigQuery bulk export. This is the path when you want everything. It writes all
the performance data available to your property — and crucially, instead of silently
dropping anonymized queries, it folds them into a special aggregated row per site/URL
per day, so impressions and clicks still sum correctly. There’s no daily 1,000-row
cap. The data lands in
searchdata_site_impression(aggregated by property) andsearchdata_url_impression(aggregated by URL).
Common misreadings to avoid
- “Average position 1 means I rank #1.” No — it’s the topmost link, averaged across all your queries.
- “My query table should add up to my total clicks.” No — anonymized queries push the chart total above the visible rows.
- “GSC clicks should match my Google Analytics sessions.” No — different definitions, deduplication, consent and measurement gaps, and timing all diverge.
- “GSC average position should match my rank tracker.” No — personalization, geoGenerative Engine Optimization — visibility inside AI answer engines., device, and time pull live checks apart.
- “The API gives 50,000 rows.” It’s 25,000 per request; paginate with
startRow. - “Discover/News traffic is in my Web Search numbers.” It isn’t — separate reports.
- “More impressions means something’s broken.” Impressions can rise from new queries or SERP featuresSERP features are any element on a search results page beyond the classic ten blue links — featured snippets, People Also Ask, knowledge panels, sitelinks, image and video packs, AI Overviews, and structured-data-driven rich results. Google documents that losing rich-result eligibility doesn't affect ranking; their SEO relevance is CTR (they redistribute clicks). Some are unlocked by markup; most are purely algorithmic. with no change in clicks; always read impressions alongside CTR and position, not alone.
For the broader walkthrough of every report, see the Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. hub; the Page Indexing reportThe Google Search Console report (formerly Index Coverage) showing how many of your URLs are indexed vs. not indexed, and grouping the not-indexed ones by reason. covers the coverage/indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. side rather than this performance side.
AI summary
A condensed take on the Advanced version:
- It’s real served-results data, not a model (Mueller). Privacy-filtered and averaged — not sampled — but not invented.
- Four metrics: clicks (must leave Google; AMPAMP (Accelerated Mobile Pages) is an open-source web framework Google launched in 2015 to make mobile pages load near-instantly via restricted HTML/CSS/JS and CDN caching. It was never a ranking factor and, since June 2021, is no longer required for Top Stories. reader counts), impressions (seen or potentially seen; carousels/infinite scrollInfinite scroll is a loading pattern where content appears automatically as a user scrolls, instead of via numbered pages. Because Googlebot doesn't scroll or click, indexable infinite scroll needs real per-chunk URLs (paginated loading) that update via the History API — otherwise deep content may never be crawled, or worse, get merged into the wrong page. need scroll-into-view), average CTR (clicks ÷ impressions), average position (topmost link, averaged across queries, recorded only on an impression).
- Average position is an average, not a rank. A page can rank #1 for its head term and still show a middling average because of long-tail queries.
- Six dimensions — Queries, Pages, Countries, Devices, Search appearance, Dates — plus a Web/Image/Video/News search-type filter. 16 months of retention.
- Anonymized queries drop low-volume/sensitive searches from the table but keep them in chart totals, so rows never sum. My study: ~46% of clicks. Likely higher post-AI-Overviews.
- Limits: UI caps at 1,000 rows; Search Analytics APIA set of REST APIs that let you programmatically read and manage Google Search Console data for properties you've verified — Performance data, URL index status, sitemaps, and properties — authorized with OAuth 2.0. returns up to 25,000 per request (not 50,000 — that’s Looker Studio); BigQuery bulk export has no cap and keeps anonymized queries as an aggregate row.
- Web Search, Discover, and Google News are separate reports.
Official documentation
Primary-source documentation from Google.
- What are impressions, position, and clicks? — the exact counting rules for all three metrics, including carousels and infinite scrollInfinite scroll is a loading pattern where content appears automatically as a user scrolls, instead of via numbered pages. Because Googlebot doesn't scroll or click, indexable infinite scroll needs real per-chunk URLs (paginated loading) that update via the History API — otherwise deep content may never be crawled, or worse, get merged into the wrong page..
- Performance report (Search results): Overview and basic setup — the four metrics, dimensions, and the search-type filter.
- A deep dive into Search Console performance data filtering and limits — Daniel Waisberg on anonymized queries, table-vs-chart discrepancies, and row limits.
- Search Analytics API —
searchanalytics.queryreference — therowLimit(1–25,000) andstartRowpaginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does. fields. - About bulk data export of Search Console data to BigQuery — the no-row-cap export and how anonymized queries are aggregated.
- Bulk data export announcement — the rollout post for the BigQuery export.
Quotes from the source
On-the-record statements from Google. Each link jumps to the quoted passage on the source page.
Google — what the metrics count
- “An impression means that a user has seen (or potentially seen) a link to your site in Search, Discover, or News.” — Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. Help. Jump to quote
- “A link must get an impression for its position to be recorded.” Jump to quote
- “any click that sends the user to a page outside of Google Search, Discover, or News is counted as a click” Jump to quote
- “the topmost position occupied by a link to your property” Jump to quote
- “where 1 is the topmost position” Jump to quote
- “the item must typically be scrolled into view to count an impression” (infinite scrollInfinite scroll is a loading pattern where content appears automatically as a user scrolls, instead of via numbered pages. Because Googlebot doesn't scroll or click, indexable infinite scroll needs real per-chunk URLs (paginated loading) that update via the History API — otherwise deep content may never be crawled, or worse, get merged into the wrong page.). Jump to quote
Google — average position is real data (John Mueller, Search Advocate)
- “The data in the Search ConsoleGoogle's free tool for monitoring crawling, indexing, and search performance. search performance reportThe Google Search Console report that shows how your site actually performed in Google Search, built from real impressions and clicks. It reports four metrics — clicks, impressions, average CTR, and average position — and keeps the most recent 16 months of data. is based on actual search results that were shown to users. It’s not a theoretical number, but rather a number based on actual results.” — John Mueller, Search Advocate, Google. Jump to quote
- “The average position is based on the average top position of a URL from your site. If there are multiple URLs from your website which are shown in the search results page we’ll use the topmost one for this average.” — John Mueller, Search Advocate, Google. Jump to quote
- “You might not always see the same position when you check yourself. That’s generally due to personalization, or geoGenerative Engine Optimization (GEO) is the practice of optimizing content and brand presence so AI-powered search engines and assistants — Google AI Overviews, ChatGPT, Perplexity — cite, recommend, or mention you when generating answers. Google's position is that it's still SEO.-targeting, or because of short-lived visibility in search.” — John Mueller, Search Advocate, Google. Jump to quote
Google — the API row limit
- The
rowLimitfield: “Valid range is 1-25,000; Default is 1,000.” — Search Analytics APIA set of REST APIs that let you programmatically read and manage Google Search Console data for properties you've verified — Performance data, URL index status, sitemaps, and properties — authorized with OAuth 2.0. reference. Jump to quote
Reading the Performance report — a sanity checklist
A quick pass before you draw conclusions from the report:
- You know which search type you’re looking at (web / image / video / news) — and remember Discover and News are separate reports.
- You’ve set a sensible date range and used comparison mode instead of eyeballing a single period.
- You’re aware your query table won’t sum to total clicks (anonymized queries).
- You’re reading average position as an average, not a live rank.
- You know that grouping by Pages or Search appearance aggregates by page, while Queries/Countries/Devices/Dates (and the chart) aggregate by property — and that switching dimensions changes your totals.
- For CTR opportunities, you’ve sorted by high impressions + low CTR at a decent average position (the classic “rewrite the title/description” candidates).
- If you hit the 1,000-row wall, you’ve moved to the Search Analytics APIA set of REST APIs that let you programmatically read and manage Google Search Console data for properties you've verified — Performance data, URL index status, sitemaps, and properties — authorized with OAuth 2.0. or BigQuery bulk export rather than trusting a truncated view.
- You’re not expecting GSCA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. clicks to match GA4 sessions or your rank tracker.
The mental models
1. Real, but filtered and averaged — not sampled. Every number is from results Google actually served — but two things reshape it before you see it: the privacy filter (anonymized queries) and averaging (position and CTR). It’s not a statistical sample of your traffic; trust the direction and magnitude, and don’t treat any single figure as exact.
2. Average position ≠ rank. Position is the topmost link your property held for a query, averaged across all queries where you appeared, only counted when there was an impression. A page can rank #1 for its head term and still read 12 because of long-tail noise. More impressions = more reliable average.
3. The table never sums to the chart. The gap is anonymized queries (kept in chart totals, dropped from the table) plus property-vs-page aggregation. If you need the rows to reconcile, that’s what BigQuery bulk export’s anonymized-aggregate row is for.
4. Three numbers, three different worlds. GSCA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. clicks, GA4 sessions, and rank-tracker positions measure different things with different definitions, dedup, consent gaps, and timing. They will never match. Reconcile trends, not absolute values.
5. Hit a wall? Climb the data ladder. UI (1,000 rows) → Search Analytics APIA set of REST APIs that let you programmatically read and manage Google Search Console data for properties you've verified — Performance data, URL index status, sitemaps, and properties — authorized with OAuth 2.0. (25,000 rows/request, paginated) → BigQuery bulk export (no cap, anonymized queries kept as an aggregate row). Pick the rung that matches how much data you actually need.
Performance report — cheat sheet
Metric → what it actually means
| Metric | What it counts | The gotcha |
|---|---|---|
| Clicks | A click that sends the user outside Google | In-Google interactions don’t count; the AMPAMP (Accelerated Mobile Pages) is an open-source web framework Google launched in 2015 to make mobile pages load near-instantly via restricted HTML/CSS/JS and CDN caching. It was never a ranking factor and, since June 2021, is no longer required for Top Stories. reader does |
| Impressions | Your link appeared / could be seen, per query per page | ”Potentially seen” on static SERPs; carousels & infinite scrollInfinite scroll is a loading pattern where content appears automatically as a user scrolls, instead of via numbered pages. Because Googlebot doesn't scroll or click, indexable infinite scroll needs real per-chunk URLs (paginated loading) that update via the History API — otherwise deep content may never be crawled, or worse, get merged into the wrong page. need scroll-into-view |
| Average CTR | Clicks ÷ impressions | ”Average” — changes with whatever rows you filter to |
| Average position | Topmost position of your property, averaged across queries | Recorded only on an impression; an average, not your live rank |
Dimensions: Queries · Pages · Countries · Devices · Search appearance · Dates. Search-type filter: web / image / video / news. Discover & Google News are separate reports.
Data limits & escapes
| You hit | Reality |
|---|---|
| Retention | 16 months |
| UI export | 1,000 rows max |
| Search Analytics APIA set of REST APIs that let you programmatically read and manage Google Search Console data for properties you've verified — Performance data, URL index status, sitemaps, and properties — authorized with OAuth 2.0. | Up to 25,000 rows/request, paginate with startRow (NOT 50,000 — that’s Looker Studio) |
| BigQuery bulk export | No row cap; anonymized queries kept as a daily aggregate row |
Fast facts
- Query table won’t sum to total clicks — anonymized queries (~46% of clicks in my one-month study of 146,741 sites and nearly 9 billion clicks) sit in the chart total only.
- Chart is always “by property”; table follows the dimension — Pages/Search appearance aggregate “by page,” everything else “by property.”
- Average position won’t match your rank tracker (personalization, geoGenerative Engine Optimization (GEO) is the practice of optimizing content and brand presence so AI-powered search engines and assistants — Google AI Overviews, ChatGPT, Perplexity — cite, recommend, or mention you when generating answers. Google's position is that it's still SEO., device, time).
Performance-report analysis mistakes
Reporting average position as “our ranking”
Why it’s wrong: the metric averages the topmost position held by the property over many served queries, locations, devices, and times, and only when an impression was recorded. Do instead: segment by page, query, country, device, and date; describe the result as average position for that scope.
Forcing the query table to equal the chart total
Why it’s wrong: privacy-filtered queries remain in chart totals while disappearing from visible query rows. Property-versus-page aggregation can add another mismatch. Do instead: report the gap explicitly and use BigQuery’s anonymized aggregate when reconcilable totals matter.
Comparing clicks with analytics sessions one-to-one
Why it’s wrong: GSCA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. counts qualifying clicks from Google while analytics counts sessions under different attribution, consent, timing, botA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index., and deduplication rules. Do instead: compare trends and investigate changes without pretending the totals share a definition.
Treating a CTR change as a title-tag verdict
Why it’s wrong: CTR can move because the query mix, device mix, country mix, position, or search appearance changed. Do instead: hold the cohort steady and read clicks, impressions, CTR, and position together before assigning a cause.
Exporting 1,000 rows and calling the analysis complete
Why it’s wrong: the UI truncates the visible table and can hide the long tail. Do instead: use the Search Analytics APIA set of REST APIs that let you programmatically read and manage Google Search Console data for properties you've verified — Performance data, URL index status, sitemaps, and properties — authorized with OAuth 2.0. with paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does. or bulk export when the question depends on more than the UI’s leading rows.
The standing KPIs for Search performance
Organic clicks
- Metric — Clicks from the selected Search type and cohort.
- What it tells you — How many recorded result interactions sent users from Google to the site.
- How to pull it — Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. Performance reportThe Google Search Console report that shows how your site actually performed in Google Search, built from real impressions and clicks. It reports four metrics — clicks, impressions, average CTR, and average position — and keeps the most recent 16 months of data., segmented consistently by page, query, country, device, search appearance, and date as needed.
- Benchmark / realistic range — Use a seasonally comparable property baseline; there is no universal click target across sites or cohorts.
- Cadence — Weekly for direction and monthly for durable reporting.
Qualified impressions
- Metric — Impressions for the intended pages and query/topic cohorts.
- What it tells you — Whether the site is earning exposure, including cases where clicks have not followed yet.
- How to pull it — Performance report or the API/bulk export for a defined cohort; keep Search, Discover, and Google News separate.
- Benchmark / realistic range — Compare with the cohort’s prior comparable period. Growth can be healthy or irrelevant depending on which queries and pages caused it.
- Cadence — Weekly as a leading indicator; monthly with click and CTR context.
Cohort click-through rate
- Metric — Clicks divided by impressions for a stable page/query/appearance set.
- What it tells you — Whether served exposure converts into visits within that cohort.
- How to pull it — Filter the Performance report to the cohort before reading CTR; compare alongside average position and device/search-appearance mix.
- Benchmark / realistic range — Establish separate baselines by cohort. A single sitewide target is misleading because SERP layouts and intent differ.
- Cadence — Monthly and after title, snippet, or search-appearance changes.
Intended-page visibility
- Metric — Impressions and average position for the pages and queries the site is intentionally targeting.
- What it tells you — Whether important pages are being served more often and in a stronger position without letting unrelated long-tail impressions mask the result.
- How to pull it — Save a consistent page/query filter in the UI or reproduce it through the API or bulk export.
- Benchmark / realistic range — Use the cohort’s own rolling baseline; average position is not an absolute rank and should not be assigned a universal threshold.
- Cadence — Weekly for active campaigns; monthly otherwise.
Patrick's relevant free tools
- SEO ROI Calculator — Model the revenue impact of an SEO investment — content, links, technical, or a full program — with conservative/optimistic scenarios, a break-even chart, and a paid-ads comparison. Runs entirely in your browser.
- Google Index Checker — Check one URL’s observable indexability blockers, or reconcile sitemap, crawl, and supplied Search Console evidence across a URL set before verifying Google’s actual state in URL Inspection.
- Google Search Console Hidden Query Estimator — Upload a Search Console performance export plus an Ahrefs or Semrush keyword export, and see which queries plausibly explain the clicks and impressions GSC hides below its privacy threshold — per-page confidence-tiered estimates, CSV export. Runs entirely in your browser.
Tools for working with Performance data
- Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. — Performance reportThe Google Search Console report that shows how your site actually performed in Google Search, built from real impressions and clicks. It reports four metrics — clicks, impressions, average CTR, and average position — and keeps the most recent 16 months of data. itself: the Web Search “Search results” report, plus the separate Discover and Google News reports.
- URL Inspection toolA Google Search Console feature that reports how Google sees one specific URL on a property you own. By default it shows the last-indexed snapshot; a separate \"Test live URL\" mode fetches the current version. (GSC) — pair it with the Performance report to see how a single high-impression URL is crawled, rendered, and indexedStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed..
- Search Console APIA set of REST APIs that let you programmatically read and manage Google Search Console data for properties you've verified — Performance data, URL index status, sitemaps, and properties — authorized with OAuth 2.0. (
searchanalytics.query) — programmatic access, up to 25,000 rows per request, paginated. - BigQuery bulk export — the no-cap path; the only way to get anonymized-query clicks back as a reconcilable aggregate.
- Looker Studio — connect the Search ConsoleGoogle's free tool for monitoring crawling, indexing, and search performance. connector for dashboards (its own, higher row limits apply there, separate from the API endpoint).
- Ahrefs — its GSC integration pulls Performance data alongside backlink and keyword data for combined analysis.
Resources worth your time
My related writing
- Almost Half of GSC Clicks Go to Anonymous Queries — my study quantifying how much query data the Performance reportThe Google Search Console report that shows how your site actually performed in Google Search, built from real impressions and clicks. It reports four metrics — clicks, impressions, average CTR, and average position — and keeps the most recent 16 months of data. hides.
From others
- Google Search Central’s deep dive into Search Console performance data filtering and limits (Daniel Waisberg) — the canonical explainer for anonymized queries and the table-vs-chart discrepancy.
- Ahrefs’ Google Search Console: A Complete Guide — a full walkthrough of the “Search results” report and the CTR-by-position opportunity workflow.
- Search Engine Journal’s How Accurate Is the Average Position Metric in GSC? — covers the John Mueller quotes on how average position is computed and why it diverges from your own rank checks.
- Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. Help: What are impressions, position, and clicks? — the primary-source counting rules for all four metrics, including carousels and infinite scrollInfinite scroll is a loading pattern where content appears automatically as a user scrolls, instead of via numbered pages. Because Googlebot doesn't scroll or click, indexable infinite scroll needs real per-chunk URLs (paginated loading) that update via the History API — otherwise deep content may never be crawled, or worse, get merged into the wrong page..
- Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. Help: Performance report (Search results) overview — official walkthrough of the four metrics, dimensions, and the search-type filter.
- Google Search Central: Bulk data export to BigQuery announcement — the launch post explaining how anonymized queries are handled in the no-cap export.
Stats worth citing
- ~46% of GSCA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. clicks went to anonymized queries in my study (published February 2025). Across 146,741 websites and nearly 9 billion total clicks over one month, anonymous queries accounted for 46.08% of all clicks — meaning the query table you see is missing close to half the click-driving terms. Source
- My February 2026 follow-up, using April-2025 data across 22 billion clicks and 887,534 properties, foundA 302 (\"Found\") is a temporary redirect: it forwards users to a new URL while telling search engines the original URL should stay in the index. It's a weak canonicalization signal, not the zero-equity dead end of SEO folklore. 46.77% — confirming the original finding holds at scale and has ticked up, not down. Source
- API row limit: 25,000 per request (not the 50,000 commonly repeated — that figure belongs to Looker Studio). Source
Test yourself: the Performance report
Five quick questions on interpreting Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. performance data. Pick an answer for each, then check.
Performance report
The Google Search Console report that shows how your site actually performed in Google Search, built from real impressions and clicks. It reports four metrics — clicks, impressions, average CTR, and average position — and keeps the most recent 16 months of data.
Related: Google Search Console, Search Console API
Performance report
The Performance report (the “Search results” report) is the Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. view that shows how your site actually performed in Google Search. It is built from real impressions and clicks logged on live results — not estimates or modeled numbers.
It reports four metrics: clicks (a user clicked through to your site), impressions (your link appeared or could potentially be seen), average CTR (clicks divided by impressions), and average position (the topmost position your link held, averaged across the queries where it appeared). You can slice the data by six dimensions — Queries, Pages, Countries, Devices, Search appearance, and Dates — and the report keeps the most recent 16 months.
The single most important thing to understand is that it is a sampled, privacy-filtered, averaged dataset, not a complete ranking log. Some low-volume or sensitive queries are withheld as anonymized queries, so the rows you see won’t sum to the chart totals. Average position is an average across many queries, so “position 1” rarely means you literally rank first everywhere. The UI also caps exports at 1,000 rows.
Discover and Google News have their own separate Performance reports — they are not folded into the Web Search numbers.
Related: Google Search Console, Search Console API
Build-time retrieval analysis plus live signals for this exact article. The automatic chunk report includes a deterministic readiness score and is ready without a model download.
Search Console
sampleGA4 traffic (28d)
sampleCloudflare traffic (7d)
sampledCrUX field data (28d, phone)
sampleGoogle NLP entities
localChangelog
Updated Jul 18, 2026.
Editorial summary and recorded change details.Summary
Stopped calling the report's data "sampled" (Google's own docs describe privacy filtering and aggregation, not statistical sampling), corrected the by-property/by-page aggregation mechanic to follow the dimension you're viewing rather than a manual toggle, dated both hidden-query studies, and added a preliminary-data note for the 24-hour view and hourly API.
Change details
-
Replaced "sampled" language across the tldr, Advanced lens, ai-summary, frameworks, and checklists with accurate privacy-filter/averaging framing, live-verified against Google's Performance report and API documentation.
-
Corrected the aggregation explanation: the chart is always aggregated by property, and the table follows whichever dimension you're grouping by (Pages/Search appearance = by page; Queries/Countries/Devices/Dates = by property) — not a manual toggle.
-
Added exact publication dates to both hidden-query-percentage studies (February 2025 study, February 2026 follow-up using April 2025 data) and confirmed both are Patrick's own byline.
-
Added a freshness/preliminary-data note covering the report's 24-hour view and the Search Analytics API's hourly HOURLY_ALL data state, live-verified against Google's April 2025 announcement.
Full comparison unavailable — no prior snapshot was archived for this revision.