Is Google Custom Search API shutting down
Yes, on January 1, 2027.
Yes. Google closed the Custom Search JSON API to new customers, and existing customers have until January 1, 2027 to move. Google's blog post of January 20, 2026 says the move must be complete by that date.
The move is one line. Set the base address to https://api.specstream.ai in place of https://www.googleapis.com, put a SpecStream key in key=, and GET /customsearch/v1 answers in Google's JSON.
SpecStream costs $5 per 1,000 searches, the rate Google charges today. It scores 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks, shown on the benchmarks page.
New accounts get $10 of credit, no card. It covers 2,000 searches.
Your options after the Custom Search JSON API, from Google's own pages
| SpecStream | Custom Search JSON API | Vertex AI Search | Grounding with Google Search | |
|---|---|---|---|---|
| Status | Yes. The Custom Search route is live at https://api.specstream.ai/customsearch/v1 | Closed to new customers. Existing customers have until January 1, 2027, when Google discontinues the service | Google's named alternative for up to 50 domains. Its pricing page is now titled Agent Search | A tool of the Gemini API, billed for each search query the model decides to run |
| What it searches | The whole live web, read at the moment of the call | The Programmable Search Engine you configured under cx | Up to 50 domains. For full web search, Google asks you to contact it | Google Search, through the Gemini model |
| The request | GET /customsearch/v1?key=...&q=...&num=&start=, as your code sends it today. cx is accepted and not used | GET /customsearch/v1 with q, an API key and cx, the ID of your Programmable Search Engine | A POST to the Agent Search servingConfigs.search method in a Google Cloud project | A prompt to a Gemini model |
| The reply | Google's JSON: kind customsearch#search, items[] with title, link, snippet and displayLink, searchInformation.totalResults and queries.nextPage. Your parser reads it unchanged | items[] with the URL, title and text snippets of each result | The reply of the Agent Search servingConfigs.search method | A final answer grounded in the search results, with search suggestions HTML for your UI |
| Price per 1,000 | $5 per 1,000 searches of up to 10 results, $0.005 a call | $5 per 1,000 queries, for existing customers | $1.50 per 1,000 queries on Standard and $4.00 on Enterprise, plus data storage | $14 per 1,000 search requests on Gemini 3 and newer models |
| Free use | $10 of credit on a new account, no card. It covers 2,000 searches, and a top-up never expires | 100 queries a day | A free trial of 10,000 queries per account a month | 5,000 search requests a month on Gemini 3 and newer models |
| Limit | Up to 8,800 searches a minute on one account. A call over that gets a 429 and is not charged | 10,000 queries a day | 50 domains | 1,500 requests a day per project by default on the paid tier |
Why teams move from Custom Search to SpecStream before January 1, 2027
The whole move is one line
Your code keeps its path, its parameters and its parser. The address changes, and the key.
# Before
curl "https://www.googleapis.com/customsearch/v1?key=$GOOGLE_KEY&cx=$CX&q=open+source+vector+databases"
# After
curl "https://api.specstream.ai/customsearch/v1?key=$SPECSTREAM_KEY&cx=$CX&q=open+source+vector+databases"The reply has Google's shape, field for field: kind, queries with request and nextPage, searchInformation and items. There is no table of fields to map by hand.
25,024 files on GitHub still hold the call
On November 10, 2026, GitHub code search found 25,024 public files that contain googleapis.com/customsearch/v1 and 5,992 that contain customsearch.googleapis.com. They are files that hold the address, not confirmed live calls. Among them are the serp_goog function of the SEO library advertools and Google's own PHP client library.
Bing shows what happens next. Microsoft retired its search API on August 11, 2025, and 15 months later 6,048 public files still hold api.bing.microsoft.com/v7.0/search. Code outlives the service it calls, and each of those files needs one changed address.
What stays the same
q, num (1 to 10) and start work as before, and queries.nextPage gives the next start. exactTerms, orTerms, siteSearch and hq shape the search as they do on Google. cx is accepted and not used. The key goes in key=, in the X-Goog-Api-Key header or as a Bearer token.
The same $5 per 1,000, with no cap of 10,000 a day
Google charges $5 per 1,000 queries after 100 free a day and stops at 10,000 a day. SpecStream charges $5 per 1,000 searches of up to 10 results: 10,000 searches a day cost $50, and search 10,001 is answered like the first. A call stopped by a 429 charges nothing, and a top-up never expires.
The most accurate web search API in the world
On SimpleQA Verified the SpecStream Search API scores 97.9 F-score on all 1,000 official questions, 978 of them correct. On WideSearch it scores 64.0 item F1 and 43.4 row F1 on all 200 official tasks. The Extract API scores 0.908 F1 on WCXB. Every score and its method is on the benchmarks page.
About one second a search, measured under load
The Custom Search route runs on the fast search. On November 9, 2026 production took 1, 5, 10 and 20 fast searches a second and answered 718 of 720. The median was 0.82 s at 1 search a second and 1.07 s at 20 a second, and the 95th percentile stayed between 1.09 and 1.73 s. One account can send up to 8,800 searches a minute; a call over that gets a 429 with Retry-After and is not charged.
You decide what is kept, on each key
Create a key with zero_retention and a search made with it keeps no request text and no answer after the reply. It is not in the history and its log lines carry neither. The charge keeps the account, the key, the request ID, the price and the time. spend_cap_cents is the most the key can spend.
curl -X POST https://api.specstream.ai/v1/account/keys \
-H "Authorization: Bearer $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
-d '{"name": "production", "scopes": ["account:read", "finds:spend"], "spend_cap_cents": 500000, "zero_retention": true}'Search, pages and rows on one key
The same key reads up to 20 pages or documents a call with the Extract API at $0.80 per 1,000 pages, and a page with no text is not charged. Deep Search takes a request in plain words and returns every match on the live web as structured rows, at 5¢, 15¢ or $1 a row, plus 5¢ for an email and 15¢ for a phone. The most a run can cost is quoted before it starts, and a saved request reruns hourly to yearly.
Other options after the Custom Search JSON API
Vertex AI Search (Agent Search)
Google's named alternative, for up to 50 domains, at $1.50 per 1,000 queries on Standard and $4.00 on Enterprise, plus data storage. It answers a different endpoint in a Google Cloud project. SpecStream searches the whole live web on the path your code already calls.
Grounding with Google Search
A Gemini API tool at $14 per 1,000 search requests on Gemini 3 and newer models. It returns the model's grounded answer, not the result list your code reads today. SpecStream returns the list, at $5 per 1,000, for any model. See the comparison.
Brave Search API
A search API on Brave's own index at $5 per 1,000 requests, up to 50 queries a second, with $5 in free credits every month. Brave's own guide says the move means swapping the endpoint and updating how you read the response. On SpecStream the reply is Google's JSON, so your parser stays.
Exa
A search API at $4 per 1,000 requests for lite search and $7 for auto and fast, with its own request and reply. SpecStream costs $5 per 1,000 and answers the Custom Search call you send today.
How SpecStream scores
The same numbers as the benchmarks page, from the official tasks and scorers.
How to move off the Custom Search JSON API
1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card, which covers 2,000 searches.
2. Set the base address to https://api.specstream.ai where your code has https://www.googleapis.com or https://customsearch.googleapis.com, and send the SpecStream key in key=.
import requests
BASE = "https://api.specstream.ai" # was https://www.googleapis.com
reply = requests.get(
f"{BASE}/customsearch/v1",
params={"key": SPECSTREAM_KEY, "cx": CX, "q": "open source vector databases", "num": 10},
).json()
for item in reply["items"]:
print(item["title"], item["link"], item["snippet"])3. Leave the rest. Each call is billed as one search on your key, and the key carries the spending limit you give it. The route returns web results, so send calls without searchType.
Frequently asked questions
Something we didn't answer? Talk to a human
Is Google's Custom Search API being discontinued?
When was the shutdown announced?
Can I still get a Custom Search JSON API key?
GET /customsearch/v1 call.What does Google recommend instead?
What stays after January 1, 2027?
How do I replace the Custom Search JSON API without rewriting my code?
https://api.specstream.ai and put a SpecStream key in key=. GET /customsearch/v1 answers in Google's JSON, so code that reads items[].title, link and snippet stays as it is.What will it cost after the shutdown?
Sources
SpecStream wrote this page. Each figure about Google and other providers comes from that company's own page.
- Google Custom Search JSON API overviewdevelopers.google.com/custom-search/v1/overview, read Nov 10, 2026
- Google Custom Search JSON API reference, cse.listdevelopers.google.com/custom-search/v1/reference/rest/v1/cse/list, read Nov 10, 2026
- Google Custom Search JSON API, using RESTdevelopers.google.com/custom-search/v1/using_rest, read Nov 10, 2026
- Programmable Search Engine blog, January 20, 2026programmablesearchengine.googleblog.com/2026/01/updates-to-our-web-search-products.html, read Nov 10, 2026
- Google Cloud, Agent Search pricingcloud.google.com/generative-ai-app-builder/pricing, read Nov 10, 2026
- Google Cloud, servingConfigs.search referencecloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/projects.locations.collections.engines.servingConfigs/search, read Nov 10, 2026
- Gemini API, Grounding with Google Searchai.google.dev/gemini-api/docs/google-search, read Nov 10, 2026
- Gemini API pricingai.google.dev/gemini-api/docs/pricing, read Nov 10, 2026
- Brave Search APIbrave.com/search/api/, read Nov 10, 2026
- Brave, alternatives to the Google Search APIbrave.com/learn/google-api-shutdown/, read Nov 10, 2026
- Exa pricingexa.ai/pricing, read Nov 10, 2026
- SpecStream benchmarksspecstream.ai/benchmarks, read Nov 10, 2026
- SpecStream pricingspecstream.ai/pricing, read Nov 10, 2026
- SpecStream for agentsspecstream.ai/agents.md, read Nov 10, 2026
- GitHub code search: files containing googleapis.com/customsearch/v1github.com/search?q=%22googleapis.com%2Fcustomsearch%2Fv1%22&type=code, read Nov 10, 2026
- GitHub code search: files containing api.bing.microsoft.com/v7.0/searchgithub.com/search?q=%22api.bing.microsoft.com%2Fv7.0%2Fsearch%22&type=code, read Nov 10, 2026




