301→302
A temporary redirect where a permanent one belongs. Found by Redirect checker →
redirect loop
The URL redirects back to itself and never settles. Found by Redirect checker →
Data sources

Google Search Console integration

Query Search Console, archive its data locally and join it with crawl evidence per URL.

Google Search Console integration

Local history

Provider data is stored locally with history and joins; nothing is sent to a hosted service.

Google Search Console integration

URL inspection

inspect-url runs a bounded set of checks for one URL; indexing outcomes stay separate.

How it works

Three steps, one saved scan

  1. Connect one read-only grant

    Connect a read-only Google grant for a property you own. Check its status at any time.

  2. Archive it locally

    Queue a date range and run it in small, bounded batches into a SQLite file on your machine. Re-runs fetch only the missing days.

  3. Join it to each URL

    Clicks, impressions, position and CTR join to crawl pages by URL. Google's own index verdict for one URL stays on its own line.

How to run it

One command

bash
seohead gsc-query --site-url sc-domain:example.com --start-date 2026-09-01 --end-date 2026-09-30

Install first: installation guide. Every command also runs as an MCP tool for AI agents.

FAQ

Questions

Google Search Console integration
No. Requests go from your machine straight to the Google Search Console API, using your own grant. Results are stored in local SQLite files with owner-only permissions. Keep those files out of public reports and Git, because they can contain queries and URLs.
No. The grant is read-only. The tool only reads search analytics and URL inspection results.
About 16 months, which is Google's available history. Dates are inclusive and use Pacific Time.
Google omits anonymized queries and can cap returned rows. A capped job is not a full export, and the tool marks it that way.
No. Google's verdict for one URL comes from gsc-query in inspect_url mode. The crawler's own checks (metadata, headers, robots, redirects, structured data, render) run with inspect-url. The two results stay separate.

Check your redirects locally