Skip to content

New Official SDKs for TypeScript, Python and Go

SerpKite
Get API key

Google Custom Search JSON API shuts down Jan 1, 2027: what to do

Google closed the Custom Search JSON API to new customers in January 2026 and turns it off on January 1, 2027. Here is the timeline, your options, and a two-line migration.

SerpKite team 3 min read

On this page

If your app calls https://www.googleapis.com/customsearch/v1, it has a hard deadline. Google closed the Custom Search JSON API to new customers on January 20, 2026, and the API shuts down on January 1, 2027. After that, requests fail.

This post covers the timeline, what your options are, and how to migrate with the smallest possible diff.

The timeline

Date What happened
2026-01-20 Custom Search JSON API closed to new customers; shutdown date set for 2027-01-01
Aug–Sep 2026 Docs for a partner-only “Web Search Service API” appear, then get pulled
2027-01-01 The JSON API stops serving requests

The partner-only API matters because it was the only hint of an official successor. As of today there is no self-serve official Google web search API you can sign up for after the shutdown.

Who is affected

Anything that reads items[] from the CSE JSON API:

  • SaaS features that “search the web” behind the scenes (research assistants, fact-checking, content tools).
  • Internal tools and scripts, often years old, that nobody remembers owning.
  • No-code flows in n8n, Make and Zapier that call the endpoint through an HTTP node.
  • Agent tools that wrap CSE because it was the official, cheap option.

Find them with a code search for googleapis.com/customsearch across your repos, and check your Google Cloud console for projects with the Custom Search API enabled.

Your options

  1. Drop the feature. Sometimes right for internal scripts. Rarely right for customer-facing features.
  2. Move to a different kind of search. AI-native search APIs (Tavily, Exa, Brave) run their own index. Results and response shapes differ, so you rewrite the integration and re-test relevance.
  3. Use a SERP API that speaks CSE. You keep the same request and response, and the results are Google’s public results page.

We built SerpKite’s /customsearch/v1 endpoint for option 3. It accepts key, cx, q, start, num, gl, hl, lr, safe, dateRestrict, siteSearch and searchType=image, and returns kind, searchInformation, items[] and queries.

The migration

Google −2 lines
res = requests.get(
  "https://www.googleapis.com/customsearch/v1",
  params={"key": GOOGLE_API_KEY, "cx": CX, "q": query, "start": 1},
)
items = res.json().get("items", [])
SerpKite +2 lines
res = requests.get(
  "https://api.serpkite.com/customsearch/v1",
  params={"key": SERPKITE_API_KEY, "cx": CX, "q": query, "start": 1},
)
items = res.json().get("items", [])

Two lines: the hostname and the key. Your parsing code doesn’t change.

The one real difference: cx is ignored

SerpKite searches the public Google results page, so settings from the Programmable Search console (site lists, promotions, custom ranking) are not applied. If your engine was restricted to your own domains, add siteSearch=example.com or site:a.com OR site:b.com to the query.

A checklist before January

  • Inventory every caller of the CSE endpoint, including no-code flows.
  • Swap the hostname and key. Prefer sending the key as an Authorization: Bearer header so it stays out of URLs and logs.
  • Recreate site restrictions with siteSearch or site: operators.
  • Update error handling. SerpKite errors look like {"error":{"code","message","request_id"}}. Failed calls (503) are not billed and are safe to retry.
  • Run a few dozen real queries through both endpoints and compare items[].link.
  • Set a spend cap in the dashboard so a runaway loop can’t surprise you.
  • Deploy well before the holidays. December 31 is a bad day to find a forgotten cron job.

Cost

Google charged $5 per 1,000 queries after 100 free queries a day, with a cap of 10,000 queries a day. On SerpKite each /customsearch/v1 call is 1 credit, packs run from $1.00 per 1,000 down to $0.60, there’s no daily cap, and credits never expire. You get 2,500 free credits on signup and 1,000 a month after that. Details are on the pricing page.

Next steps

Related posts

3 min read

Introducing SerpKite

A Google search API built for AI agents: clean JSON or Markdown, official TypeScript/Python/Go SDKs, native LangChain, CrewAI and MCP, and credits that never expire.

Start building

Get your API key in 30 seconds

2,500 free credits, then 1,000 every month. No credit card.