Google Custom Search JSON API alternative: same requests, same JSON
Google Custom Search API Alternative is an Apify Actor that replaces Google's Custom Search JSON API, which Google has closed to new customers and retires on 1 January 2027. It answers the same /customsearch/v1 requests with the same JSON (items with title, link, displayLink and snippet, plus image search), built from live Google results, at $5 per 1,000 searches with no daily cap.
Run it on Apify $5 per 1,000 searches of up to 10 results ($4 on Gold and above)
Quick facts
- Drop-in endpoint: replace https://www.googleapis.com/customsearch/v1 with https://automationnation--google-custom-search-api.apify.actor/customsearch/v1 and send your Apify token (token=… or Authorization: Bearer) instead of key=.
- Same parameters: q, num, start, gl, hl, lr, cr, safe, dateRestrict, siteSearch, exactTerms, excludeTerms, orTerms, fileType and searchType=image with its image filters; cx is accepted and ignored.
- Same JSON: kind, queries.request and nextPage, searchInformation and items[] with title, htmlTitle, link, displayLink, snippet, htmlSnippet and formattedUrl (image items add mime and image.contextLink, width, height, byteSize, thumbnailLink).
- Differences: it searches the whole web (pass site lists as siteSearch or site: operators), totalResults is a lower bound, there is no pagemap, and a request takes about 5–15 seconds.
- Price: $5 per 1,000 searches of up to 10 results, the price Google charged; searches with no results are free and there is no daily cap.
Example input
{
"queries": [
"best project management software"
],
"maxResultsPerQuery": 10
}
Run it from code
REST API (cURL)
curl -X POST "https://api.apify.com/v2/acts/automationnation~google-custom-search-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries": ["best project management software"], "maxResultsPerQuery": 10}'
Python
# pip install apify-client
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("automationnation/google-custom-search-api").call(run_input={
"queries": [
"best project management software"
],
"maxResultsPerQuery": 10
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("title"), item.get("link"), item.get("displayLink"), item.get("snippet"))JavaScript / Node.js
// npm install apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('automationnation/google-custom-search-api').call({
"queries": [
"best project management software"
],
"maxResultsPerQuery": 10
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) console.log(item.title, item.link, item.displayLink, item.snippet);
Use it with AI agents (MCP)
Connect AI assistants such as Claude, ChatGPT or Cursor through Apify's MCP server. Hosted URL:
https://mcp.apify.com?tools=automationnation/google-custom-search-api
Or run it locally in Claude Desktop / Cursor:
{
"mcpServers": {
"google-custom-search-api": {
"command": "npx",
"args": [
"-y",
"@apify/actors-mcp-server",
"--tools",
"automationnation/google-custom-search-api"
],
"env": {
"APIFY_TOKEN": "YOUR_APIFY_TOKEN"
}
}
}
}
FAQ
When does the Custom Search JSON API stop working?
Google closed it to new customers and says existing customers have until 1 January 2027 to move to an alternative.
Do I have to rewrite my code?
No. Change the endpoint to https://automationnation--google-custom-search-api.apify.actor/customsearch/v1 and send an Apify API token instead of the Google key; the parameters and the JSON response stay the same.
Can I keep my Programmable Search Engine's site list?
Not through cx, which is ignored. Pass one site as siteSearch, or several in the query as site:a.com OR site:b.com.
What does it cost?
$5 per 1,000 searches of up to 10 results ($4.50 on Silver, $4 on Gold and above), with no daily cap. Google charged $5 per 1,000 after 100 free queries a day; Apify's free plan includes $5 of monthly credit, about 1,000 searches.
Step-by-step guide: Google Custom Search JSON API shutting down in 2027? A drop-in replacement