Google Search Scraper: SERP, Ads & AI Overview avatar

Google Search Scraper: SERP, Ads & AI Overview

Pricing

from $0.08 / 1,000 search results

Go to Apify Store
Google Search Scraper: SERP, Ads & AI Overview

Google Search Scraper: SERP, Ads & AI Overview

Scrape Google search results for any keyword and country: organic rank, title, URL, snippet, date, sitelinks, People also ask, related searches, AI Overview and ads. Rank tracking, SEO research.

Pricing

from $0.08 / 1,000 search results

Rating

0.0

(0)

Developer

Trevor Ortega

Trevor Ortega

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

7 days ago

Last modified

Categories

Features

Limited permissions

Share

Google SERP Scraper: Rankings, Ads & AI Overview

Scrape Google search results for any keyword, country, language or city. For every search you get one row per organic result (position, title, URL, displayed URL, domain, snippet, date, sitelinks), plus one summary row per results page with People also ask questions, related searches, the AI Overview text and its sources, Top stories and the list of SERP features Google showed. Turn on ads to get every text ad with its landing URL, at no add-on fee.

Use it for SEO rank tracking, keyword and content research, competitor and brand monitoring, building URL and domain lists, or feeding fresh Google results to an AI agent. No Google API key, no browser, no login.

What data does it extract?

Every row has a type (organic, serp or ad), searchTerm, page, country, language, googleDomain, searchUrl (the Google URL, to open in a browser) and scrapedAt.

FieldRowsDescription
positionorganicOrganic rank for the search, continuing across pages (page 2 starts after page 1's last result)
positionOnPageorganicRank on its own results page
titleorganic, adResult title
urlorganic, adTarget URL. Ads: the landing URL, read from the page (ads are never clicked)
displayedUrlorganic, adThe URL / breadcrumb Google prints under the title (https://www.cnet.com › ... › VPN)
domainorganic, adHost of the result (www.cnet.com), filled even when Google hides the URL
siteNameorganic, adSite name Google shows (CNET, Reddit · r/running, YouTube · Channel), or the advertiser
descriptionorganic, adSnippet text (without the date)
dateorganicDate Google shows with the result (Oct 20, 2026, 6 days ago, 06.10.2026)
emphasizedKeywordsorganicWords Google printed in bold in the snippet
siteLinksorganic, adSitelinks under the result: [{title, url, description}]
richSnippetorganicExtra line under some results: ratings, prices, views, comments (4.7 (5,077), 330+ views · 1 year ago)
resultType, videoDurationorganicweb or video; video length (4:56)
urlSource, googleRedirectUrlorganicWhere url came from: page (printed in the page) or googleRedirect (see FAQ); googleRedirectUrl is kept only if the URL could not be read
adPlacement, adPositionadtop or bottom, and the rank within that block
organicResultsCount, adsCount, firstPosition, lastPositionserpWhat the page contained
peopleAlsoAskserpQuestions in the "People also ask" box
relatedSearchesserp[{query, url}] from "People also search for"
aiOverviewserp{text, sources: [{title, url}]} when Google shows an AI Overview (the text rendered in the page)
topStoriesserp[{title, source, publishedAt, dateText, section, url, googleRedirectUrl}]: Top stories and "What people are saying" cards
serpFeaturesserpBlocks on the page: AI Overview, People also ask, Videos, Top stories, Ads, ...
hasNextPageserpWhether Google offers another page
detectedLocationserpThe location Google says it used, from the page footer, as Google words it: {name, source} (Austin, Texas / From your IP address, or Unknown / Can't determine location)
changeType, previousValuesorganic (monitoring)new or changed, and the old position

Example output

An organic result:

{
"type": "organic",
"position": 1,
"positionOnPage": 1,
"title": "Sourdough Bread: A Beginner's Guide",
"url": "https://www.theclevercarrot.com/2014/01/sourdough-bread-a-beginners-guide/",
"displayedUrl": "https://www.theclevercarrot.com › 2014/01 › sourdoug...",
"domain": "www.theclevercarrot.com",
"siteName": "The Clever Carrot",
"description": "In a large bowl, add the sourdough starter, water and olive oil. Mix with a fork to combine, then add the flour and salt. Continue mixing until...",
"date": "Oct 17, 2025",
"emphasizedKeywords": ["In a large bowl, add the sourdough starter, water and olive oil"],
"siteLinks": [],
"richSnippet": "4.9 (1,444) · 14 hr",
"resultType": "web",
"videoDuration": null,
"urlSource": "page",
"googleRedirectUrl": null,
"searchTerm": "how to make sourdough bread",
"page": 1,
"country": "us",
"language": "en",
"googleDomain": "google.com",
"searchUrl": "https://www.google.com/search?q=how+to+make+sourdough+bread&hl=en&gl=us&uule=w%2BCAIQICINVW5pdGVkIFN0YXRlcw",
"scrapedAt": "2026-11-05T15:17:44Z"
}

The SERP summary row of the same page (shortened):

{
"type": "serp",
"organicResultsCount": 6,
"adsCount": 0,
"firstPosition": 1,
"lastPosition": 6,
"peopleAlsoAsk": [
"What is the secret to making good sourdough bread?",
"What is the biggest mistake beginners make with sourdough bread?",
"What is the 3 ingredient sourdough?",
"How difficult is sourdough bread to make?"
],
"relatedSearches": [
{"query": "Sourdough starter Kit", "url": "https://www.google.com/search?q=Sourdough+starter+Kit"},
{"query": "How to make sourdough bread without starter", "url": "https://www.google.com/search?q=How+to+make+sourdough+bread+without+starter"}
],
"aiOverview": {
"text": "Classic artisan sourdough bread uses just four simple ingredients: active sourdough starter, bread flour, water, and sea salt. ...",
"sources": [
{"title": "Farmhouse on Boone", "url": "https://www.farmhouseonboone.com/beginners-sourdough-bread-recipe/"},
{"title": "The Best Sourdough Bread Recipe, Video, watch on YouTube", "url": "https://www.youtube.com/watch?v=McqmnU1vVe4&t=6"}
]
},
"topStories": [],
"serpFeatures": ["AI Overview", "Recipes", "People also ask", "Videos", "Short videos"],
"hasNextPage": true,
"searchTerm": "how to make sourdough bread",
"page": 1
}

How to scrape Google search results

  1. Add one or more search terms (one per line). Google operators work: site:example.com pricing, "exact phrase", intitle:review, filetype:pdf, -word, after:2026-01-01. You can also paste a full Google search URL (https://www.google.co.uk/search?q=coffee&hl=en); it keeps its own domain, country, language, start page and filters.
  2. Pick the country and, if you want, the interface language, an exact location (city) and a time period.
  3. Set Results pages per search (1 page = up to 10 organic results) and start the run.
  4. Download the dataset as JSON, CSV, Excel or HTML, or read it through the Apify API. The dataset has three views: Organic results, SERP summary and Ads.

Input example:

{
"queries": ["best running shoes", "site:reddit.com marathon training plan"],
"countryCode": "us",
"maxPagesPerQuery": 3,
"includeAds": true
}

How much does it cost?

You pay $0.08 per 1,000 rows (result event: an organic result, an ad or a page's summary row) plus Apify's platform usage, which is almost all the Google SERP proxy: Apify bills $0.0025 per results page on the Free and Starter plans ($0.002 on Scale, $0.0017 on Business), plus about $0.0002 of compute per page.

A typical page (about 9 organic results + 1 summary row) costs about $0.0035 in total on the Free plan, about 22% less than the $0.0045 per page that the most used Google search actor charges on the Free plan, and ads are included instead of being a $0.0065-per-page add-on. 1,000 keywords x 1 page ≈ $3.5.

Why do some results come with urlSource: googleRedirect?

Google currently serves many results pages with encrypted redirect links (/goto?url=...) instead of the real target URLs; which pages get them depends on the network route of each request. For those pages the actor asks Google for each redirect's target (one small request per result, from the run's own IP, not through the paid proxy) and fills url with it. In our test runs 199 of 204 organic results (97.5%) got their URL this way or straight from the page. If Google refuses a redirect, the row keeps url: null, the domain and displayedUrl from the page, and a googleRedirectUrl that opens the result in a browser. Ads are never followed.

Can I get results for another country, language or city?

Yes. Country sets the Google domain (google.de, google.co.uk, ...), gl, and a country-level location (Google's uule), so Google ranks for that country instead of wherever Apify's proxy exits (a German search saved without it was placed in Delhi). About 50 countries work through pasted Google URLs (https://www.google.com.ar/search?q=...).

Exact location (best effort) sends Google's canonical location name (Austin,Texas,United States) for local searches like "plumber near me". Google applies it on some requests only: in our tests 3 of 7 requests came back with Austin results, the others with results from all over the US. The summary row's detectedLocation shows the location Google reported (not a guarantee either). Ads are chosen by Google's ad system and can follow the proxy's own location (a UK ad on a US search was seen).

Why do two runs of the same search give different results?

Google does not serve one fixed ranking. In our tests, six requests for "best project management software" (US, one minute apart) came back with two clearly different top-10s, three times each; Google's data centers and ranking experiments differ by network route, and Apify's Google SERP proxy picks a new route for every request. That is true for any tool that scrapes Google, and for real users. Treat a single run as a sample: for rank tracking, run on a schedule and compare positions over several runs; detectedLocation on the summary row shows which location Google said it used.

Monitor changes on a schedule

Turn on Only new or changed items and save the input as a task with a Schedule (for example daily). The actor remembers the results of earlier runs of the same search (term, country, language) and outputs only results that are new in the search or whose position changed, so you get a lightweight rank tracker. Unchanged results are not saved and not charged (the proxy cost per page still applies). Because Google's ranking varies between requests (see above), expect some "new" results that are really route-to-route variation. Each row gets changeType (new or changed) and, for moved results, previousValues with the old position. Use Monitoring key to keep several schedules on the same search separate. Ads and summary rows are not output in this mode.

Does it need a Google account or a browser?

No. It reads the same public results page anyone sees without logging in, through Apify's Google SERP proxy, and parses the HTML. No CAPTCHA solving and no cookies from your account.

The actor collects what Google shows publicly to anyone: result titles, URLs, snippets, questions and ads. Some results show public names (for example the author of a forum post or a news byline), which are exported as shown. Check Google's terms and the laws that apply to you for your use case, and use the data responsibly.

Limits

  • Up to 10 organic results per page (Google no longer supports num=100); 6-10 is common because Google mixes in videos, forums and other blocks. Deeper pages often broaden the query (page 3 of "best vpn" is about "vpn").
  • People also ask: questions only (Google loads the answers when you click).
  • The AI Overview is the text Google renders in the page; very long overviews can be cut where Google shows "Show more". AI Mode answers are not collected.
  • Knowledge panels, local map packs, shopping and image carousels are listed in serpFeatures but not parsed.
  • Google changes its page layout often; the daily health check of this actor watches for it.

Found it useful?

A ★ review on this Actor's Apify Store page helps other users find it and tells us what to improve. Issues and feature requests are welcome in the Actor's Issues tab.