Skip to content
Back to skills

Google Search Console

BSecurity

Query Google Search Console via the Search Console API v1 — search analytics (clicks / impressions / CTR / position), sites, sitemaps and URL inspection. Use when the user mentions Search Console, organic search performance, top queries / pages, indexing status, or sitemaps.

  • 17 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 11, 2026
ai-agentsgobashapiperformance

Works with

  • cli
  • api

Security analysis

B88/100
  • criticalExfiltrates credentials via HTTP — exact pattern from Snyk ToxicSkills study

Pro shows the line behind each finding and how to fix it

Scanned November 11, 2026

npx -y skills add AceDataCloud/Skills --skill google-search-console --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Google Search Console?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Google Search Console
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/acedatacloud-google-search-console/badge)](https://www.skillsdirectory.com/skills/acedatacloud-google-search-console)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: google-search-console
description: Query Google Search Console via the Search Console API v1 — search analytics (clicks / impressions / CTR / position), sites, sitemaps and URL inspection. Use when the user mentions Search Console, organic search performance, top queries / pages, indexing status, or sitemaps.
when_to_use: |
  Trigger when the user wants Search Console data — top queries or
  pages by clicks / impressions / CTR / position, performance by date
  or country, the list of verified sites, sitemaps, or URL inspection.
  Read-only (`webmasters.readonly`). List sites first to get the
  property URL.
connections: [google/search-console]
allowed_tools: [Bash]
license: Apache-2.0
metadata:
  author: acedatacloud
  version: "1.0"
---

Query **Google Search Console** via `curl + jq`. The user's OAuth bearer token is
in `$GOOGLE_SEARCH_CONSOLE_TOKEN` (scope `webmasters.readonly`); every call needs
`Authorization: Bearer $GOOGLE_SEARCH_CONSOLE_TOKEN`. Base:
`https://searchconsole.googleapis.com`.

Failures are `{"error":{"code","message","status"}}` — show verbatim. `401` =
re-install. `403` = the token's account doesn't own/verify that site.

```bash
AUTH="Authorization: Bearer $GOOGLE_SEARCH_CONSOLE_TOKEN"
# Verified sites (siteUrl is the property — URL-encode it in later calls)
curl -sS -H "$AUTH" "https://searchconsole.googleapis.com/webmasters/v3/sites" \
  | jq '.siteEntry[] | {siteUrl, permissionLevel}'
```

## Search analytics

```bash
# Top queries by clicks for the last 28 days. siteUrl must be URL-encoded
# (https%3A%2F%2Fexample.com%2F  or  sc-domain%3Aexample.com).
SITE="https%3A%2F%2Fexample.com%2F"
curl -sS -X POST -H "$AUTH" -H "Content-Type: application/json" -d '{
  "startDate":"2026-05-24","endDate":"2026-06-21",
  "dimensions":["query"],"rowLimit":10
}' "https://searchconsole.googleapis.com/webmasters/v3/sites/$SITE/searchAnalytics/query" \
  | jq '.rows[] | {query: .keys[0], clicks, impressions, ctr, position}'
```

Swap `dimensions` for `["page"]`, `["country"]`, `["date"]`, or combine
`["query","page"]`. Add `"dimensionFilterGroups"` to filter by page/country.

## Sitemaps & URL inspection

```bash
# Submitted sitemaps
curl -sS -H "$AUTH" "https://searchconsole.googleapis.com/webmasters/v3/sites/$SITE/sitemaps" \
  | jq '.sitemap[] | {path, lastDownloaded, errors, warnings}'

# Is a URL indexed?
curl -sS -X POST -H "$AUTH" -H "Content-Type: application/json" \
  -d '{"inspectionUrl":"https://example.com/page","siteUrl":"https://example.com/"}' \
  "https://searchconsole.googleapis.com/v1/urlInspection/index:inspect" \
  | jq '.inspectionResult.indexStatusResult | {verdict, coverageState, lastCrawlTime}'
```

## Gotchas

- **Two property shapes:** URL-prefix (`https://example.com/`) vs Domain
  (`sc-domain:example.com`). Use exactly the `siteUrl` from the sites list,
  URL-encoded.
- Data lags ~2–3 days; the most recent dates may be partial/empty — set `endDate`
  a couple days back for stable numbers.
- `ctr` is 0–1, `position` is average rank (lower = better).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in ai-agents →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.