Google CSE 50-Domain Free Limit: What Changes
Google CSE now limits free-tier engines to 50 domains. Web-wide search deprecated by Jan 2027. Migration paths and cost comparison.
Google Programmable Search Engine now limits free-tier custom search engines to 50 domains maximum. Any CSE configured with more than 50 domains requires a paid Google API key with billing enabled, and web-wide search is being phased out entirely by January 2027.
What the 50-domain limit means in practice
Before this change, you could add hundreds of domains to a CSE and approximate web-wide search by listing every domain you cared about. That workaround is dead. At 50 domains, a CSE is useful for searching your own properties or a small curated list -- not for building a general search feature.
- Site search for your docs, blog, and marketing pages: still works
- Searching across 100+ competitor domains for monitoring: broken
- Using CSE as a free SERP API for AI agents: no longer viable
- Open source projects shipping CSE as default provider: need migration
Timeline and enforcement
Google began enforcing the 50-domain cap in March 2026. Existing CSEs with more than 50 domains still work but cannot be edited without removing domains first. New CSEs are hard-blocked at 50. The broader web-wide search deprecation deadline remains January 2027.
Cost comparison for replacement APIs
If you were using CSE free tier (100 queries/day, ~3K/month), here is what equivalent volume costs elsewhere:
- Scavio: 250 free/mo, then $0.005/credit. 3K queries = ~$13.75/mo
- Tavily: 1K free/mo, then $30/mo Researcher tier
- Brave Search API: $5/1K queries, so 3K = $15/mo
- Google CSE paid tier: $5/1K queries, so 3K = $15/mo (same data, more cost)
- Serper: $50/yr Dev plan for 50K queries -- cheapest if Google-only is fine
Migration: drop-in API replacement
The fastest migration path is replacing the CSE HTTP call with a structured SERP API. The response shape is similar: both return arrays of title, link, and snippet.
import requests, os
# Old: Google CSE (limited to 50 domains, 100 queries/day)
def cse_search(query):
resp = requests.get("https://www.googleapis.com/customsearch/v1", params={
"key": os.environ["GOOGLE_API_KEY"],
"cx": os.environ["GOOGLE_CX"],
"q": query,
})
return resp.json().get("items", [])
# New: Scavio SERP API (no domain limit, richer data)
def scavio_search(query):
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": os.environ["SCAVIO_API_KEY"]},
json={"query": query, "num_results": 10},
)
data = resp.json()
return data.get("organic_results", [])What you gain by leaving CSE
Google CSE only returned basic organic results. Structured SERP APIs also return AI Overviews, People Also Ask, knowledge panels, local packs, and shopping results -- all parsed into JSON fields. You also get multi-platform search: Google, Bing, TikTok, YouTube, and Reddit from a single endpoint.
# Multi-platform search example
platforms = ["google", "bing", "reddit"]
for platform in platforms:
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": os.environ["SCAVIO_API_KEY"]},
json={
"query": "best CRM for small business 2026",
"num_results": 5,
"search_engine": platform,
},
)
results = resp.json().get("organic_results", [])
print(f"{platform}: {len(results)} results")If you still need domain-restricted search
For site search across your own properties (under 50 domains), CSE still works fine and remains free. If you need domain-restricted search across more than 50 domains, use the site: operator with a SERP API instead. It is more flexible and has no domain cap.
# Search across 200+ competitor domains using site: operator
curl -X POST "https://api.scavio.dev/api/v1/search" \
-H "x-api-key: $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "site:competitor1.com OR site:competitor2.com pricing",
"num_results": 20
}'Bottom line
The 50-domain limit and web-wide deprecation make Google CSE unusable for anything beyond basic site search. Migrate now while you can test both backends in parallel. The cost difference between CSE paid tier and dedicated SERP APIs is negligible, but the data quality gap is significant.