Research search results for selected queries.
Google Search Scraper
Collect Google search results for keywords or search URLs, including organic results and related search data.
What you can do
Compare results across countries and languages.
Export structured SERP data for your application.
Set your sources
Open the scraper and enter your own URLs, search terms and limits.
Review & run
Check the cost estimate and confirm the task. Follow its progress in your account.
Use your data
Explore saved results and export CSV, JSON or XLSX. Downloads of saved results are free.
Sample data & output fields
These example values demonstrate the data shape; they are not a live scraper result. Available fields depend on the source, selected options and upstream data.
[
{
"searchQuery": [],
"resultsTotal": 100,
"organicResults": [],
"relatedQueries": [],
"url": "https://example.com/result"
}
]| Field | Type | Description |
|---|---|---|
searchQuery | object | Metadata about the search query that produced this page |
resultsTotal | integer | Total results Google estimates for this query (the 'About X results' number). Null if Google did not show the counter. |
organicResults | array | Organic web results on this SERP page |
relatedQueries | array | Related search suggestions Google shows at the bottom of the SERP. Each is a clickable next-query link. |
url | string | Convenience copy of searchQuery.url for downstream tools that expect a top-level url field. |
Example input
This is the configured parser input. Replace the example sources with your own and review all limits before running.
{
"queries": [
"best CRM software",
"python web scraping"
],
"countryCode": "us",
"languageCode": "en",
"resultsPerPage": 10,
"maxPagesPerQuery": 1,
"mobileResults": false,
"forceExactMatch": false,
"includePeopleAlsoAsk": true,
"includeRelatedSearches": true,
"saveHtmlToKeyValueStore": false,
"extractAds": false
}Explore input fields
| Field | Type | Notes |
|---|---|---|
queries | array | Keywords or phrases to search on Google (one per line). Each runs as a separate search. Results across queries are returned in a single dataset. |
countryCode | string | ISO 3166-1 alpha-2 country code to localise the search (e.g. 'us', 'gb', 'de', 'au'). Determines which regional results Google returns. |
languageCode | string | Language code for the SERP UI and results (e.g. 'en', 'de', 'fr', 'es'). Defaults to English. |
resultsPerPage | integer | Number of results to request per page (10 to 100). Default 10 gives the richest output (Google includes pre-rendered PAA answers, AI Overview source descriptions, and more on the smaller-num SERPs). Set to 100 if you want more results per request and don't mind a slimmer feature set. |
maxPagesPerQuery | integer | How many SERP pages to fetch per query. Increase to get more results (10 pages × 100 results = ~1,000 results per query). |
mobileResults | boolean | Use Google's mobile interface instead of desktop. Mobile SERPs sometimes show different result sets and ad placements. |
forceExactMatch | boolean | Wrap each query in quotes ("...") so Google only returns results containing the exact phrase. Equivalent to Google's verbatim mode. |
includePeopleAlsoAsk | boolean | Extract the 'People Also Ask' questions shown on the first SERP page. Returned in the peopleAlsoAsk array of each page record. |
includeRelatedSearches | boolean | Extract related search suggestions from the bottom of the first SERP page. Returned in the relatedQueries array of each page record. |
saveHtmlToKeyValueStore | boolean | Save the raw HTML of each SERP page to the default Key-Value Store. The output record will include a kvsHtmlUrl pointing at the saved file. Useful for debugging or extracting custom fields not parsed by the actor. |
extractAds | boolean | Enable comprehensive paid-results extraction. Google rotates ads aggressively, so the actor retries each query with rotated proxy sessions up to two more times and merges any new ads found. Adds one billable ads-extraction-attempt event per SERP page ($1.50 per 1,000 pages). Recommended only on queries where ads matter (commerce, comparison, lead-gen). |
Run through the API
Create an API key in your account, send the input to the queued endpoint and use the returned task ID to retrieve results. Sending a live request uses credits.
curl --request POST 'https://extracto.cloud/api/v1/parsers/google-search-scraper/queue' \
--header 'X-API-KEY: ext_your_api_key' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data-binary @- <<'JSON'
{
"input": {
"queries": [
"best CRM software",
"python web scraping"
],
"countryCode": "us",
"languageCode": "en",
"resultsPerPage": 10,
"maxPagesPerQuery": 1,
"mobileResults": false,
"forceExactMatch": false,
"includePeopleAlsoAsk": true,
"includeRelatedSearches": true,
"saveHtmlToKeyValueStore": false,
"extractAds": false
}
}
JSONYour next dataset starts here.
Choose your sources, review the price and run Google Search Scraper.