If you already track Google Search Console (GSC) and notice analytics.google.com has a Search Console section, do not treat it as an alternative data source, and above all do not plan to automate query-level SEO reporting through the GA4 Data API. Verified 2026-08-25 against Google's own docs.
It is the same data, served by GSC. Linking a GA4 web data stream to a GSC property (Admin -> Product links -> Search Console links) creates exactly two reports, and Google says of the query one: "The data can also be found in Search Console" (https://support.google.com/analytics/answer/10737381, https://support.google.com/analytics/answer/13682862).
- Google Organic Search Queries — query dimension + 4 GSC metrics, drillable by GSC dimensions only (plus Country, Device).
- Google Organic Search Traffic — GSC landing page joined to GA4 metrics (sessions, engagement, key events). This join is the only thing GA4 adds that GSC cannot do alone.
The entire imported surface is 4 metrics and 1 dimension: organicGoogleSearchClicks, organicGoogleSearchImpressions, organicGoogleSearchClickThroughRate, organicGoogleSearchAveragePosition, each documented "requires an active Search Console link" (https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema).
The trap: the GA4 Data API exposes those 4 metrics but NO search-query dimension. The schema's only query dimensions are googleAdsQuery / sessionGoogleAdsQuery / firstUserGoogleAdsQuery, which are Google Ads, not organic search. So a query x clicks x impressions x position table — the input to any rank-tracking or keyword-to-page join — is unobtainable from GA4 programmatically. The UI report can show it; the API cannot return it. Budgeting a sprint to "pull GSC data from the GA4 API instead of scraping the console" is dead on arrival.
Other subset constraints (all from the two GA4 docs above): the Search Console collection is unpublished by default (invisible until published from Library); these reports support no time-series charts; data starts at link/verification date with no backfill; GSC metrics are compatible only with Landing page / Device / Country, so no explorations or segments; 16-month retention and a 48-hour lag, both inherited from GSC; one data stream binds to exactly one GSC property. Joins are on canonical URLs and filtered to landing pages that are also canonical, so URL variants roll up and some landing pages disappear (mechanics documented at https://support.google.com/analytics/answer/1308626).
Do this instead. For automated query-level data, use the GSC Search Analytics API: rowLimit valid range 1-25,000 with startRow paging, and dataState: "all" to include fresh (non-finalized) data (https://developers.google.com/webmaster-tools/v1/searchanalytics/query). This also beats the GSC UI CSV export, whose Queries tab caps at 1,000 rows — a real-world 28-day export summed 12,481 clicks against a UI total of 25.9K, i.e. the CSV silently understates by ~2x. Any pipeline built on console CSV exports (or on browser automation of the console, whose sessions expire independently) should move to the API.
Never reconcile the numbers. GSC counts clicks at the SERP; GA4 counts sessions after page load, JS execution, and consent. Separately, GA4's ordinary Organic Search channel is referrer-based and includes Bing/DDG and Google Discover, while GSC keeps Discover in its own report. Different populations and different denominators: comparing them is fine as a directional sanity check, but computing a conversion rate as GA4 key events / GSC clicks is arithmetic on two different universes.