SearchProbe

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.

  1. Read only

    Uses Google's official read-only Search Console scope. Nothing the CLI does can change a property.

  2. Local first

    Authenticate once. Credentials and Search Console data move between your machine and Google, with no SearchProbe server in between.

  3. Structured

    Stable JSON output with one envelope shape, typed values, and explicit metadata, designed for scripts, jq, and coding agents.

  4. 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.

Agent instruction

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.

  1. 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
  2. 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
  3. Query

    Add --json for 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

Search Console should be scriptable.