Google Search Results Scraper avatar

Google Search Results Scraper

Pricing

from $4.99 / 1,000 results

Go to Apify Store
Google Search Results Scraper

Google Search Results Scraper

Google Search Results Scraper extracts structured data from Google search pages in real time. Collect titles, URLs, snippets, rankings, ads, and related queries in JSON or CSV. Ideal for SEO tracking, competitor research, and keyword performance analysis.

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Google Search Results Scraper

The Google Search Results Scraper is a fast, reliable Google SERP scraper that extracts structured data from Google search pages in real time. It solves the hassle of manual SERP copy-paste by returning clean JSON/CSV with titles, URLs, snippets, rankings, ads, related queries, and more. Built for marketers, developers, data analysts, and researchers, this Google search results scraping API helps you scale SEO tracking, competitor research, and keyword performance analysis across countries, languages, and devices.

What data / output can you get?

Below are the primary JSON fields the scraper pushes to the Apify dataset. You can export results to JSON or CSV.

Data typeDescriptionExample value
searchQueryContext for the current page/query{"term":"javascript intitle:"guide"","url":"http://www.google.com/search?...","device":"DESKTOP","page":1,"type":"SEARCH","domain":"google.com","countryCode":"US","languageCode":"en","locationUule":null,"resultsPerPage":10}
searchQueryTermThe full query string sent to Google (with applied filters)"javascript intitle:"guide""
urlThe final Google Search URL for the page"http://www.google.com/search?q=javascript+intitle%3A%22guide%22&gl=us&hl=en&udm=14"
hasNextPageWhether another page of results is availablefalse
serpProviderCodeSource identifier"O"
resultsTotalParsed β€œAbout X results” count2380000000
relatedQueriesList of related query links (built from top organic titles)[{"title":"JavaScript - MDN Web Docs - Mozilla","url":"https://www.google.com/search?q=JavaScript+-+MDN..."}]
organicResultsOrganic results with position, title, URL, snippet, and more[{"title":"JavaScript - MDN","url":"https://developer.mozilla.org/...","displayedUrl":"developer.mozilla.org/...","description":"JavaScript (JS) is...","emphasizedKeywords":["javascript"],"siteLinks":[{"title":"Read more","url":"https://developer.mozilla.org/...","description":""}],"productInfo":{},"type":"organic","position":1}]
paidResultsPaid ad links if detected[{"title":"Best JS Courses","url":"https://example.com/...","displayedUrl":"example.com","description":"","emphasizedKeywords":["javascript"],"siteLinks":[],"productInfo":{},"type":"paid","position":1}]
paidProductsShopping/commerce blocks with titles and price snippets[{"title":"JavaScript Handbook","displayedUrl":"shop.example.com/item/123","prices":["$19.99"]}]
suggestedResultsOrganic suggestions derived from related queries[{"title":"JavaScript - MDN","url":"https://www.google.com/search?q=JavaScript+-+MDN...","type":"organic","position":1}]
peopleAlsoAskPAA questions with optional URLs[{"answer":null,"question":"What is JavaScript?","title":"What is JavaScript?","url":"https://developer.mozilla.org/...","date":null}]
aiOverviewAI summary and references (if AI Mode + SerpApi key enabled){"text":"JavaScript is a programming language...","references":[{"title":"MDN Web Docs","url":"https://developer.mozilla.org/..."}]}
customDataEchoes add-on settings for Perplexity/ChatGPT and leads filters{"perplexitySearch":{"enablePerplexity":false,"searchRecency":null,"returnImages":false,"returnRelatedQuestions":false},"chatGptSearch":{"enableChatGpt":false},"maximumLeadsEnrichmentRecords":0,"leadsEnrichmentDepartments":[]}
htmlSnapshotUrlHTML snapshot key in the key-value store (if enabled)"javascript_20260222_065327_p1.html"
htmlFull HTML of fetched page(s) (if enabled)"..."

Notes:

  • Optional fields like aiOverview, htmlSnapshotUrl, and html appear only if the corresponding add-ons/settings are enabled.
  • Icons for results can be included when includeIcons is enabled (field key: icon on individual result items).

Key features

  • πŸš€ Real-time SERP extraction & streaming Pushes data page-by-page as it’s scraped with Actor.pushData, so you can monitor and integrate results immediately.

  • 🌍 Country, language, and location controls Use countryCode, searchLanguage (lr), languageCode (hl), and locationUule to tailor results like a precise Google SERP crawler for GEO/AEO targeting.

  • 🎯 Advanced query filters Apply forceExactMatch, site, relatedToSite, wordsInTitle (intitle:), wordsInText (intext:), wordsInUrl (inurl:), fileTypes (filetype:), quickDateRange, beforeDate, and afterDate. Perfect for a structured Google search result extractor.

  • πŸ“± Desktop or mobile results Toggle mobileResults to emulate device types and compare SERP layouts.

  • πŸ’° Paid results (ads) focus add-on Enable focusOnPaidAds for enhanced paidResults/paidProducts detection with specialized proxy logic and retries.

  • πŸ€– AI Overview support (add-on) When aiMode is active and serpApiKey is provided, aiOverview text and references are returned alongside organic resultsβ€”ideal for modern AEO/GEO workflows.

  • 🧩 AI comparison flags in output Perplexity and ChatGPT add-ons are captured under customData (enable flags, recency, etc.) for cross-platform analysis and downstream automation.

  • πŸ’Ύ Debug & audit-ready Save HTML to dataset (html) and/or to key-value store (htmlSnapshotUrl). Great for QA, parsing tests, and reproducibility.

  • πŸ” Production-ready proxying Always uses proxies. Defaults to GOOGLE_SERP and automatically falls back to RESIDENTIAL with retries on blocksβ€”robust Google SERP scraping tool behavior.

How to use Google Search Results Scraper - step by step

  1. Create your Apify account
  • Sign up or log in to Apify.
  1. Open the actor
  • Find β€œGoogle Search Results Scraper” and click Try for free.
  1. Add your queries
  • In queries, enter one search term or a full Google search URL per line.
  • Tip: 1 page β‰ˆ 10 results. For ~100 results, set maxPagesPerQuery to 10.
  1. Configure location and language
  • Set countryCode, languageCode (hl), and optional searchLanguage (lr).
  • For precise local targeting, set locationUule.
  1. Apply filters (optional)
  • Use forceExactMatch, site or relatedToSite, wordsInTitle / wordsInText / wordsInUrl, fileTypes, quickDateRange, beforeDate, afterDate, and includeUnfilteredResults.
  1. Choose device and ads focus
  • Toggle mobileResults for mobile SERPs.
  • Enable focusOnPaidAds to improve ad detection across retries.
  1. Enable AI add-ons (optional)
  • Set aiMode and provide serpApiKey to populate aiOverview.
  • Configure perplexitySearch and chatGptSearch as needed (settings echoed in customData).
  1. Run and monitor
  • Click Start. The actor pushes structured results for each page (organicResults, paidResults, peopleAlsoAsk, etc.) into the dataset in real time.
  1. Download results
  • Export your dataset as JSON or CSV from the Apify UI or via API.

Pro tip: Use proxyConfiguration defaults (GOOGLE_SERP) for best stability, and switch to RESIDENTIAL automatically on blocksβ€”no manual proxy tuning required.

Use cases

Use case nameDescription
SEO teams – keyword tracking & SERP analysisCollect organicResults with positions, snippets, and relatedQueries to track keyword performance at scale.
PPC analysts – ad visibility & product blocksExtract paidResults and paidProducts to audit ad coverage and pricing signals.
Content teams – questions & topic ideationMine peopleAlsoAsk and suggestedResults to discover question clusters and content gaps.
Competitive intelligence – global SERP comparisonApply countryCode, searchLanguage, languageCode, and locationUule to compare SERPs by market.
Data engineers – Google SERP scraping API pipelineStream structured records and export to JSON/CSV for automated ingestion.
Researchers – time-bounded corpus buildingFilter by quickDateRange, beforeDate, afterDate to capture time-scoped SERPs for studies.
E-commerce – offer monitoringUse paidProducts with prices and displayedUrl to track marketplace positioning.

Why choose Google Search Results Scraper?

Purpose-built for precision, scale, and reliabilityβ€”no brittle extensions or manual scraping.

  • 🎯 Accurate, structured output: Clean JSON with stable keys like organicResults, paidResults, peopleAlsoAsk, aiOverview, and more.
  • 🌐 Multilingual & geo targeting: Control languageCode (hl), searchLanguage (lr), countryCode (gl), and locationUule for true local search emulation.
  • πŸ“ˆ Scales from single queries to bulk runs: Manage maxPagesPerQuery and resultsPerPage; real-time dataset updates per page.
  • πŸ’» Developer friendly: Export to JSON/CSV, consume via API, and integrate with your pipelines.
  • πŸ›‘οΈ Robust proxying: Starts with GOOGLE_SERP and falls back to RESIDENTIAL on blocks with retriesβ€”built for resilience.
  • 🧩 Add-on ready: AI Overview via SerpApi when aiMode is enabled; Perplexity/ChatGPT settings captured in customData.
  • πŸ’Ύ Auditable: Save HTML to dataset or key-value store for debugging and QA.

In short: a production-grade Google search results scraper tool that outperforms browser extensions and unstable scripts.

Yesβ€”when done responsibly. This actor retrieves publicly available Google search results and offers controls to align with your compliance needs.

Guidelines:

  • Review and respect Google’s terms of service for automated access.
  • Use the data ethically and for legitimate purposes.
  • Be mindful of personal data. The maximumLeadsEnrichmentRecords option includes a GDPR noticeβ€”consult legal counsel if unsure.
  • Ensure your use complies with applicable laws (e.g., GDPR, CCPA).

Input parameters & output format

Example input JSON

{
"queries": "javascript\ntypescript\npython",
"resultsPerPage": 100,
"maxPagesPerQuery": 1,
"aiMode": "aiModeOff",
"serpApiKey": "",
"perplexitySearch": {
"enablePerplexity": false,
"searchRecency": "",
"returnImages": false,
"returnRelatedQuestions": false
},
"chatGptSearch": {
"enableChatGpt": false
},
"maximumLeadsEnrichmentRecords": 0,
"leadsEnrichmentDepartments": [],
"focusOnPaidAds": false,
"countryCode": "us",
"searchLanguage": "",
"languageCode": "en",
"locationUule": null,
"forceExactMatch": false,
"site": null,
"relatedToSite": null,
"wordsInTitle": [],
"wordsInText": [],
"wordsInUrl": [],
"quickDateRange": null,
"beforeDate": null,
"afterDate": null,
"fileTypes": [],
"mobileResults": false,
"includeUnfilteredResults": false,
"saveHtml": false,
"saveHtmlToKeyValueStore": true,
"includeIcons": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["GOOGLE_SERP"]
}
}

Parameter reference (all fields from the schema):

  • queries (string, required): Use regular search words or full Google Search URLs. One per line. Max ~32 words per query.
  • resultsPerPage (integer, default 100): Desired num per page (1–100). Actual results may vary due to Google filtering.
  • maxPagesPerQuery (integer, default 1): Maximum pages to scrape per query. ~10 results per page.
  • aiMode (string, default "aiModeOff", enum: "aiModeOff" | "aiModeWithSearchResults" | "aiModeOnly"): Enable Google AI Mode add-on.
  • serpApiKey (string, optional): SerpApi key to fetch AI Overview when aiMode is active.
  • perplexitySearch (object): Perplexity add-on settings (captured in customData).
    • perplexitySearch.enablePerplexity (boolean, default false)
    • perplexitySearch.searchRecency (string, enum: "", "day", "week", "month", "year")
    • perplexitySearch.returnImages (boolean, default false)
    • perplexitySearch.returnRelatedQuestions (boolean, default false)
  • chatGptSearch (object): ChatGPT add-on settings (captured in customData).
    • chatGptSearch.enableChatGpt (boolean, default false)
  • maximumLeadsEnrichmentRecords (integer, default 0): Leads enrichment limit per domain (see GDPR warning in description).
  • leadsEnrichmentDepartments (array[string], default []): Department filters for leads enrichment (e.g., "marketing", "sales", "c-suite").
  • focusOnPaidAds (boolean, default false): Use ad-specialized proxy behavior to improve paid ads detection.
  • countryCode (string, default "us"): Country for gl parameter and Google domain.
  • searchLanguage (string, optional): Restrict results to a language via lr (e.g., "lang_de"). Empty string = none.
  • languageCode (string, default "en"): Interface language (hl).
  • locationUule (string, optional): Exact location UULE code.
  • forceExactMatch (boolean, default false): Wrap queries in quotes for exact matches.
  • site (string, optional): Apply site: filter.
  • relatedToSite (string, optional): Apply related: filter (ignored if site is set).
  • wordsInTitle (array[string], default []): Adds intitle:"..." filters.
  • wordsInText (array[string], default []): Adds intext:"..." filters.
  • wordsInUrl (array[string], default []): Adds inurl:"..." filters.
  • quickDateRange (string, optional): Shorthand date range (e.g., d10, m1, y1) via tbs=qdr:.
  • beforeDate (string, optional): Filter before date (YYYY-MM-DD or relative like "3 months").
  • afterDate (string, optional): Filter after date (YYYY-MM-DD or relative like "8 days").
  • fileTypes (array[string], default []): One or more filetype: filters (e.g., pdf, csv, md, etc.).
  • mobileResults (boolean, default false): Toggle mobile SERP.
  • includeUnfilteredResults (boolean, default false): Include results Google normally filters out (tbs=li:1).
  • saveHtml (boolean, default false): Store full HTML in the dataset under html.
  • saveHtmlToKeyValueStore (boolean, default true): Store HTML in key-value store and link under htmlSnapshotUrl.
  • includeIcons (boolean, default false): Include icon data for results if found.
  • proxyConfiguration (object): Proxy settings. Prefill uses Apify Proxy with GOOGLE_SERP group; actor falls back to RESIDENTIAL on blocks.

Example output JSON

{
"searchQuery": {
"term": "javascript intitle:\"guide\"",
"url": "http://www.google.com/search?q=javascript+intitle%3A%22guide%22&gl=us&hl=en&udm=14",
"device": "DESKTOP",
"page": 1,
"type": "SEARCH",
"domain": "google.com",
"countryCode": "US",
"languageCode": "en",
"locationUule": null,
"resultsPerPage": 10
},
"searchQueryTerm": "javascript intitle:\"guide\"",
"url": "http://www.google.com/search?q=javascript+intitle%3A%22guide%22&gl=us&hl=en&udm=14",
"hasNextPage": false,
"serpProviderCode": "O",
"resultsTotal": 2380000000,
"relatedQueries": [
{
"title": "JavaScript - MDN Web Docs - Mozilla",
"url": "https://www.google.com/search?q=JavaScript+-+MDN+Web+Docs+-+Mozilla&hl=en&gl=us"
}
],
"paidResults": [],
"paidProducts": [],
"aiOverview": null,
"organicResults": [
{
"title": "JavaScript - MDN Web Docs - Mozilla",
"url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript",
"displayedUrl": "developer.mozilla.org/en-US/docs/Web/JavaScript",
"description": "JavaScript (JS) is a lightweight interpreted programming language with first-class functions.",
"emphasizedKeywords": ["javascript"],
"siteLinks": [],
"productInfo": {},
"type": "organic",
"position": 1
}
],
"suggestedResults": [
{
"title": "JavaScript - MDN Web Docs - Mozilla",
"url": "https://www.google.com/search?q=JavaScript+-+MDN+Web+Docs+-+Mozilla&hl=en&gl=us",
"type": "organic",
"position": 1
}
],
"peopleAlsoAsk": [],
"customData": {
"perplexitySearch": {
"enablePerplexity": false,
"searchRecency": null,
"returnImages": false,
"returnRelatedQuestions": false
},
"chatGptSearch": {
"enableChatGpt": false
},
"maximumLeadsEnrichmentRecords": 0,
"leadsEnrichmentDepartments": []
},
"htmlSnapshotUrl": "javascript_20260222_065327_p1.html"
}

Notes:

  • html appears only when saveHtml is true.
  • aiOverview includes text and references only when aiMode β‰  aiModeOff and serpApiKey is provided.

FAQ

Do I need to provide queries as URLs or keywords?

You can use either. Enter one search term or a full Google Search URL per line in the queries field. The actor resolves Google URLs to the q parameter automatically.

How many results can I scrape per query?

Use resultsPerPage (1–100) and maxPagesPerQuery. As a rule of thumb, 1 page β‰ˆ 10 results. For ~100 results, set maxPagesPerQuery to 10.

Can I target specific countries and languages?

Yes. Set countryCode for gl, languageCode for the interface (hl), and optionally searchLanguage for lr. You can also provide locationUule for exact local targeting.

Does it scrape mobile SERPs?

Yes. Enable mobileResults to switch to mobile user agents and retrieve mobile-optimized SERPs.

How do I capture AI Overviews?

Enable aiMode and provide serpApiKey. When active, aiOverview will include a text summary and references fetched via SerpApi.

Can it focus on paid ads and shopping results?

Yes. Enable focusOnPaidAds to improve paidResults and paidProducts detection using specialized proxy behavior and retries.

Can I export the data to CSV?

Yes. Results are stored in an Apify dataset that you can export to JSON or CSV. You can also access them programmatically via API.

Is there a way to debug the HTML?

Enable saveHtml to include HTML in the dataset, or saveHtmlToKeyValueStore to store page snapshots and link them under htmlSnapshotUrl for easy inspection.

Closing thoughts

The Google Search Results Scraper is built to extract structured Google SERP data at scale. With robust proxying, granular filters, GEO/language controls, and optional AI Overview support, it’s ideal for SEO teams, PPC analysts, researchers, and developers. Export clean JSON/CSV to power dashboards, models, and pipelinesβ€”or stream results to your own Google search engine scraper workflows with real-time dataset updates. Start extracting smarter SERP insights today.