Google Search Results Scraper avatar

Google Search Results Scraper

Pricing

from $1.00 / 1,000 search results

Go to Apify Store
Google Search Results Scraper

Google Search Results Scraper

Scrape Google Search: organic results, ads, People Also Ask, related searches and pagination, with country, language and Google-domain controls. No API key. The proxy fallback is on by default because plain HTTP now hits Google's JavaScript gate. Blocked and empty runs cost only the start fee.

Pricing

from $1.00 / 1,000 search results

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

3

Monthly active users

2 days ago

Last modified

Share

Search Google and return structured, deduplicated result rows without an API key. The actor requests ordinary Google HTML directly first, then falls back to the proxy lanes.

Since 2026 Google requires JavaScript for /search. A plain HTTP request answers 200 with a ~90 KB challenge shell that contains no results, whatever address it comes from and whatever user agent it sends; following the shell lands on a page titled "Enable JavaScript to use search". This is reported as JS_REQUIRED, not as a block, because rotating IP addresses cannot fix it. enableProxyFallback is therefore on by default: the Google SERP lane is the transport that still returns server-rendered result HTML.

Returned data

  • organic: title, URL, domain, displayed URL, snippet, page, and rank.
  • ad: detectable paid search result title, URL, domain, and snippet.
  • people_also_ask: visible question and best-effort answer text.
  • related_search: related phrase and its Google search URL.
  • transport: direct when the direct request worked, or proxy_fallback_serp, proxy_fallback_datacenter, proxy_fallback_isp or proxy_fallback_customer when the fallback carried it, so downstream users can tell which path a row came from.

The actor supports site:, intitle:, quoted phrases, OR, negative terms, country (gl), language (hl), Google domain, and pagination. Duplicate URLs and repeated PAA/related phrases are removed across pages.

Input

query is the only meaningful required runtime value. maxResults is 1-100 and maxPages is 1-10. Ads, PAA, and related searches can each be disabled.

enableProxyFallback is on by default, and with the JavaScript gate in place you need it on to get any rows back. The actor still makes the direct request first and only opens a proxy after that request comes back as a block, a rate limit, a CAPTCHA, unusual-traffic, or the JavaScript gate. The fallback tries the Google SERP lane first, because that is the one that still answers with parseable HTML, then rotating Apify datacenter addresses. RESIDENTIAL is not offered: ask for it and the run quietly moves to datacenter and says so in a proxyNotice field on the output rows. Supply proxyConfiguration when you need a specific country. Your own proxy servers passed as proxyUrls are used verbatim and take precedence.

An empty input returns a representative non-empty sample row. It is marked _sample: true and is never charged.

Billing

$0.01 to start a run, then $0.001 per row returned — $1.00 per 1,000 rows. Flat: the same rate on every plan, no volume tiers and no minimum spend.

Every row that lands in the dataset is charged once, whether it is an organic result, an ad, a People Also Ask entry or a related search. maxResults is the cap on all of them together, so it is also the cap on what a run can charge you: maxResults: 10 cannot bill more than ten rows however many pages it reads.

What is never charged: the _sample row an empty input returns, and every diagnostic row. A search that is blocked, rate-limited, or simply finds nothing writes a diagnostic explaining which, and costs you the start charge and not a penny more.

The start charge counts once per gigabyte of run memory, so leaving the memory at its default keeps it at one.

Example

{
"query": "best running shoes site:example.com",
"countryCode": "US",
"language": "en",
"googleDomain": "google.com",
"maxResults": 20,
"maxPages": 2,
"includeAds": true,
"includePeopleAlsoAsk": true,
"includeRelatedSearches": true,
"enableProxyFallback": true
}