If you've built a report in GA4's Explorations and noticed a small chart icon in the top-right corner, that's GA4 telling you it sampled your data. The numbers you're looking at aren't exact — they're extrapolated from a subset of your sessions. This guide shows how to pull exact, unsampled GA4 data into Google Sheets using the GA4 Data API, and what to actually do with it once it's there.
The Problem: Sampling and the 100,000-Row Cap
GA4 Explorations apply sampling when your query covers too many events. The threshold isn't published, but in practice it kicks in on properties with moderate-to-high traffic within date ranges longer than a few weeks. When it does, you're working with estimates — often 10–30% off from the real numbers on high-traffic days.
The row cap compounds the problem. Explorations max out at 100,000 rows per report. For an e-commerce site with a large product catalogue, or a content site tracking hundreds of landing pages across dozens of segments, that ceiling cuts off data that should be in your report.
Google's official solution is BigQuery. The GA4 BigQuery export is genuinely powerful — but it requires a Google Cloud project, billing setup, a scheduled export, and SQL to query the raw tables. Most analysts running weekly traffic reports don't need a data warehouse. They need accurate numbers in a spreadsheet.
The GA4 Data API solves both problems. It returns unsampled data by default and supports up to 250,000 rows per request. The barrier has always been setup: OAuth flows, JSON request bodies, dimension and metric IDs that don't match what the UI shows you.
API Import eliminates that barrier.
Setup: Connect Google Analytics 4 in One Click
Open API Import from the Extensions menu in any Google Sheet, then select Google Analytics 4 from the connector list.
Sign in with the Google account that has Viewer (or higher) access to your GA4 property. API Import handles the OAuth handshake — no service account, no JSON credentials file, no Google Cloud Console required.
Once connected, API Import detects your GA4 property automatically. If you have multiple properties, you'll select the one you want to query.
Execution: Pull Exact Traffic Data with Plain English
In the API Import prompt field, describe what you want:
"Get the last 90 days of traffic by landing page, with sessions, engaged sessions, conversions, and bounce rate, broken down by default channel group and device category."
API Import translates this into the correct GA4 Data API request automatically:
- Dimensions — maps "landing page" →
landingPage, "channel group" →sessionDefaultChannelGroup, "device category" →deviceCategory - Metrics — maps "sessions" →
sessions, "engaged sessions" →engagedSessions, "conversions" →conversions, "bounce rate" →bounceRate - Sampling — the Data API never samples; every row in the response is exact
- Row limit — set to 250,000, not the Explorations cap of 100,000
The result lands directly in your sheet, one row per dimension combination:
| Landing Page | Channel | Device | Sessions | Engaged Sessions | Conversions | Bounce Rate |
|---|---|---|---|---|---|---|
| /blog/ga4-guide | Organic Search | Desktop | 3,240 | 2,180 | 42 | 32.7% |
| /pricing | Paid Search | Mobile | 1,104 | 623 | 31 | 43.6% |
| / | Direct | Desktop | 2,890 | 1,940 | 28 | 32.8% |
No sampling warning. No 100,000-row ceiling. No BigQuery.
Analysis: Channel and Landing Page Performance You Can Actually Trust
With unsampled data in Sheets, the numbers you're working with match what actually happened — not what GA4 estimated. That distinction matters most when you're comparing periods or making budget decisions.
Channel breakdown
Use a pivot table to get total sessions and conversions by channel group:
- Select your data range, then Insert → Pivot table
- Set Rows to Channel
- Set Values to Sessions (sum) and Conversions (sum)
- Add a calculated field:
=Conversions / Sessionsfor conversion rate
The resulting table gives you a clean channel comparison with exact conversion rates — useful for any week where you're trying to understand whether a traffic source is performing or just sending volume.
Landing page performance
For landing page analysis, add a SUMIF to aggregate sessions per page:
=SUMIF(A:A, "/blog/ga4-guide", D:D)
Or filter the pivot by Channel = "Organic Search" to see which pages are actually driving organic sessions — useful for content audits and deciding where to focus optimization effort.
What to look for in the data
High sessions, low conversions: Check whether the landing page has a clear next step. If organic traffic is landing on a blog post with no CTA, that's fixable in an afternoon.
High bounce rate on paid channels: Traffic you're paying for that leaves immediately is often a landing page mismatch — the ad promise and the page content aren't aligned. Cross-reference with conversion rate: a high bounce rate with strong conversions is fine; a high bounce rate with zero conversions is a problem.
Mobile vs desktop conversion gap: If desktop conversion rate is 3× mobile, the mobile experience is the constraint — not the channel or the offer.
Unexplained traffic spikes: With sampled data, a spike might be noise. With unsampled data, you can trust the number and investigate the source. Filter by sessionSource and sessionMedium to find the origin.
Why This Matters More Than You Think
If you've been building dashboards on top of GA4 Explorations data, some of your numbers are wrong. Not dramatically wrong — but wrong enough to matter for decisions at the margin.
The most common case: comparing this month's organic traffic to last month's, where the current period is still within the sampling threshold but last month crossed it. You see a 12% increase in sessions. Some of that is real; some of it is the sampling delta inverting between periods. You can't tell which without unsampled data.
Pulling from the Data API via API Import means your month-over-month numbers are both from the same, exact dataset. The changes you see are real.
Keeping the Data Fresh
Re-running the prompt weekly takes seconds and keeps your reporting current without any manual export steps. Paste each week's data into a dated tab, and use a VLOOKUP or INDIRECT to track landing page or channel trends over time without rewriting your formulas.
For teams with regular reporting cycles — weekly traffic reviews, monthly exec summaries — the ability to re-run the same plain-English prompt and get exact, current data makes the difference between a report that gets built and one that keeps getting pushed.

