Best Google scraper in 2026: DIY vs scraper APIs vs SERP APIs
A SERP API sends a query and gets parsed JSON back, and the vendor absorbs markup changes, localization and failed fetches. A general scraper API fits when Google is one target among many sites you already collect. Building your own is justified when collection is the product you sell. Below: the three approaches, where each breaks, and eleven vendors on prices and features checked on 2026-09-17.
This page covers trade-offs, not ways around any site’s bot protection.
The three approaches
| Build it yourself | Scraper API | SERP API | |
|---|---|---|---|
| What you send | HTTP requests or a headless browser to google.com | A URL or a Google query to the vendor | A query plus targeting parameters |
| What you get | HTML you parse | HTML, and for Google usually a parsed JSON option | Parsed JSON per SERP feature, usually HTML on request |
| Who fixes breakage | You | Vendor for fetching; you or the vendor for parsing | Vendor |
| Pricing | Infrastructure plus engineering time | Credits per request, with multipliers for Google and rendering | Per search or per credit |
| Typical fit | Collection is your core product | Many target sites, Google among them | Search data feeds a product or analysis |
A scraper API is a hosted fetcher for arbitrary web pages that handles retries and optional browser rendering. A SERP API is specialized for search engines and returns the results page as structured data.
Why DIY Google scraping breaks
The first version of a Google scraper is quick to write; keeping it correct is the expensive part.
- Markup changes. Google’s result markup is not a public contract. A parser keyed to today’s structure returns empty fields tomorrow, and the costly failure is a block such as ads or People Also Ask that goes missing without an error and stays missing for a week.
- SERP features multiply. A results page can hold organic results, ads, a local pack, People Also Ask, a knowledge panel, shopping units, discussion cards and an AI Overview. Each needs its own parser with its own edge cases.
- JavaScript-loaded content. ScrapingBee’s docs say AI Overviews “require JavaScript rendering” (Google API docs), and Bright Data’s docs say its AI Overview option “launches a browser” (query parameters). Running browsers at volume costs far more than plain HTTP.
- Results depend on who is asking. Country, city, language, device and search settings all change the page. Reproducible rank data needs consistent control of each, from locations that match the market you report on.
- Automated traffic gets refused. Search engines limit automated access, so a DIY scraper spends a growing share of its effort on failed requests and on keeping success rates acceptable in every market, within each site’s rules.
- Legal and policy exposure. Collecting search results raises terms-of-service and jurisdiction questions that differ by use. SerpApi describes a “U.S. Legal Shield” on its pricing page and SearchApi describes up to $2M of coverage on its pricing page, both on higher plans; SearchApi’s excludes how you use the data.
DIY remains possible, but it is an ongoing engineering commitment, so the build-vs-buy decision turns on engineer time more than request prices. The same reasoning for AI assistants is in build vs buy for AI visibility.
When each approach wins
Build it yourself when collecting search data is what customers pay you for and owning the pipeline is a moat, when you need fields or behaviours no vendor offers and can staff parser maintenance, or when you already operate browser and proxy infrastructure for other reasons.
Use a scraper API when Google is one of many targets (retail sites, marketplaces, news) and one vendor simplifies procurement, when you want raw HTML and prefer to own parsing, or when you need occasional Google data and already pay for credits.
Use a SERP API when the output feeds your product (rank tracking, SEO tools, market research, agents), when you need specific SERP features parsed consistently, or when you want geo, device and depth as request parameters with a documented schema.
Comparison table
Entry prices and features from each vendor’s own pages, checked 2026-09-17.
| Vendor | Type | Surfaces covered | Pricing model and entry price | Free tier | AI Overview | Geo targeting | Async / webhooks |
|---|---|---|---|---|---|---|---|
| ScraperAPI | Scraper API | Any site; structured Google SERP, News, Shopping, Maps, Jobs | Credits; Hobby $49 for 100,000, Google 25 credits (pricing, costs) | 5,000 credits for 7 days | Not in documented SERP output | country_code, uule, gl, hl; US and EU only below Business |
Async endpoint with webhook |
| ScrapingBee | Scraper API | Any site; Google classic, news, maps, images, shopping, AI Mode; ChatGPT, Gemini | Credits; Hobby $19 for 75,000, Google 10 (light) or 15 credits (pricing) | 1,000 credits, no card | Yes, ai_overviews, regular requests only |
country_code, latitude/longitude |
Not documented |
| Scrape.do | Scraper API | Any site; Google Search incl. AI Overview and AI Mode, Maps, Shopping, News; ChatGPT, Gemini | Credits; Hobby $29 for 250,000, Google 10 credits (pricing) | 1,000 credits/month, no card | Yes, ai_overview |
gl, hl, location, uule |
Async API with webhooks |
| Oxylabs | Scraper API | Many sites; Google sources incl. AI Mode; Bing; ChatGPT, Perplexity | Plans; Micro $49, Google $1.00 per 1,000 without JS (pricing) | Up to 2,000 results, no card | Yes, with JS rendering | Country, city, coordinates | Push-pull callbacks, batches up to 5,000 |
| Bright Data | SERP API | Google, Bing, DuckDuckGo, Yandex, Baidu, Yahoo, Naver | Pay as you go $1.50 per 1,000 (pricing) | 5K requests/month | Yes, brd_ai_overview=2 |
195 countries, city level | Async with webhook |
| Apify | Hosted actor | Google organic, ads, PAA, AI Overview; assistant add-ons | Plan plus per-event; $2.50 per 1,000 pages on Starter (actor) | $5 usage/month | Yes, add-on event | Country, language, uule |
Runs, schedules, webhooks |
| SerpApi | SERP API | Google verticals and 100+ engine APIs | Plans; Starter $25 for 1,000 searches (pricing) | 250 searches/month | Yes | location, uule, coordinates |
async=true, archive retrieval |
| DataForSEO | SERP API | Google, Bing, Yahoo, Baidu, Naver, YouTube, Seznam | Pay as you go; $0.60 per 1,000 standard queue (pricing) | $1 credit | Yes, +1 base price | Location code, name or coordinates | Postback and pingback |
| SearchApi | SERP API | Google verticals, ChatGPT, Gemini, Perplexity, Bing and more | Plans; Developer $40 for 10,000 (pricing) | 100 requests, no card | Yes | location, uule, coordinates |
Not documented |
| Serper | SERP API | Google verticals | Prepaid packs; $1.00 per 1,000 on 50k (serper.dev) | 2,500 queries, no card | Not documented | Country, language | Not documented |
| AnswerLine | SERP and AI answers API | Google Search with AI Overview, AI Mode, Google News; ChatGPT, Perplexity, Gemini, Copilot, Grok | Credits; Google 3 credits per async task (pricing) | 500 credits/month, no card | Yes, include.aioverview |
country/gl, hl, location, uule, device |
Async tasks, 500-task batches, signed webhooks |
Scraper APIs
ScraperAPI
ScraperAPI is a general-purpose scraping API with structured endpoints for Google SERP, News, Shopping, Maps and Jobs, and async versions of each that accept a list of queries and call a webhook when done (async Google SERP). Its costs doc says it charges only for 200 and 404 responses, plus requests you cancel before 70 seconds. Every response carries an sa-credit-cost header, and a max_cost parameter caps a request. It offers a hosted MCP server.
Google requests cost 25 credits, so Hobby’s 100,000 credits are 4,000 searches ($12.25 per 1,000) and Business’s 3M are 120,000 ($2.49). Geotargeting is “US & EU only” on Hobby and Startup. The documented Google SERP output lists organic results, related questions, related searches and shopping items, with no AI Overview field.
Fits teams scraping many sites that want Google organic data from the same account.
ScrapingBee
ScrapingBee charges 10 credits per light Google request and 15 per regular request; its tooltip says a search “can cost 10 credits with Light Request enabled, 15 otherwise”. Parsed output covers organic_results, local_results, knowledge_graph, questions, top_ads and ai_overviews (with answer_text, bullet_list and source_panel), with add_html for the full page. Search types include news, maps, images, shopping and ai_mode, and a remote MCP server is documented.
AI Overviews come only with regular (rendered) requests. Its docs describe a synchronous API, with no webhook delivery documented. Credits are valid for one month.
Fits small to mid-volume Google collection with occasional AI Overviews, alongside other scraping.
Scrape.do
Scrape.do’s Google plugin returns parsed JSON at 10 credits per search, so Pro ($99, 1.25M credits) is 125,000 searches. AI Overview comes back in ai_overview with text_blocks and references, and deferred overviews can be fetched with a one-time session_key for 5 credits within 90 seconds (Google search docs). Its async API takes a WebhookURL, and it states you are charged only for successful responses.
Concurrency ranges from 10 on Hobby to 200 on Advanced, with a smaller separate pool for async jobs. No MCP server is listed on its site.
Fits cost-conscious teams wanting parsed Google plus AI Overview on a monthly plan, with webhooks.
Oxylabs
Oxylabs’ Web Scraper API has dedicated Google sources, parsed output (parse: true), geo_location down to city and coordinates, batches of up to 5,000 queries with callbacks, and delivery to cloud storage (push-pull docs). AI Overviews return in an ai_overviews array with answer_text and cited references. The same API has ChatGPT and Perplexity sources.
AI Overviews require render: "html", billed at the JavaScript rate ($1.35 per 1,000 on Micro). It bills 2xx and 4xx responses and exempts only its own 5xx and 6xx failures. Plans start at $49 a month.
Fits data teams running large multi-site collection that want Google in the same pipeline, with batch delivery.
SERP APIs
Bright Data
A SERP API across seven engines with parsed JSON (brd_json=1), 195 countries with city-level targeting, no stated concurrency limit, and billing only for successful requests. Pay as you go is $1.50 per 1,000; Scale is $499 for 380K. Async requests notify a webhook, though its docs say results can take up to 8 hours at peak. Fits teams that need many countries and high concurrency.
Apify
The Google Search Results Scraper runs as a hosted actor with per-event pricing ($2.50 per 1,000 pages on Starter, $1.80 on Business), add-on events for AI Overview, AI Mode, ChatGPT, Copilot, Gemini and Perplexity, schedules, dataset exports and webhooks. Fits low-volume or no-code projects and teams already on Apify.
SerpApi
The broadest engine catalogue, detailed Google JSON, AI Overview as text_blocks and references, a hosted MCP server, and legal coverage on higher plans. It costs $25 per 1,000 on Starter and caps hourly throughput at 20% of plan volume. Fits teams that value breadth and support over unit cost.
DataForSEO
The lowest published Google price for queued work ($0.60 per 1,000 standard, $2.00 live), batches of 100 tasks per call, postbacks, and a wider SEO data catalogue. Modifiers for depth, operators and the async AI Overview raise the price. Fits large scheduled rank-tracking jobs.
SearchApi
Per-search plans from $4 per 1,000 down to $1, billing only 200 responses, AI Overview and AI Mode engines, assistant engines, and a hosted MCP server. Throughput is capped at 20% of plan credits per hour and async delivery is not documented. Fits steady synchronous workloads.
Serper
Google results at $1.00 to $0.30 per 1,000 with high QPS and 2,500 free queries. Public pages do not document AI Overview, city targeting or async delivery, and credits expire after six months. Fits agents and enrichment jobs that need organic links fast.
AnswerLine
One call to POST /v1/monitor/google returns organicResults, peopleAlsoAsk, localResults, ads, shoppingCards, knowledgeGraph, relatedSearches and peopleAreSaying; include.aioverview adds an aioverview object with sources and citationPills. Targeting takes location or uule, device, and up to 10 pages. include.html adds the raw HTML, and a url field accepts a complete Google search URL instead of building the request from parts. Async tasks cost the base price and run in batches of up to 500 with idempotency keys and signed webhooks. ChatGPT, Perplexity, Gemini, Copilot, Grok and AI Mode answers come through the same API.
It covers Google web search and News only, with no Maps, Shopping, Images, Scholar or other engines as separate endpoints. Each Google page after the first costs 2 credits.
Fits SEO and AI-visibility products that need Google SERP features and AI answers in one schema.
curl -X POST https://api.answerline.dev/v1/monitor/google \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{ "query": "emergency plumber", "country": "US", "location": "Denver,Colorado,United States", "device": "mobile", "include": { "aioverview": {} } }'
import os
import requests
resp = requests.post(
"https://api.answerline.dev/v1/monitor/google",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
json={"query": "emergency plumber", "country": "US", "location": "Denver,Colorado,United States", "pages": 2},
timeout=320,
)
resp.raise_for_status()
result = resp.json()["result"]
for r in result["organicResults"]:
print(r["page"], r["position"], r["link"])
print("credits charged:", resp.headers.get("X-Credits-Charged"))
Selection criteria
- HTML or data. If you will parse anyway, a scraper API’s raw HTML is fine. If not, choose a vendor whose JSON covers every block you need, and check the field list in its docs rather than its marketing page.
- SERP features. List them: organic, ads, local pack, PAA, knowledge panel, shopping, AI Overview. Eliminate vendors missing a required one.
- Rendering. If AI Overview is required, budget at the rendered or add-on price.
- Geo precision. Country only, city, coordinates or
uule. Local SEO needs one of the last three. - Volume and delivery. Above a few thousand searches a day, prefer batches with callbacks over synchronous loops.
- Billing rules. Which status codes are billed, whether credits expire, whether throughput is capped per hour.
- Schema stability. A documented schema with additive changes protects downstream code. Track changes yourself too; see tracking SERP feature changes.
Cost example
A local SEO tool runs 50,000 Google searches a month: organic, People Also Ask and local pack, first page, no AI Overview. List prices checked 2026-09-17.
| Vendor | How the volume maps to a plan | Monthly cost |
|---|---|---|
| DataForSEO, standard queue | 50,000 × $0.60 / 1,000 | $30 |
| Serper | 50k pack, used within the month | $50 |
| Bright Data | Pay as you go, 50,000 × $1.50 / 1,000 | $75 |
| DataForSEO, live | 50,000 × $2.00 / 1,000 | $100 |
| ScrapingBee, light | 500,000 credits fits Startup (1M) | $99 |
| Scrape.do | 500,000 credits fits Pro (1.25M) | $99 |
| Oxylabs | Micro covers 49,000; Starter covers 110,000 | $99 |
| Apify | Starter usage, 50,000 × $2.50 / 1,000 | $125 |
| SearchApi | Production covers 35,000; BigData covers 100,000 | $250 |
| ScraperAPI | 1.25M credits; Startup has 1M, so Business (3M) | $299 |
| SerpApi | Big Data covers 30,000; Searcher covers 100,000 | $725 |
| AnswerLine | 50,000 async tasks × 3 credits = 150,000 credits | See pricing |
There is no build-it-yourself row because that cost is mostly engineering time plus fetching infrastructure, and it varies too widely for one number. Estimate the hours to build and maintain a parser per SERP feature, plus the infrastructure to fetch reliably from every market you report on.
The cheapest rows have conditions: a queued result arrives in minutes, Serper documents only country and language targeting, and plan-bound vendors leave unused headroom. The per-volume table is in the cheapest SERP API breakdown, and a feature-first comparison is in best SERP APIs.
Pitfalls
- Comparing credits across vendors. A credit is a vendor-specific unit; convert to cost per Google search first.
- Deriving position from page order. SERP features push organic results down; use the vendor’s computed positions or one consistent rule of your own.
- Mixing devices and locations in one series. A mobile SERP in Denver and a desktop SERP with no location are different pages.
- Retrying without idempotency. Timeouts on long requests cause duplicate work and double billing unless the API supports idempotency keys.
Every block AnswerLine returns for a query is shown in typed Google results and on the Google Search engine page.
Questions
What is the best way to scrape Google search results?
A SERP API that returns parsed JSON needs the least maintenance, because the vendor handles collection and parsing. A general scraper API suits teams that already scrape many sites, and building in-house makes sense when collection itself is your product.
Why does a homemade Google scraper keep breaking?
Google's result pages change markup without notice, vary by location, device and language, load some features such as AI Overviews with JavaScript, and limit automated traffic. Each of those becomes parser fixes, rendering infrastructure and failed requests you have to handle.
What is the difference between a scraper API and a SERP API?
A scraper API fetches any URL and returns HTML, sometimes with parsers for popular sites, and charges by request or credits. A SERP API handles search engines only and returns results already split into organic results, ads, People Also Ask, local results and other features.
Is scraping Google legal?
It depends on jurisdiction, what you collect, how you use it and the site's terms of service. Get legal advice for your use case; SerpApi and SearchApi describe legal coverage on their pricing pages.
How much does a Google scraper API cost per 1,000 searches?
On list prices checked 2026-09-17, from $0.60 per 1,000 in DataForSEO's standard queue and about $1 on large Serper packs to $25 on SerpApi's smallest plan. Credit-based scraper APIs charge several credits per Google request, for example 25 at ScraperAPI and 10 at Scrape.do.
Does AnswerLine return raw HTML?
Yes. The Google Search endpoint returns parsed JSON by default and adds the raw HTML when include.html is true.