<!-- twin of https://specstream.ai/google-pse/swirl -->
# SWIRL: Google search stops on January 1, 2027. The setting to change

Compared on Nov 10, 2026. The page: https://specstream.ai/google-pse/swirl

SWIRL's "Web - Google PSE" SearchProvider calls Google's Custom Search JSON API with your key in `credentials` and your engine ID in `query_mappings`. Google closed that API to new customers and ends it on January 1, 2027.

The SearchProvider's `url` field holds Google's address. Set it to `https://api.specstream.ai/customsearch/v1` and put `key=` and a SpecStream key in `credentials`. The same request goes out and the same JSON comes back; our test passed by this address.

SpecStream scores 97.9 F-score on all 1,000 SimpleQA Verified questions and costs $5 per 1,000 searches, with no daily limit. A new account gets $10 of credit, no card, which covers 2,000 searches.

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

## SWIRL Google search and what replaces it, from each company's own pages on Nov 10, 2026

| | SpecStream | Google Custom Search | Vertex AI Search | Tavily |
|---|---|---|---|---|
| SWIRL setting | `"url": "https://api.specstream.ai/customsearch/v1"`, the key in `credentials` | `"url": "https://www.googleapis.com/customsearch/v1"`, `credentials` and `cx` in `query_mappings` | Its own POST request at `discoveryengine.googleapis.com` | Not a provider in SWIRL; it needs new code and a new reply shape |
| Open to a new account | Yes. Create a key and start with $10 of credit, no card | No. Closed to new customers, and existing customers have until January 1, 2027 | Yes, with a free trial of 10,000 queries per account a month | Yes, with 1,000 free credits every month |
| Price per 1,000 searches | $5, with up to 10 results a search | $5 per 1,000 queries after 100 free queries a day, for existing customers only | $1.50 on Standard, $4.00 on Enterprise | $0.008 a credit on pay as you go. A basic search is 1 credit |
| Limit | No daily limit. Up to 8,800 searches a minute on one account | 10,000 queries a day | Full web search only on request: Google asks you to contact it | On a monthly plan, requests stop when the month's credits run out |
| How long it lasts | Credit you buy never expires | Until January 1, 2027, when Google ends the API | Pay as you go, for search queries and data storage | Credits reset on the first day of each month |
| What answers the search | The whole live web, read at the moment of the call, in Google's JSON. 97.9 F-score on all 1,000 SimpleQA Verified questions | The Programmable Search Engine you configured | Up to 50 domains you name | Tavily's search. Its own post reports 97.6% on SimpleQA |

## Why SWIRL users point Google search at SpecStream

### The change is one field in the SearchProvider

SWIRL builds the call from `query_template`, `{url}?cx={cx}&key={key}&q={query_string}`, and fills `{url}` from the SearchProvider's `url` field and `{key}` from `credentials`. Change those two and leave the rest of the provider as it is.

```
{
    "name": "Web - Google PSE",
    "active": true,
    "connector": "RequestsGet",
    "url": "https://api.specstream.ai/customsearch/v1",
    "query_template": "{url}?cx={cx}&key={key}&q={query_string}",
    "query_mappings": "cx=<keep your current value>,DATE_SORT=sort=date,PAGE=start=RESULT_INDEX,NOT_CHAR=-",
    "credentials": "key=<YOUR_SPECSTREAM_KEY>"
}
```

SpecStream accepts `cx` with any value and does not use it. `start` for paging is read; `sort` is accepted and not used. This is the call SWIRL then sends:

```
curl "https://api.specstream.ai/customsearch/v1?cx=any&key=$SPECSTREAM_API_KEY&q=open+source+vector+databases"
```

### The same JSON, so SWIRL's mappings read it

SWIRL's Google provider maps `FOUND` to `searchInformation.totalResults`, `RETRIEVED` to `queries.request[0].count` and `RESULTS` to `items`, then each result's `url` to `link`, `body` to `snippet` and `author` to `displayLink`. SpecStream returns every one of those fields in Google's shape. It does not return `pagemap` or `cacheId`, so the payload fields SWIRL fills from them stay empty. The same call from Python:

```
import os, requests

reply = requests.get(
    "https://api.specstream.ai/customsearch/v1",
    params={"cx": "any", "key": os.environ["SPECSTREAM_API_KEY"], "q": "open source vector databases"},
).json()

print(reply["searchInformation"]["totalResults"], reply["queries"]["request"][0]["count"])
for item in reply["items"]:
    print(item["link"], item["snippet"], item["displayLink"])
```

### $5 per 1,000 searches, with no daily limit

A search of up to 10 results costs $0.005, and SWIRL never asks for more than 10 in one call. There is no monthly plan and no daily limit. Credit you buy never expires, and a new account starts with $10 of credit, which covers 2,000 searches.

### 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=google-pse-swirl) page.

### About one second a search, measured under load

The Google 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 is answered with `Retry-After` and is not charged.

### You decide what is kept, on each key

Give SWIRL a key with `zero_retention` and a search made with it keeps no request text and no answer after the reply. 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=google-pse-swirl) 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=google-pse-swirl) takes a request in plain words and returns every match on the live web as structured rows, at 5¢, 15¢ or $1 a row, with a source URL on every value. The most a run can cost is quoted before it starts.

## Other Google search alternatives for SWIRL

### Google Custom Search, until January 1, 2027

Existing customers can keep Google's default address until Google ends the API: $5 per 1,000 queries after 100 free a day, up to 10,000 a day. A new project gets no key. SpecStream costs the same $5 per 1,000, with no daily limit, behind the same SWIRL setting.

### Vertex AI Search

Google's named alternative, for searching up to 50 domains, at $1.50 per 1,000 queries on Standard and $4.00 on Enterprise, called by POST at `discoveryengine.googleapis.com` with its own request. For full web search Google asks you to contact it. SpecStream searches the whole live web and answers the GET request SWIRL already sends.

### Tavily

Search billed in credits at $0.008 each on pay as you go, with 1,000 free credits a month that reset on the first day of each month. SWIRL has no Tavily provider, so moving to it means new code and a new reply shape. SpecStream keeps your Google setup and charges $0.005 a search.

## How to move SWIRL's Google search to SpecStream

1. Create a key under Agents & API in the SpecStream workspace. A new account gets $10 of credit, no card, which covers 2,000 searches.

2. Check the key with the call the app will send. A `200` with `items` means the app gets the same.

```
curl "https://api.specstream.ai/customsearch/v1?key=$SPECSTREAM_API_KEY&cx=any&q=test&num=10"
```

3. In SWIRL, edit the "Web - Google PSE" SearchProvider: set `url` and `credentials`, keep `cx` in `query_mappings`, and set `active` to `true`.

```
"url": "https://api.specstream.ai/customsearch/v1",
"credentials": "key=<YOUR_SPECSTREAM_KEY>"
```

4. Run a search in SWIRL. Each Google PSE search shows up in your SpecStream request log with its price.

## Frequently asked questions

### Why is Google PSE not working in SWIRL?

Google closed the Custom Search JSON API to new customers and ends it on January 1, 2027, so a new project gets no key. Set the SearchProvider's `url` to `https://api.specstream.ai/customsearch/v1` with `key=` and a SpecStream key in `credentials`, and the provider works again.

### What is the best Google search alternative for SWIRL?

SpecStream, at $5 per 1,000 searches with no daily limit and 97.9 F-score on all 1,000 SimpleQA Verified questions. It answers SWIRL's own Google PSE call in Google's JSON, so the `url` field moves it.

### Which SWIRL SearchProvider field holds Google's address?

The `url` field, by default `https://www.googleapis.com/customsearch/v1`. `query_template` puts it in front of the query string, so set it to `https://api.specstream.ai/customsearch/v1`.

### How much does SWIRL web search cost with SpecStream?

$0.005 a search of up to 10 results, or $5 per 1,000. Credit you buy never expires, and the first $10 of credit covers 2,000 searches.

### Is Google Custom Search shutting down?

Yes, on January 1, 2027 for existing customers, and it is already closed to new customers. Google names Vertex AI Search for up to 50 domains.

### Do I still need the cx value in query_mappings?

Keep it as it is. SpecStream accepts `cx` with any value and does not use it, and searches the whole live web.

## Sources

SpecStream wrote this page. SWIRL's settings come from its source and guide on GitHub, and each provider's figure from that company's own page.

- [SWIRL Google SearchProvider, google.json](https://github.com/swirlai/swirl-search/blob/main/SearchProviders/google.json), read Nov 10, 2026
- [SWIRL SearchProvider guide](https://github.com/swirlai/swirl-search/blob/main/docs/SP-Guide.md), read Nov 10, 2026
- [Google Custom Search JSON API overview](https://developers.google.com/custom-search/v1/overview), read Nov 10, 2026
- [Vertex AI Search pricing](https://cloud.google.com/generative-ai-app-builder/pricing), read Nov 10, 2026
- [Vertex AI Search REST reference, search method](https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/projects.locations.collections.engines.servingConfigs/search), read Nov 10, 2026
- [Tavily API credits](https://docs.tavily.com/documentation/api-credits.md), read Nov 10, 2026
- [Tavily pricing](https://tavily.com/pricing), read Nov 10, 2026
- [Tavily, SealQA and SimpleQA post](https://www.tavily.com/blog/tavily-ranks-1-on-sealqa-and-simpleqa), 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
