Google Search Results Scraper avatar

Google Search Results Scraper

Pricing

from $0.60 / 1,000 search results

Go to Apify Store
Google Search Results Scraper

Google Search Results Scraper

Extract organic Google rankings, snippets, URLs, People Also Ask questions, and related searches for SEO and market research.

Pricing

from $0.60 / 1,000 search results

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

8 days ago

Last modified

Share

Extract organic Google Search results, rankings, snippets, result URLs, People Also Ask questions, and related searches for SEO research.

Input recipes

  • Small test: Start with the default input and a low result limit.
  • Focused run: Use one specific public URL, query, profile, or location before expanding the input.
  • Scheduled monitoring: Save the input as a task and schedule repeat runs when you need fresh data.

What does Google Search Results Scraper do?

Google Search Results Scraper turns public Google result pages into structured datasets.

Use it to monitor search rankings, collect SERP snippets, compare localized results, and discover question or related-search ideas.

The actor accepts one or more search queries and returns one dataset row for each organic result.

Each row includes the query, rank, title, URL, displayed URL, snippet, page number, locale, timestamp, and SERP context.

It is designed for repeatable SEO and market research workflows on Apify.

Who is this Google SERP scraper for?

SEO agencies use it to track client ranking positions across important keywords.

Growth teams use it to benchmark competitors and discover content opportunities.

Market researchers use it to collect the visible sources Google surfaces for a topic.

Founders use it to understand which products, directories, and articles appear for buyer-intent terms.

Content teams use People Also Ask and related searches to plan article outlines.

Local businesses can compare country-specific or language-specific search visibility.

Why use this actor?

✅ Structured output instead of manual copying from search pages.

✅ Rank numbers saved with each organic result.

✅ Locale inputs for country and language targeting.

✅ Page controls for first-page checks or deeper rank monitoring.

✅ SERP context arrays for People Also Ask and related searches.

✅ Dataset output that works with Apify API, webhooks, integrations, and exports.

Input settings

SettingJSON keyType / defaultDescription
Queriesqueriesarray, default ["apify actors","best crm software"]Google searches to run. Add keywords, brands, questions, or local-intent phrases exactly as you would type them into Google.
Country / GLcountrystring, default "US"Two-letter Google country code used for localized rankings, for example US, GB, DE, FR, AU.
Language / HLlanguagestring, default "en"Google interface language code, for example en, de, fr, es, it.
Results per querynumResultsinteger, default 10Maximum organic results to save per query. Use 10 for a quick first run; increase for rank monitoring across pages.
Start pagestartPageinteger, default 1First Google results page to scrape. Page 1 starts at rank 1; page 2 starts around rank 11.
Maximum pages per querymaxPagesinteger, default 1How many Google pages to open for each query. The actor stops earlier when it reaches Results per query.
Include People Also AskincludePeopleAlsoAskboolean, default trueSave visible question suggestions from Google SERPs when present.
Include related searchesincludeRelatedSearchesboolean, default trueSave visible related search suggestions from Google SERPs when present.
Proxy configurationproxyConfigurationobject, default {"useApifyProxy":true,"apifyProxyGroups":["GOOGLE_SERP"]}Optional Apify Proxy settings. The default uses Apify's GOOGLE_SERP proxy group for stable Google result-page downloads.

Output fields

JSON keyTypeDescription
querystringSearch query that produced the row.
rankintegerOrganic Google rank for the result. When startPage is 2, ranks start around 11.
titlestringResult title shown by Google.
urlstringDestination URL after Google redirect cleanup.
displayUrlstring or nullDisplayed URL/citation text when present.
snippetstring or nullVisible result snippet when present.
resultTypestringCurrently organic.
pageintegerGoogle results page number that produced the row.
peopleAlsoAskstring[]Visible People Also Ask questions from the same SERP page.
relatedSearchesstring[]Visible related-search suggestions from the same SERP page.
timestampstringISO timestamp when the page was processed.
countrystringGoogle gl country code used for the run.
languagestringGoogle hl language code used for the run.
searchUrlstringGoogle Search URL requested for the page.

Pricing

This Actor uses pay-per-event pricing configured in .actor/actor.json.

EventPriceCharged when
Start (start)$0.005 per eventOne-time fee per run
Search result (result)$0.001 per event at Bronze, about $1.00 per 1,000 eventsPer organic Google result saved to the dataset

Store discount tiers for saved search results:

TierPrice per result
Free$0.00115
Bronze$0.00100
Silver$0.00078
Gold$0.00060
Platinum$0.00040
Diamond$0.00028

Quick start

  1. Open the actor on Apify.

  2. Enter your search queries.

  3. Choose country and language.

  4. Set the number of results per query.

  5. Keep the first test small.

  6. Run the actor.

  7. Download the dataset as JSON, CSV, Excel, XML, or HTML.

Input: queries

Add search terms exactly as you want Google to process them.

Examples:

  • apify actors

  • best crm software

  • pizza near me

  • site:example.com pricing

  • content marketing agency london

Each query is processed independently.

Input: country and language

Use country for Google country localization.

Use language for the Google interface language.

Common examples:

  • US and en

  • GB and en

  • DE and de

  • FR and fr

  • ES and es

Localized rankings can differ significantly, so keep these fields consistent for monitoring.

Input: result limits

numResults controls the maximum organic results saved per query.

startPage controls the first Google page to open.

maxPages controls how many pages can be opened per query.

For example, numResults = 20, startPage = 1, and maxPages = 2 checks roughly the first two SERP pages.

The actor stops early when it reaches the requested number of results.

Input: SERP blocks

Enable includePeopleAlsoAsk to attach visible questions from the result page.

Enable includeRelatedSearches to attach visible related-search suggestions.

These values are page-level context and are repeated on result rows from the same page.

They are useful for content briefs and keyword expansion.

Input: proxy configuration

Google Search can be sensitive to automated access.

For the most stable runs, use Apify Proxy and match the proxy country to your country input.

Start with small jobs before running large batches.

If Google returns a challenge, reduce volume, use a suitable proxy group, and keep locale settings consistent.

Example input

{
"queries": [
"apify actors",
"best crm software"
],
"country": "US",
"language": "en",
"numResults": 10,
"startPage": 1,
"maxPages": 1,
"includePeopleAlsoAsk": true,
"includeRelatedSearches": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": [
"GOOGLE_SERP"
]
}
}

Output example

{
"query": "apify actors",
"rank": 1,
"title": "Apify Store",
"url": "https://apify.com/store",
"displayUrl": "https://apify.com › store",
"snippet": "Browse ready-made web scraping and automation actors.",
"resultType": "organic",
"page": 1,
"peopleAlsoAsk": ["What is an Apify actor?"],
"relatedSearches": ["apify actor examples"],
"timestamp": "2026-06-18T06:00:00.000Z",
"country": "US",
"language": "en",
"searchUrl": "https://www.google.com/search?q=apify+actors"
}

Tips for best results

Keep the first run small.

Use one country and language pair per monitoring workflow.

Avoid mixing very broad and very specific queries in the same cost test.

Use stable query wording if you compare ranks over time.

Export datasets to CSV for spreadsheets or JSON for automation.

Common SEO workflows

Track weekly keyword positions for a client.

Compare first-page competitors for buyer-intent terms.

Collect snippets for messaging research.

Find People Also Ask questions for article briefs.

Discover related searches for keyword expansion.

Check how results differ by country or language.

Integrations

Send finished datasets to Google Sheets through Apify integrations.

Trigger Slack notifications when a run completes.

Store historical rankings in a database.

Connect webhooks to a reporting pipeline.

Use Make, Zapier, or custom API scripts to schedule repeat checks.

API usage

Run Google Search Results Scraper from your own code with the Apify API.

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const input = {
"queries": [
"apify actors",
"best crm software"
],
"country": "US",
"language": "en",
"numResults": 10,
"startPage": 1
};
const run = await client.actor('fetch_cat/google-search-results-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("fetch_cat/google-search-results-scraper").call(run_input={
"queries": [
"apify actors",
"best crm software"
],
"country": "US",
"language": "en",
"numResults": 10,
"startPage": 1
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~google-search-results-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries":["apify actors","best crm software"],"country":"US","language":"en","numResults":10,"startPage":1}'

Use with AI agents via MCP

Google Search Results Scraper can be used by AI assistants through the hosted Apify MCP server.

Claude Code setup

$claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/google-search-results-scraper"

Claude Desktop, Cursor, or VS Code JSON config

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/google-search-results-scraper"
}
}
}

Example prompts

  • "Run Google Search Results Scraper with this input JSON and summarize the dataset."
  • "Export the latest Google Search Results Scraper results to a table I can review."
  • "Schedule this Actor for monitoring and tell me what changed between runs."

Scheduling

Create an Apify schedule to run the same keyword set daily, weekly, or monthly.

Keep query lists small enough for your monitoring cadence.

Store each run's dataset ID if you want historical rank comparisons.

Data quality notes

Google result pages vary by country, language, device, time, and personalization controls.

The actor disables personalized search with the public search parameters it controls.

SERP layouts can change, so optional blocks may be missing on some pages.

Ranks refer to extracted organic results, not ads or every visual module.

Troubleshooting: no results

If a run saves no results, Google may have returned a consent page, empty page, or automation challenge.

Try a smaller input first.

Use Apify Proxy with a country that matches your locale.

Avoid unusually high page counts during early testing.

Troubleshooting: localized results look unexpected

Confirm the country and language inputs.

Use two-letter country codes such as US, GB, or DE.

Use language codes such as en, de, or fr.

Remember that Google can still vary results based on availability and current SERP experiments.

This actor extracts public search result information.

Use it responsibly and respect applicable laws, platform terms, and privacy requirements.

Do not use scraped data for spam, credential collection, or abusive automation.

If you process personal data, ensure you have a lawful basis and appropriate safeguards.

FAQ

Does this scrape paid ads?

Not in v1. The first version focuses on organic Google results and visible SERP context.

Can I scrape multiple countries?

Run separate jobs for separate countries to keep outputs easy to compare.

Can I get more than 10 results?

Yes. Increase numResults and maxPages.

Why do ranks change between runs?

Google rankings are dynamic and can vary by time, locale, device, and SERP experiments.

Can I schedule recurring rank checks?

Yes. Use Apify schedules and store the output dataset from each run.

What export formats are supported?

Apify datasets can be exported as JSON, CSV, Excel, XML, RSS, or HTML.

Is a proxy required?

A proxy is recommended for reliable Google SERP scraping, especially for repeated or localized runs.

How should I start?

Use one query, US, en, and 10 results. Review the output before scaling.

Support

Report bugs, wrong output, blocked runs, or missing fields from the Actor page. Include the Apify run ID or run URL, your input JSON, what you expected, what the Actor returned, and one reproducible public URL so the issue can be tested quickly.