Google Search Console
Monitor your search performance and health with Search Console.
Google Search Console (GSC) is a free tool that shows how Google sees your site. It is the single most important SEO tool, and every site should have it set up.
Key reports
- Performance - clicks, impressions, average position and the queries you rank for.
- URL Inspection - see indexing status and request indexing.
- Pages (Indexing) - which URLs are indexed and why others are not.
- Enhancements - Core Web Vitals and structured data reports.
- Sitemaps - submit and monitor your XML sitemap.
- Links - your top internal and external links.
Example
# First steps in Google Search Console
1. Add and verify your property (DNS or HTML file)
2. Submit your sitemap: https://example.com/sitemap.xml
3. Check the Performance report for your top queries
4. Fix issues in the Pages and Core Web Vitals reportsWhen to use it
- An SEO manager uses Search Console's Performance report to identify 30 queries on page 2 and prioritises them for on-page optimisation, moving 12 to page 1 within 60 days.
- A developer uses the URL Inspection tool to diagnose why a newly published page is not indexed, discovering a noindex tag left over from staging.
- A site owner uses the Core Web Vitals report in Search Console to identify which URL groups fail LCP thresholds and prioritise them for a performance sprint.
More examples
Fetch top queries via Search Console API
Fetching the top queries by clicks from the Search Console API reveals which keywords drive the most organic traffic and which positions have room for improvement.
curl -s -X POST \
'https://searchconsole.googleapis.com/v1/sites/https%3A%2F%2Fexample.com/searchAnalytics/query' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"startDate": "2024-05-01",
"endDate": "2024-05-31",
"dimensions": ["query"],
"rowLimit": 10
}' | python3 -c "
import sys, json
for row in json.load(sys.stdin).get('rows', []):
q = row['keys'][0]
print(f"pos={row['position']:.1f} clicks={row['clicks']:4} {q}")
"Inspect URL indexing status
The URL Inspection API returns the exact index verdict, last crawl time, and canonical URL Google has selected, making it the fastest way to diagnose indexation issues.
# URL Inspection API — check index status for a specific page
curl -s -X POST \
'https://searchconsole.googleapis.com/v1/urlInspection/index:inspect' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"inspectionUrl": "https://example.com/blog/new-article/",
"siteUrl": "https://example.com/"
}' | python3 -c "
import sys, json
r = json.load(sys.stdin).get('inspectionResult', {})
print('Verdict:', r.get('indexStatusResult', {}).get('verdict'))
print('Crawled:', r.get('indexStatusResult', {}).get('lastCrawlTime'))
print('Canonical:', r.get('indexStatusResult', {}).get('googleCanonical'))
"Monitor coverage errors weekly
A weekly coverage error review catches new indexation problems early, before they accumulate into significant ranking losses.
python3 - << 'EOF'
# Weekly Search Console coverage error check
# Requires: google-auth, google-api-python-client
import datetime
end = datetime.date.today().isoformat()
start = (datetime.date.today() - datetime.timedelta(days=7)).isoformat()
print(f"Checking coverage errors from {start} to {end}")
print("Steps:")
print("1. Open Search Console -> Pages -> Why pages aren't indexed")
print("2. Export CSV and filter for new error types")
print("3. Log count of each error type in tracking sheet")
print("4. Compare to prior week — raise alert if count rises > 20%")
EOF
Discussion