Google Search Scraper avatar

Google Search Scraper

Pricing

from $0.15 / 1,000 results

Go to Apify Store
Google Search Scraper

Google Search Scraper

Scrape Google organic search results - position, title, URL and snippet - for any list of queries, with country, language and time-range targeting. Ads and AI overviews excluded, so position is true organic rank. One request per 10 results.

Pricing

from $0.15 / 1,000 results

Rating

5.0

(1)

Developer

Mary Lou

Mary Lou

Maintained by Community

Actor stats

2

Bookmarked

1

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Google Search Scraper — SERP results, rank tracking, no browser

Scrape Google organic search results for any list of keywords and export them as JSON, CSV or Excel. Every row gives you organic rank, title, URL and snippet, with country, language and time-range targeting.

Built for SEO monitoring and rank tracking: schedule it, diff position over time, and watch your keywords move. No browser, no API key, nothing to configure.


What you can do with it

  • Keyword rank tracking — run daily on your target keywords and chart position over time
  • SERP monitoring — see who is ranking, who moved, and who appeared
  • Competitor analysis — find every page a competitor ranks for using site: queries
  • Local SEO — the same keyword in us, gb, de returns different rankings; compare them
  • Content research — pull the top results and snippets for a topic cluster
  • Lead sourcing — turn site: and intent queries into domain lists, then feed them to a contact scraper
  • Feed a RAG pipeline or LLM with fresh, ranked search results

How to scrape Google search results

Paste your search terms into Search queries, one per line, and press Start. That is the whole setup.

Google search operators all work:

OperatorExample
Site restrictionsite:apify.com actor
Exact phrase"web scraping tools"
Exclusionpython scraper -selenium
Either/orserp api OR serp scraper
Title matchintitle:pricing
File typefiletype:pdf market report

Input

FieldWhat it does
Search queriesOne per line. Operators supported
Results per queryHow many organic results to return. 10 = one request
Country2-letter code (us, gb, de) — changes the ranking Google serves
Language2-letter interface language code
Time rangePast hour, 24 hours, week, month, year, or any time
SafeSearchGoogle's SafeSearch filtering
Max concurrencyHow many queries to run at once

Output

One row per organic result. Export as JSON, CSV, Excel, XML or RSS.

{
"query": "web scraping tools",
"position": 3,
"title": "5 Best Web Scraping Tools (Ranked By Real Tests)",
"url": "https://www.scrapingdog.com/blog",
"url_is_exact": false,
"displayed_url": "https://www.scrapingdog.com › Blog",
"snippet": "Jan 25, 2026 — Scrapingdog - Best overall for scalable, cost..."
}
FieldNotes
queryWhich search this result came from, so multi-keyword runs stay separable
positionTrue organic rank. Ads, AI overviews, shopping carousels and video shelves are excluded, not filtered afterwards
titleThe result headline
urlAbsolute URL — see the section below on how it is derived
url_is_exactWhether the URL is verbatim or reconstructed
displayed_urlGoogle's own breadcrumb form, verbatim and never guessed
snippetThe description text beneath the result

The same URL ranking for two different queries is two rows, because it is two rankings. Dedup is per query, not global.


About the URL field — read this one

Google now encrypts its outbound result links. Every link on a modern results page points at /goto?url=<encrypted blob>; the blob is opaque, the tracking attribute repeats the same blob, and requesting it directly returns an error. The real destination is genuinely no longer in the page.

What is in the page is the URL Google displays to a human — https://github.com › apify. So:

  • displayed_url is exactly what Google showed. Never guessed.
  • url is that turned back into a usable link.
  • url_is_exact tells you which kind you got:
    • true — Google displayed a bare domain, and the URL is verbatim
    • false — the path was rebuilt from breadcrumbs. The domain is always right; the path is usually right but can be off, because Google prettifies breadcrumbs and truncates long ones. When a path is truncated, only the origin is returned rather than a URL containing a literal ...
    • null — the result showed no URL at all, typically a video

Filter on url_is_exact when you need certainty. Measured across 20 results: 5 exact, 12 reconstructed, 3 with no URL. Any scraper claiming exact Google URLs today is either following every link individually — at 10x the requests — or guessing without telling you.


Pricing

$0.15 per 1,000 results, plus Apify platform usage.

Plan tierPrice per 1,000 results
Free / Bronze$0.17
Silver, Gold, Platinum, Diamond$0.15

Read the usage half before you scale this one up. Google serves no results at all to an ordinary HTTP client, so every request goes through Apify's SERP proxy, billed separately at $2.50 per 1,000 SERPs on Free and Starter. One request returns 10 results, so that works out at about $0.25 per 1,000 results — larger than the scraper charge itself, and the biggest line in any run. It falls to $2.00 per 1,000 SERPs on Scale and $1.70 on Business.

Compute is negligible next to that (~$0.01 per 1,000 results): there is no browser and no per-query API fee.

Requests cost money, not results. 10 results is one request, 100 results is ten. Set Results per query to exactly what you need.


FAQ

Why can't I just fetch google.com/search myself? You can, and you will get a page with no results in it. Google retired its no-JavaScript results page. A direct fetch returns a "please enable JavaScript" redirect; an older browser signature gets the cookie consent wall instead. Nine user-agent and parameter combinations were tested and every one returned HTTP 200 with zero results. This Actor routes through Apify's SERP proxy, which is what makes plain HTTP work at all.

Does it use a headless browser? No — and that is deliberate. A headless Chromium version was built and measured first: it timed out at 75 seconds per query and needed a ~1.5 GB image. Plain HTTP through the SERP proxy is 1.3–4 seconds per request and far cheaper.

Do I need to configure a proxy? No. It is fixed to the one group that works. A country set in the proxy options is honoured; the group is not changeable, because nothing else returns results.

Are ads included? No. position is organic rank only.

Can I get more than 100 results per keyword? Yes, but Google's own result depth thins out fast and quality drops. Raise Results per query; each extra page is one more request.

Why is a snippet occasionally empty? Some result types genuinely carry no description text. Coverage was 30/30 in the last measured run.

How fast is it? Measured on the platform: 60 results across 3 queries in 13 seconds.

Can I run it on a schedule? Yes — that is the main use. Run daily on a keyword list and diff position to track rankings.


  • Website Contact Scraper — turn the domains you find here into emails, phone numbers and social profiles
  • LinkedIn Jobs Scraper — job postings without a login or cookie
  • TikTok Ad Library Scraper, Meta Ads Library Scraper, Google Ads Transparency Center Scraper — competitor ad intelligence