How to migrate an index checker off Google Custom Search API

September 29, 2026
How to migrate an index checker off Google Custom Search API

If a script in your stack calls googleapis.com/customsearch/v1 with site: queries to decide whether a page is indexed, it has an expiry date. Google is retiring the Custom Search JSON API on January 1, 2027, has stopped onboarding new customers, and offers only a partner-only successor with no published pricing. The full breakdown of what the shutdown changes for index checking covers the background; this post is the migration itself.

Step 1. Inventory the calls

Search the codebase for customsearch/v1 and cx=. In most projects it is three places: a single-URL check, a batch wrapper, and a nightly cron. Note the daily URL volume; it sets the budget for the replacement.

Step 2. Pick a replacement that meets three tests

The bulk Google index checker from SpeedyIndex meets all three: its REST API takes up to 10,000 URLs per task.

Step 3. Swap the calls

The one-URL-one-request loop becomes three calls. Open the report once, then wire it in:

Old (CSE)New (SpeedyIndex checker API)
GET customsearch/v1?q=site:URL&cx=... per URLPOST app.speedyindex.com/v2/task/google/checker/create with urls[]
parse items arrayPOST .../checker/fullreport returns indexed_links / unindexed_links
API key as key= query paramAPI key in the Authorization header

Processing is asynchronous, so the nightly cron splits in two: submit in the evening, collect the report in the morning. Endpoint details are in the checker API reference.

Step 4. Run a parallel check

Push the same 200–500 URLs through both checkers and hand-verify 10–20 disagreements in Search Console. Expect disagreements: CSE results never matched organic search one to one.

Step 5. Retire the old code before December

After the cutoff the old script will not return empty results; it will return auth errors, and your indexing monitor will stop silently. Switch early and leave the old function only as a comment.

Not indexed after the check? The same account can push those URLs into indexing with the free 200 tokens on signup.