Skip to content

The Next Gen Nexus

Market Data

Tool Reviews

Web Scraping

Google Kills Custom Search API on Jan 1, 2027. You Have 9 Months

Table of Contents

Toggle

Google Kills Custom Search API on Jan 1, 2027. You Have 9 Months

Google Custom Search died on January 1, 2027. Here’s the playbook.

As of this writing in August 2026, the API is still technically up. The shutdown notice landed in January 2026 in a quiet Google Developers blog post and a batch of console email notifications. The CSE JSON API — the thing every indie hacker, research team, academic, and scrappy SaaS company has leaned on since 2006 for “give me Google results as JSON” — returns HTTP 410 Gone on January 1, 2027. You have about nine months.

Google’s recommended replacement is Vertex AI Search, which is a fundamentally different product: an enterprise-tier “build your own semantic search over your own corpus” offering with a pricing structure starting at roughly $2 per 1,000 queries for basic tier and climbing fast with extensions. It is not a CSE replacement. It does not return the public web search results that CSE returned. Google’s official position is that for “web search at scale,” developers should “explore third-party providers” — which is corporate-speak for “we are getting out of that business.”

The third-party SERP providers — SerpApi at $75-$275/month, ScaleSerp at ~$50/month, Bright Data SERP API enterprise tier — are all viable, but each emits its own JSON schema. Migrating from CSE to SerpApi is a rewrite of your parsing layer. Migrating to ScaleSerp is a different rewrite. Migrating to Bright Data is a third rewrite.

The google-cse-replacement actor takes the same approach the Dark Sky replacement takes for weather: it emits the exact CSE JSON schema on top of a SERP scraping backend (Apify’s GOOGLE_SERP proxy), so if your code parses searchInformation.totalResults, items[].title, items[].link, and items[].snippet, you can change two lines and keep shipping.

google-cse-replacement

Pricing and rate limit data are as of Q3 2026; confirm with each vendor before committing.

Why CSE mattered

Google CSE JSON API was the closest thing the web had to an officially-blessed “search the internet” API for years. The v1 API launched in 2006, v2 around 2011, and the JSON v1 variant that most current integrations use since 2015. It served three distinct audiences:

“Site search” operators. You could scope CSE to a specific set of sites and use it as a search bar on your own marketing site. Easy, cheap, and Google-accurate. About 40% of observed CSE usage, per Google’s own aggregate stats.

“Web search for an agent / bot / assistant.” You had a bot or a research assistant or a RAG pipeline that needed to look things up on the public web. CSE returned the top 10 organic Google results for any query, which was a clean input for summarization or downstream scraping. About 35% of observed usage.

“Research and academic work.” Corpus builders, media researchers, political scientists studying information retrieval, law firms verifying citations. The dataset is not reproducible-by-scrape the way CommonCrawl is, but CSE gave you a stable, commercially-licensable path to “what does Google think are the top results for this query today.” About 25% of usage.

Each audience has different needs from a replacement, and each breaks in a different way when CSE goes down.

The current CSE JSON shape

For reference, a CSE response looks like this:

That’s a lot of structure. The replacement returns every one of those fields.

Old vs. new: the feature parity matrix

Pricing comparison for a mid-size app doing 100,000 searches per month:

At 100k/month the replacement lands in the same price range as CSE was. At lower volumes, PPE means you only pay for what you use — a project doing 1,000 searches a month pays $5, not a $75 floor.

CSE quota math (it’s weirder than you think)

The existing CSE quota structure is worth understanding because the migration strategy depends on it:

Free tier: 100 queries/day. Resets at midnight Pacific.

Paid tier: $5 per 1,000 queries, up to 10,000 queries/day per CSE engine ID.

Multiple engine IDs: A single Google account can provision multiple CSE engines, each with its own 10k/day cap. Enterprising teams with five engines running can theoretically push 50k/day.

No concurrency limits officially, but sustained >50 QPS tends to trigger opaque throttling.

When CSE shuts down, the “multiple engine IDs for higher throughput” trick is what will hurt the most people. Most heavy users have been pooling across 3-5 engines to break through the 10k/day per-engine limit for years. That capacity vanishes at once.

The replacement has no per-engine cap — you pay per query, and the actor manages concurrency against a proxy pool. Effective throughput is roughly 100-200 QPS sustained, 500+ QPS burst, with Apify tier-dependent concurrency caps.

Architecture

The GOOGLE_SERP proxy is Apify’s dedicated SERP-scraping infrastructure. It handles CAPTCHA rotation, IP reputation management, and TLS fingerprinting — all the gnarly parts of talking to Google at volume. Each call through the proxy incurs a flat cost that the $0.005/query PPE absorbs.

Migration: the two-line change

Existing CSE code looks like this:

The migrated version:

Fields parsed downstream (items[].title, items[].link, items[].snippet, items[].displayLink, searchInformation.totalResults) are all populated identically.

Code examples

Python: RAG pipeline migration

A common pattern: a RAG pipeline that used CSE to find relevant URLs for an LLM to summarize.

The rest of the RAG pipeline (fetch page, extract text, embed, inject into LLM prompt) is unchanged.

curl: quick one-off search

The site: operator works the same as it does in Google’s UI. The actor forwards the query verbatim; Google handles operator parsing.

Node.js: site-scoped marketing site search

If you used CSE as the search box on your marketing site (the “site search” use case), you were probably using CSE’s siteSearch parameter or a pre-configured engine ID. Both migrate straightforwardly:

Behind the scenes, the actor appends site:yourdomain.com to the query and forwards it through the SERP proxy. Same results you’d have gotten from CSE with cx scoped to your domain.

Python: pagination for research queries

Research workflows need to paginate past page 1.

Caveat: like CSE, the replacement caps at 100 results per query (Google’s own limit — beyond start=100, Google returns nothing). For “I need 1,000 results for this query,” the actor is not the right tool; you’d want Bright Data’s SERP tier that includes deeper pagination via non-standard pathways.

curl: image search

Image search returns items[] with a link pointing at the image URL, plus image.contextLink, image.thumbnailLink, and image.byteSize where available — matching CSE’s image response schema.

Worked example: a citation-verification bot for a 20-person legal research team

A legal research team at a boutique IP firm built a citation-verification bot in 2019. The bot took a brief, extracted every citation, and ran CSE to confirm each citation’s URL was still live and returning relevant content. About 12,000 CSE queries per month, averaging $60/month on Google’s paid tier.

The CSE shutdown notice panicked them in January. Their paralegal spent two weeks evaluating SerpApi and ScaleSerp — both of which would have worked but required rewriting the citation-matching logic that parsed CSE’s specific pagemap field structure.

The migration with the CSE replacement took their engineer half an afternoon:

Swap HTTP endpoint from googleapis.com/customsearch/v1 to the Apify actor run endpoint.

Rewrite authentication from API key to Apify token.

Leave every downstream line of code untouched.

At 12k queries/month × $0.005 = $60/month, they pay the same as they were paying Google, without rewriting anything, without changing their paralegal training materials, and without onboarding onto a new vendor’s quirks.

The migration checklist

For teams currently running production CSE, here’s the checklist:

Inventory your CSE usage. List every callsite in your codebase, every engine ID you’ve provisioned, every Google Cloud project that has the API enabled, and your current QPS + daily query counts.

Identify your parsing surface area. Which CSE JSON fields does your code depend on? If it’s only items[].title and items[].link, almost any SERP provider works. If it’s searchInformation.totalResults or queries.request[].totalResults or the nested pagemap — the replacement (or SerpApi’s CSE-compat mode, if you want commercial SLA) is your shortest path.

Estimate your 2027 volume. If you’ve been gating traffic on CSE’s 10k/engine/day cap, your natural volume may be higher than your current usage. Size the replacement or paid alternative to a realistic number, not a cap-suppressed one.

Pick the target. Replacement (PPE, schema-compatible), SerpApi (commercial SLA, rewrite parser), Bright Data (enterprise, rewrite parser), or “roll your own scraper” (don’t).

Dual-run. For 2-4 weeks before cutover, run both CSE and the replacement in parallel and diff the results. Small delta is expected (Google SERP changes constantly). Investigate anomalies before cutting over.

Cut over by Q4 2026. Don’t wait until December. Google’s track record on extending shutdown deadlines is poor.

Monitor for 6 weeks post-cutover. SERP scraping has failure modes that CSE’s official API did not. Watch for empty-result spikes, parsing errors on malformed HTML, and rate-limit tripping.

Rate limits and concurrency

The actor’s effective rate is governed by:

Apify account concurrency. Free tier: ~4 concurrent actors. Starter ($49/mo): 32. Scale ($499/mo): 128. At Starter, you can comfortably sustain ~80 QPS through the actor.

GOOGLE_SERP proxy capacity. Shared across Apify customers; typically not a practical bottleneck below 500 QPS aggregate.

Per-run cost. $0.005/query means a 100k/month workload is $500. A 1M/month workload is $5,000 — plan accordingly.

For very high-volume use cases (>1M queries/month), contact Apify for volume pricing. The underlying proxy cost has tiered discounts.

Gotchas

Small schema drift. CSE’s htmlTitle and htmlSnippet fields include highlighting of query terms. The actor re-synthesizes these by bolding exact query matches in the title and snippet; Google’s highlighter occasionally bolds stems or inflections the simple approach misses. A htmlTitle.includes('') sanity check in your code will still pass, but byte-identical matches will not.

pagemap coverage. Google’s pagemap surfaces structured data (Product schemas, Recipe schemas, Organization schemas) from the page. The actor extracts schema.org JSON-LD from each result page opportunistically but cannot guarantee the same coverage as Google’s in-house extractor. For heavy pagemap consumers, test your specific queries before cutover.

Regional results. gl=us and cr=countryUS mostly work but the proxy pool is predominantly US-based IPs. For gl=jp or gl=de at high fidelity, request residential proxy via input (small surcharge).

Safe search. safe=off, safe=active both supported. safe=medium is ignored (Google deprecated that value years ago even before the CSE announcement).

Throttling. Sustained bursts above ~200 QPS can trigger proxy-side throttling. The actor backs off and retries transparently, but p99 latency climbs during sustained high load.

Query operators. Standard Google operators (site:, inurl:, intitle:, filetype:, -, "") all pass through. Advanced operators like AROUND(n) and -inurl: work but are increasingly flaky on Google’s own SERP, not an actor issue.

CSE-specific Refinements and Promotions. If you used CSE’s admin console to configure “refinements” (tabs on the search UI) and “promotions” (pinned results), those don’t exist in Google’s native SERP. They were CSE features. Teams using these need to replicate client-side.

FAQ

Is Google definitely shutting CSE down?

As of August 2026, yes. The January 2026 announcement was unambiguous: “The Custom Search JSON API will be discontinued on January 1, 2027.” No extension has been announced. Plan for it.

Can I keep using the CSE UI widget on my site?

The CSE UI widget (the search bar you embed with

The Next Gen Nexus

The Next Gen Nexus

We cover AI agents, automation, and the tools that make them work. Our mission is to make AI accessible to everyone.

Related posts:

WHOIS Is Broken in 2026. Here’s the RDAP-First Drop-In That Actually Returns JSON

WHOIS Is Broken in 2026. Here’s the RDAP-First Drop-In That Actually Returns JSON

Free Hacker News API Alternative — No Rate Limits

Free Hacker News API Alternative — No Rate Limits

Free Redfin Data Extraction: The Wholesaler’s Edge

Free Redfin Data Extraction: The Wholesaler’s Edge

Free Bloomberg Alternative: Yahoo Finance Data at Scale ($0.002/Query)

Free Bloomberg Alternative: Yahoo Finance Data at Scale ($0.002/Query)

Run it yourself in minutes

New users get $5 free credit (no card). Browse the full 300+ actor catalog and run any tool on pay-per-use pricing.

Browse actors on Apify

More from the blog

DTC Brand Competitor Analysis: Tracking Facebook Ad Creative at ScaleJuly 14, 2026

DTC Brand Competitor Analysis: Tracking Facebook Ad Creative at Scale

DTC Brand Competitor Analysis: Tracking Facebook Ad Creative at Scale

Citation Analysis at Scale: Track Research Trends with Semantic Scholar DataJuly 14, 2026

Citation Analysis at Scale: Track Research Trends with Semantic Scholar Data

Citation Analysis at Scale: Track Research Trends with Semantic Scholar Data

How to Find Undervalued Properties Using Redfin Data and Price-Per-Square-Foot AnalysisJuly 14, 2026

How to Find Undervalued Properties Using Redfin Data and Price-Per-Square-Foot Analysis

How to Find Undervalued Properties Using Redfin Data and Price-Per-Square-Foot Analysis