Switch in one line
SerpApi-compatible API
Keep your code. Point your SerpApi calls at api.crawlerdata.com/search.json: the same parameters and the same JSON layout, from $1.00 down to $0.30 per 1,000 searches on prepaid credits, with no subscription.
Before
curl "https://serpapi.com/search.json?engine=google&q=coffee+shops&gl=us&hl=en&api_key=YOUR_SERPAPI_KEY"After
curl "https://api.crawlerdata.com/search.json?engine=google&q=coffee+shops&gl=us&hl=en&api_key=YOUR_CRAWLERDATA_KEY"What it costs
SerpApi lists $25 for 1,000 searches a month on Starter and $725 for 100,000 on Searcher (SerpApi pricing, checked October 2026). On CrawlerData, 1,000 searches cost $1.00 on the $50 Starter pack, and 100,000 searches a month come to $75 a month with one $375 Standard pack covering five months.
Python and Node.js
import requests
BASE_URL = "https://api.crawlerdata.com/search.json" # was https://serpapi.com/search.json
results = requests.get(BASE_URL, params={
"engine": "google_shopping",
"q": "sony wh-1000xm5",
"gl": "us",
"api_key": "YOUR_CRAWLERDATA_KEY",
}, timeout=200).json()
for item in results["shopping_results"][:5]:
print(item["position"], item["title"], item.get("price"))const BASE_URL = 'https://api.crawlerdata.com/search.json'; // was https://serpapi.com/search.json
const params = new URLSearchParams({ engine: 'google', q: 'best crm software', gl: 'us', api_key: process.env.CRAWLERDATA_API_KEY });
const results = await (await fetch(`${BASE_URL}?${params}`)).json();
console.log(results.organic_results.slice(0, 3), results.ai_overview?.references?.length);Engines
- engine=google
- organic_results, ads, ai_overview, related_questions, local_results, top_stories, knowledge_graph, related_searches. tbm=nws, isch, shop and lcl switch to the News, Images, Shopping and Local tabs.
- engine=google_shopping
- shopping_results with position, title, product_id, source, price, extracted_price, old_price, thumbnail and link.
- engine=google_news
- news_results with title, link, source, date, snippet and thumbnail.
- engine=google_images
- images_results with title, original, thumbnail, source and link.
- engine=google_local
- local_results with title, rating, reviews, type, address, hours and website.
- engine=google_autocomplete
- suggestions with value.
Parameters
- q
- The search query.
- gl
- Country, one of 31 two-letter codes such as us, gb, de, fr, au.
- hl
- Interface language.
- location
- City-level targeting with a canonical name, e.g. "Austin,Texas,United States".
- uule
- Raw encoded location, for advanced use.
- device
- desktop or mobile.
- start
- Result offset for paging.
- api_key
- Your CrawlerData API key. An Authorization: Bearer header works too.
FAQ
- Do I need a new SDK?
- No. If your code calls https://serpapi.com/search.json with query parameters, change the base URL to https://api.crawlerdata.com/search.json and use your CrawlerData API key. The parameters and the JSON layout stay the same.
- Which engines are supported?
- google (including the News, Images, Shopping and Local tabs through tbm), google_shopping, google_news, google_images, google_local and google_autocomplete.
- How is it billed?
- Like every CrawlerData request: 1 credit per search from prepaid packs, $1.00 per 1,000 down to $0.30 at volume, valid 6 months, no subscription. Failed requests are not charged.
- Can I try it before switching?
- Yes. Sign up with a work email for 50 free credits, run a few of your real queries against /search.json and compare the output side by side.
- What about Google Shopping sellers?
- Our native API has a sellers endpoint that returns every seller for a product in one request, sorted by total price, at 1 credit per 10 sellers. Use it next to /search.json with the product_id from shopping_results.
Test it on your own queries
50 free credits with a verified work email. Failed requests are never charged.