TL;DR
- The Custom Search JSON API is closed to new customers. Existing customers must move off it by January 1, 2027.
- Until then: 100 free queries a day, then $5 per 1,000, capped at 10,000 a day.
- Google's suggested replacement, Vertex AI Search, only covers up to 50 domains. It is not whole-web search.
- For whole-web results: Serper or Keirolabs for Google's results, Brave for an independent index, Exa or Parallel if an LLM reads them.
Here’s a sentence that would have sounded absurd ten years ago: Google, the company that is web search, no longer sells self-serve access to its own web results.
For years the Custom Search JSON API was the one official, licensed way to get Google results into your code. It was never generous. It capped you at 10,000 queries a day and was really built for searching a handful of sites. But it was official, which meant no proxies, no scraping, no legal grey zone.
That ends on January 1, 2027. If you have a cx= parameter anywhere in your codebase, this post is your migration plan.
What exactly is happening?
From Google’s Custom Search JSON API overview, as of November 2026:
“The Custom Search JSON API is closed to new customers.”
And the line that matters most:
“Existing Custom Search JSON API customers have until January 1, 2027 to transition to an alternative solution.”
Unpacked:
- No new keys. If you didn’t have it enabled already, you can’t start now.
- Existing customers run until January 1, 2027. Plan as if every call fails after that.
- Vertex AI Search is the official successor, but only for searching “up to 50 domains”.
- Whole-web search is “contact us”. Google says to get in touch “to express your interest” in a full web search solution. There’s no sign-up page and no public price.
This is the second big official search API to disappear in under 18 months, after Bing in August 2025. The pattern is clear: the companies that own web-scale indexes would rather sell you an AI answer than raw results. Plan your stack around providers whose business is selling search.
Is the Google Custom Search API free?
Partly, until it’s gone. The pricing that still applies to existing customers:
| Usage | Price |
|---|---|
| First 100 queries per day | Free |
| Additional queries | $5 per 1,000 |
| Daily maximum | 10,000 queries |
That 10,000-a-day ceiling was always the real limit: roughly 300,000 queries a month, tops. It kept bills small. It also kept anything serious off the platform.
What breaks on January 1, 2027
Grep your codebase and your vendors’ for these. Each one is a call with a deadline:
https://www.googleapis.com/customsearch/v1- the
cx=parameter (your Programmable Search Engine ID) build("customsearch", "v1")in Google’s Python client, and its equivalents in other languages- LangChain’s
GoogleSearchAPIWrapperand similar wrappers that ask for agoogle_cse_id - WordPress and CMS plugins that power site search with a Google key
- No-code automations that were set up with a Custom Search key
The sneaky ones are in dependencies. An agent framework, an SEO plugin or an internal tool someone built in 2019 may be calling this API without your code ever mentioning it. Search your secrets manager for Google API keys with the Custom Search API enabled, and check who uses them.
The alternatives
The right replacement depends on what you used Custom Search for.
| You used it for | Use instead | Per 1,000 |
|---|---|---|
| Searching your own site or a few sites | Vertex AI Search (≤50 domains), or a SERP API with site: | varies |
| Whole-web results, Google’s ranking | Serper, Keirolabs Google SERP, SerpApi, DataForSEO | $0.30–25 |
| Whole-web results, independent index | Brave Search API | $5 |
| Results for an LLM or agent | Exa, Tavily, Parallel, Keirolabs | $0.10–8 |
| Grounding a Gemini model | Gemini Grounding | quota-based |
Closest like-for-like
Serper
Google’s results as JSON, $1.00 per 1,000 to start and $0.30 at volume. Map the parameters, change the URL, done.
Google results plus more
Keirolabs
A Google SERP endpoint at 2 credits a call, plus its own index from $0.03 per 1,000, page content and answers on one key.
No Google dependency at all
Brave Search API
Its own index, so the next policy change at Google doesn’t touch you. $5 per 1,000.
An LLM reads it
Exa or Parallel
Skip the “get links, then scrape them” dance. Page text or excerpts come back in one call.
Full price breakdowns: SERP API pricing for the Google-results options, and the price calculator for everything.
Migrating the code
A typical Custom Search call:
curl -G "https://www.googleapis.com/customsearch/v1" \
-d key=$GOOGLE_KEY -d cx=$CSE_ID \
--data-urlencode "q=latest rust release" -d num=10 -d gl=us
The same search on Serper:
curl https://google.serper.dev/search \
-H "X-API-KEY: $SERPER_KEY" -H "Content-Type: application/json" \
-d '{"q": "latest rust release", "num": 10, "gl": "us"}'
And on Keirolabs’ Google endpoint:
curl -X POST https://api.keirolabs.cloud/api/v2/search/google \
-H "Authorization: Bearer $KEIRO_API_KEY" -H "Content-Type: application/json" \
-d '{"query": "latest rust release", "maxResults": 10, "country": "us"}'
The parameter map
| Custom Search | Serper | Brave |
|---|---|---|
q | q | q |
num (max 10) | num | count |
start | page | offset |
gl | gl | country |
lr / hl | hl | search_lang |
dateRestrict=d7 | tbs=qdr:w | freshness=pw |
siteSearch=example.com | site:example.com in q | site:example.com in q |
items[].link | organic[].link | web.results[].url |
items[].snippet | organic[].snippet | web.results[].description |
If you searched specific sites
Export your Programmable Search Engine’s site list before you lose access to it. Then either rebuild it in Vertex AI Search (50 domains or fewer), or turn it into site: operators on a SERP API. Watch the operator pricing: DataForSEO bills each operator at 5× the base price. The pricing post has the details.
A migration plan for this week
- Inventory. Find every place the API is called, including plugins and tools (see the list above).
- Pick two candidates from the table, based on who reads the results.
- Log 100–500 real queries from production and replay them against both. Compare whether the result you’d want shows up in the top 5.
- Set spend limits. Custom Search’s 10k/day cap protected your bill. Your new provider won’t, and an agent stuck in a loop can burn through a month of credits overnight.
- Ship behind a flag, run both side by side for a week, then cut over.
Do it in November, not on December 30. Results differ between providers, and you want a few weeks of real traffic to spot the queries where the new one does worse.
FAQ
Is Google’s Custom Search API being discontinued?
Yes. It’s closed to new customers now, and existing customers must move by January 1, 2027.
Is there a free API for Google Search?
No official one. Google has never sold self-serve whole-web results. Serper gives 2,500 free queries at signup, and SerpApi has a small free plan, but both scrape Google.
What about the Programmable Search box on my website?
The embeddable Programmable Search Element is a separate product from the JSON API. Check Google’s Programmable Search pages for its status. This post is about the JSON API.
What’s the cheapest replacement?
For Google’s results, Serper at $0.30–1.00 per 1,000. For any results, Keirolabs lite at $0.03–0.10. Price your exact volume in the calculator.