GPT Researcher
Google PSE stops on Jan 1, 2027. The setting to change.
GPT Researcher's google retriever calls Google's Custom Search JSON API with GOOGLE_API_KEY and GOOGLE_CX_KEY. Google closed that API to new customers and ends it on January 1, 2027, and the retriever fixes its address in code.
Change two variables: RETRIEVER=searx and SEARX_URL=https://api.specstream.ai/searxng/YOUR_KEY. Or set RETRIEVER=serper with SERPER_API_BASE=https://api.specstream.ai/serper. Both passed our test.
SpecStream scores 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks, at $5 per 1,000 searches. A new account gets $10 of credit, no card.
New accounts get $10 of credit, no card. It covers 2,000 searches.
GPT Researcher's Google retriever and what replaces it, from each company's own pages on Nov 10, 2026
| SpecStream | Tavily | Serper | ||
|---|---|---|---|---|
| RETRIEVER and address | searx with SEARX_URL, or serper with SERPER_API_BASE, both pointed at api.specstream.ai | google. The address is fixed in GPT Researcher's code at www.googleapis.com/customsearch/v1 | tavily, the default. The address is fixed in GPT Researcher's code at api.tavily.com/search | serper. SERPER_API_BASE defaults to https://google.serper.dev |
| Open to a new account | Yes. Create a key and start with $10 of credit, no card | No. The Custom Search JSON API is closed to new customers | Yes, with 1,000 free credits every month | Yes, with 2,500 free queries |
| 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 | $0.008 a credit on pay as you go. A basic search is 1 credit and an advanced search 2 | $1.00 per 1,000 in the pack of 50,000 credits |
| Limit | No daily limit. Up to 8,800 searches a minute on one account | 10,000 queries a day | On a monthly plan, requests stop when the month's credits run out | 300 queries per second on the largest pack |
| How long it lasts | Credit you buy never expires | Existing customers have until January 1, 2027 | Credits reset on the first day of each month | Credits are valid for 6 months |
| What answers the search | The whole live web, read at the moment of the call. 97.9 F-score on all 1,000 SimpleQA Verified questions, 978 correct | The Programmable Search Engine you configured | Tavily's search. Its own post reports 97.6% on SimpleQA | Serper's search, bought in credit packs from 50,000 credits |
Why GPT Researcher users move the Google retriever to SpecStream
Two variables, and the code stays as it is
GPT Researcher's searx retriever adds search to SEARX_URL, asks for format=json and reads results[] with url and content. Its serper retriever posts to SERPER_API_BASE plus /search with the key in X-API-KEY and reads organic[]. SpecStream answers both calls in those shapes.
# GPT Researcher .env: the two Google lines go
# RETRIEVER=google
# GOOGLE_API_KEY=...
# GOOGLE_CX_KEY=...
# the SearXNG retriever
RETRIEVER=searx
SEARX_URL=https://api.specstream.ai/searxng/YOUR_SPECSTREAM_KEY
# or the Serper retriever
RETRIEVER=serper
SERPER_API_BASE=https://api.specstream.ai/serper
SERPER_API_KEY=<YOUR_SPECSTREAM_KEY>These are the calls each retriever sends:
# searx: it adds /search to SEARX_URL
curl -H "Accept: application/json" \
"https://api.specstream.ai/searxng/$SPECSTREAM_API_KEY/search?q=state+of+solid+state+batteries+2026&format=json"
# serper: it adds /search to SERPER_API_BASE
curl -X POST https://api.specstream.ai/serper/search \
-H "X-API-KEY: $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
-d '{"q": "state of solid state batteries 2026", "num": 10}'What you see when the Google key fails
The google retriever needs both GOOGLE_API_KEY and GOOGLE_CX_KEY, and raises Google API key not found without the first. When Google refuses the call, it prints Google search: unexpected response status: with the code, finds no items in Google's error reply, and returns an empty list. The research runs on, with no Google sources in the report.
Google closed the API to new customers, so a new project gets no key. With RETRIEVER=searx on SpecStream the same research run gets its sources back.
The reply your retriever already parses
The Serper route returns organic[] with title, link, snippet and position, as Serper does. The same call from Python:
import os, requests
reply = requests.post(
"https://api.specstream.ai/serper/search",
headers={"X-API-KEY": os.environ["SPECSTREAM_API_KEY"]},
json={"q": "state of solid state batteries 2026", "num": 10},
).json()
for row in reply["organic"]:
print(row["position"], row["title"], row["link"])$5 per 1,000 searches, with no daily limit
A search of up to 10 results costs $0.005, and each started block of 10 more results adds $0.006. A research run sends many searches, so set spend_cap_cents on the key to cap what one run can spend. 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 page.
About one second a search, measured under load
The SearXNG and Serper routes 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 GPT Researcher 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 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, with a source URL on every value. The most a run can cost is quoted before it starts.
Other Google PSE alternatives for GPT Researcher
Google, until January 1, 2027
Existing customers can keep RETRIEVER=google 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.
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. A research run needs the whole web, and for that Google asks you to contact it. SpecStream searches the whole live web through searx or serper.
Tavily
GPT Researcher's default retriever, 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. Its address is fixed in GPT Researcher's code. With RETRIEVER=searx and SpecStream, a search costs $0.005.
Serper
Search sold in credit packs: $1.00 per 1,000 in the pack of 50,000, with credits valid for 6 months and 2,500 free queries to start. Keep RETRIEVER=serper and set SERPER_API_BASE to https://api.specstream.ai/serper: the same retriever reads the live web, on credit that never expires.
How SpecStream scores
The same numbers as the benchmarks page, from the official tasks and scorers.
How to move GPT Researcher from Google 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. In GPT Researcher's .env, replace RETRIEVER=google, GOOGLE_API_KEY and GOOGLE_CX_KEY with the retriever and its address.
RETRIEVER=searx
SEARX_URL=https://api.specstream.ai/searxng/YOUR_SPECSTREAM_KEY3. Check the key with the call the retriever sends. A 200 with results means GPT Researcher gets the same.
curl "https://api.specstream.ai/searxng/$SPECSTREAM_API_KEY/search?q=test&format=json"4. Run a research task as you do today. Each search shows up in your SpecStream request log with its price.
Frequently asked questions
Something we didn't answer? Talk to a human
Why is the Google retriever not working in GPT Researcher?
Google search: unexpected response status: and returns no results. Set RETRIEVER=searx with SEARX_URL at SpecStream and the sources come back.What is the best Google PSE alternative for GPT Researcher?
searx and serper retrievers with no code change.Can I change the Google address in GPT Researcher?
google.py fixes the address at https://www.googleapis.com/customsearch/v1. The searx retriever reads SEARX_URL and the serper retriever reads SERPER_API_BASE, and SpecStream answers both.What replaces GOOGLE_API_KEY and GOOGLE_CX_KEY?
RETRIEVER=searx and SEARX_URL=https://api.specstream.ai/searxng/YOUR_SPECSTREAM_KEY. There is no engine ID, because SpecStream searches the whole live web.How much does a GPT Researcher run cost on SpecStream?
spend_cap_cents on the key caps what it can spend.Is Google Custom Search shutting down?
Sources
SpecStream wrote this page. GPT Researcher's settings come from its source on GitHub, and each provider's figure from that company's own page.
- GPT Researcher Google retriever, google.pygithub.com/assafelovic/gpt-researcher/blob/main/gpt_researcher/retrievers/google/google.py, read Nov 10, 2026
- GPT Researcher searx retriever, searx.pygithub.com/assafelovic/gpt-researcher/blob/main/gpt_researcher/retrievers/searx/searx.py, read Nov 10, 2026
- GPT Researcher serper retriever, serper.pygithub.com/assafelovic/gpt-researcher/blob/main/gpt_researcher/retrievers/serper/serper.py, read Nov 10, 2026
- GPT Researcher tavily retriever, tavily_search.pygithub.com/assafelovic/gpt-researcher/blob/main/gpt_researcher/retrievers/tavily/tavily_search.py, read Nov 10, 2026
- GPT Researcher default configgithub.com/assafelovic/gpt-researcher/blob/main/gpt_researcher/config/variables/default.py, read Nov 10, 2026
- Google Custom Search JSON API overviewdevelopers.google.com/custom-search/v1/overview, read Nov 10, 2026
- Vertex AI Search pricingcloud.google.com/generative-ai-app-builder/pricing, read Nov 10, 2026
- Tavily API creditsdocs.tavily.com/documentation/api-credits.md, read Nov 10, 2026
- Tavily pricingtavily.com/pricing, read Nov 10, 2026
- Tavily, SealQA and SimpleQA posttavily.com/blog/tavily-ranks-1-on-sealqa-and-simpleqa, read Nov 10, 2026
- Serperserper.dev/, 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




