ActorsComparePricingFAQAboutBrowse actors on Apify
Google SERP Scraper icon

Search and SEO

Google SERP Scraper: AI Overview, PAA and Rank Tracking

Google SERP Scraper is an Apify actor (API) by CheapAPI Labs. Organic results, ads, AI Overview, People also ask and the local pack for any keyword and country, with rank tracking. It costs $1.50 per 1,000 result pages on the Apify Free plan and $1.20 on Gold, plus $0.002 per run ($0.0006 on Gold), billed through your Apify account with no API key. The AI Overview shown on the page is included in the page price; forcing a late loading AI Overview costs $0.0009 per page.

Compared with the most used Apify Store actor for Google Search (about 193,000 users): 1,000 Google result pages costs $1.50 on Free and $1.20 on Gold here and $4.50 and $1.80 there (Apify Store listing prices, checked September 2026). The cheapest per page actor charges $0.50 on every plan but returns organic results only, without AI Overview or People also ask.

Our prices updated 30 October 2026; competitor prices as checked in the comparison. 33 Apify users have run this actor (Apify Store count, 30 October 2026).

Free plan$1.50per 1,000 result pages
Gold plan$1.20per 1,000 result pages
API keyNot neededbilled by Apify

What does Google SERP Scraper return?

Scrape complete Google search results pages as clean JSON, organic results, ads, AI Overview with every cited source, People also ask, local pack, featured snippet, knowledge graph and related searches, plus Google AI Mode, Google News, Google Images and built in rank tracking for your domains. No proxies, no Google account, no setup.

Why this Actor

  • Speed: standard processing (the default, no add on) usually delivers results in 1 to 5 minutes; choose Instant under Processing speed for results in seconds at +$0.0018 per page.
  • $1.50 per 1,000 result pages ($1.20 on Gold and above) with every SERP feature in the same row, no extra fee for the AI Overview shown on the page, People also ask, local pack, rank tracking or flat result rows.
  • Google AI Mode answers for $2.50 per 1,000 ($1.80 on Gold and above): the full answer text, Markdown and all cited sources, with your domain's citation position.
  • 32 fields per results page, 22 fields per organic result (position, absolute position, URL, displayed URL, sitelinks, rating, date …).
  • 249 countries, 91 languages, city level or GPS level location, desktop or mobile, any Google domain.
  • Built to finish runs: busy or network errors are retried automatically (up to 4 attempts with increasing waits); searches rejected before processing are free, searches Google answers with nothing cost only a small no results fee, and every problem is listed with the reason in RUN_SUMMARY; your maximum charge per run is checked before anything is requested, and the run stops cleanly at the limit.

One example row from a real run, shortened:

{
  "id": "482afcf38b538266347d",
  "rowType": "serpPage",
  "searchTerm": "pizza",
  "searchType": "organic",
  "country": "GB",
  "language": "en",
  "location": "London,England,United Kingdom",
  "device": "desktop",
  "googleDomain": "google.com",
  "searchUrl": "https://www.google.com/search?q=pizza&hl=en&gl=GB&ie=UTF-8&uule=w+CAIQIFISCXXeIa8LoNhHEZkq1d1aOpZS",
  "totalResultsEstimate": 1210000000,
  "serpFeatures": [
    "find_results_on",
    "local_pack",
    "organic",
    "people_also_ask",
    "related_searches",
    "google_reviews",
    "knowledge_graph"
  ],
  "scrapedAt": "2026-09-28T06:19:15.000Z",
  "page": 1,
  "organicResults": [
    {
      "position": 4,
      "absolutePosition": 9,
      "title": "30 best pizza restaurants in London 2026",
      "url": "https://www.bbcgoodfood.com/travel/the-best-pizza-in-london",
      "domain": "www.bbcgoodfood.com",
      "displayedUrl": "https://www.bbcgoodfood.com › Travel",
      "websiteName": "Good Food",
      "description": "12 Apr 2026 — Best for a bargain · 1. Vincenzo's · 2. Ria's · 3. Dough Hands · 4. Voodoo Ray's ·  Read more",
      "preSnippet": "04/12/2026 00:00:00",
      "extendedSnippet": null,
      "highlighted": [
        "1. Vincenzo's"
      ],
  …
}

Which fields do you get?

Every dataset row has a stable id and a rowType: serpPage (one Google results page), aiModeAnswer (Google AI Mode), or, when Also output one row per result is on, organicResult, paidResult, newsResult, imageResult or citation.

Results page (rowType: "serpPage")

Field Type Example
id string "482afcf38b538266347d", stable hash of row type, search context, page (position and URL for result rows) and capture time; use it to de duplicate appended exports
searchTerm string "pizza"
searchType string "organic" (or aiMode, news, images)
page integer 1
country / language string "GB" / "en"
location string or null "London,England,United Kingdom"
device string "desktop"
googleDomain string "google.com"
searchUrl string "https://www.google.com/search?q=pizza&hl=en&gl=GB&ie=UTF-8&uule=…" (the page Google was asked for)
totalResultsEstimate integer 1210000000
serpFeatures array of strings ["local_pack", "organic", "people_also_ask", "knowledge_graph"]
organicResults array of objects position, absolutePosition, title, url, domain, displayedUrl, websiteName, description, preSnippet, extendedSnippet, highlighted, date, rating, price, sitelinks, images, faq, isFeaturedSnippet, isImage, isVideo, isAmp, relatedResults
paidResults array of objects position, title, url, domain, description, sitelinks, price, rating
aiOverview object or null text, markdown, citations (position, title, url, domain, source, snippet), loadedAsynchronously
peopleAlsoAsk array of objects question, answer, sourceUrl, sourceDomain, answerIsAiGenerated, citations, revealedByQuestion
localPack array of objects name, phone, website, rating, reviewsCount, isPaid, googleMapsUrl
featuredSnippet object or null title, text, url, domain, table, images
knowledgeGraph object or null title, subtitle, description, details
topStories, videos, images, shopping, answerBox arrays / object when Google shows them
relatedSearches, peopleAlsoSearch, refinementChips array of strings ["Pizza near me", "Pizza near London"]
spellingCorrection object or null Google's "Did you mean"
otherFeatures array of objects every other SERP element Google shows
rankTracking array of objects domain, found, position, absolutePosition, page, url, title, resultsFromDomain, citedInAiOverview, aiOverviewCitationPosition, inFeaturedSnippet, inPaidResults, inLocalPack
scrapedAt string (ISO date) "2026-09-28T06:19:15.000Z"

AI Mode answer (rowType: "aiModeAnswer"): the context fields above plus answerText, answerMarkdown, citations, otherElements and rankTracking (whether and where your domain is cited).

News / Images rows: newsResults (title, url, domain, source, snippet, published, date, imageUrl) or imageResults (title, alt, source, pageUrl, imageUrl, thumbnailUrl, domain), plus resultsCount, pagesCovered and rankTracking.

Flat result rows (free, optional): id, rowType, searchTerm, page, position, absolutePosition, title, url, domain, displayedUrl, description, date, isTrackedDomain, country, language, scrapedAt.

How much does Google SERP Scraper cost?

You pay per event, through your Apify account. Main price: $1.50 per 1,000 result pages on the Apify Free plan and $1.20 on Gold, plus $0.002 per run ($0.0006 on Gold). Every event and plan:

Price per event in USD by Apify plan. Platinum and Diamond pay the Gold price. Apify platform usage: billed separately by Apify.
EventFreeBronzeSilverGold
Run startCharged once per run, and only when the run delivers at least one result page.$0.002$0.002$0.001$0.0006
Search results pageOne delivered Google results page: up to ~10 organic results with all SERP features (AI Overview, People also ask, local pack, ads, featured snippet, related searches…). Also one Google News page (up to 10 articles) or one Google Images page (up to 100 images).$0.0015$0.0015$0.0015$0.0012
Search results page with search operatorsOne delivered results page for a search term that uses Google search operators (site:, intitle:, inurl:, filetype: …), which are much heavier to collect.$0.0045$0.0045$0.0045$0.0045
Google AI Mode answerOne delivered Google AI Mode answer with its full text and all cited sources.$0.0025$0.0025$0.0025$0.0018
AI Overview loadingPer delivered results page when “Always load the AI Overview” is on (we wait for and capture late loading AI Overviews).$0.0009$0.0009$0.0009$0.0008
Pixel positionsPer delivered results page when “Capture pixel positions” is on.$0.0009$0.0009$0.0009$0.0009
Extra “People also ask” questionPer additional question revealed by expanding “People also ask” (only when expansion is turned on). A results page that shows the box is charged at least one question per expansion level, because each expansion click is paid even when it reveals nothing new.$0.0003$0.0003$0.0003$0.0003
Fast processing add onPer delivered page unit when you choose Fast processing speed (search operator pages count 5 units, AI Mode answers 2, each page priced option +1). Not used for Google News (served as Instant).$0.0008$0.0008$0.0008$0.0008
Instant processing add onPer delivered page unit when you choose Instant processing speed (search operator pages count 5 units, AI Mode answers 2, each page priced option +1). Google News searches with Fast processing are served (and charged) as Instant.$0.0018$0.0018$0.0018$0.0018
Search without resultsPer page unit of a search that was processed but gave no page to deliver: Google showed no results (or no AI Mode answer), or the search did not finish within your maximum wait / its request got no answer. Search operator searches count 5 units, AI Mode 2, each page priced option +1; a speed add on is charged on the same units. Searches rejected before processing (invalid input) are free.$0.001$0.001$0.001$0.001

How do I call Google SERP Scraper API from code?

Every run is one HTTP request to the Apify API with your Apify token; the input below is the actor's own example. The synchronous endpoint returns the rows in the response for runs up to 300 seconds; for longer runs start a run and fetch its dataset.

curl -X POST "https://api.apify.com/v2/acts/cheapapi~google-serp-scraper/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
  -d '{"searchTerms":["best running shoes","how to brew cold brew coffee"],"country":"US","language":"en","maxPagesPerQuery":1,"searchType":"organic","device":"desktop","processingSpeed":"auto"}'

With the JavaScript client:

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('cheapapi/google-serp-scraper').call({
  "searchTerms": [
    "best running shoes",
    "how to brew cold brew coffee"
  ],
  "country": "US",
  "language": "en",
  "maxPagesPerQuery": 1,
  "searchType": "organic",
  "device": "desktop",
  "processingSpeed": "auto"
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

How does Google SERP Scraper compare with alternatives?

Typical run: 1,000 keywords × 1 results page (about 10,000 organic results). Prices are the Actor fees per listing (Free plan / Gold plan).

Option 1,000 keywords × 1 page AI Overview on the page Google AI Mode People also ask Local pack Built in rank tracking
Most used Store Actor for Google Search (~193k users) $4.50 / $1.80 add on, +$3.00 / +$1.00 per 1,000 captured ✓ ✓ not listed not listed
Cheapest per page Actor (~12k users) $0.50 / $0.50 ✗ ✗ ✗ ✗ ✗
Per result budget Actor (~2,300 users) ≈ $3.00 / ≈ $1.30 (≈ 10 results per page) ✗ ✗ ✗ ✗ ✗
Per query budget Actor (~1,300 users) $2.00 / $2.00 (first 10 results per query included) ✗ ✗ ✗ ✗ ✗
This Actor $1.50 / $1.20 ✓ included ✓ ($2.50 / $1.80 per 1,000) ✓ ✓ ✓

Prices from public Apify Store listings, checked September 2026 (start fees of $0.0003 to $0.002 per run left out). ✗ = not mentioned in the listing. Apify platform usage is billed separately by Apify for this Actor too (see Pricing); the table compares Actor fees only.

Per plan, 1,000 result pages (most used Actor vs. this Actor). Apify lets us set Free, Bronze, Silver and Gold prices; Platinum and Diamond pay our Gold price.

Apify plan Most used Actor This Actor Difference
Free $4.50 $1.50 67% cheaper
Bronze $2.50 $1.50 40% cheaper
Silver $1.95 $1.50 23% cheaper
Gold $1.80 $1.20 33% cheaper
Platinum $1.50 $1.20 20% cheaper
Diamond $1.20 $1.20 same price

Plainly: on Silver we are 23% cheaper, not more; on Gold and above our page price matches the most used Actor's Diamond price, so a Diamond customer pays the same per page (their AI Overview add on, $0.50 per 1,000 on Diamond, is included here).

Honest take: if you only need position, title, URL and snippet of organic results, the cheapest per page Actor costs about a third of our price, and a per result Actor is similar on Gold. You pay $1.50 here for the full page in one row, AI Overview with cited sources, People also ask, local pack, ads, featured snippet, knowledge graph, plus rank tracking of your domains and optional Google AI Mode, at no add on fee for the AI Overview Google shows on the page.

What is it used for?

  • Rank tracking: schedule daily or weekly runs for your keywords and domains and follow position, page and the ranking URL over time.
  • AI search visibility (GEO): see whether your domain is cited in Google's AI Overview and AI Mode answers, and at which citation position.
  • Content research: collect People also ask questions, related searches and featured snippets to plan articles and FAQs.
  • Local SEO: check the local pack for a city or GPS point, with ratings, review counts and phone numbers of the businesses shown.
  • Competitor and ads monitoring: see who ranks and who advertises (paidResults) on your commercial keywords, per country and device.
  • LLM and RAG pipelines: feed fresh Google results, AI answers and cited sources to your AI agents.

What is not included?

  • AI answers from other engines (ChatGPT, Perplexity, Gemini, Claude), this Actor covers Google only (AI Overview and AI Mode). For cross engine AI answers and brand citations use our AI Search Visibility Tracker.
  • Full Google Maps place data (opening hours, all reviews, photos) beyond the local pack, use our Google Maps Scraper Plus.
  • Search volume, keyword difficulty and keyword ideas, use our Keyword Research Tool.
  • Content of the ranking pages, contact/lead enrichment, Google Shopping product pages and screenshots of the results page, not collected; the Actor returns what Google shows on the results page.

What are the limits?

  • Results reflect Google at the moment of collection. Google personalizes and tests results constantly, so small differences from your own browser are normal.
  • Google shows about 10 organic results per page, sometimes fewer. Depth is limited to 700 results per search term (Google Search, News and Images).
  • AI Mode returns one answer per search term (no result pages) and cannot use Google search URLs. News is always collected as desktop.
  • Embedded images inside AI answers are not included (the text, links and all cited sources are).
  • With Standard speed, runs at busy times can take longer than 5 minutes; searches not finished within "Maximum wait" are reported in RUN_SUMMARY and charged the no results fee. If the platform moves a run to another server, searches already sent are collected, never sent twice.
  • Some fields (ratings, dates) are null when Google does not show them. People also ask questions are always collected, but Google now loads most answers as AI generated text only after a click, so answer is often null (answerIsAiGenerated: true) even with expansion on, in our September 2026 test runs every answer was null. Expansion reveals extra questions, not answers.

Questions about Google SERP Scraper

Is there a limit on the Apify Free plan?

Yes: up to $0.25 of this Actor's results per calendar month, enough to try it. Apify pays developers nothing for Free plan usage while our data costs are real, so this keeps the Actor sustainable. Runs that reach the allowance stop cleanly and keep everything collected so far; the allowance resets on the 1st of the month. Any paid Apify plan has no limit.

Is it legal to scrape Google search results?

This Actor collects publicly visible search results. You are responsible for using the data in line with applicable laws and Google's terms. If you are unsure, ask a lawyer.

How fresh is the data?

Every search is run live on Google at the time of your run. scrapedAt shows when the page was collected.

Does every search have an AI Overview?

No, Google decides when to show one, mostly for informational questions. When it does, you get the full text and cited sources. Turn on "Always load the AI Overview" to also capture those Google loads a moment after the page.

Why did I get fewer results than I asked for?

Google often shows fewer than 10 organic results on a page, stops offering pages for narrow searches, or returns nothing for rare terms. Your spending limit or "Stop paging when a tracked domain is found" can also end a search early. You pay for delivered pages; a search that returned nothing costs the no results fee ($0.001 per page unit), and RUN_SUMMARY lists every such search.

How is the position counted?

position is the organic rank (1 = first organic result). absolutePosition counts every SERP element (ads, local pack, AI Overview …) from the top of the page.

How do I monitor rankings over time?

Schedule the Actor with your keywords and trackDomains. Each run stores positions with a timestamp; the Rank tracking view and the flat result rows are easy to append to a spreadsheet or database, and the id field lets you de duplicate rows if an export is appended twice.

Why was I charged for a search without results?

The search was already run on Google (and paid for) before we could see it was empty, for example a very rare term, a site: search on a small site, or a search that did not finish within "Maximum wait". Instead of the page price you pay the no results fee: $0.001 per page unit (a site: search counts 5 units, an AI Mode answer 2), plus the Fast/Instant add on if you chose one. Searches rejected before processing are free.

Why was I charged for "People also ask" questions that did not appear?

With expansion on, each expansion click is paid even when Google reveals no new question, so a page that shows the box is charged at least one question per expansion level. Pages without the box are not charged for expansion.

Why was my Fast Google News run charged as Instant?

Google News is served faster and cheaper by Instant processing than by the Fast queue, so Fast is replaced by Instant for News (a warning is shown in the log).

How do I control what a run costs?

Set a maximum charge per run. The Actor plans the searches that fit, skips the rest (reported as searchesSkippedByLimit) and never charges above the limit.

Can I get results for a specific city?

Yes, use "City or region" (e.g. Chicago,Illinois,United States) or exact GPS "Coordinates".

Which export formats are available?

JSON, JSONL, CSV, Excel, XML and HTML from the Console or API, with three ready views: result pages, rank tracking and one row per result.

Where do I get support?

Open an issue on the Actor's Issues tab in Apify Console and describe what you need.

Run Google SERP Scraper on Apify

The form opens with a working example. Free Apify accounts get a small monthly allowance.

Open on Apify