Actor picture

Google Search Results Scraper

apify/google-search-scraper

This Google Scraper enables you to scrape Google Search Engine Results Pages (SERPs) and extract organic and paid results, ads, queries, People Also Ask, prices, reviews, like a Google SERP API. Select country or language and extraction of custom attributes, and download your data, no coding needed.

No credit card required

Author's avatarApify
  • Modified
  • Users24,300
  • Runs3,202,881
Actor picture
Google Search Results Scraper

Search terms or URLs

queries

Required

string

Google Search terms (e.g. food in NYC) and/or full URLs (e.g. https://www.google.com/search?q=food+NYC). Please enter one item per line.

Max pages per search term or URL

maxPagesPerQuery

Optional

integer

Maximum number of Google Search result pages crawled for each search term or URL.

Results per Google page

resultsPerPage

Optional

integer

Number of search results for each Google result page. By default, Google Search returns 10 results per page. The allowed values are: 10, 20, 30, 40, 50 and 100. Since our Free plan contains 100 free SERP proxies, and every request consumes 1 proxy, you will get exactly 100 free requests, no matter the amount of results you will get per each. This is why to get maximum value from this scraper, we recommend setting up this parameter to its maximum, 100.

Mobile results

mobileResults

Optional

boolean

If checked, the scraper will return results for the mobile version of the Google search. By default, desktop results are returned.

CSV friendly output (1 result per 1 row)

csvFriendlyOutput

Optional

boolean

This option allows to arrange the results in a structure suitable for CSV format. If checked, Related queries with respective URLs, People Also Ask, reviews and prices will not be included. Only organic and paid results will be included. Note: please take into account that displayed paid results are still heavily dependent on your location and browsing history.

Country

countryCode

Optional

string

Country determines the IP address of the proxy used for the search and the Google Search domain (e.g. google.es for Spain). By default, the actor uses United States (google.com).

Options:

"af", "al", "dz", "as", "ad", "ao", "ai", "aq", "ag", "ar", "am", "aw", "au", "at", "az", "bs", "bh", "bd", "bb", "by", "be", "bz", "bj", "bm", "bt", "bo", "ba", "bw", "bv", "br", "io", "bn", "bg", "bf", "bi", "kh", "cm", "ca", "cv", "ky", "cf", "td", "cl", "cn", "cx", "cc", "co", "km", "cg", "cd", "ck", "cr", "ci", "hr", "cu", "cy", "cz", "dk", "dj", "dm", "do", "ec", "eg", "sv", "gq", "er", "ee", "et", "fk", "fo", "fj", "fi", "fr", "gf", "pf", "tf", "ga", "gm", "ge", "de", "gh", "gi", "gr", "gl", "gd", "gp", "gu", "gt", "gn", "gw", "gy", "ht", "hm", "va", "hn", "hk", "hu", "is", "in", "id", "ir", "iq", "ie", "il", "it", "jm", "jp", "jo", "kz", "ke", "ki", "kp", "kr", "kw", "kg", "la", "lv", "lb", "ls", "lr", "ly", "li", "lt", "lu", "mo", "mk", "mg", "mw", "my", "mv", "ml", "mt", "mh", "mq", "mr", "mu", "yt", "mx", "fm", "md", "mc", "mn", "ms", "ma", "mz", "mm", "na", "nr", "np", "nl", "an", "nc", "nz", "ni", "ne", "ng", "nu", "nf", "mp", "no", "om", "pk", "pw", "ps", "pa", "pg", "py", "pe", "ph", "pn", "pl", "pt", "pr", "qa", "re", "ro", "ru", "rw", "sh", "kn", "lc", "pm", "vc", "ws", "sm", "st", "sa", "sn", "cs", "sc", "sl", "sg", "sk", "si", "sb", "so", "za", "gs", "es", "lk", "sd", "sr", "sj", "sz", "se", "ch", "sy", "tw", "tj", "tz", "th", "tl", "tg", "tk", "to", "tt", "tn", "tr", "tm", "tc", "tv", "ug", "ua", "ae", "gb", "us", "um", "uy", "uz", "vu", "ve", "vn", "vg", "vi", "wf", "eh", "ye", "zm", "zw"

Language

languageCode

Optional

string

Language for the search results, which is passed to Google Search as the hl URL query parameter. Only set this if you want to use a non-default language for the selected country.

Options:

"af", "sq", "sm", "ar", "az", "eu", "be", "bn", "bh", "bs", "bg", "ca", "zh-CN", "zh-TW", "hr", "cs", "da", "nl", "en", "eo", "et", "fo", "fi", "fr", "fy", "gl", "ka", "de", "el", "gu", "iw", "hi", "hu", "is", "id", "ia", "ga", "it", "ja", "jw", "kn", "ko", "la", "lv", "lt", "mk", "ms", "ml", "mt", "mr", "ne", "no", "nn", "oc", "fa", "pl", "pt-BR", "pt-PT", "pa", "ro", "ru", "gd", "sr", "si", "sk", "sl", "es", "su", "sw", "sv", "tl", "ta", "te", "th", "ti", "tr", "uk", "ur", "uz", "vi", "cy", "xh", "zu"

Exact location (Google UULE parameter)

locationUule

Optional

string

The code for the exact location for the Google search. It's passed to Google Search as the uule URL query parameter. You can use the UULE code generator. Learn more about emulating local search.

Max concurrency

maxConcurrency

Optional

integer

Maximum number of search results pages the scraper will load in parallel. A higher number means you will get your results faster, but it will also burn through your available proxies quicker.

Save HTML to dataset

saveHtml

Optional

boolean

If checked, the HTML of the Google Search results pages will be stored to the default dataset, under the html property. This is useful if you need to process the HTML, but it makes the dataset large and reduces performance.

Save HTML to key-value store

saveHtmlToKeyValueStore

Optional

boolean

If checked, the HTML of the Google Search results pages will be stored to the default key-value store and links to the files stored to the dataset under the htmlSnapshotUrl property. This is useful for debugging, since you can easily view the pages in the browser. However, the use of this feature may present some performance penalty.

Include unfiltered results

includeUnfilteredResults

Optional

boolean

If checked, the lower quality results that Google normally filters out will be included. This usually consists of a few hundred extra results.

Custom data function

customDataFunction

Optional

string

Custom JavaScript function to extract additional attributes from the HTML of the Google result pages. The function accepts the same parameters as the handlePageFunction of the CheerioCrawler in Apify SDK. The return value of the function is saved to the results as the customData property.