Skip to main content
Alternatives/Alternative / Google Custom Search JSON API

Google Custom Search JSON API Alternative in 2026 — fastCRW [Replacement Before the 2027 Shutdown]

Google's Custom Search JSON API is closing to new customers and existing users must migrate off by 2027-01-01. fastCRW is a search + full-page scrape replacement with a public benchmark, flat credits, and a single AGPL-3.0 self-host binary.

Published
July 5, 2026
Updated
July 5, 2026
Category
alternatives
Verdict

Google's Custom Search JSON API is closing (migrate by 2027-01-01); fastCRW is the replacement when you need real web search plus full-page content, without a shutdown deadline or a hard 10,000-query/day ceiling.

Custom Search JSON API is closed to new customers and existing users must migrate off by 2027-01-01 (per developers.google.com/custom-search/v1/overview, verified 2026-07)Combined `/v1/search` and `/v1/scrape` in one API — search plus optional page content in the same callNo hard 10,000-query/day ceiling of the Custom Search shape — see [/pricing](/pricing) and [/docs/search](/docs/search) for real limitsAGPL-3.0 single-binary self-host with a built-in MCP serverFlat credit pricing instead of a capped $5-per-1,000 metered tier

If you are evaluating a google search api alternative because Google's Custom Search JSON API is shutting down, this page is a sourced comparison of fastCRW against the Custom Search JSON API on the dimensions that drive the migration: the 2027-01-01 deadline, the per-query caps, combined search-and-scrape, latency, self-host shape, and pricing at agent scale.

Verdict

Google's Custom Search JSON API (also marketed as the Programmable Search / CSE JSON API) is being retired. It is closed to new customers, and existing users must migrate off by 2027-01-01 (per developers.google.com/custom-search/v1/overview, verified 2026-07). That deadline alone forces a replacement decision. Google now points existing users to Vertex AI Search (for up to 50 domains) or a contact form for full web search (per developers.google.com/custom-search/v1/overview, verified 2026-07); fastCRW is a simpler drop-in for teams that just want real web search plus page content without adopting Vertex.

There is also a precision point worth stating up front: the Custom Search JSON API does not search raw Google web ranking. It searches a configured Programmable Search Engine — a set of sites you define (per developers.google.com/custom-search/v1/overview, verified 2026-07). For searching within your own site or a small fixed list of domains, that is purpose-built and cheap. For open-web research an agent actually needs, it is the wrong shape even before the shutdown.

Choose fastCRW when you need real web search plus the full text of the results, one API, flat credits, and an AGPL-3.0 self-host path with no shutdown deadline. If all you ever needed was site search over a small fixed set of your own sites, note that below before you migrate.

Why You Need a Replacement

The Custom Search JSON API stops being a viable dependency for three concrete reasons (all per developers.google.com/custom-search/v1/overview, verified 2026-07):

  1. The shutdown. It is closed to new customers and existing users must migrate off by 2027-01-01. Anything you build on it now has a hard expiry date.
  2. The 10,000-query/day ceiling. You get 100 queries/day free, then $5 per 1,000 queries, up to a hard ceiling of 10,000 queries/day that cannot be raised. An agent whose query volume tracks user traffic hits a wall you cannot pay your way past.
  3. 10 results per call. A single call returns at most 10 results (up to 100 per query with paging). Fan-out for RAG means many metered calls, each still capped.

For a search-then-read agent, those constraints compound: capped queries, capped results, and a fixed sunset date.

What This Comparison Covers

This comparison is scoped to the agent-scraping and RAG use case. It deliberately covers:

  • combined search-plus-scrape in a single API,
  • per-request search latency under realistic AI-agent fan-out,
  • open-web coverage versus configured-engine coverage,
  • self-hosting and data-residency posture,
  • and pricing without a fixed daily ceiling.

It does not re-argue site search over a small fixed domain set, because that is the one job a configured Programmable Search Engine is genuinely built for.

Head-to-Head

Decision areafastCRWCustom Search JSON API
AvailabilityActive, no shutdown dateClosed to new customers; existing users must migrate by 2027-01-01 (per developers.google.com/custom-search/v1/overview, verified 2026-07)
Search + scrape in one APIYes — /v1/search and /v1/scrape share auth and creditsSearch only; you bring your own scraper
What it searchesOpen-web search resultsA configured Programmable Search Engine (sites you define), not raw Google ranking
Daily capNo fixed 10,000-query/day ceiling — see /pricingHard 10,000 queries/day, cannot be raised
Results per callSearch plus full page content in one call10 results per call, 100 per query
Self-host shapeSingle AGPL-3.0 binary, built-in MCPHosted Google API only
Pricing modelFlat credits, 1 credit/query — see /pricing100/day free, then $5 per 1,000 queries up to the daily ceiling
Effective search price$0.47/1,000 annual ($0.55 monthly; 1 credit/query; derived from PLAN_DISPLAY / /pricing, verified 2026-07) — same credit also scrapes$5 per 1,000 queries, capped at 10,000/day (per developers.google.com/custom-search/v1/overview, verified 2026-07)
ConcurrencyUp to 150 concurrent requests on the Scale plan (derived from PLAN_DISPLAY / fastCRW /pricing, verified 2026-07)No published concurrency figure; hard 10,000-query/day ceiling
Best fitOpen-web search + content for RAG and agentsSite search over a small fixed set of your own domains

These rows describe the migration framing. They are not a universal claim about every workload.

Where fastCRW Wins

  • No shutdown deadline. fastCRW is active and self-hostable; nothing forces a migration on a fixed date.
  • Search + read in one API. A Firecrawl-compatible /v1/search returns results, and /v1/scrape reads each page with the same credential — no separate scraper for the content the agent actually needs.
  • No hard daily ceiling of that shape. Search is 1 credit per query on flat credits; there is no fixed, unraisable 10,000-query/day wall (see /pricing and /docs/search for current limits).
  • Open-web coverage. fastCRW searches the open web and renders JS-heavy pages, rather than a pre-configured set of sites.
  • AGPL-3.0 single-binary self-host with a built-in our MCP integration, so any MCP-aware agent gets crw_search and crw_scrape as native tools.

On latency: fastCRW search averaged 880 ms over a 100-query benchmark (benchmarks/triple-bench.ts, concurrent vs Firecrawl + Tavily); 73/100 latency wins; 100% success. This is a search benchmark only — it does not measure scrape performance.

Where Custom Search Is Still Strong

Honest version — if you only need site search, the Custom Search JSON API is purpose-built:

  • Site search over a small fixed set. For searching within your own site(s) or a short, defined list of domains, a configured Programmable Search Engine is exactly the tool, and it is cheap — until it is shut off on 2027-01-01 (per developers.google.com/custom-search/v1/overview, verified 2026-07).
  • Google's index behind that engine. For the domains you configure, results are drawn from Google's index with no infrastructure to run yourself.

If that describes your entire need and you accept the 2027 deadline, you may not need a general-purpose search API at all. For anything beyond a fixed domain set, keep reading.

Pricing Comparison

Approximate cost for a workload of 10,000 search-and-read operations per month (one query plus three to five page reads per operation). Verify exact numbers on each vendor's pricing page.

ServiceApproximate monthly costNotes
Custom Search JSON API100 queries/day free, then $5 per 1,000 queries, capped at 10,000/day (per developers.google.com/custom-search/v1/overview, verified 2026-07)Search only, configured engine only — you still pay a separate scraper for page reads, and it sunsets 2027-01-01
Custom Search + a separate scraper APImetered queries + $50–$100/mo scraperTwo vendors, two rate limits, one of them expiring
fastCRW (cloud, flat credits)one stack, 1 credit per search — about $0.47 per 1,000 searches on an annual plan (~$0.55 monthly; derived from PLAN_DISPLAY / /pricing, verified 2026-07) plus scrape creditsOne vendor, one credential, no fixed daily ceiling — the same credit also scrapes the page
fastCRW (self-hosted, AGPL-3.0)infrastructure onlySingle small binary fits on small VMs

fastCRW is the cheapest real-time web search API per 1,000 requests — about $0.47 per 1,000 searches on an annual plan (~$0.55 monthly; 1 credit/query; derived from PLAN_DISPLAY / /pricing, verified 2026-07), responding in ~880 ms (100-query benchmark; search benchmark only — does not measure scrape performance). The same credit also scrapes the full page and exposes MCP — about a tenth of the Custom Search JSON API's $5 per 1,000 queries (per developers.google.com/custom-search/v1/overview, verified 2026-07), with no equivalent of the hard, unraisable 10,000-query/day ceiling. It is also the only option here you can self-host — an AGPL-3.0 single binary — so teams that cannot route queries through a third-party API pay for infrastructure, not per search. The only verified competitor near this price, DataForSEO, charges $0.60/1,000 but on a slow asynchronous queue (5 minutes average, 45-minute target); its real-time mode is $2/1,000 (per dataforseo.com/apis/serp-api, verified 2026-07). Up to 150 concurrent requests on Scale (derived from PLAN_DISPLAY / /pricing, verified 2026-07) keeps that price available under agent fan-out.

Migration Path

fastCRW exposes a Firecrawl-compatible API surface, so the typical migration from the Custom Search JSON API plus a separate scraper is a search step followed by a read step behind one credential. Example in Python:

import os
import httpx

FASTCRW_BASE = "https://api.fastcrw.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['FASTCRW_API_KEY']}"}

async def search_and_read(query: str, top_k: int = 5) -> list[dict]:
    async with httpx.AsyncClient(timeout=30.0) as client:
        # 1. Search step — replaces GET customsearch/v1?key=...&cx=...&q=...
        #    Real open-web results, no 10-per-call cap, no configured engine.
        serp = await client.post(
            f"{FASTCRW_BASE}/search",
            headers=HEADERS,
            json={"query": query, "limit": top_k},
        )
        serp.raise_for_status()
        results = serp.json()["data"]

        # 2. Read step — same auth, same vendor, no second SDK.
        #    Custom Search never returned this; you had to scrape separately.
        pages: list[dict] = []
        for hit in results:
            page = await client.post(
                f"{FASTCRW_BASE}/scrape",
                headers=HEADERS,
                json={"url": hit["url"], "formats": ["markdown"]},
            )
            page.raise_for_status()
            pages.append(page.json()["data"])
        return pages

The structural change from a Custom Search plus scraper stack is removing the cx engine ID and the second client: one credential returns both the results and the page content.

  1. Run your real queries in the playground and inspect both the results and the rendered page output.
  2. Read the 1,000-URL benchmark for the coverage and latency distribution in context.
  3. Review the benchmark methodology so you can reproduce the workload on your own URLs.
  4. Compare against the search docs and scrape docs for endpoint shape and current limits.
  5. Wire the MCP server into Claude Desktop or Cursor and let the agent decide when to search and when to scrape.
  6. If your real need is only site search over a small fixed set of your own domains, decide whether you need a general search API at all before the Custom Search JSON API sunsets on 2027-01-01.

The decision is workload-specific. fastCRW is the stronger replacement when you need real web search plus content for RAG or agents, without a shutdown deadline or a hard daily ceiling — and the Custom Search JSON API's 2027-01-01 retirement means that decision cannot wait.

Continue exploring

More from Alternatives

View all alternatives

Related hubs

Keep the crawl path moving