Google Search Console CLI
Google Search Console, from your terminal.
Query search performance, compare periods, inspect indexed URLs, and give coding agents structured, read-only access to Search Console without browser automation.
$ git clone https://github.com/morgancrozier/searchprobe \ && cd searchprobe && go install ./cmd/gsc
Requires Go 1.22 or newer and installs gsc into your Go bin directory. A Homebrew formula is planned but not yet published.
Product demo
$ gsc performance \ --site sc-domain:example.com \ --days 28 \ --dimensions query
QUERY CLICKS IMPRESSIONS CTR POSITION searchprobe 1248 12931 9.7% 2.3 google search console cli 412 4982 8.3% 3.1 search console command line 287 3944 7.3% 4.8 gsc cli 219 2847 7.7% 4.1
Site sc-domain:example.com, 2026-08-15 to 2026-09-11 (America/Los_Angeles), type web, data state final, 4 row(s) from 1 request(s).
Search Analytics rows for one property over 28 Pacific Time days, finalized data only. The summary line on stderr records the exact window Google was asked for.
Read only
Uses Google's official read-only Search Console scope. Nothing the CLI does can change a property.
Local first
Authenticate once. Credentials and Search Console data move between your machine and Google, with no SearchProbe server in between.
Structured
Stable JSON output with one envelope shape, typed values, and explicit metadata, designed for scripts, jq, and coding agents.
Open source
Inspect how the tool works and depend on a transparent interface. Google's limitations are surfaced, not hidden.
Agent workflow
Same commands. Agent-ready output.
SearchProbe does not require a special AI interface. Coding agents use the same deterministic CLI that you do, and read the same JSON your scripts do.
Use gsc for Search Console data. Prefer --json for programmatic analysis.
Do not use browser automation unless the required capability is unavailable from the API.
Two sentences in an agent’s instructions are enough. There is no plugin, server, or schema to install.
$ gsc inspect \ https://example.com/docs \ --site sc-domain:example.com \ --json
{
"ok": true,
"data": {
"site": "sc-domain:example.com",
"inspectionUrl": "https://example.com/docs",
"indexStatus": {
"verdict": "PASS",
"coverageState": "Submitted and indexed",
"lastCrawlTime": "2026-09-09T04:18:37Z",
"googleCanonical": "https://example.com/docs",
"userCanonical": "https://example.com/docs"
}
},
"meta": {
"site": "sc-domain:example.com",
"inspectionUrl": "https://example.com/docs",
"inspectionType": "indexedVersion",
"liveTest": false
},
"warnings": []
}Abbreviated for the page. The full envelope carries every indexStatus field, rich results, and the Search Console inspection link.
Quick start
Three commands to start.
Install
Requires Go 1.22 or newer. Homebrew and tagged releases are planned but not yet published, so the checkout install is the working path today.
$ git clone https://github.com/morgancrozier/searchprobe \ && cd searchprobe && go install ./cmd/gsc
Authenticate
Signs in with Google in your browser and stores a refresh token locally. Today the CLI needs a Desktop OAuth client from your own Google Cloud project; see authentication.
$ gsc auth login --client-file ~/.config/gsc/client.json
Query
Add
--jsonfor the machine-readable envelope. Dates are Pacific Time calendar days, as Search Console defines them.$ gsc performance \ --site sc-domain:example.com \ --days 28 \ --dimensions query