> SpecStream is the live web data engine for teams and agents. This is the Markdown copy of https://specstream.ai/docs/integrations/bing-and-google-search-api. Every page, with what SpecStream does and costs: https://specstream.ai/llms.txt

# Bing and Google search API

For teams whose product still calls the Bing Web Search API or the Google Custom Search JSON API: one setting points it at the Search API, and its searches work again.

Microsoft retired the Bing Web Search API in August 2025. Google closed the Custom Search JSON API to new customers and says: "Existing Custom Search JSON API customers have until January 1, 2027 to transition to an alternative solution."

The Search API answers both requests in their own shape. Your product keeps its code. You change the address and the key.

## The two addresses

**Bing Web Search API v7.** Use this search address in place of `https://api.bing.microsoft.com/v7.0/search`. [Your key](https://specstream.ai/workspace/search?route=bing&utm_source=bing-and-google-search-api&utm_medium=howto) goes in the `Ocp-Apim-Subscription-Key` header. The reply has `webPages.value` with `name`, `url` and `snippet`.

Bing search address

```text
https://api.specstream.ai/v7.0/search
```

**Google Custom Search JSON API.** Use `https://api.specstream.ai` as the base address in place of `https://www.googleapis.com` or `https://customsearch.googleapis.com`. The full search address is below. [Your key](https://specstream.ai/workspace/search?route=google&utm_source=bing-and-google-search-api&utm_medium=howto) goes in `key=`. `cx` is accepted with any value. The reply has `items` with `title`, `link` and `snippet`.

Google search address

```text
https://api.specstream.ai/customsearch/v1
```

## Products that call Bing

Set the setting to the value, and put your key where the last column says, in place of the Bing key.

| Product | Setting | Value | Your key goes in |
| --- | --- | --- | --- |
| [Open WebUI](https://specstream.ai/docs/integrations/open-webui.md#bing) | `BING_SEARCH_V7_ENDPOINT` | `https://api.specstream.ai/v7.0/search` | `BING_SEARCH_V7_SUBSCRIPTION_KEY` |
| [Semantic Kernel (.NET)](https://specstream.ai/docs/integrations/semantic-kernel.md) | `BingTextSearchOptions.Endpoint` | `https://api.specstream.ai/v7.0/search` | `apiKey` of `BingTextSearch` |
| [Semantic Kernel (Java)](https://specstream.ai/docs/integrations/semantic-kernel.md#java) | `bing.search.url` or `BING_SEARCH_URL` | `https://api.specstream.ai/v7.0/search` | `apiKey` of `BingConnector` |
| LazyLLM | `endpoint` of `BingSearch` | `https://api.specstream.ai/v7.0/search` | `subscription_key` |
| spider (spider\_agent) | `BingProvider::with_api_url` | `https://api.specstream.ai/v7.0/search` | `BingProvider::new` |
| Memoh (Bing provider) | `base_url` | `https://api.specstream.ai/v7.0/search` | `api_key` |
| OmAgent | `bing_endpoint` | `https://api.specstream.ai/v7.0/search` | `bing_api_key` |
| WebThinker | `--bing_endpoint` | `https://api.specstream.ai/v7.0/search` | `--bing_subscription_key` |
| MM-REACT | `BING_SEARCH_URL` | `https://api.specstream.ai/v7.0/search` | `BING_SUBSCRIPTION_KEY` |
| LLMxMapReduce | `BING_SEARCH_V7_ENDPOINT` | `https://api.specstream.ai/v7.0/search` | `BING_SEARCH_V7_SUBSCRIPTION_KEY`, with `SERP_API_KEY` unset |

## Products that call Google

Set the setting to the value, and put your key where the last column says, in place of the Google key. Where the product asks for a search engine ID, any value works.

| Product | Setting | Value | Your key goes in |
| --- | --- | --- | --- |
| Memoh (Google provider) | `base_url` | `https://api.specstream.ai/customsearch/v1` | `api_key`, and any value in `cx` |
| neuro-san-studio | `GOOGLE_SEARCH_URL` | `https://api.specstream.ai/customsearch/v1` | `GOOGLE_SEARCH_API_KEY`, and any value in `GOOGLE_SEARCH_CSE_ID` |
| OpenAgent (Google web search provider) | `providerUrl` | `https://api.specstream.ai/customsearch/v1` | `clientSecret`, and any value in `clientId` |
| trpc-agent-go | `WithBaseURL` | `https://api.specstream.ai` | `WithAPIKey`, and any value in `WithEngineID` |
| Mattermost Agents plugin | API URL (optional) | `https://api.specstream.ai/customsearch/v1` | **Google API Key**, and any value in **Search Engine ID** |
| SWIRL (SearchProvider) | `url` | `https://api.specstream.ai/customsearch/v1` | `credentials` as `key=YOUR_SPECSTREAM_KEY` |

## Check it works

Run one search in your product. It returns results as it did before. To check your key first, call the address yourself:

Bing

```bash
curl "https://api.specstream.ai/v7.0/search?q=open+source+search&count=10" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SPECSTREAM_KEY"
```

Google

```bash
curl "https://api.specstream.ai/customsearch/v1?key=YOUR_SPECSTREAM_KEY&cx=any&q=open+source+search&num=10"
```

A wrong or missing key gets status 401.

## Cost

Each search is one Search API call at $5 per 1,000 searches of up to 10 results. It comes out of your balance, with no quote and no approval. [Search API](https://specstream.ai/docs/search-api.md) has the details.

A call that asks for more than 10 results costs more. Set the count to 10 or less to pay the base price.

## Your key

[Get your key](https://specstream.ai/workspace/search?route=bing&utm_source=bing-and-google-search-api&utm_medium=howto) on the Search API screen of your SpecStream workspace. New accounts start with $10 of credit, no card.

Tavily, Exa, Brave, Serper, SearXNG and Firecrawl clients move the same way: [Search API by one setting](https://specstream.ai/docs/integrations/drop-in-search.md).
