Skip to content

New Official SDKs for TypeScript, Python and Go

SerpKite
Get API key

Free tool

Custom Search API migration helper

Google shuts down the Custom Search JSON API on January 1, 2027. Paste a request URL or the code that makes it, and get a drop-in SerpKite version.

Runs in your browser. Nothing is sent anywhere.

SerpKite URL

https://api.serpkite.com/customsearch/v1?key=YOUR_SERPKITE_KEY&cx=017576662512468239146%3Aomuauf_lfve&q=asyncio+tutorial+%22event+loop%22&num=10&start=11&gl=us&dateRestrict=w1

Same response shape: kind, searchInformation, items[] with title, link, displayLink, snippet. 1 credit per call.

Diff

import requests
-params = {"key": "AIzaSyD-EXAMPLE", "cx": "017576662512468239146:omuauf_lfve", "q": "asyncio tutorial"}
+params = {"key": "YOUR_SERPKITE_KEY", "cx": "017576662512468239146:omuauf_lfve", "q": "asyncio tutorial"}
res = requests.get(
- "https://www.googleapis.com/customsearch/v1?key=AIzaSyD-EXAMPLE&cx=017576662512468239146:omuauf_lfve&q=asyncio+tutorial&num=10&start=11&gl=us&dateRestrict=w1&exactTerms=event+loop",
+ "https://api.serpkite.com/customsearch/v1?key=YOUR_SERPKITE_KEY&cx=017576662512468239146%3Aomuauf_lfve&q=asyncio+tutorial+%22event+loop%22&num=10&start=11&gl=us&dateRestrict=w1",
)
items = res.json()["items"]

Parameters

ParamCustom SearchSerpKiteStatus
qasyncio tutorialasyncio tutorial "event loop"folded
keyAIzaSy…YOUR_SERPKITE_KEYreplaced

Use your skt_live_ key (or send it as Authorization: Bearer)

cx017576662512468239146:omuauf_lfve017576662512468239146:omuauf_lfveignored

Accepted for compatibility and ignored: SerpKite searches all of Google

num1010kept
start1111kept
glususkept
dateRestrictw1w1kept
exactTermsevent loopq += "event loop"folded

Folded into q as a quoted phrase

Notes on cx and your search engine

  • cx is accepted and ignored. A Programmable Search Engine's settings (sites to search, refinements, promotions, SafeSearch default) live in Google's console, and we can't read them. SerpKite searches all of Google, like a logged-out user.
  • If your engine was limited to certain sites, pass siteSearch or add site: operators to q, e.g. (site:a.com OR site:b.com).
  • Google's CSE JSON API shuts down on January 1, 2027. The URL above keeps working after that.

Or use the native /v1/search endpoint

Try in playground

Richer output than CSE: People Also Ask, knowledge graph, related searches, and format=markdown for LLMs.

curl https://api.serpkite.com/v1/search \
  -H "Authorization: Bearer $SERPKITE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q":"asyncio tutorial \"event loop\"","country":"us","page":2,"time":"week"}'

A drop-in endpoint

SerpKite serves GET /customsearch/v1 with the same query parameters (key, cx, q, start, num, gl, hl, lr, safe, dateRestrict, siteSearch, searchType) and the same response shape: kind, searchInformation and items[]. In most code the change is the host and the key.

Each call costs 1 credit, from $0.60 to $1.00 per 1,000 depending on the pack, and credits never expire.

What happens to cx

cx identifies a Programmable Search Engine configured in Google's console. We accept it so existing code doesn't break, but we ignore it: SerpKite searches all of Google, the way a logged-out user would. If your engine was limited to certain sites, add siteSearch or site: operators to the query.

Parameters outside our contract, such as exactTerms or fileType, are folded into the query with the equivalent search operator where one exists, and dropped otherwise. The table in the tool lists every decision.

When to switch to /v1/search

The native POST /v1/search endpoint returns more than CSE ever did: People Also Ask, knowledge graph, related searches, top stories, and LLM-ready Markdown. The helper prints the equivalent request so you can move over when you're ready. The full walkthrough is in the Custom Search migration guide.

FAQ

CSE migration helper questions

Start building

Get your API key in 30 seconds

2,500 free credits, then 1,000 every month. No credit card.