cd /news/ai-search/google-custom-search-json-api-is-shu… · home › topics › ai-search › article
[ARTICLE · art-169960] src=nestdaddy.com ↗ pub= topic=ai-search verified=true sentiment=· neutral

Google Custom Search JSON API is shutting down: a web search API to move to before 1 January 2027

Google has closed its Custom Search JSON API to new customers and given existing customers until 1 January 2027 to migrate off the customsearch/v1 endpoint, according to Google's API overview page. Google points users to Vertex AI Search, which it says fits "searching up to 50 domains," or a full web search solution available only through a contact form with no public sign-up or price list. The guide recommends NestDaddy, an independent search engine with its own crawler and index, for whole-web results, noting its results will differ from Google's and that it returns up to 50 results per call with no start paging parameter.

read6 min views1 publishedNov 15, 2026
Google Custom Search JSON API is shutting down: a web search API to move to before 1 January 2027
Image: Nestdaddy (auto-discovered)

Google's Custom Search JSON API is closed to new customers and existing customers must move off it by 1 January 2027. Here is what Google offers instead, when it fits, and how to move whole-web search to NestDaddy with a drop-in Python adapter.

Google's Custom Search JSON API, the customsearch/v1 endpoint that many apps, scripts and AI agents use to get Google results as JSON, is on its way out. Google's overview page now says two things plainly:

  • The API is closed to new customers.
  • Existing customers have until 1 January 2027 to move to another solution.

If your code calls https://www.googleapis.com/customsearch/v1, you have a few weeks left. This guide explains what Google offers instead, which projects that fits, and how to move whole-web search to the NestDaddy API with a small adapter so the rest of your code does not change.

Press Run to call the API.

Get your free API key

What Google offers instead #

Google points to two options:

  1. Vertex AI Search , which Google describes as a good fit "for searching up to 50 domains". This is site search: you choose the sites, and it searches only those.
  2. A full web search solution , which you request through a contact form. There is no public sign-up or price list for it on the page.

So the answer depends on how you used Custom Search:

How you used Custom Search Good next step
Search box for your own website or a handful of sites Vertex AI Search, or a site search tool you host yourself
Whole-web results for an app, a data pipeline or an AI agent A web search API with its own index, such as NestDaddy
News for a topic or a country A news API (NestDaddy includes one)

The rest of this guide is about the second and third rows.

What NestDaddy is, and what it is not #

NestDaddy is an independent search engine with its own crawler and web index, plus its own real-time news collection from around the world. It is not a reseller of Google or Bing results, so it will not disappear because one of them changes its API.

To be clear about the fit before you spend time on it:

  • It searches the whole web , not a list of sites you pick. If you need site-restricted search (Custom Search'ssiteSearch or a CSE limited to your domains), this is the wrong tool; use Vertex AI Search or a self-hosted site search.
  • Results come from NestDaddy's own index, so they will differ from Google's . Test your real queries first (see the checklist below).
  • One call returns up to 50 results . There is nostart paging parameter yet, so ask for the number you need withlimit .

Map your Custom Search calls to NestDaddy #

Custom Search JSON API NestDaddy Notes
GET /customsearch/v1?q= GET /api/v1/search?q= Results from NestDaddy's own index
key=YOUR_KEY andcx=ENGINE_ID Header X-API-Key: YOUR_KEY No engine ID needed
num=10 (max 10 per page) limit=10 (up to 50 in one call)
start=11 (paging) Not available Request more results with limit instead
items[].title results[].title
items[].link results[].url
items[].snippet results[].snippet
items[].displayLink results[].domain
News with q +dateRestrict GET /api/v1/news/search?q=&days= Worldwide news, up to 120 days back, filter by country
Reading the page behind a result GET /api/v1/extract?url= Clean article text, without menus or ads

Before and after #

The Custom Search call you have today:

import requests

r = requests.get(
    "https://www.googleapis.com/customsearch/v1",
    params={"key": GOOGLE_KEY, "cx": ENGINE_ID, "q": "fastapi tutorial", "num": 10},
)
for item in r.json().get("items", []):
    print(item["title"], item["link"], item["snippet"])

The same search on NestDaddy:

import requests

r = requests.get(
    "https://nestdaddy.com/api/v1/search",
    headers={"X-API-Key": NESTDADDY_KEY},
    params={"q": "fastapi tutorial", "limit": 10},
)
for item in r.json()["results"]:
    print(item["title"], item["url"], item["snippet"])

The URL, the key and two field names change. Each result also carries domain, language, published_date and type, which Custom Search did not give you.

Keep your old code: a drop-in adapter #

If many parts of your code read Google's response shape (items, link, displayLink), wrap the new API once:

import requests

NESTDADDY = "https://nestdaddy.com/api/v1"

def google_like_search(q, num=10, key=None):
    """Return a dict shaped like Custom Search JSON API's response, using NestDaddy."""
    r = requests.get(f"{NESTDADDY}/search", headers={"X-API-Key": key},
                     params={"q": q, "limit": min(num, 50)}, timeout=30)
    r.raise_for_status()
    results = r.json().get("results", [])
    return {
        "searchInformation": {"totalResults": str(len(results))},
        "items": [
            {"title": x["title"], "link": x["url"], "snippet": x.get("snippet", ""),
             "displayLink": x.get("domain", "")}
            for x in results
        ],
    }

Replace your Custom Search function with this one and most callers will keep working. If you relied on siteSearch, filter on displayLink yourself, but remember the index is the whole web, so results from one small site may be few.

For AI agents: skip the API and use MCP #

Many Custom Search keys exist only to give an AI agent web access. If that is your case, there is a shorter path: NestDaddy runs a remote MCP server at https://mcp.nestdaddy.com/mcp. Claude, Cursor, VS Code, n8n and other MCP clients connect to it, and the model calls web search, news search and page reading by itself. Setup: How to give Claude live web search and news with one MCP server.

A migration checklist for the next six weeks #

  1. List what you use. Whole-web search, site search, image search, news? Each may need a different replacement.
  2. Export 20 to 50 real queries from your logs, the ones your users actually run.
  3. Run them through NestDaddy (the Free plan is enough) and check that the results people click on are there.
  4. Swap the function with the adapter above, behind a flag, so you can switch back.
  5. Watch usage. Every NestDaddy response includes aquota object (used ,limit ,remaining ).
  6. Switch before late December. Do not leave it to the last week of the year.

Pricing and the Free plan #

Custom Search gave existing customers 100 free queries a day, then $5 per 1,000 queries, up to 10,000 a day. NestDaddy's Free plan gives 1,000 credits every month with no card, and one key covers web search, news, page reading, research papers and the MCP server. Paid plans are on the pricing page.

Working examples in Python, JavaScript and curl are on GitHub: nestdaddy/nestdaddy-examples. If you are migrating and something you need is missing, write to [email protected]. Paging and site filters are the kind of request that moves up our list.

── more in #ai-search 4 stories · sorted by recency
── more on @google 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/google-custom-search…] indexed:0 read:6min 2026-11-15 · —