Back to Tools

GSC Chart Visualiser

Use cases

Visualising GSC performance trends Filtering data by position ranges Comparing multiple metrics Quick GSC data exploration

OAuth 2.0 authentication via google_auth_oauthlib with token refresh.

Connects to webmasters API v3 and uses the searchconsole library for data queries.

Generates multi-metric layered Altair line charts with independent Y-axis scaling when two or fewer metrics are selected (three or more share one axis).

Supports position range filtering (1-3, 4-10, 1-10, 11-20, 21-100) and date groupby aggregation.

Max 250,000 rows.

GSC Data

Platform

Python script (requires Python 3.x)

Input

OAuth credentials via Streamlit secrets (client ID, secret, redirect URIs)

GSC property access

Search type, date range, device, dimensions (page/query/country/device)

Output

Interactive charts and CSV export

View Source

Features

  • OAuth 2.0 with token refresh via google_auth_oauthlib
  • Webmasters API v3 via searchconsole library
  • Altair layered line charts (independent Y axes only with 2 or fewer metrics)
  • Position filtering: first page (1-10), 1-3, 4-10, 11-20, 21-100
  • Query Count metric: unique queries per day (needs query dimension)
  • Date ranges: 7, 30, 90, 180, 365, 480 days
  • Search types: web, image, video, news, discover, googleNews
  • Max 250,000 rows per query, truncated silently beyond

How to use

  1. 1 Configure OAuth credentials in Streamlit secrets
  2. 2 Sign in with Google and authorise
  3. 3 Select GSC property, search type, date range and device
  4. 4 Choose dimensions (date is added automatically)
  5. 5 Fetch data (capped at 250,000 rows)
  6. 6 Chart metrics; keep to 2 or fewer for independent Y-axis scaling
  7. 7 Download CSV (UTF-8 with BOM)

Frequently asked questions

Why does the chart flatten when I select three or more metrics?
Independent Y axes are only used when two or fewer metrics are charted. With three or more, all series share one axis, so impressions dwarf CTR and position. Deselect down to two metrics to compare series with very different scales.
Do I need to select the date dimension?
No. Date is appended automatically to whatever dimensions you pick, so the line charts always have a time axis.
What happens above 250,000 rows?
The API query is capped at 250,000 rows and simply stops there; there is no warning that data was truncated. Narrow the date range or dimensions if your property produces more rows than that.
What does the Query Count metric show?
The number of unique queries per day, calculated only when the query dimension is selected. Without query among your dimensions, the metric is unavailable.
What do I need to self-host it?
Google OAuth credentials in Streamlit secrets under an [installed] block (client_id, client_secret, redirect_uris); the app shows the exact TOML snippet if secrets are missing. For local runs, set IS_LOCAL = True in the file so the redirect URI becomes http://localhost:8501.

Need something built for your business?

This tool started as bespoke client work. I build custom scripts, data pipelines, and full apps for SEO and product data problems that off-the-shelf tools don't solve.

Tell Me What You Need