google-search-console-cli
CLI for Google Search Console using the official Google API Python client.
Highlights
- Native OAuth login: no mandatory
gcloudsetup pipx-friendly install (gscavailable globally)- Site operations: list/get/add
- Sitemap operations: list/get/submit/delete
- URL inspection: manual index-status checks for specific pages
- Analytics queries by date/query/page with Search Console filters
- Output formats: table, json, csv
- Diagnostics:
gsc doctor
Install (Recommended)
Install with pipx so gsc is available globally on your PATH.
If you do not have pipx yet:
python3 -m pip install --user pipx
python3 -m pipx ensurepath
Restart your shell, then install:
pipx install google-search-console-cli
Verify:
gsc --version
Upgrade later:
pipx upgrade google-search-console-cli
Uninstall:
pipx uninstall google-search-console-cli
Install From Source
If you cloned this repository and want to run from source, use one of these options.
Option 1: Local virtualenv (best for development)
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
Fish shell activation:
. .venv/bin/activate.fish
Then run:
gsc --help
Option 2: Install from source with pipx (best for day-to-day CLI usage)
pipx install -e /absolute/path/to/google-search-console-cli
OAuth Setup (Recommended)
Create a Google OAuth client of type Desktop app, then run:
gsc auth login --client-secret /absolute/path/to/client_secret.json
Verify:
gsc auth whoami
gsc doctor
Optional: Set Default Site
gsc config set default-site sc-domain:example.com
gsc config get default-site
After this, you can omit --site in commands that need a property.
Usage
Sites
gsc site list
gsc site get --site sc-domain:example.com
gsc site add --site sc-domain:example.com
Sitemaps
gsc sitemap list --site sc-domain:example.com
gsc sitemap get --site sc-domain:example.com --feedpath https://example.com/sitemap.xml
gsc sitemap submit --site sc-domain:example.com --feedpath https://example.com/sitemap.xml
gsc sitemap delete --site sc-domain:example.com --feedpath https://example.com/sitemap.xml
URL Inspection
gsc url inspect --site sc-domain:example.com --url https://example.com/page
Get full response in JSON:
gsc url inspect \
--site sc-domain:example.com \
--url https://example.com/page \
--output json
Analytics
gsc analytics query \
--site sc-domain:example.com \
--start-date 2026-01-01 \
--end-date 2026-01-31 \
--dimension date \
--dimension query \
--filter query:contains:brand \
--filter device:equals:MOBILE
Save as CSV:
gsc analytics query \
--site sc-domain:example.com \
--start-date 2026-01-01 \
--end-date 2026-01-31 \
--dimension page \
--output csv \
--csv-path ./analytics.csv
Filter Syntax
Use repeatable filters in this format:
dimension:operator:expression
Supported filter dimensions:
countrydevicepagequerysearchAppearance
Supported operators:
containsequalsnotContainsnotEqualsincludingRegexexcludingRegex
Convenience Script (Repo Local)
If you cloned this repo and want one command setup:
./scripts/setup.sh /absolute/path/to/client_secret.json
Credentials and Config Paths
By default:
- Credentials:
~/.config/gsc-cli/credentials.json - Config:
~/.config/gsc-cli/config.json
Override with env vars:
GSC_CREDENTIALS_FILEGSC_APP_CONFIG_FILEGSC_CONFIG_DIR
ADC Fallback (Optional)
If you prefer ADC via gcloud, the CLI still supports it:
gcloud auth application-default login \
--client-id-file=/absolute/path/to/client_secret.json \
--scopes=https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/webmasters
Notes
- Use Search Console property formats like
sc-domain:example.comor URL-prefix properties. site addrequires write scope (webmasters).sitemap submitandsitemap deleterequire write scope (webmasters).url inspectuses URL Inspection API for manual status checks only (no general "request indexing" endpoint in Search Console API).analytics query --aggregation-type byPropertycannot be combined withpagegrouping/filtering.
Publishing
Trusted Publishing via GitHub Actions (Recommended)
This repo includes .github/workflows/publish.yml that:
- builds
sdist+wheel - publishes to PyPI using OpenID Connect (no API token needed in GitHub secrets)
To enable it:
- In PyPI, open project settings for
google-search-console-cli. - Add a Trusted Publisher with:
- Owner:
NmadeleiDev - Repository:
google-search-console-cli - Workflow name:
publish.yml - Environment name:
pypi
- Owner:
- In GitHub, keep/create environment
pypi(optional protection rules as you prefer).
Release flow:
- Bump version in
pyproject.toml. - Commit and push.
- Create and push a tag like
v0.1.1:
git tag v0.1.1
git push origin v0.1.1
The workflow will publish automatically.
Manual Publishing (Fallback)
. .venv/bin/activate.fish
python -m build
python -m twine upload dist/*
Metadata
Release files for google-search-console-cli 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| google_search_console_cli-0.1.1.tar.gz | 16.0 kB | With provenance | Details for google_search_console_cli-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| google_search_console_cli-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for google_search_console_cli-0.1.1-py3-none-any.whl |
Total release size: 30.4 kB
Release files / google_search_console_cli-0.1.1.tar.gz
| Download URL | google_search_console_cli-0.1.1.tar.gz |
|---|---|
| Size | 16.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d291504ae4dbf869017efdfee9f4aef4c9b7ed920d5f504df72a154680e4740d
|
|
BLAKE2b-256 checksum How to use checksums |
6a061b3ff18336c9a1fdb8cb01eccc29ae07968c7d57bee693958d63b5ef74d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 18, 2026.
Transparency logRelease files / google_search_console_cli-0.1.1-py3-none-any.whl
| Download URL | google_search_console_cli-0.1.1-py3-none-any.whl |
|---|---|
| Size | 14.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
350fc81c3045c9333a4e29f7cc85721a005d98ff4da78adae0694c97fd01ca8e
|
|
BLAKE2b-256 checksum How to use checksums |
f3520092b34495e4c575ca8550293def4c2e90097a2dcc80635e6705afd7c5de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 18, 2026.
Transparency logSecurity for google-search-console-cli 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for google_search_console_cli-0.1.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 18, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.