Custom Search API shutdown: 10-point checklist for index-check scripts
Google Custom Search JSON API stops working on January 1, 2027. If any script in your SEO stack uses it to answer "is this URL indexed?", run through this list before December. The reasoning behind each item is in the full breakdown of the shutdown for index checking.
Signs you are affected
- Code contains
customsearch/v1,googleapis.com/customsearch, or acx=parameter. - A cron job sends
site:queries and counts non-empty responses. - Your Google Cloud billing shows "Custom Search API" line items.
- Monitoring dashboards show "indexed %" for backlink lists.
Checklist
- List every call site. Grep for the strings above; note owner and daily URL volume.
- Record today's baseline. Export one full run (URL, verdict, date) so you can compare after migration.
- Confirm the successor is not an option. Google's Web Search Service API is partner-only, no published price or quota, no promised answer before the cutoff.
- Pick a replacement with bulk input. Thousands of URLs per request, not one call per URL.
- Require a verdict per URL. Two arrays — indexed / not indexed — beat a results list you have to interpret.
- Check the price model. Per-URL, no daily cap; the SpeedyIndex checker API reference documents 10,000 URLs per task.
- Rewrite the loop as submit → poll → report. Processing is asynchronous; a nightly job becomes two jobs.
- Move the key to an environment variable. The old API took the key in the URL; do not carry that habit over.
- Run both checkers on 200–500 URLs. Hand-verify 10–20 disagreements in Search Console; CSE never matched organic search one to one.
- Delete the old code path before December. After the cutoff it fails with auth errors, not empty results, and monitoring stops silently.
When this checklist does not help
If the script needs actual search results — titles, snippets, positions — a checker API is the wrong replacement. That is a SERP data problem, not an index-check problem.