<!-- twin of https://specstream.ai/vertex-ai-search-vs-custom-search-json-api -->
# Vertex AI Search vs Custom Search JSON API: keep the same call

Compared on Nov 10, 2026. The page: https://specstream.ai/vertex-ai-search-vs-custom-search-json-api

Google names Vertex AI Search, now titled Agent Search, as the Custom Search JSON API's alternative for up to 50 domains. It costs $1.50 per 1,000 queries on Standard and $4.00 on Enterprise, on a different endpoint.

For the whole web, Google's page asks you to contact it. SpecStream answers the call you send today, `GET /customsearch/v1`, at `https://api.specstream.ai`, in Google's JSON, across the whole live web.

It costs $5 per 1,000 searches and scores 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks ([benchmarks](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=vertex-ai-search-vs-custom-search-json-api)).

[Get an API key](https://specstream.ai/signup?src=alternatives-vertex-ai-search-vs-custom-search-json-api&utm_source=alternatives-md&utm_campaign=vertex-ai-search-vs-custom-search-json-api&returnTo=%2Fworkspace%2Fsearch%3Froute%3Dgoogle) New accounts get $10 of credit, no card. It covers 2,000 searches.

## SpecStream, Custom Search JSON API and Vertex AI Search side by side

| | SpecStream | Custom Search JSON API | Vertex AI Search (Agent Search) |
|---|---|---|---|
| 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 |
| 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 | Google's named alternative for up to 50 domains. Its pricing page is titled Agent Search |
| 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` | `POST https://discoveryengine.googleapis.com/v1/{servingConfig}:search`, with a serving config under a project, location, collection and engine |
| The reply | Google's JSON: `kind` `customsearch#search`, `items[]` with `title`, `link`, `snippet` and `displayLink`, `searchInformation.totalResults` and `queries.nextPage` | `items[]` with the URL, title and text snippets of each result | The reply of the `servingConfigs.search` method |
| What you change | The base address and the key | Your provider, by January 1, 2027 | The endpoint and the request, to a `POST` in a Google Cloud project. Google's migration guide covers Site Restricted JSON API users |
| Price per 1,000 | $5 per 1,000 searches of up to 10 results, $0.005 a call | $5 per 1,000 queries after 100 free a day, for existing customers | $1.50 per 1,000 queries on Standard and $4.00 on Enterprise, plus data storage |
| Free use | $10 of credit on a new account, no card. It covers 2,000 searches, and credit you top up never expires | 100 queries a day | A free trial of 10,000 queries per account a month |
| 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 |

## Why teams keep their Custom Search call on SpecStream

### One line in place of a new integration

Moving to Vertex AI Search means a Google Cloud project, an engine, a serving config and a new endpoint. Moving to SpecStream means a new host and a new 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`.

### The whole live web from the first call

Google's page names Vertex AI Search for searching up to 50 domains and asks you to contact Google for full web search. SpecStream searches the whole live web on every call. Send `siteSearch` when you want one site.

### 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. `cx` is accepted and not used. The key goes in `key=`, in `X-Goog-Api-Key` or as a Bearer token.

### One price per search, nothing for storage

Vertex AI Search bills search queries and data storage. SpecStream bills the search: $5 per 1,000 searches of up to 10 results, and each started block of 10 more results adds $0.006. A call stopped by a `429` charges nothing, and credit you 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](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=vertex-ai-search-vs-custom-search-json-api) 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 searches a second through the fast search 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](https://specstream.ai/extract-api?utm_source=alternatives&utm_campaign=vertex-ai-search-vs-custom-search-json-api) at $0.80 per 1,000 pages, and a page with no text is not charged. [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=vertex-ai-search-vs-custom-search-json-api) 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 beside Vertex AI Search

### 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 a result list. SpecStream returns the list in Google's JSON at $5 per 1,000. See [the comparison](https://specstream.ai/grounding-with-google-search-alternative?utm_source=alternatives&utm_campaign=vertex-ai-search-vs-custom-search-json-api).

### Programmable Search Element

The search box Google keeps for your own websites, free for up to 50 domains. SpecStream answers your code's JSON call across the whole live web.

### Brave Search API

$5 per 1,000 requests, up to 50 queries a second, with $5 in free credits every month. Brave's own guide says moving to it means updating how you read the response. On SpecStream your parser stays.

### Exa

$4 per 1,000 requests for lite search and $7 for auto and fast, with its own request and reply. SpecStream answers the Custom Search call you send today at $5 per 1,000.

## How to move from the Custom Search JSON API without Vertex AI Search

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` in place of `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 one search on your key, inside the spending limit you give the key. The route returns web results, so send calls without `searchType`.

## Frequently asked questions

### What is the difference between Vertex AI Search and the Custom Search JSON API?

Vertex AI Search covers up to 50 domains from a Google Cloud project at $1.50 to $4.00 per 1,000 queries; the Custom Search JSON API answers `GET /customsearch/v1` at $5 per 1,000 and ends on January 1, 2027. SpecStream answers that same call after the date, across the whole live web.

### Is Vertex AI Search the replacement for the Custom Search JSON API?

For up to 50 domains, Google says so. For full web search Google's page asks you to contact it. SpecStream answers the Custom Search call on the whole web at $5 per 1,000 searches.

### How much does Vertex AI Search cost?

$1.50 per 1,000 queries on Search Standard and $4.00 on Search Enterprise, plus data storage, with a free trial of 10,000 queries per account a month.

### What is Agent Search?

The name Google Cloud now gives Vertex AI Search: its pricing page is titled Agent Search pricing, and its API reference lists the `servingConfigs.search` method under Agent Search.

### Can Vertex AI Search search the whole web?

Google names it for up to 50 domains, and for full web search its page asks you to contact Google. SpecStream searches the whole live web from the first call.

### How do I move off the Custom Search JSON API without rewriting my code?

Change one line. Set the base address to `https://api.specstream.ai` and put a SpecStream key in `key=`; `GET /customsearch/v1` answers in Google's JSON at $5 per 1,000 searches.

## Sources

SpecStream wrote this page. Each figure about Google and other providers comes from that company's own page.

- [Google Custom Search JSON API overview](https://developers.google.com/custom-search/v1/overview), read Nov 10, 2026
- [Google Custom Search JSON API reference, cse.list](https://developers.google.com/custom-search/v1/reference/rest/v1/cse/list), read Nov 10, 2026
- [Google Custom Search JSON API, using REST](https://developers.google.com/custom-search/v1/using_rest), read Nov 10, 2026
- [Programmable Search Engine blog, January 20, 2026](https://programmablesearchengine.googleblog.com/2026/01/updates-to-our-web-search-products.html), read Nov 10, 2026
- [Google Cloud, Agent Search pricing](https://cloud.google.com/generative-ai-app-builder/pricing), read Nov 10, 2026
- [Google Cloud, migrate from Custom Search Site Restricted JSON API](https://docs.cloud.google.com/generative-ai-app-builder/docs/migrate-from-cse?hl=en), read Nov 10, 2026
- [Google Cloud, servingConfigs.search reference](https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/projects.locations.collections.engines.servingConfigs/search), read Nov 10, 2026
- [Gemini API pricing](https://ai.google.dev/gemini-api/docs/pricing), read Nov 10, 2026
- [Gemini API, Grounding with Google Search](https://ai.google.dev/gemini-api/docs/google-search), read Nov 10, 2026
- [Brave Search API](https://brave.com/search/api/), read Nov 10, 2026
- [Brave, alternatives to the Google Search API](https://brave.com/learn/google-api-shutdown/), read Nov 10, 2026
- [Exa pricing](https://exa.ai/pricing), read Nov 10, 2026
- [SpecStream benchmarks](https://specstream.ai/benchmarks), read Nov 10, 2026
- [SpecStream pricing](https://specstream.ai/pricing), read Nov 10, 2026
- [SpecStream for agents](https://specstream.ai/agents.md), read Nov 10, 2026
