GSC Chart Visualiser
Use cases
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.
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
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 Configure OAuth credentials in Streamlit secrets
- 2 Sign in with Google and authorise
- 3 Select GSC property, search type, date range and device
- 4 Choose dimensions (date is added automatically)
- 5 Fetch data (capped at 250,000 rows)
- 6 Chart metrics; keep to 2 or fewer for independent Y-axis scaling
- 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.
Want me to run this for you?
I run this tool as a managed service, or build something custom around your data. You get the insights without touching the code.
Related Tools
Analyse Search Console data by URL folder structure.
Find keywords where multiple pages compete for the same query.
Two-mode title analysis: find GSC keywords missing from titles and surface title segments with no search volume.
Find striking distance keywords from GSC and crawl CSV exports.
Pull GSC data via API and analyse traffic distribution across pages.
Generate JSON-LD structured data for common schema types.
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