I was building a small tool that pulls Google Search Console data into Claude, and the first thing that broke was trust. My impressions total was higher than the number in the Search Console UI. Not by a rounding error. Noticeably higher.
Here is what was going on, in case you hit the same thing.
The mistake: summing page rows
The obvious way to get totals is to query by page, then add up clicks and impressions across all rows.
Clicks come out close. Impressions do not.
The reason: Search Console counts impressions differently depending on how you group the data. Grouped by property, one results page counts once. Grouped by page, every one of your URLs on that results page gets its own impression. If two of your pages show up for the same search, that is one impression for the site but two when you add up the page rows.
The fix: take totals from the date dimension
If you want numbers that match the UI, query with dimensions: ["date"] and sum those rows instead. Each day is counted once at the property level, so impressions line up with what Search Console shows.
{
"startDate": "2026-08-24",
"endDate": "2026-09-20",
"dimensions": ["date"]
}
Use page or query dimensions for breakdowns ("which pages lost clicks"), and the date dimension for the headline totals. Don't mix the two in the same number.
Two smaller gotchas
- Data lag. The most recent two or three days are usually incomplete. If you compare "last 7 days" to "the 7 before", end both ranges a few days back, or the latest week always looks worse than it is.
- Average position is not additive. You can't take a plain average of the position column across rows. Weight it by impressions, or take it from the same date-level query.
What I ended up building
I wrapped this into a small MCP server so I can ask Claude or Cursor things like "which pages lost clicks this month" without exporting a CSV first. It is read-only, runs locally, and takes totals from the date dimension.
Disclosure: I built it. It's free and MIT: https://go.namubase.com/slite?s=devto-0921
If you've found other places where the API and the UI disagree, I'd like to hear them.
Top comments (1)
Same trap on the Bing side, with the sign flipped, which makes it easier to miss. Their per-URL AI citation rows sum to about 4 percent BELOW the property-level figure across our fourteen properties: pages under the reporting threshold land in the property total but never appear as rows. And two Bing endpoints that both claim to report citations disagreed by 45 to 111 percent on the same day for the same property. We only found that by pulling both and diffing per host.