Google Search Results Scraper
Pricing
$19.99/month + usage
Google Search Results Scraper
🔎 Google Search Results Scraper extracts live SERP data—titles, snippets, URLs, rankings, ads & featured snippets—by location, language and device. ⚙️ Built for SEO, keyword research, competitor analysis & content planning. 🚀 Fast, scalable, proxy-ready.
Pricing
$19.99/month + usage
Rating
0.0
(0)
Developer
ScraperForge
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Google Search Results Scraper
The Google Search Results Scraper is a production-ready Google SERP scraper that extracts structured search engine results data at scale — including organic listings, paid ads, shopping products, People Also Ask, related queries, and optional AI Overview. Built for marketers, developers, data analysts, and researchers, it helps you scrape Google search results and export clean datasets for SEO tracking, competitor analysis, AEO/GEO monitoring, and content planning at scale.
What data / output can you get?
Below are the main fields pushed to the dataset for each query. This scraper functions as a precise Google search results parser and google SERP data extraction tool, ideal to scrape Google search results to CSV/JSON.
| Data type | Description | Example value |
|---|---|---|
| searchQuery.term | Full query string sent to Google (with applied filters) | "site:example.com intitle:"pricing" " |
| searchQuery.url | Final SERP URL for the query page | "https://www.google.com/search?q=..." |
| searchQuery.device | Device used for the request | "DESKTOP" |
| searchQuery.page | Current page index that was scraped | 1 |
| searchQuery.domain | Search engine domain | "google.com" |
| searchQuery.countryCode | Country code (GL) applied | "US" |
| searchQuery.languageCode | Interface language (HL) | "en" |
| searchQuery.locationUule | UULE code for exact location (if set) | "w+CAIQICI..." |
| searchQuery.resultsPerPage | Count of organic results collected so far | 10 |
| url | Final SERP URL | "https://www.google.com/search?q=..." |
| hasNextPage | Indicates if more pages are available | true |
| serpProviderCode | Provider code | "O" |
| resultsTotal | Parsed “About X results” number | 2030000 |
| relatedQueries[] | Related queries generated from top organic titles | [{"title":"Example pricing","url":"https://www.google.com/search?q=Example+pricing&hl=en&gl=us"}] |
| organicResults[] | Organic result objects (title, url, description, etc.) | [{"title":"Pricing - Example","url":"https://example.com/pricing","displayedUrl":"example.com/pricing","description":"See pricing...","type":"organic","position":1}] |
| paidResults[] | Paid ads (if any) | [{"title":"Get Example","url":"https://ads.example.com%22,%22displayedUrl%22:%22ads.example.com%22,%22type%22:%22paid%22,%22position%22:1}] |
| paidProducts[] | Shopping/product blocks (if any) | [{"title":"Example Pro","displayedUrl":"shop.example.com","prices":["$99.00"]}] |
| suggestedResults[] | Suggested result links derived from relatedQueries | [{"title":"Example pricing","url":"https://www.google.com/search?q=Example+pricing","type":"organic","position":1}] |
| peopleAlsoAsk[] | PAA question cards (if any) | [{"question":"How much is Example?","answer":null,"url":"https://example.com%22,%22date%22:null}] |
| aiOverview | AI Overview summary and references (if enabled) | {"text":"Concise overview...","references":[{"title":"Example","url":"https://example.com"}]} |
| customData | Add-on configuration snapshot | {"perplexitySearch":{"enablePerplexity":false,...},"chatGptSearch":{"enableChatGpt":false},"maximumLeadsEnrichmentRecords":0,"leadsEnrichmentDepartments":[]} |
| htmlSnapshotUrl | Key for saved HTML snapshot (if enabled) | "example_query_20260415_102530_p1.html" |
| html | Raw HTML concatenated per page (if enabled) | " ... (truncated) ..." |
Notes:
- Exports are available via the Apify dataset in JSON/CSV. This works as a reliable google SERP scraping API output for pipelines.
- Extra HTML metadata is included when saveHtml or saveHtmlToKeyValueStore is enabled.
Key features
-
🚀 Automatic proxy fallback & resilience Always-on proxies maximize success rates. The actor starts on a Google SERP proxy and, if blocked, falls back to residential proxies with up to 3 retries, then sticks to residential for the remainder of the run. Ideal for a google serp scraper with proxies.
-
📦 Bulk input & flexible queries Paste multiple queries or full Google search URLs (one per line). The scraper resolves query strings from Google URLs automatically.
-
🌍 Precise location & language targeting Control countryCode, interface language (languageCode), searchLanguage (lr), and exact location via locationUule for local SERP emulation.
-
🎯 Advanced search filters Apply forceExactMatch, site, relatedToSite, wordsInTitle, wordsInText, wordsInUrl, quickDateRange, beforeDate, afterDate, and fileTypes for highly targeted SERPs.
-
📱 Mobile or desktop modes Toggle mobileResults to use mobile user agents for a mobile-optimized SERP view.
-
🧠 AI & Generative search add-ons Enable aiMode with serpApiKey to retrieve aiOverview. Add optional cross-engine context via perplexitySearch and chatGptSearch (configuration reflected under customData).
-
💰 Ads & product intelligence Turn on focusOnPaidAds to prioritize paidResults and paidProducts extraction for ad-heavy queries.
-
🧪 HTML snapshots for debugging Use saveHtml and/or saveHtmlToKeyValueStore to capture SERP HTML per page for audits and troubleshooting.
-
📊 Clean exports for analysis Extract google search results data into structured JSON and export to CSV from the dataset for downstream SEO analysis or reporting.
-
🛠️ Developer-ready, Python-based Built in Python and optimized for reliability — perfect for developers integrating a google serp scraper python into data pipelines.
How to use Google Search Results Scraper - step by step
- Sign in to Apify and open the Google Search Results Scraper in the Store or your Actors list.
- In the Input tab, paste your queries into queries — one search term or full Google search URL per line.
- Set resultsPerPage (1–100) and maxPagesPerQuery to control volume (≈10 organic results per page).
- Configure location & language: countryCode, languageCode, searchLanguage, and optionally locationUule for exact local targeting.
- Apply filters as needed: forceExactMatch, site, relatedToSite, wordsInTitle/wordsInText/wordsInUrl, quickDateRange, beforeDate, afterDate, fileTypes.
- Optional add-ons: set aiMode and serpApiKey for AI Overview; configure perplexitySearch and chatGptSearch; toggle focusOnPaidAds for ad/product emphasis.
- Additional settings: choose mobileResults, includeUnfilteredResults, and whether to saveHtml or saveHtmlToKeyValueStore. The actor uses Apify proxies by default (GOOGLE_SERP) and automatically falls back to RESIDENTIAL on blocks.
- Click Start. Monitor the Log for progress and any proxy fallback notices.
- When finished, open the Dataset to preview and export JSON/CSV.
Pro tip: For larger batches or recurring jobs, keep saveHtmlToKeyValueStore enabled to quickly review page snapshots during tuning.
Use cases
| Use case name | Description |
|---|---|
| SEO & SERP monitoring | Track organic rankings, People Also Ask, and related queries over time to guide on-page and content strategy. |
| Competitor & keyword research | Compare competitor visibility by location and language, and gather keyword ideas from related queries at scale. |
| Ads & shopping analysis | Enable focusOnPaidAds to collect paidResults and paidProducts for competitive ad intelligence. |
| AEO/GEO tracking | Combine aiMode and serpApiKey to monitor AI Overview presence and references for Answer/Generative Engine Optimization. |
| Content planning | Use wordsInTitle/wordsInText filters and fileTypes to find high-intent resources and content gaps. |
| Local SEO | Apply countryCode, languageCode, and locationUule to audit localized SERPs and map local intent. |
| Data pipelines | Scrape google search results to CSV/JSON and feed downstream analytics, dashboards, or research notebooks. |
Why choose Google Search Results Scraper?
A precise, scalable google search results scraping tool that’s built for reliability and structured outputs.
- 🎯 Accurate, structured SERP JSON with positions, snippets, and metadata
- 🌍 Strong geo & language controls (countryCode, languageCode, searchLanguage, UULE)
- ⚡ Scales from a few to hundreds of queries with per-page real-time pushes
- 🧠 AI-ready with aiMode + serpApiKey, plus perplexitySearch and chatGptSearch add-ons
- 💰 Paid ads & products extraction for monetization and shopping insights
- 🧾 Clean exports (JSON/CSV) and optional HTML snapshots for audits
- 🛡️ Robust proxy handling (GOOGLE_SERP → RESIDENTIAL with up to 3 retries) for high success rates
Unlike brittle browser extensions, this production-grade google search results scraping software provides consistent, automatable outputs you can trust.
Is it legal / ethical to use Google Search Results Scraper?
Yes — when used responsibly. This actor collects data from publicly available Google Search result pages only.
Guidelines:
- Only extract publicly available SERP data.
- Review and comply with Google’s Terms of Service and robots.txt.
- Ensure adherence to applicable privacy and data protection laws (e.g., GDPR, CCPA).
- Avoid scraping personal data unless you have a legitimate reason and proper consent.
- Consult your legal team for edge cases or regulated use cases.
Input parameters & output format
Example JSON input
{"queries": "javascript\nsite:example.com intitle:\"pricing\"\nhttps://www.google.com/search?q=best+crm&hl=en&gl=us","resultsPerPage": 10,"maxPagesPerQuery": 2,"aiMode": "aiModeWithSearchResults","serpApiKey": "YOUR_SERPAPI_KEY","perplexitySearch": {"enablePerplexity": false,"searchRecency": "","returnImages": false,"returnRelatedQuestions": false},"chatGptSearch": {"enableChatGpt": false},"maximumLeadsEnrichmentRecords": 0,"leadsEnrichmentDepartments": [],"focusOnPaidAds": false,"countryCode": "us","searchLanguage": "en","languageCode": "en","locationUule": "","forceExactMatch": false,"site": "","relatedToSite": "","wordsInTitle": [],"wordsInText": [],"wordsInUrl": [],"quickDateRange": "","beforeDate": "","afterDate": "","fileTypes": [],"mobileResults": false,"includeUnfilteredResults": false,"saveHtml": false,"saveHtmlToKeyValueStore": true,"includeIcons": false,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["GOOGLE_SERP"]}}
All input fields
-
queries (string, required)
- Description: Use regular search words or enter Google Search URLs. Advanced operators supported (e.g., AI site:twitter.com, javascript OR python). Keep queries ≤ 32 words.
- Default: none
-
resultsPerPage (integer)
- Description: Desired results per page (num). Google may return fewer on page 1; enable includeUnfilteredResults to include filtered-out items.
- Default: 100 (min 1, max 100)
-
maxPagesPerQuery (integer)
- Description: Maximum Google pages per query (≈10 organic results per page).
- Default: 1 (min 1)
-
aiMode (string)
- Description: Enable scraping of Google’s AI Mode for AEO/GEO analysis.
- Default: "aiModeOff"
- Enum: "aiModeOff", "aiModeWithSearchResults", "aiModeOnly"
-
serpApiKey (string, nullable, secret)
- Description: Optional. When set and aiMode is not off, fetches AI Overview via SerpApi.
- Default: none
-
perplexitySearch (object)
- Description: Optional add-on configuration for Perplexity (additional fees may apply).
- Default object:
- enablePerplexity (boolean, default: false)
- searchRecency (string, enum: "", "day", "week", "month", "year"; default: "")
- returnImages (boolean, default: false)
- returnRelatedQuestions (boolean, default: false)
-
chatGptSearch (object)
- Description: Optional add-on configuration for ChatGPT search (additional fees may apply).
- Properties:
- enableChatGpt (boolean, default: false)
-
maximumLeadsEnrichmentRecords (integer)
- Description: Maximum leads per domain for business enrichment (0 disables).
- Default: 0 (min 0)
-
leadsEnrichmentDepartments (array of strings)
- Description: Filter leads by departments (works only if maximumLeadsEnrichmentRecords > 0).
- Default: [] (enum includes: "c-suite", "marketing", "sales", etc.)
-
focusOnPaidAds (boolean)
- Description: Enable ad-focused extraction with specialized proxy and retries (extra cost per page applies).
- Default: false
-
countryCode (string)
- Description: Country for the search and Google domain (e.g., google.es).
- Default: "us"
-
searchLanguage (string, nullable)
- Description: Restrict results to a specific language (lr parameter).
- Default: none
-
languageCode (string)
- Description: Interface language (hl parameter).
- Default: "en"
-
locationUule (string, nullable)
- Description: Exact location code (uule parameter).
- Default: none
-
forceExactMatch (boolean)
- Description: Wraps query in quotes for exact match.
- Default: false
-
site (string, nullable)
- Description: Limit to a specific site (site:).
- Default: none
-
relatedToSite (string, nullable)
- Description: Pages related to a site (related:). Ignored if site is set.
- Default: none
-
wordsInTitle (array of strings)
- Description: Filter with intitle: operator (multiple allowed).
- Default: []
-
wordsInText (array of strings)
- Description: Filter with intext: operator (multiple allowed).
- Default: []
-
wordsInUrl (array of strings)
- Description: Filter with inurl: operator (multiple allowed).
- Default: []
-
quickDateRange (string, nullable)
- Description: Relative range via qdr (e.g., d10, w1, m1, y1).
- Default: none
-
beforeDate (string, nullable)
- Description: Absolute (YYYY-MM-DD) or relative (e.g., "8 days") upper bound.
- Default: none
-
afterDate (string, nullable)
- Description: Absolute or relative lower bound.
- Default: none
-
fileTypes (array of strings)
- Description: filetype: filters (multiple combined with OR).
- Default: []
-
mobileResults (boolean)
- Description: Return mobile SERP results (mobile user agents).
- Default: false
-
includeUnfilteredResults (boolean)
- Description: Include lower quality results Google typically filters out.
- Default: false
-
saveHtml (boolean)
- Description: Save SERP HTML to dataset under html (increases dataset size).
- Default: false
-
saveHtmlToKeyValueStore (boolean)
- Description: Save HTML to key-value store and link via htmlSnapshotUrl (can slow runs).
- Default: true
-
includeIcons (boolean)
- Description: Include Base64-encoded icon image data in results when found.
- Default: false
-
proxyConfiguration (object)
- Description: The actor always uses proxies. By default, it starts with a Google SERP proxy and falls back to RESIDENTIAL (with 3 retries) if blocked. Prefill uses Apify Proxy group GOOGLE_SERP.
- Default: none (prefill provided in UI)
Example JSON output
{"searchQuery": {"term": "site:example.com intitle:\"pricing\"","url": "https://www.google.com/search?q=site%3Aexample.com%20intitle%3A%22pricing%22&hl=en&gl=us","device": "DESKTOP","page": 1,"type": "SEARCH","domain": "google.com","countryCode": "US","languageCode": "en","locationUule": null,"resultsPerPage": 10},"searchQueryTerm": "site:example.com intitle:\"pricing\"","url": "https://www.google.com/search?q=site%3Aexample.com%20intitle%3A%22pricing%22&hl=en&gl=us","hasNextPage": true,"serpProviderCode": "O","resultsTotal": 2030000,"relatedQueries": [{"title": "Example pricing","url": "https://www.google.com/search?q=Example+pricing&hl=en&gl=us"}],"paidResults": [],"paidProducts": [],"aiOverview": null,"organicResults": [{"title": "Pricing - Example","url": "https://example.com/pricing","displayedUrl": "example.com/pricing","description": "See pricing and plans...","emphasizedKeywords": ["site:example.com intitle:\"pricing\""],"siteLinks": [],"productInfo": {},"type": "organic","position": 1}],"suggestedResults": [{"title": "Example pricing","url": "https://www.google.com/search?q=Example+pricing&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": "example_query_20260415_102530_p1.html"}
Fields that may be null or omitted:
- aiOverview appears only if aiMode is enabled and serpApiKey is provided.
- html appears when saveHtml is true.
- htmlSnapshotUrl is set when saveHtmlToKeyValueStore is true.
- _htmlPayloads is included only when saving multiple HTML pages to the key-value store.
FAQ
Is there a free trial or free tier?
Yes. The listing includes a trial period of 120 minutes to evaluate the scraper. For ongoing use, see the Pricing tab; note that add-ons like Google AI Mode, Perplexity AI search, ChatGPT search, and paid ads extraction may incur additional costs per result/page as described in the input parameter sections.
Do I need to set up proxies?
No additional setup is required. The actor always uses Apify Proxy by default with the GOOGLE_SERP group and automatically falls back to RESIDENTIAL proxies with up to 3 retries if Google blocks the request, then sticks to residential for the rest of the run.
Can I scrape Google AI Overviews?
Yes, when aiMode is not "aiModeOff" and you provide serpApiKey. In that case, the actor fetches aiOverview via SerpApi and includes a concise "text" plus "references" array in the output.
Can it capture paid ads and shopping products?
Yes. The output includes paidResults (Google Ads) and paidProducts when detected. Enabling focusOnPaidAds improves ad detection with an ad-specialized proxy and up to 3 retries per query (extra cost per search page applies).
How many results can I get per query?
Set resultsPerPage between 1–100 and use maxPagesPerQuery to paginate. Google typically returns about 10 organic results per page; the actor also reports hasNextPage and resultsTotal to guide depth.
How do I localize results?
Use countryCode and languageCode for Google UI targeting, searchLanguage to restrict result languages, and locationUule for exact location (UULE) when you need precise local SERPs.
Can I save and inspect the raw HTML?
Yes. Enable saveHtml to include HTML in the dataset under html, or saveHtmlToKeyValueStore to store each page’s HTML in the key-value store and link via htmlSnapshotUrl for easy browser viewing.
Does it support mobile SERPs?
Yes. Set mobileResults to true to use mobile user agents and retrieve mobile-formatted results.
Closing CTA / Final thoughts
This Google Search Results Scraper is built to deliver accurate, structured SERP data for SEO, research, and competitive analysis. With robust proxy handling, granular filters, AI add-ons, and clean exports, it serves marketers, developers, analysts, and researchers who need a dependable google SERP scraper. Start extracting SERP data you can trust — configure your queries, run at scale, and export to JSON/CSV for your pipeline.
