One endpoint, organic results as clean JSON, saved to CSV.
Scraping Google yourself means driving a browser, dodging blocks, and parsing a page that keeps changing. Here you send one HTTP request and read JSON. Three steps:
Create a free account. Try it free, no card needed.
Copy your API key. It is on the dashboard right after signup.
Run the code below. Start with the curl test, then the Python script.
First a quick test with curl:
Then the same call in Python with the requests library. Install it with pip install requests, drop in a key, and run:
The organic list holds the ranked results in order. Here are the first two that came back, shown as CSV so they drop straight into Sheets or a spreadsheet:
Change q to any search you would type into Google, like project management tools or plumbers in miami.
Every result carries title, link, snippet, and position, plus a date when Google shows one. The snippet feeds a RAG pipeline or a report with no extra fetch. One result as CSV:
Or the same result as JSON, exactly as the API returns it:
The top level of the response wraps that list with the query you sent, the People Also Ask questions, and the related searches, so you capture the whole page in one call:
You can build a Google Search scraper with a headless browser and a parser, and plenty of tutorials show how. The trade is maintenance. Here is the difference in practice.
| Writing it yourself | CrustAPI | |
|---|---|---|
| Setup | Install a headless browser, handle blocks and page changes | One GET request, no browser |
| Output | Parse the results page yourself; selectors break when the layout changes | Clean JSON from the API, or the same rows as CSV |
| Maintenance | Fix the parser each time Google changes the page | We keep it working |
| Free tier | Free, but you pay in time and blocked requests | $6 of free usage each month |
| Cost model | Server, proxy, and developer time | Pay per successful search, however many results; empty searches free |
| Storing the data | Yours to manage | No storage limits. Export to CSV or a database |
Each successful search is billed once at your Google Search rate, however many results come back. Empty searches cost nothing. Paid funds never expire.
| 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.
To go past the first page, add a page parameter and loop it: page 1 is the default, so set it to 2, 3, and up to walk deeper. Because the response is plain JSON, Python's built-in csv module writes every result to a file with no extra libraries:
Open results.csv in Sheets or Excel and you have a finished list of ranked results. Swap the query, run it again, and append to build a bigger dataset.
Related: Google Search API · Scrape Google search results · Serper alternative · Scrape Google Maps with Python · API docs
When a different tool fits better: a formal contract with an SLA, guaranteed uptime, or Google's own ranking APIs are Google Cloud products, not scraping. This endpoint returns the public results anyone sees on the page, which is what most SEO research, rank tracking, and RAG work needs, but it is not the official Custom Search API.
No. With the CrustAPI endpoint you send one HTTP request with the requests library and get clean JSON back. There is no browser to drive and no HTML to parse, so the code above is the whole scraper.
Title, link, snippet, position, and a date when Google shows one. The response also includes the People Also Ask questions and related searches, so you get the whole page as structured data.
Logged-out, public-only collection has repeatedly defeated computer-fraud and contract claims, while Google's Terms restrict automated access that violates instructions like robots.txt. What you get is the same public results anyone sees on the page.
Add a page parameter to the request and loop it. Page 1 is the default, so set page to 2, 3, and on to walk deeper into the results. Each page is its own search, so you pay one charge per page, however many results come back.
The response is plain JSON, so Python's built-in csv module writes it to a file in a few lines. The Save to CSV section above has the exact code, no extra libraries.
Yes. Try it free, no credit card, and paid funds never expire. That is enough to pull several full result pages while you build.
the free plan covers a real search. Run one query and look at the JSON that comes back.
Try for free