Skip to content
CrawlerData
Menu
Compare

A Google Custom Search JSON API alternative

Google has closed the Custom Search JSON API to new customers, and existing customers have until January 1, 2027 to move. CrawlerData's Google Search API returns public Google results as JSON, with a short migration path.

Last checked against Custom Search JSON API's public pages. Sources

The short version

How they differ

Google's overview page says: "The Custom Search JSON API is closed to new customers." Existing customers "have until January 1, 2027 to transition to an alternative solution."

Google recommends Vertex AI Search as an alternative for searching up to 50 domains, and asks teams that need full web search to contact Google. Vertex AI Search searches the sites you configure, so it is not a drop-in replacement if your code relies on public Google web results.

CrawlerData's Google Search API returns public Google results in any of 31 countries: organic results with title, link and snippet, as the Custom Search JSON API did, plus AI Overview, People Also Ask, ads, the local pack and more. It costs $1.00 to $0.30 per 1,000 requests, with no daily cap.

At a glance

Google Custom Search API alternative, as of October 13, 2026
CrawlerDataCustom Search JSON API
Pricing modelPrepaid credit packs, no subscription. Credits valid 6 monthsClosed to new customers. Existing customers: pay per query until January 1, 2027
Cost per 1,000 at entry$1.00 per 1,000 requests (Starter, $50 for 50k credits)Free for 100 queries a day, then $5 per 1,000
Cost per 1,000 at volume$0.30 per 1,000 requests (Ultimate, $3,750 for 12.5M credits)$5 per 1,000, up to 10,000 queries a day
Free tier50 free credits with a verified work email, valid 30 days100 queries a day (existing customers only)
Google Shopping sellersYes. Every seller for a product in one request, 1 credit per 10 sellers returned (rounded up, minimum 1)Not offered. Web results, or images with searchType=image
Async and webhooksLive (synchronous), plus Fast and Regular queues with polling or a webhook (postbackUrl). Same price on every queueSynchronous GET request. Webhooks: not published
MCP serverYes. Remote server at api.crawlerdata.com/mcp, 8 tools, same API keyNot published
Failed requestsNot charged. A failed job costs 0 creditsNot published
Rate limit100 requests per minute and 20 per second per API keyUp to 10,000 queries a day
Results per requestOne Google results page per request, pages 1 to 101 to 10 (num); start + num cannot exceed 100
What it searchesPublic Google results for the country you chooseA Programmable Search Engine you configure (cx)
AvailabilityOpen to new customersClosed to new customers; ends January 1, 2027

List prices in USD, excluding tax, as published on October 13, 2026. "Not published" means we could not find it on Custom Search JSON API's public pages. Per-1,000 figures marked "our arithmetic" divide a plan price by its volume.

Where CrawlerData fits best

Choose CrawlerData if…

  • You need public Google web results after January 1, 2027, or you are a new customer and cannot sign up for the JSON API.
  • You need more than 10,000 queries a day, or SERP features the JSON API never returned: AI Overview, People Also Ask, ads, local pack, top stories and the knowledge panel.
  • You need Google Shopping, News, Images, Local or Autocomplete from the same key, at 1 credit per request ($1.00 to $0.30 per 1,000).
  • You want a short migration: items[] becomes organic_results[], and title, link and snippet keep their names.
Migration

Moving from Custom Search JSON API

The core fields carry over. items[] becomes organic_results[], and title, link and snippet keep their names. Instead of an API key and a cx in the query string, you send a JSON body with a Bearer token.

Custom Search JSON APICrawlerData
GET customsearch/v1?key=…POST api.crawlerdata.com/v1/jobs, Authorization: Bearer YOUR_API_KEY
cxNot needed: results are public Google results
qparams.query
glparams.country
hlparams.language
start (1, 11, 21 … 91)params.page (1 to 10)
num (1 to 10)Not needed: each request returns one Google results page
searchType=image"endpoint": "google-images"
items[]result.organic_results[]
items[].title / link / snippettitle / link / snippet
items[].displayLinkdisplayed_link
searchInformation.totalResultssearch_information.total_results
Before: Custom Search JSON API (JavaScript)
const url = new URL('https://www.googleapis.com/customsearch/v1');
url.search = new URLSearchParams({ key: API_KEY, cx: SEARCH_ENGINE_ID, q: 'best crm software', gl: 'us', hl: 'en' });
const data = await (await fetch(url)).json();
const results = (data.items ?? []).map((i) => ({ title: i.title, url: i.link, snippet: i.snippet }));
After: CrawlerData (JavaScript)
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.

FAQ

Questions

Is the Google Custom Search JSON API shutting down?

Google's overview page says the API is closed to new customers and that existing customers have until January 1, 2027 to transition to an alternative solution.

What does Google recommend instead?

Vertex AI Search, which Google calls a favorable alternative for searching up to 50 domains. For full web search, Google asks you to contact it. Vertex AI Search searches content you configure rather than returning public Google web results.

How much does the Custom Search JSON API cost today?

For existing customers: 100 queries a day free, then $5 per 1,000 queries, up to 10,000 queries a day, until January 1, 2027.

How much code changes when I switch to CrawlerData?

Usually the request and one line of parsing: items[] becomes result.organic_results[], and title, link and snippet keep their names. cx is not needed, and start becomes a page number from 1 to 10.

Can I still get 100 results per query?

The Custom Search JSON API returns at most 10 per request and 100 in total. On CrawlerData you request pages 1 to 10, one request and 1 credit per page.

Sources

All checked on (as of Oct 2026). Spotted something out of date? Email contact@crawlerdata.com and we will correct it.

APIs to look at

Related solutions

Further reading

Other comparisons

Try it on your own queries

Get 50 free credits when you sign up with your work email and verify it. Failed requests are never charged.

Get 50 free credits