SERP guide · comparison table
SERP API vs Google Custom Search
A reference table, not an essay: twelve rows that set a live SERP API next to Google's Custom Search JSON API, using Google's documentation for the Custom Search column.
Published · Updated
Twelve rows, side by side
Custom Search facts come from Google's public documentation; quotas and prices are left to that documentation.
Data source
/v1/serp: The live public results page, fetched per request
Custom Search JSON API: The index behind a Programmable Search Engine you configure
Engines
/v1/serp: Google, Bing, Yahoo, DuckDuckGo, Baidu and Ecosia organic
Custom Search JSON API: Google only
News and Images
/v1/serp: Google News (news[]) and Google Images (images[]) endpoints
Custom Search JSON API: Image search via a search type parameter; see Google's docs
Locale parameters
/v1/serp: country and hl (Google and Ecosia bodies)
Custom Search JSON API: gl, hl and related parameters per Google's docs
Async
/v1/serp: Google tasks: POST …/tasks returns 202, then poll GET /v1/serp/tasks/{task_id}
Custom Search JSON API: Synchronous requests
Billing unit
/v1/serp: Display rate 2 Credits per successful search; failed searches are not charged
Custom Search JSON API: Per Google's pricing page
Official status
/v1/serp: Third-party SERP API, not affiliated with Google
Custom Search JSON API: Google's own API
Site restriction
/v1/serp: None: public results only
Custom Search JSON API: Yes, through cx
Result fields
/v1/serp: organic[]: rank, title, url, display_url, snippet; organic_count
Custom Search JSON API: items[] with title, link, snippet and more per Google's docs
Errors
/v1/serp: 400, 401, 402, 403, 409, 429, 502, 503
Custom Search JSON API: Per Google's docs
Idempotency
/v1/serp: Idempotency-Key header, 1–128 characters
Custom Search JSON API: Not documented as a feature
Terms
/v1/serp: SpideyData terms; you assess the terms of the sites you research
Custom Search JSON API: Google's API terms of service
An observation developers report
Developers on Stack Overflow have reported that Custom Search results do not always match what a browser shows for the same query. We note this only as a reported observation: the two read different sources, so differences are expected, not a sign that either one is wrong.
If your product shows users where a page ranks in the browser, a live SERP is the closer source. If it searches your own content, Custom Search is built for that.
When to pick which
- Searching your own site or a fixed site list: Custom Search.
- Reporting public rank positions, or the same query across engines: a live SERP API.
- Both needs at once: run both and keep their numbers in separate columns.
Launch status for this page
Check engine availability before choosing an endpoint. Google also supports News, Images and asynchronous tasks.
- GoogleGoogle is callable today with a Bearer API key.
SERP searches are charged per successful search at a display rate of 2 Credits per search; failed searches are not charged. Polling task status is free. The current rate is on Pricing.
Frequently asked questions
Which one returns live ranking positions?
The SERP API: organic[].rank is the position on the fetched results page. rank can be null when a position cannot be read.
Does SpideyData support async requests?
Yes, for Google: organic, news and images tasks return 202 with a job, and you poll GET /v1/serp/tasks/{task_id} until it completes. Polling is free.
What error do I get without enough Credits?
402 InsufficientCredits. Add Credits and retry with the same Idempotency-Key.
Need public rank positions?
Use the live SERP column: one Bearer key, organic[] with rank, and the same shape on six engines.