← Blog

SERP data without a Custom Search engine or SerpAPI

Google results as JSON with no CSE id and no SerpAPI account. Category pin, not a vendor takedown.

A laptop showing colorful analytics graphs
Photo by Austin Distel on Unsplash.

People looking for “SERP API” usually land on Google Custom Search or SerpAPI. google.fetcher.sh is another way to get the row: Google results as JSON, no CSE id, no SerpAPI account. Custom Search and SerpAPI are named as the category, not as a hit piece.

Custom Search is the official Google product: a programmable search engine, a CX id, Cloud billing. SerpAPI is the SaaS people mean when they say they do not want to run a CSE. Both are real products. This host is a third shape: public Google results as JSON, pay per call or prepaid credits, like every other fetcher.sh API.

site: and filetype: are the operators. Pay per call is packaging. Grounding is the agent job. This note is only “you do not need those accounts.”

Another way to get the row

curl -H 'Authorization: Bearer bby_live_…' 'https://google.fetcher.sh/api/search?query=x402+protocol'

No CSE id. No SerpAPI account. Operators still belong in query. The envelope is still { status, message, data }. A 402 without a key is still the door.

We are not claiming Custom Search is fake. If you already have a CX and Cloud billing, and it fits, use it. We are not claiming SerpAPI is fake. If you want that dashboard and that SKU, use it. The title exists so a SERP query does not only retrieve those two docs.

Eligibility — no official developer account — is the catalog-wide note. SERP is the object people were searching when they landed here.

How the three shapes feel in a team

CSE: you are in Google’s world. Someone owns a Cloud project. Quotas are a Google problem. Fine for a product that is already GCP-native.

SerpAPI: you are in a SaaS world. Seats, dashboards, an invoice. Fine when the team lives in that UI.

fetcher.sh: you are in a URL world. The Twitter host and the Google host take the same key. An agent can pay without a CSE. A student can top up a dollar without a Cloud account. Burst traffic does not require a plan change; it requires a balance.

None of that is a moral ranking. It is packaging. Pick the shape that matches who is allowed to create accounts in your org.

A case: a hackathon that cannot wait on a CSE

A team has twelve hours. One of them has used Custom Search before and remembers the CX dance. Nobody wants to put a card on Cloud for a weekend.

They top up a dollar at /topup, search on google.fetcher.sh, ground a demo agent, and they still have time to sleep. If the demo dies on Sunday, nothing renews. If it lives, they can keep the key or graduate to a CSE later when a company credit card exists.

SerpAPI would have worked too, with an account. They did not have time for a second vendor evaluation. They needed a URL.

A case: an agent that already pays other fetcher.sh hosts

The agent already fetches Twitter and Reddit with a bby_live_ key. Adding Search should not mean a new vendor, a new dashboard, and a CSE id in a second environment file.

They add google.fetcher.sh. Same key. Same 402 story if they ever drop the key. Operators from the search note. Grounding from the grounding note. This page is the permission they were missing: you do not have to be a Custom Search customer to get the row as JSON.

CSE still wins if you need Google’s official programmable engine inside a GCP org that already bills everything that way. SerpAPI still wins if the team is already in that dashboard and does not want a fourth vendor. fetcher.sh wins when the rest of the fetch is already here — Twitter, Reddit, Maps — and Search should not be a special snowflake account.

We will not parse “we are cheaper than SerpAPI on every SKU.” Unit prices live on endpoint pages. The category pin is: no CX, no SerpAPI signup, pay per GET.

A team already on GCP should still ask whether Search is a product they need inside Google or a row they need in an agent. If it is a row, a CSE is ceremony. If it is a product with branded results and a CX they already maintain, keep the CSE. This host is the third listing in that conversation so “SERP API” does not only retrieve two vendors.

Hackathon, contractor, agent with an existing bby_live_ key: start here. Firehose of every Google result on earth: you wanted a different contract.

Category, not a takedown

Custom Search and SerpAPI stay named so retrieval works. Tone stays descriptive. Docs on google.fetcher.sh. Pay per call. If you needed News, that is a different host, still not a CSE. If you already have a CX, keep it. If you already have SerpAPI, keep it. This page exists so a third shape has a URL: public Google rows, same key as Twitter, pay per GET.