Guides · 13 min read
Google Custom Search API alternatives: what to use before it shuts down on January 1, 2027
The Custom Search JSON API ends January 1, 2027. What Google offers instead, and how to migrate by changing the base URL and key.
Microsoft retired the Bing Search APIs on August 11, 2025 and points customers to Grounding with Bing Search for Azure AI agents. If your code needs a list of search results, CrawlerData's Google Search API returns one as JSON, with a short migration path.
Last checked against Bing Search API's public pages. Sources
Microsoft Learn: "Bing Search APIs will be retired on August 11, 2025. Any existing instances of Bing Search APIs will be decommissioned completely, and the product will no longer be available to be used or new customer signup."
Microsoft recommends Grounding with Bing Search as part of Azure AI Agents. It is a tool inside an Azure AI agent, not a search endpoint: Microsoft's documentation says developers and end users do not have access to the raw content it returns, and it needs a Grounding with Bing Search resource connected to an Azure AI project. If your code needs a list of results (title, link, snippet) to process, you need a search API instead.
CrawlerData's Google Search API returns that list as JSON from Google's results in any of 31 countries: organic results with title, link and snippet, plus AI Overview, People Also Ask, ads, the local pack and more.
One difference to plan for: the results come from Google, not Bing, so positions and snippets will differ from what your Bing integration returned. Re-baseline any stored rankings or evaluation sets.
| CrawlerData | Bing Search API | |
|---|---|---|
| Pricing model | Prepaid credit packs, no subscription. Credits valid 6 months | Retired August 11, 2025. No new sign-ups; existing instances decommissioned |
| Cost per 1,000 at entry | $1.00 per 1,000 requests (Starter, $50 for 50k credits) | Not available (retired) |
| Cost per 1,000 at volume | $0.30 per 1,000 requests (Ultimate, $3,750 for 12.5M credits) | Not available (retired) |
| Free tier | 50 free credits with a verified work email, valid 30 days | Not available (retired) |
| Google Shopping sellers | Yes. Every seller for a product in one request, 1 credit per 10 sellers returned (rounded up, minimum 1) | Not offered. Web, image, video and news answers |
| Async and webhooks | Live (synchronous), plus Fast and Regular queues with polling or a webhook (postbackUrl). Same price on every queue | Synchronous GET request to api.bing.microsoft.com/v7.0/search |
| MCP server | Yes. Remote server at api.crawlerdata.com/mcp, 8 tools, same API key | Not applicable (retired) |
| Failed requests | Not charged. A failed job costs 0 credits | Not applicable (retired) |
| Rate limit | 100 requests per minute and 20 per second per API key | Not applicable (retired) |
| Results per request | One Google results page per request, pages 1 to 10 | count 1 to 50 (default 10), with offset |
| Search index | Google's public results for the country you choose | Bing's results for the market you chose (mkt) |
| Availability | Open to new customers | Retired August 11, 2025 |
List prices in USD, excluding tax, as published on October 20, 2026. "Not published" means we could not find it on Bing Search API's public pages. Per-1,000 figures marked "our arithmetic" divide a plan price by its volume.
The core fields carry over. webPages.value[] becomes organic_results[], name becomes title and url becomes link; snippet keeps its name. Instead of an Ocp-Apim-Subscription-Key header and query-string parameters, you send a JSON body with a Bearer token.
| Bing Search API | CrawlerData |
|---|---|
| GET api.bing.microsoft.com/v7.0/search | POST api.crawlerdata.com/v1/jobs |
| Ocp-Apim-Subscription-Key: … | Authorization: Bearer YOUR_API_KEY |
| q | params.query |
| mkt (en-US) or cc + setLang | params.country (us) and params.language (en) |
| count (1 to 50) and offset | params.page (1 to 10): each request returns one Google results page |
| freshness, safeSearch | Not offered |
| responseFilter (news, images) | Pick the endpoint: google-search, google-news or google-images |
| webPages.value[] | result.organic_results[] |
| webPages.value[].name / url / snippet | title / link / snippet |
| webPages.value[].displayUrl | displayed_link |
| webPages.totalEstimatedMatches | search_information.total_results |
| relatedSearches.value[].text | related_searches[].query |
const url = new URL('https://api.bing.microsoft.com/v7.0/search');
url.search = new URLSearchParams({ q: 'best crm software', mkt: 'en-US', count: '10' });
const data = await (await fetch(url, { headers: { 'Ocp-Apim-Subscription-Key': API_KEY } })).json();
const results = (data.webPages?.value ?? []).map((p) => ({ title: p.name, url: p.url, snippet: p.snippet }));const res = await fetch('https://api.crawlerdata.com/v1/jobs', {
method: 'POST',
headers: { Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify({ endpoint: 'google-search', params: { query: 'best crm software', country: 'us', language: 'en' }, queue: 'live' }),
});
const { job, result } = await res.json(); // job.status "failed" => result is null, 0 credits
const results = (result?.organic_results ?? []).map((r) => ({ title: r.title, url: r.link, snippet: r.snippet }));Full request and response schemas are in the OpenAPI spec, with runnable code in the examples repo. AI clients can connect to the MCP server at https://api.crawlerdata.com/mcp with the same API key.
Yes. Microsoft's lifecycle page says the Bing Search APIs were retired on August 11, 2025: existing instances were decommissioned completely and new customer sign-up ended.
Grounding with Bing Search as part of Azure AI Agents, which lets an agent use real-time public web data when generating responses with an LLM.
Microsoft's documentation says developers and end users do not have access to the raw content it returns; the model response includes citations with links. It needs a Grounding with Bing Search resource connected to an Azure AI agent, and Microsoft lists it as available only on paid or pay-as-you-go Azure subscriptions.
A SERP API that returns results as JSON. CrawlerData's Google Search API returns organic_results with title, link and snippet from Google, plus AI Overview, People Also Ask, ads and more, for 31 countries.
Usually the request and one line of parsing: webPages.value[] becomes result.organic_results[], name becomes title, url becomes link, and snippet keeps its name. The key moves from the Ocp-Apim-Subscription-Key header to a Bearer token, and mkt becomes country and language.
No. CrawlerData returns Google's public results as a searcher in the country you choose sees them, so positions and snippets differ from Bing's. Plan to re-baseline any stored rankings or evaluation sets.
All checked on (as of Oct 2026). Spotted something out of date? Email contact@crawlerdata.com and we will correct it.
Organic results with real destination links, ads, AI Overview, People Also Ask, local pack, top stories, knowledge panel and related searches. Desktop or mobile.
from $0.30 / 1,000 requests
News articles with source, date, snippet and link.
from $0.30 / 1,000 requests
Image results with the source page, original image URL and size, and thumbnail.
from $0.30 / 1,000 requests
Organic positions and SERP features, desktop or mobile, per keyword and country.
See how it works
Fresh Google results as JSON for LLM agents, tools and RAG pipelines.
See how it works
Guides · 13 min read
The Custom Search JSON API ends January 1, 2027. What Google offers instead, and how to migrate by changing the base URL and key.
Guides · 10 min read
Add a Google search tool to an LLM agent: the tool definition, trimming results to fit the context window, citing sources and caching, in Python.
Guides · 9 min read
Fetch Google results as JSON in Python: organic results, People Also Ask, related searches and AI Overview, desktop or mobile, plus pagination and CSV.
Prepaid packs from $1.00 per 1,000 vs SerpApi's monthly subscription from $25.00 per 1,000.
See the comparison
CompareSame pack prices. CrawlerData adds Google Shopping sellers, async queues with webhooks and MCP.
See the comparison
CompareOne price on every queue, live included, vs queue-based pricing for SERPs and Shopping.
See the comparison
CompareGoogle's own results and Shopping prices for agents vs LLM-ready web content summaries.
See the comparison
CompareThe Custom Search JSON API ends January 1, 2027. Migrate by changing the base URL.
See the comparison
ComparePlaces Text Search vs the local results searchers see, with Google's prices as of Oct 2026.
See the comparison
Get 50 free credits when you sign up with your work email and verify it. Failed requests are never charged.
We use Google Analytics cookies to understand how the site is used. See our privacy policy.