Skip to main content

SE::Google::Suggest - Google search suggestions scraper

Overview of the scraper

Scraper for search suggestions by keywords in Google. Thanks to the SE::Google::Suggest scraper, you can automatically collect keyword bases from Google search engine suggestions by query. Using the SE::Google::Suggest scraper, you can easily and quickly scrape Google suggestions by query based on the selected country, language, or domain.

The Google suggestions scraper solves one of the main SEO tasks, namely the rapid automated obtaining of an extended semantic core. Google search suggestions allow you to cover the maximum number of phrases, and in combination with the Google Keyword Planner scraper - SE::Google::KeywordPlannerSE::Google::KeywordPlanner you will get the most complete semantics, which will help attract more organic traffic.

Thanks to the multi-threaded work of A-Parser, the processing speed can reach 6000 requests per minute, which on average allows obtaining up to 45000-46000 results per minute.

Overview: speed of operation

You can use automatic query multiplication, substitution of subqueries from files, iteration of alphanumeric combinations and lists to obtain the maximum possible number of results. Using result filtering, you can immediately clean the result by removing all unnecessary junk (using negative keywords).

A-Parser functionality allows you to save the scraper settings of SE::Google::Suggest for further use (presets), set a scraping schedule, and much more.

Saving results is possible in the form and structure you need, thanks to the built-in powerful templating engine Template Toolkit which allows you to apply additional logic to the results and output data in various formats, including JSON, SQL, and CSV.

Use cases for the scraper

Collected data

  • Number of results by query
  • Suggestions for the query
  • Type of suggestion (0 - human, 1 - artificial)
Collected data


  • Supports choosing the country of search, domain, language of results
  • Ability to choose the source that needs to be used to collect suggestions (option Client)
  • Ability to remove HTML tags from parsing results (option Remove HTML tags)

Use cases

  • Collecting keyword bases


As queries, you need to specify search phrases, for example:

write essay
Speak in english
Cats and dogs
cheap essay

Query substitutions

You can use built-in macros for automatic substitution of subqueries from files, for example, we want to add some list of other words to each query, let's specify several main queries:


In the request format, we will specify a substitution macro for additional words from the Keywords.txt file, this method allows to increase the variability of requests many times over:

{subs:Keywords} $query 

This macro will create as many additional requests as there are in the file for each original search query, which in total will give [number of original requests (domains)] x [number of requests in Keywords file] = [total number of requests] as a result of the macro's work.

For example, if the file Keywords.txt contains:


As a result, the substitution macro will turn 3 main queries into 6:

buy essay
cheap essay
buy article
cheap article
buy thesis
cheap thesis

Output results variants

A-Parser supports flexible formatting of results thanks to the built-in Template Toolkit, which allows it to output results in any form, as well as in structured formats, such as CSV or JSON

Export of suggestions list

Result format:


Example of result:

buy essays online
buy essay cheap
buy essay uk
buy essays online no plagiarism
buy essay papers
buy essay online reviews
buy essays reddit
buy essay friend

Output of query, query suggestions + type of suggestion

Result format:

$query:\n$results.format('$suggest - $type\n')

Example of result:

cheap essay:
cheap essay writing service - 1
cheap essay writing service uk - 1
cheap essay writing service canada - 1
cheap essay writing 24 - 1
cheap essays online - 1
cheap essay writing service reddit - 1
cheap essay writing service australia - 1
cheap essay writing service review - 1
buy essay:
buy essay online - 1
buy essay cheap - 1
buy essay uk - 1
buy essay papers - 1
buy essay online reviews - 1
buy essays reddit - 1
buy essay friend - 1
buy essay online uk - 1

Output in CSV table

The built-in utility $tools.CSVLine allows creating correct table documents, ready for import into Excel or Google Sheets.

General result format:

[% FOREACH i IN p1.results;
END %]

File name:


Initial text:



In the General results format, the Template Toolkit is used to output the elements of the $results array in a FOREACH loop.

In the file name of the results, you just need to change the file extension to csv.

To make the "Initial text" option available in the Task Editor, you need to activate "More options". In the "Initial text", we write the names of the columns separated by commas and make the second line empty.

Keyword competition

Similarly to SE::Google.

Saving in SQL format

Result format:

[%  FOREACH results;    "INSERT INTO serp VALUES('" _ query _ "', '";   suggest _ "', '";   type _ "')\n"; END  %]

Example of result:

INSERT INTO serp VALUES('cheap essay', 'cheap essay writing service', '1')
INSERT INTO serp VALUES('cheap essay', 'cheap essay writing service uk', '1')
INSERT INTO serp VALUES('cheap essay', 'cheap essay writing service canada', '1')
INSERT INTO serp VALUES('cheap essay', 'cheap essay writing 24', '1')
INSERT INTO serp VALUES('buy essay', 'buy essay online', '1')
INSERT INTO serp VALUES('buy essay', 'buy essay cheap', '1')
INSERT INTO serp VALUES('buy essay', 'buy essay uk', '1')
INSERT INTO serp VALUES('buy essay', 'buy essay papers', '1')

Dumping results to JSON

Общий формат результата:

[% IF notFirst;
notFirst = 1;

obj = {};
obj.totalcount = p1.totalcount;
obj.suggests = [];

FOREACH item IN p1.results;

obj.json %]

Начальный текст:


Конечный текст:


Example of result:

[{"suggests":["buy essay online","buy essay cheap","buy essay uk","buy essays online no plagiarism","buy essay papers","buy essay online reviews","buy essays reddit","buy essay friend"],"totalcount":8}]

To make the "Initial text" and "Final text" options available in the Task Editor, you need to activate "More options".

Results processing

A-Parser allows processing results directly during scraping, in this section we have provided the most popular cases for the scraper SE::Google::Suggest

Parse to level option

The option tells the scraper to substitute the obtained results into the query queue to the specified depth level, for example:

  • If the 1st level is specified, the scraper will add to the queries all the results obtained from the original query
  • If the 2nd level is specified, the scraper will add to the queries all the results obtained from the original query + all the results obtained from the 1st level queries
  • and so on.

In simple terms - this is substituting the obtained results into the query queue, which in turn allows scraping more results. Since there will likely be duplicates in the results, to prevent the scraper from doing extra work (not scraping the same thing), it is recommended to enable unique queries (Unique queries)

Parse to level option
Download example

How to import an example into A-Parser


Filtering results (using negative keywords)

By using negative keywords, it is possible to immediately remove results that you do not need. Similarly, by using a filter, you can also keep only those results that contain the necessary words.

Filtering results (using negative keywords)
Download example

How to import example into A-Parser


See also: Results filters

Possible settings

Parameter NameDefault ValueDescription
ClientChrome omniboxChoice of the source to use for collecting suggestions (Search page / Chrome omnibox)
Follow suggestsHumanChoice of the type of suggestions to insert into queries when using Parser to level (All / Synthetic / Human)
Google selection
Search from countryGlobalCountry selection from where the search is performed
Interface languageEnglishInterface language selection
Remove HTML tagsRemoving HTML tags