Build the browser stack, or make one API call. Code for both.
Google stopped serving results to plain HTTP clients: the page needs JavaScript, bot checks guard it, and suspicious visitors get a block page. Which route is right depends on how much plumbing you want to own.
| Build it yourself | Call an API | |
|---|---|---|
| Setup | Headless Chrome, stealth patches, a proxy account, parser code. Days before the first clean result | One HTTPS GET. Minutes |
| IPs and blocks | Your problem. Datacenter IPs hit the block page fast, so you buy and rotate residential or ISP proxies | Our problem. You never see a block page |
| Parsing | You write selectors against scrambled class names that change without notice | Stable JSON, same field names every time |
| Cost shape | Proxy and server bills arrive whether your queries worked or not | one charge per query that returns results. Failures and empties cost nothing |
| Maintenance | Ongoing. When Google changes markup, your pipeline goes dark until you patch it | Ours |
| Best for | Scraping is your core product and you want control of every layer | You want the data, without owning the plumbing |
If you go DIY, here are the four layers you end up building, in the order you hit them.
For a handful of queries a day from your own machine, a small script genuinely works. The short version looks like this:
Run that a few hundred times in an hour and you will meet the block page. At that point you start buying proxies and writing rotation logic, and the project stops being a script and starts being infrastructure.
From zero to your first JSON in about two minutes:
Create a free account. Try it free, no card needed.
Copy your key. It is on the dashboard the moment you are in.
Run the curl below. Or type the search in the playground and export CSV, no code at all.
The other route is one HTTPS GET. Auth is your key in the x-api-key header. Blocks, retries, and parsing are our problem, and you are only charged when a query returns results.
Useful parameters: gl for country, hl for language, page for deeper pages, location for city-level results. The full list is in the docs, and you can run queries in the playground without writing code.
A stable, serper-compatible shape: ranked organic results with positions, plus knowledge graph, people-also-ask, and related searches when Google shows them. Here are the top rows as CSV, then the same response as JSON, trimmed for space:
Published median for web search is about 1.2 seconds. The shape stays put, so the parser you write today keeps working.
Swap type=web for any other Google surface on the same endpoint, same key, same billing. Here is a real autocomplete call we ran while writing this page:
One note on emails: Google results and Maps records do not include email addresses. Maps gives you name, address, phone, website, rating, reviews, categories, and hours. Verified emails come from our LinkedIn people search (beta) endpoints, which are separate.
Deeper dives: Google Maps scraper API · Google Reviews API · the official Google Search API, compared
You pay the applicable price per successful search. A search that fails or comes back empty costs nothing. Here is the ladder:
| Deposit | Google Search / 1,000 requests | Maps / 1,000 businesses | LinkedIn reads / 1,000 requests | People, Jobs, Refresh / 1,000 units |
|---|---|---|---|---|
| $10+ | $1.00 | $1.96 | $6.00 | $1.96 |
| $149+ | $0.76 | $1.49 | $4.50 | $1.49 |
| $549+ | $0.56 | $1.10 | $3.30 | $1.10 |
| $1,999+ | $0.41 | $0.80 | $2.45 | $0.80 |
| $6,500+ | $0.33 | $0.65 | $1.95 | $0.65 |
| $27,500+ | $0.28 | $0.55 | $1.65 | $0.55 |
| $50,000+ | $0.26 | $0.50 | $1.50 | $0.50 |
| $100,000+ | $0.20 | $0.40 | $1.50 | $0.40 |
Every eligible account gets $6 of free usage monthly. Each deposit keeps its prices until spent; paid funds never expire. People and Jobs bill per successful search, Refresh per accessible profile. Full profiles in People use the read rate per full profile. See all billing details.
Larger deposits unlock lower endpoint prices. Each deposit keeps its prices until spent. See the full deposit table on the pricing page. Prices in USD, ex-tax.
Paid funds never expire. People search with type=maps bills the Maps rate per business returned instead of per search.
Most guides dodge this or oversell it, so here is the neutral version. Logged-out, public-only collection has repeatedly defeated computer-fraud and contract claims.
Google's Terms of Service separately prohibit automated access, and a terms violation is a contract matter for whoever does the collecting. The results themselves are mostly facts: links, titles, and rankings.
What you do with the data carries its own rules. GDPR and CCPA apply to any personal data you store, and copyright applies if you republish full pages wholesale.
Our own line: we stay on public, logged-out pages, with no fake accounts and no login walls. None of this is legal advice. For anything load-bearing, ask a lawyer.
When DIY is the better pick: scraping is your core product, you only need a handful of queries a day, or you want to learn the plumbing. Those are real cases. If you are shopping hosted APIs, Serper and SerpApi are both solid; see CrustAPI vs Serper and CrustAPI vs SerpApi.
Stated neutrally: logged-out, public-only collection has repeatedly defeated computer-fraud and contract claims, while Google's Terms of Service prohibit automated access, which is a contract matter for whoever does the collecting. The results are mostly facts: links, titles, rankings. Laws like GDPR and CCPA still apply to any personal data you store, however it was collected. None of this is legal advice.
No. You make one HTTPS GET with your key in the x-api-key header. The blocks, the retries, and the parsing are all handled on our side. That is the whole point of the API route.
You pay nothing. Billing is one charge per query that returns results, so failures and empty result sets are free. You are never charged for a block page you did not see.
Published numbers: web search runs about 1.2 seconds at the median, Maps about 1 second, and reviews about 0.3 seconds.
Yes. Twelve Google search types run through the same endpoint: web, maps, places, news, shopping, images, videos, scholar, patents, autocomplete, webpage, and reviews. Change the type parameter and nothing else.
Google Search starts at $1.00 per 1,000 successful requests, Maps at $1.96 per 1,000 businesses, LinkedIn reads at $6.00 per 1,000 successful requests, and People, Jobs and Refresh at $1.96 per 1,000 billing units. Full profiles in People use the LinkedIn read rate per full profile. Each deposit saves its own prices until spent. Every eligible account gets $6 of free usage monthly; paid funds never expire.
The free plan covers a real project. Skip the proxy shopping and see what comes back.
Try for free