Google Search Console automation · runs weekly
Export all not-indexed URLs from Google Search Console
Search Console says 1,400 pages are "Crawled - currently not indexed", but to see which ones you click into each reason and export a list that Google caps.
Cotlet does it in your own Google Search Console account with list_page_issues and list_pages_by_index_status, called by your AI agent, an n8n workflow or a script.
Hosted · nothing to install or maintain
Can Google Search Console do this on its own?
The Search Console API cannot list URLs by indexing status (checked 16 Oct 2026). Its URL Inspection API checks one URL at a time, read-only, with 2,000 queries a day per site, so it cannot enumerate the Page indexing report.
How you do it in Google Search Console today
- In Search Console open Indexing > Pages and scroll to the "Why pages aren't indexed" table.
- Click a reason such as "Crawled - currently not indexed" or "Discovered - currently not indexed" to open its details page with a chart and example URLs.
- Use the export button to download the table, and repeat for each reason.
- Google limits the example list on a details page to 1,000 rows and does not guarantee it shows every URL, so large sites get only part of the list.
- Nothing compares this week's export with last week's, so you spot new problem folders by eye.
How to export all not-indexed URLs from Google Search Console
For example.com, list every reason Search Console gives for pages not being indexed with its count, then export the URLs for "Crawled - currently not indexed" and "Discovered - currently not indexed" and group them by folder. - 01
Read the reasons first
list_page_issues returns every reason on the report with its URL count, and the agent keeps only the reasons you named, so one run never exports the whole property by accident.
- 02
Pull the URLs per reason
list_pages_by_index_status pages through each reason until Google stops returning rows, and records the last crawl date shown for each URL.
- 03
Say when the list is partial
When a reason holds more than 1,000 URLs, the agent says that Google shows only an example list and reports how many rows it got against the count on the report.
- 04
Group by folder
URLs are grouped by first path folder, so "/tag/" with 300 stuck pages stands out from "/blog/" with 12.
- 05
Compare with last week
If you give the agent last week's result, it lists URLs that are new in a reason and URLs that left it, which tells you whether your fixes worked.
What you get back
Crawled - currently not indexed: 1,412 pages on the report, 1,000 rows shown by Google
Discovered - currently not indexed: 388 pages, 388 rows
Largest folders in Crawled: /tag/ 412, /blog/page/ 233, /search/ 118
New since last week: 74 URLs
Left the list since last week: 31 URLs Other ways to ask
- Export only "Duplicate, Google chose different canonical than user" and show the pairs.
- Every Monday, list new "Discovered - currently not indexed" URLs and request indexing for the first ones.
- List all "Not found (404)" URLs from the last month with the pages that link to them.
- Start Validate fix for "Crawled - currently not indexed" once I tell you the tag pages are fixed.
What Google Search Console allows, and what to know first
- Google says "Crawled - currently not indexed" means the page was crawled but not indexed, and there is no need to resubmit the URL for crawling.
- Google says "Discovered - currently not indexed" means Google found the page but has not crawled it yet, so its last crawl date is empty on the report.
- The details list is limited to 1,000 rows and is not guaranteed to show all URLs with that issue.
- The report shows URLs with 404 errors only from the past month.
- An issue stays in the table until 90 days after its last instance is gone.
Every tool here only reads, so it can run weekly from n8n, Make, Zapier or cron without waiting for your OK.
Sources: Search Console Help: Page indexing report · Search Console Help: Validate fix · Search Console API usage limits
Call list_pages_by_index_status from a script
curl "https://cotlet.dev/api/v1/google-search-console/pages-by-index-status?property=sc-domain%3Aexample.com&status=Crawled+-+currently+not+indexed&limit=3" \
-H "Authorization: Bearer $COTLET_API_KEY" {
"property": "sc-domain:example.com",
"status": "Crawled - currently not indexed",
"pages_in_report": 1412,
"rows_available": 1000,
"rows": [
{
"url": "https://example.com/tag/seo",
"last_crawled": "2026-10-09"
},
{
"url": "https://example.com/tag/api",
"last_crawled": "2026-10-08"
},
{
"url": "https://example.com/blog/page/14",
"last_crawled": "2026-10-02"
}
],
"next_cursor": "eyJvZmZzZXQiOjN9"
} MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is google_search_console_read → list_pages_by_index_status. Example data.
Schedule it in n8n, Make, Zapier or cronGoogle Search Console tools this automation uses
| Tool | Parameters |
|---|---|
| list_page_issues | property, kind |
| list_pages_by_index_status | property, status, limit, cursor |
Frequently asked questions
Is it safe to connect Google Search Console to Cotlet?
Yes. You sign in to Google Search Console yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Google Search Console once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.
Give your agent access to Google Search Console.
Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Google Search Console.